

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

# AWS Lambda コンピューティングでビルドを実行する
<a name="lambda"></a>

AWS Lambda コンピューティングは、ビルドの起動速度を最適化します。 は、起動レイテンシーが低いため、より高速なビルド AWS Lambda をサポートします。 AWS Lambda も自動的にスケーリングするため、ビルドはキュー内で実行されるのを待つことはありません。ただし、 AWS Lambda がサポートしていないユースケースがいくつかあり、それらが影響する場合は EC2 コンピューティングを使用します。詳細については、「[AWS Lambda コンピューティングの制限](#lambda.limitations)」を参照してください。

**Topics**
+ [AWS Lambda上で実行される、選別されたランタイム環境の Docker イメージには、どのツールとランタイムが含まれますか?](#lambda.tools)
+ [キュレートされたイメージに必要なツールが含まれていない場合はどうなりますか。](#lambda.custom)
+ [CodeBuild で AWS Lambda コンピューティングをサポートしているのはどのリージョンですか?](#lambda.regions)
+ [AWS Lambda コンピューティングの制限](#lambda.limitations)
+ [CodeBuild Lambda Java AWS SAM で を使用して Lambda 関数をデプロイする](sample-lambda-sam-gradle.md)
+ [CodeBuild Lambda Node.js を使用してシングルページの React アプリを作成](sample-lambda-react-nodejs.md)
+ [CodeBuild Lambda Python を使用して Lambda 関数の設定を更新](sample-lambda-boto3-python.md)

## AWS Lambda上で実行される、選別されたランタイム環境の Docker イメージには、どのツールとランタイムが含まれますか?
<a name="lambda.tools"></a>

AWS Lambda は、次のツールをサポートしています。 AWS CLI v2、 AWS SAM CLI、git、go、Java、Node.js、Python、pip、Ruby、.NET。

## キュレートされたイメージに必要なツールが含まれていない場合はどうなりますか。
<a name="lambda.custom"></a>

キュレートされたイメージに必要なツールが含まれていない場合は、必要なツールを含むカスタム環境の Docker イメージを提供できます。

**注記**  
Lambda は、マルチアーキテクチャのコンテナイメージを使用する関数をサポートしません。詳細については、「*AWS Lambda デベロッパーガイド*」の「[コンテナイメージを使用した Lambda 関数の作成](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-reqs)」を参照してください。

Lambda コンピューティングにカスタムイメージを使用するには、次の Amazon ECR アクセス許可が必要です。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/image-repo"
        }
    ]
}
```

------

また、カスタムイメージを使用するには、`curl` または `wget` をインストールする必要があります。

## CodeBuild で AWS Lambda コンピューティングをサポートしているのはどのリージョンですか?
<a name="lambda.regions"></a>

CodeBuild では、 AWS Lambda 米国 AWS リージョン東部 (バージニア北部）、米国東部 (オハイオ）、米国西部 (オレゴン）、アジアパシフィック (ムンバイ）、アジアパシフィック (シンガポール）、アジアパシフィック (シドニー）、アジアパシフィック (東京）、欧州 (フランクフルト）、欧州 (アイルランド）、南米 (サンパウロ) でコンピューティングがサポートされています。CodeBuild が使用可能な  AWS リージョン  の詳細については、「[AWS  サービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。

## AWS Lambda コンピューティングの制限
<a name="lambda.limitations"></a>

 AWS Lambda がサポートしていないユースケースがいくつかあり、それらが影響する場合は EC2 コンピューティングを使用します。
+ AWS Lambda は、ルートアクセス許可を必要とするツールをサポートしていません。`yum` や `rpm` などのツールには、EC2 コンピューティングタイプや root 権限を必要としないその他のツールを使用してください。
+ AWS Lambda は Docker のビルドまたは実行をサポートしていません。
+ AWS Lambda は、 外のファイルへの書き込みをサポートしていません`/tmp`。付属のパッケージマネージャーは、パッケージのダウンロードと参照にデフォルトで `/tmp` ディレクトリを使用するように設定されています。
+ AWS Lambda は 環境タイプをサポートしておらず`LINUX_GPU_CONTAINER`、Windows Server Core 2019 ではサポートされていません。
+ AWS Lambda は、キャッシュ、カスタムビルドタイムアウト、キュータイムアウト、ビルドバッジ、特権モード、カスタムランタイム環境、または 15 分を超えるランタイムをサポートしていません。
+ AWS Lambda は、VPC 接続、固定範囲の CodeBuild ソース IP アドレス、EFS、証明書のインストール、または Session Manager による SSH アクセスをサポートしていません。

# 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 プロジェクトを削除します。

# CodeBuild Lambda Node.js を使用してシングルページの React アプリを作成
<a name="sample-lambda-react-nodejs"></a>

「[Create React App](https://create-react-app.dev/)」は、シングルページの React アプリケーションを作成する方法です。次の Node.js サンプルは、Node.js を使用して「Create React App」からソースアーティファクトをビルドし、ビルドアーティファクトを返します。

## ソースリポジトリとアーティファクトバケットを設定
<a name="sample-lambda-react-nodejs.set-up-repo"></a>

yarn と「Create React App」を使用して、プロジェクトのソースリポジトリを作成します。

**ソースリポジトリとアーティファクトバケットを設定するには**

1. ローカルマシンで `yarn create react-app <app-name>` を実行して、シンプルな React アプリを作成します。

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

## CodeBuild Lambda Node.js プロジェクトを作成
<a name="sample-lambda-react-nodejs.create-project"></a>

 AWS CodeBuild Lambda Node.js プロジェクトを作成します。

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

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

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

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

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

1. [**環境**] で以下の操作を行います。
   + **[コンピューティング]** で、**[Lambda]** を選択します。
   + **[ランタイム]** で、**[Node.js]** を選択します。
   + **[イメージ]** で、**[aws/codebuild/amazonlinux-x86\$164-lambda-standard:nodejs20]** を選択します。

1. [**アーティファクト**] で、次のようにします。
   + **[タイプ]** で、**[Amazon S3]** を選択します。
   + **[バケット名]** で、先ほど作成したプロジェクトアーティファクトバケットを選択します。
   + **[アーティファクトのパッケージ化]** では、**[Zip]** を選択します。

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

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

React アプリをビルドするために、CodeBuild は buildspec ファイルからビルドコマンドを読み取り、実行します。

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

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

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

1. 事前入力されたビルドコマンドを削除し、次の buildspec に貼り付けます。

   ```
   version: 0.2
   phases:
     build:
       commands:
         - yarn
         - yarn add --dev jest-junit @babel/plugin-proposal-private-property-in-object
         - yarn run build
         - yarn run test -- --coverage --watchAll=false --testResultsProcessor="jest-junit" --detectOpenHandles
   artifacts:
     name: "build-output"
     files:
       - "**/*"
   reports:
     test-report:
       files:
         - 'junit.xml'
       file-format: 'JUNITXML'
     coverage-report:
       files:
         - 'coverage/clover.xml'
       file-format: 'CLOVERXML'
   ```

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

## React アプリをビルドして実行
<a name="sample-lambda-react-nodejs.build"></a>

CodeBuild Lambda で React アプリをビルドし、ビルドアーティファクトをダウンロードして、React アプリをローカルで実行します。

**React アプリをビルドして実行するには**

1. [**Start build**] を選択します。

1. ビルドが完了したら、Amazon S3 プロジェクトアーティファクトバケットに移動し、React アプリアーティファクトをダウンロードします。

1. React ビルドアーティファクトと `run npm install -g serve && serve -s build` をプロジェクトフォルダに解凍します。

1. `serve` コマンドは、ローカルポートで静的サイトを提供し、出力をターミナルに出力します。ターミナル出力の `Local:` にある localhost URL にアクセスして、React アプリを表示できます。

React ベースのサーバーのデプロイを処理する方法の詳細については、「[Create React App Deployment](https://create-react-app.dev/docs/deployment/)」を参照してください。

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

このチュートリアルで使用したリソースに対して追加料金が発生しないようにするには、CodeBuild プロジェクト用に作成されたリソースを削除します。

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

1. プロジェクトアーティファクト Amazon S3 バケットを削除

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

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

# CodeBuild Lambda Python を使用して Lambda 関数の設定を更新
<a name="sample-lambda-boto3-python"></a>

次の Python サンプルは、[Boto3](https://aws.amazon.com/sdk-for-python/) と CodeBuild Lambda Python を使用して Lambda 関数の設定を更新します。このサンプルを拡張して、他の AWS リソースをプログラムで管理できます。詳細については、「[Boto3 ドキュメント](https://aws.amazon.com/sdk-for-python/)」を参照してください。

## 前提条件
<a name="sample-lambda-boto3-python.prerequisites"></a>

アカウントで Lambda 関数を作成または検索します。

このサンプルは、アカウントで Lambda 関数を既に作成しており、CodeBuild を使用して Lambda 関数の環境変数を更新することを前提としています。CodeBuild を使用して Lambda 関数を設定する方法の詳細については、「[CodeBuild Lambda Java AWS SAM で を使用して Lambda 関数をデプロイする](sample-lambda-sam-gradle.md)」サンプルを参照するか、「[AWS Lambda](https://aws.amazon.com/lambda/)」を参照してください。

## ソースリポジトリを設定
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Boto3 Python スクリプトを保存するソースリポジトリを作成します。

**ソースコードリポジトリを設定するには**

1. 次の Python スクリプトを `update_lambda_environment_variables.py` という名前の新しいファイルにコピーします。

   ```
   import boto3
   from os import environ
   
   
   def update_lambda_env_variable(lambda_client):
       lambda_function_name = environ['LAMBDA_FUNC_NAME']
       lambda_env_variable = environ['LAMBDA_ENV_VARIABLE']
       lambda_env_variable_value = environ['LAMBDA_ENV_VARIABLE_VALUE']
       print("Updating lambda function " + lambda_function_name + " environment variable "
             + lambda_env_variable + " to " + lambda_env_variable_value)
       lambda_client.update_function_configuration(
           FunctionName=lambda_function_name,
           Environment={
               'Variables': {
                   lambda_env_variable: lambda_env_variable_value
               }
           },
       )
   
   
   if __name__ == "__main__":
       region = environ['AWS_REGION']
       client = boto3.client('lambda', region)
       update_lambda_env_variable(client)
   ```

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

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

CodeBuild Lambda Python プロジェクトを作成します。

**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]** を選択します。
   + **[ランタイム]** で **[Python]** を選択します。
   + **[イメージ]** で、**[aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12]** を選択します。
   + **[サービスロール]** では、**[新しいサービスロール]** を選択したままにします。**[ロール名]** を書き留めます。これは、このサンプルの後半でプロジェクトの 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": "UpdateLambdaPermissions",
               "Effect": "Allow",
               "Action": [
                   "lambda:UpdateFunctionConfiguration"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

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

Lambda 関数を更新するために、スクリプトは buildspec から環境変数を読み取り、Lambda 関数の名前、環境変数名、および環境変数値を検索します。

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

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

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

1. 事前入力されたビルドコマンドを削除し、次の buildspec に貼り付けます。

   ```
   version: 0.2
   env:
     variables:
       LAMBDA_FUNC_NAME: "<lambda-function-name>"
       LAMBDA_ENV_VARIABLE: "FEATURE_ENABLED"
       LAMBDA_ENV_VARIABLE_VALUE: "true"
   phases:
     install:
       commands:
          - pip3 install boto3
     build:
       commands:
          - python3 update_lambda_environment_variables.py
   ```

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

## Lambda 設定を更新
<a name="sample-lambda-boto3-python.update"></a>

CodeBuild Lambda Python を使用して、Lambda 関数の設定を自動的に更新します。

**Lambda 関数の設定を更新するには**

1. [**Start build**] を選択します。

1. ビルドが完了したら、Lambda 関数に移動します。

1. **[設定]** を選択してから、**[環境]** 変数を選択します。キー `FEATURE_ENABLED` と値 `true` を持つ新しい環境変数が表示されます。

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

このチュートリアルで使用したリソースに対して追加料金が発生しないようにするには、CodeBuild プロジェクト用に作成されたリソースを削除します。

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

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

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

1. このサンプル用に Lambda 関数を作成した場合は、**[アクション]** および **[関数を削除]** を選択して Lambda 関数をクリーンアップします。

## 拡張子
<a name="sample-lambda-boto3-python.extensions"></a>

 AWS CodeBuild Lambda Python を使用して他の AWS リソースを管理するためにこのサンプルを拡張する場合:
+ Boto3 を使用して新しいリソースを変更するように Python スクリプトを更新します。
+ CodeBuild プロジェクトに関連付けられた IAM ロールを更新して、新しいリソースに対するアクセス許可を付与します。
+ 新しいリソースに関連付けられた新しい環境変数を buildspec に追加します。