

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CodeBuild Lambda Java AWS SAM で を使用して Lambda 関数をデプロイする
<a name="sample-lambda-sam-gradle"></a>

 AWS Serverless Application Model (AWS SAM) は、サーバーレスアプリケーションを構築するためのオープンソースフレームワークです。詳細については、GitHub の「[AWS Serverless Application Model repository](https://github.com/aws/serverless-application-model)」を参照してください。次の Java サンプルでは、Gradle を使用して AWS Lambda 関数を構築およびテストします。その後、CLI AWS SAM を使用して CloudFormation テンプレートとデプロイバンドルをデプロイします。CodeBuild Lambda を使用すると、ビルド、テスト、デプロイのステップがすべて自動的に処理されるため、1 つのビルドで、手動介入なしにインフラストラクチャをすばやく更新できます。

## AWS SAM リポジトリをセットアップする
<a name="sample-lambda-sam-gradle.set-up-repo"></a>

CLI AWS SAM を使用して プロジェクトを作成します AWS SAM `Hello World`。

**AWS SAM プロジェクトを作成するには**

1. ローカルマシンに [AWS SAM CLI をインストールするには、](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html)*AWS Serverless Application Model 「 デベロッパーガイド*」の手順に従います。

1. `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>
   ```

1. サポートされているソースリポジトリに AWS SAM プロジェクトフォルダをアップロードします。サポートされているソースタイプのリストについては、「[ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)」を参照してください。

## CodeBuild Lambda Java プロジェクトを作成
<a name="sample-lambda-sam-gradle.create-project"></a>

 AWS CodeBuild Lambda Java プロジェクトを作成し、ビルドに必要な IAM アクセス許可を設定します。

**CodeBuild Lambda Java プロジェクトを作成するには**

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1.  CodeBuild の情報ページが表示された場合、**ビルドプロジェクトを作成する**を選択します。それ以外の場合は、ナビゲーションペインで**ビルド**を展開し、**[ビルドプロジェクト] **を選択し、次に **[Create build project (ビルドプロジェクトの作成)] **を選択します。

1. [**プロジェクト名**] に、このビルドプロジェクトの名前を入力します。ビルドプロジェクト名は、 AWS アカウントごとに一意である必要があります。また、他のユーザーがこのプロジェクトの使用目的を理解できるように、ビルドプロジェクトの説明を任意で指定することもできます。

1. Source で****、 AWS SAM プロジェクトがあるソースリポジトリを選択します。

1. [**環境**] で以下の操作を行います。
   + **[コンピューティング]** で、**[Lambda]** を選択します。
   + **[ランタイム]** で **[Java]** を選択します。
   + **[イメージ]** で、**[aws/codebuild/amazonlinux-x86\$164-lambda-standard:corretto21]** を選択します。
   + **[サービスロール]** では、**[新しいサービスロール]** を選択したままにします。**[ロール名]** を書き留めます。これは、このサンプルの後半でプロジェクトの IAM アクセス許可を更新するときに必要です。

1. **Create build project (ビルドプロジェクトの作成)**を選択します。

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**[ロール]** を選択し、プロジェクトに関連付けられたサービスロールを選択します。CodeBuild でプロジェクトロールを見つけるには、ビルドプロジェクトを選択し、**[編集]**、**[環境]**、**[サービスロール]** を選択します。

1. **[信頼関係]** タブを選択し、続いて **[信頼ポリシーの編集]** を選択します。

1. IAM ロールに以下のインラインポリシーを追加します。これは、後で AWS SAM インフラストラクチャをデプロイするために使用されます。詳細については、* IAM ユーザーガイド*の「[IAM ID アクセス許可の追加および削除](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
                   "cloudformation:*",
                   "lambda:*",
                   "iam:*",
                   "apigateway:*",
                   "s3:*"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------

## プロジェクトの buildspec の設定
<a name="sample-lambda-sam-gradle.set-up-buildspec"></a>

Lambda 関数をビルド、テスト、デプロイするために、CodeBuild は buildspec からビルドコマンドを読み取り、実行します。

**プロジェクトの buildspec を設定するには**

1. CodeBuild コンソールで、ビルドプロジェクトを選択し、**[編集]** と **[Buildspec]** を選択します。

1. **[Buildspec]** で、**[ビルドコマンドを挿入]**、**[エディタに切り替え]** の順に選択します。

1. 事前入力されたビルドコマンドを削除し、次の 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
   ```

1. [**Update buildspec (buildspec の更新)**] を選択します。

## AWS SAM Lambda インフラストラクチャをデプロイする
<a name="sample-lambda-sam-gradle.deploy"></a>

CodeBuild Lambda を使用して Lambda インフラストラクチャを自動的にデプロイ

**Lambda インフラストラクチャをデプロイするには**

1. [**Start build**] を選択します。これにより、 AWS Lambda を使用して AWS SAM アプリケーションが自動的に構築、テスト、デプロイされます CloudFormation。

1. ビルドが完了したら、 AWS Lambda コンソールに移動し、 AWS SAM プロジェクト名で新しい Lambda 関数を検索します。

1. **[関数]** の概要で **[API Gateway]** を選択し、**[API エンドポイント]** URL をクリックして、Lambda 関数をテストします。メッセージ `"message": "hello world"` を含むページが開きます。

## インフラストラクチャをクリーンアップ
<a name="sample-lambda-sam-gradle.clean-up"></a>

このチュートリアルで使用したリソースの追加料金を回避するには、 AWS SAM テンプレートと CodeBuild によって作成されたリソースを削除します。

**インフラストラクチャをクリーンアップするには**

1.  CloudFormation コンソールに移動し、 を選択します`aws-sam-cli-managed-default`。

1. **[リソース]** で、デプロイバケット `SamCliSourceBucket` を空にします。

1. `aws-sam-cli-managed-default` スタックを削除します。

1.  AWS SAM プロジェクトに関連付けられている CloudFormation スタックを削除します。このスタックの名前は AWS SAM プロジェクトと同じである必要があります。

1. CloudWatch コンソールに移動し、CodeBuild プロジェクトに関連付けられている CloudWatch ロググループを削除します。

1. CodeBuild コンソールに移動し、**[ビルドプロジェクトを削除]** を選択して CodeBuild プロジェクトを削除します。