

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Lambda Python 更新 Lamb CodeBuild da 函数配置
<a name="sample-lambda-boto3-python"></a>

以下 Python 示例使用 [Boto3 和](https://aws.amazon.com/sdk-for-python/) Lambda CodeBuild Python 更新 Lambda 函数的配置。此示例可以扩展为以编程方式管理其他 AWS 资源。有关更多信息，请参阅 [Boto3 文档](https://aws.amazon.com/sdk-for-python/)。

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

在账户中创建或查找 Lambda 函数。

此示例假设您已经在账户中创建了一个 Lambda 函数，并将用于 CodeBuild 更新 Lambda 函数的环境变量。有关通过设置 Lambda 函数的更多信息 CodeBuild，请参阅[使用 Lambda Java 部署 Lam AWS SAM b CodeBuild da 函数](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](https://console.aws.amazon.com/codesuite/codebuild/home) /home 中打开 AWS CodeBuild 控制台。

1.  如果显示 CodeBuild 信息页面，请选择 “**创建构建项目**”。否则，请在导航窗格中，展开**构建**，选择**构建项目**，然后选择**创建构建项目**。

1. 在**项目名称**中，输入此构建项目的名称。每个 AWS 账户中的构建项目名称必须是唯一的。您还可以包含构建项目的可选描述，以帮助其他用户了解此项目的用途。

1. 在**源代码**中，选择 AWS SAM 项目所在的源存储库。

1. 在**环境**中：
   + 在**计算**中，选择 **Lambda**。
   + 在**运行时**中，选择 **Python**。
   + 对于 **Image**，选择 **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 policy**（编辑信任策略）。

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 控制台中，选择您的构建项目，然后选择 “**编辑**” 和 “**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 (更新构建规范)**。

## 更新 Lambda 配置
<a name="sample-lambda-boto3-python.update"></a>

使用 CodeBuild Lambda Python 自动更新您的 Lambda 函数的配置。

**更新 Lambda 函数的配置**

1. 选择**启动构建**。

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 中。