AWS SAM と AWS CDK の開始方法 - AWS Serverless Application Model

AWS SAM と AWS CDK の開始方法

このトピックでは、AWS CDK アプリケーションで AWS SAM CLI を使用するために必要な事柄と、シンプルな AWS CDK アプリケーションを構築してローカルにテストするための手順を説明します。

前提条件

AWS CDK で AWS SAM CLI を使用するには、AWS CDK と AWS SAM CLI をインストールする必要があります。

AWS CDK アプリケーションの作成とローカルでのテスト

AWS SAM CLI を使用して AWS CDK アプリケーションをローカルにテストするには、Lambda 関数が含まれる AWS CDK アプリケーションがある必要があります。次のステップを使用して、Lambda 関数を使用する基本的な AWS CDK アプリケーションを作成します。詳細については、AWS Cloud Development Kit (AWS CDK) デベロッパーガイドの「AWS CDKを使用して、サーバーレスアプリケーションを作成する」を参照してください。

注記

AWS SAM CLI は、バージョン 1.135.0 以降の AWS CDK v1 およびバージョン 2.0.0 以降の AWS CDK v2 をサポートします。

ステップ 1: AWS CDK アプリケーションを作成する

このチュートリアルでは、TypeScript を使用するAWS CDK アプリケーションを初期化します。

実行するコマンド:

AWS CDK v2
mkdir cdk-sam-example cd cdk-sam-example cdk init app --language typescript
AWS CDK v1
mkdir cdk-sam-example cd cdk-sam-example cdk init app --language typescript npm install @aws-cdk/aws-lambda

ステップ 2: アプリケーションに Lambda 関数を追加する

lib/cdk-sam-example-stack.ts のコードを、以下のコードに置き換えます。

AWS CDK v2
import { Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as lambda from 'aws-cdk-lib/aws-lambda'; export class CdkSamExampleStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new lambda.Function(this, 'MyFunction', { runtime: lambda.Runtime.PYTHON_3_7, handler: 'app.lambda_handler', code: lambda.Code.fromAsset('./my_function'), }); } }
AWS CDK v1
import * as cdk from '@aws-cdk/core'; import * as lambda from '@aws-cdk/aws-lambda'; export class CdkSamExampleStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new lambda.Function(this, 'MyFunction', { runtime: lambda.Runtime.PYTHON_3_7, handler: 'app.lambda_handler', code: lambda.Code.fromAsset('./my_function'), }); } }

ステップ 3: Lambda 関数コードを追加する

my_function という名前のディレクトリを作成します。そのディレクトリに app.py という名前のファイルを作成します。

実行するコマンド:

mkdir my_function cd my_function touch app.py

次のコードを app.py に追加します。

def lambda_handler(event, context): return "Hello from SAM and the CDK!"

ステップ 4: Lambda 関数をテストする

AWS CDK アプリケーションで定義されている Lambda 関数は、 AWS SAM CLI を使用してローカルに呼び出すことができます。これを行うには、呼び出す関数のコンストラクト識別子と、合成した AWS CloudFormation テンプレートへのパスが必要です。

実行するコマンド:

cdk synth --no-staging
sam local invoke MyFunction --no-event -t ./cdk.out/CdkSamExampleStack.template.json

出力例:

Invoking app.lambda_handler (python3.7)
     
START RequestId: 5434c093-7182-4012-9b06-635011cac4f2 Version: $LATEST
"Hello from SAM and the CDK!"
END RequestId: 5434c093-7182-4012-9b06-635011cac4f2
REPORT RequestId: 5434c093-7182-4012-9b06-635011cac4f2	Init Duration: 0.32 ms	Duration: 177.47 ms	Billed Duration: 178 ms	Memory Size: 128 MB	Max Memory Used: 128 MB

AWS SAM CLI を使用した AWS CDK アプリケーションのテストに使用できるオプションの詳細については、「AWS CDK アプリケーションのローカルでのテスト」を参照してください。