Lambda Python を使用して CodeBuild Lambda 関数設定を更新する - AWS CodeBuild

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

Lambda Python を使用して CodeBuild Lambda 関数設定を更新する

次の Python サンプルでは、Boto3 と CodeBuild Lambda Python を使用して Lambda 関数の設定を更新します。このサンプルは、他の AWS リソースをプログラムで管理するように拡張できます。詳細については、「Boto3 ドキュメント」を参照してください。

前提条件

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

このサンプルは、アカウントに Lambda 関数が既に作成されていることを前提としており、 CodeBuild を使用して Lambda 関数の環境変数を更新します。による Lambda 関数の設定の詳細については、 Lambda Java AWS SAMで を使用して CodeBuild Lambda 関数をデプロイする サンプルを参照するか CodeBuild、「」を参照してくださいAWS Lambda

ソースリポジトリをセットアップする

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)
  2. サポートされているソースリポジトリに Python ファイルをアップロードします。サポートされているソースタイプのリストについては、「」を参照してくださいProjectSource

CodeBuild Lambda Python プロジェクトを作成する

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

CodeBuild Lambda Java プロジェクトを作成するには
  1. AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home) を開きます。

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

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

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

  5. [環境] で以下の操作を行います。

    • コンピューティング でLambda を選択します。

    • Runtime(s) で、Python を選択します。

    • イメージ でaws/codebuild/amazonlinux-x86_64-lambda-standard :python3.12 を選択します。

    • サービスロール では新しいサービスロールを選択したままにします。ロール名 を書き留めます。これは、このサンプルの後半でプロジェクトの IAM アクセス許可を更新するときに必要です。

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

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

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

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

  10. IAM ロールに次のインラインポリシーを追加します。これは、後でAWS SAMインフラストラクチャをデプロイするために使用されます。詳細については、「 IAM ユーザーガイド」の「IAM ID アクセス許可の追加および削除」を参照してください。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "UpdateLambdaPermissions", "Effect": "Allow", "Action": [ "lambda:UpdateFunctionConfiguration" ], "Resource": [ "*" ] } ] }

プロジェクトの buildspec をセットアップする

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

プロジェクトの buildspec を設定するには
  1. CodeBuild コンソールでビルドプロジェクトを選択し、編集Buildspec を選択します。

  2. Buildspec でビルドコマンドを挿入を選択し、エディタ に切り替えます

  3. 事前に入力されたビルドコマンドを削除し、次の 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
  4. [Update buildspec (buildspec の更新)] を選択します。

Lambda 設定を更新する

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

Lambda 関数の設定を更新するには
  1. [Start build] を選択します。

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

  3. 設定を選択し、次に環境変数を選択します。キー FEATURE_ENABLEDと値 を含む新しい環境変数が表示されますtrue

インフラストラクチャのクリーンアップ

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

インフラストラクチャをクリーンアップするには
  1. CloudWatch コンソールに移動し、 CodeBuild プロジェクトに関連付けられている CloudWatch ロググループを削除します。

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

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

拡張子

このサンプルを拡張して AWS CodeBuild Lambda Python を使用して他のAWSリソースを管理する場合は、次の手順を実行します。

  • Boto3 を使用して新しいリソースを変更するように Python スクリプトを更新します。

  • CodeBuild プロジェクトに関連付けられた IAM ロールを更新して、新しいリソースに対するアクセス許可を付与します。

  • 新しいリソースに関連付けられた新しい環境変数を buildspec に追加します。