

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

# 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 に追加します。