

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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 函數的詳細資訊，請參閱[使用 AWS SAM 搭配 CodeBuild Lambda Java 部署 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：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1.  如果顯示 CodeBuild 資訊頁面，請選擇**建立組建專案**。否則，請在導覽窗格中展開**組**建，選擇**組建專案**，然後選擇**建立組建專案**。

1. 在 **Project name (專案名稱)** 中，輸入此建置專案的名稱。組建專案名稱在每個 AWS 帳戶中必須是唯一的。您也可以包含建置專案的選用描述，以協助其他使用者了解此專案的用途。

1. 在**來源**中，選取 AWS SAM 專案所在的來源儲存庫。

1. 在 **Environment (環境)** 中：
   + 針對**運算**，選取 **Lambda**。
   + 針對 **Runtime(s)**，選取 **Python**。
   + 針對**影像**，選取 **aws/codebuild/amazonlinux-x86\$164-lambda-standard：python3.12**。
   + 對於**服務角色**，保留選取**新的服務角色**。記下**角色名稱**。當您稍後在此範例中更新專案的 IAM 許可時，這是必要的。

1. 選擇 **Create build project (建立建置專案)**。

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**角色**，然後選取與您的專案相關聯的服務角色。您可以透過選取建置專案、選擇**編輯**、**環境，然後選擇服務角色**，在 CodeBuild 中尋找專案角色。 ****

1. 選擇 **Trust Relationships** (信任關係) 標籤，然後選擇 **Edit Trust Relationship** (編輯信任政策)。

1. 將下列內嵌政策新增至您的 IAM 角色。這將用於稍後部署您的 AWS SAM 基礎設施。如需詳細資訊，請參閱《 IAM 使用者指南》**中的[新增和移除 IAM 身分許可](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 主控台中，選取您的建置專案，然後選擇**編輯**和**建置規格**。

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 資源：
+ 更新 Python 指令碼以使用 Boto3 修改新資源。
+ 更新與 CodeBuild 專案相關聯的 IAM 角色，以取得新資源的許可。
+ 將與新資源相關聯的任何新環境變數新增至您的 buildspec。