AWS Serverless Application Model (AWS SAM) は、サーバーレスアプリケーションを構築するためのオープンソースのフレームワークです。詳細については、GitHub の「AWS Serverless Application Model repository
AWS SAM リポジトリを設定
AWS SAM CLI を使用して、AWS SAM Hello World
プロジェクトを作成します。
AWS SAM プロジェクトを作成するには
-
ローカルマシンに AWS SAM CLI をインストールするには、「AWS Serverless Application Model デベロッパーガイド」にある指示に従います。
-
sam init
を実行し、次のプロジェクト設定を選択します。Which template source would you like to use?: 1 - AWS Quick Start Templates Choose an AWS Quick Start application template: 1 - Hello World Example Use the most popular runtime and package type? (Python and zip) [y/N]: N Which runtime would you like to use?: 8 - java21 What package type would you like to use?: 1 - Zip Which dependency manager would you like to use?: 1 - gradle Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: N Would you like to enable monitoring using CloudWatch Application Insights? [y/N]: N Would you like to set Structured Logging in JSON format on your Lambda functions? [y/N]: N Project name [sam-app]: <insert project name>
-
サポートされているソースリポジトリに、AWS SAM プロジェクトフォルダをアップロードします。サポートされているソースタイプのリストについては、「ProjectSource」を参照してください。
CodeBuild Lambda Java プロジェクトを作成
AWS CodeBuild Lambda Java プロジェクトを作成し、ビルドに必要な IAM アクセス許可を設定します。
CodeBuild Lambda Java プロジェクトを作成するには
-
AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home
) を開きます。 -
CodeBuild の情報ページが表示された場合、ビルドプロジェクトを作成するを選択します。それ以外の場合は、ナビゲーションペインでビルドを展開し、[ビルドプロジェクト] を選択し、次に [Create build project (ビルドプロジェクトの作成)] を選択します。
[プロジェクト名] に、このビルドプロジェクトの名前を入力します。ビルドプロジェクトの名前は、各 AWS アカウントで一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。
-
[ソース] で、AWS SAM プロジェクトがあるソースリポジトリを選択します。
-
[環境] で以下の操作を行います。
-
[コンピューティング] で、[Lambda] を選択します。
-
[ランタイム] で [Java] を選択します。
-
[イメージ] で、[aws/codebuild/amazonlinux-x86_64-lambda-standard:corretto21] を選択します。
-
[サービスロール] では、[新しいサービスロール] を選択したままにします。[ロール名] を書き留めます。これは、このサンプルの後半でプロジェクトの IAM アクセス許可を更新するときに必要です。
-
-
Create build project (ビルドプロジェクトの作成)を選択します。
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ロール] を選択し、プロジェクトに関連付けられたサービスロールを選択します。CodeBuild でプロジェクトロールを見つけるには、ビルドプロジェクトを選択し、[編集]、[環境]、[サービスロール] を選択します。
-
[信頼関係] タブを選択し、続いて [信頼ポリシーの編集] を選択します。
-
IAM ロールに以下のインラインポリシーを追加します。これは、後で AWS SAM インフラストラクチャをデプロイするために使用されます。詳細については、「 IAM ユーザーガイド」の「IAM ID アクセス許可の追加および削除」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "cloudformation:*", "lambda:*", "iam:*", "apigateway:*", "s3:*" ], "Resource": [ "*" ] } ] }
プロジェクトの buildspec の設定
Lambda 関数をビルド、テスト、デプロイするために、CodeBuild は buildspec からビルドコマンドを読み取り、実行します。
プロジェクトの buildspec を設定するには
-
CodeBuild コンソールで、ビルドプロジェクトを選択し、[編集] と [Buildspec] を選択します。
-
[Buildspec] で、[ビルドコマンドを挿入]、[エディタに切り替え] の順に選択します。
-
事前入力されたビルドコマンドを削除し、次の buildspec に貼り付けます。
version: 0.2 env: variables: GRADLE_DIR: "HelloWorldFunction" phases: build: commands: - echo "Running unit tests..." - cd $GRADLE_DIR; gradle test; cd .. - echo "Running build..." - sam build --template-file template.yaml - echo "Running deploy..." - sam package --output-template-file packaged.yaml --resolve-s3 --template-file template.yaml - yes | sam deploy
-
[Update buildspec (buildspec の更新)] を選択します。
AWS SAM Lambda インフラストラクチャをデプロイ
CodeBuild Lambda を使用して Lambda インフラストラクチャを自動的にデプロイ
Lambda インフラストラクチャをデプロイするには
-
[Start build] を選択します。これにより、AWS CloudFormation を使用して AWS SAM アプリケーションが自動的にビルド、テストされ、AWS Lambda にデプロイされます。
-
ビルドが完了したら、AWS Lambda コンソールに移動し、AWS SAM プロジェクト名で新しい Lambda 関数を検索します。
-
[関数] の概要で [API Gateway] を選択し、[API エンドポイント] URL をクリックして、Lambda 関数をテストします。メッセージ
"message": "hello world"
を含むページが開きます。
インフラストラクチャをクリーンアップ
このチュートリアルで使用したリソースに対する料金が発生しないようにするには、AWS SAM テンプレートと CodeBuild によって作成されたリソースを削除します。
インフラストラクチャをクリーンアップするには
-
AWS CloudFormation コンソールに移動して、
aws-sam-cli-managed-default
を選択します。 -
[リソース] で、デプロイバケット
SamCliSourceBucket
を空にします。 -
aws-sam-cli-managed-default
スタックを削除します。 -
AWS SAM プロジェクトに関連付けられている AWS CloudFormation スタックを削除します。このスタックの名前は、AWS SAM プロジェクトと同じである必要があります。
-
CloudWatch コンソールに移動し、CodeBuild プロジェクトに関連付けられている CloudWatch ロググループを削除します。
-
CodeBuild コンソールに移動し、[ビルドプロジェクトを削除] を選択して CodeBuild プロジェクトを削除します。