

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Atualize a configuração de uma função Lambda com o CodeBuild Lambda Python
<a name="sample-lambda-boto3-python"></a>

O exemplo de Python a seguir usa [Boto3](https://aws.amazon.com/sdk-for-python/) e CodeBuild Lambda Python para atualizar a configuração de uma função Lambda. Esse exemplo pode ser estendido para gerenciar outros AWS recursos de forma programática. Para obter mais informações, consulte a [documentação do Boto3](https://aws.amazon.com/sdk-for-python/).

## Pré-requisitos
<a name="sample-lambda-boto3-python.prerequisites"></a>

Crie ou encontre uma função do Lambda na sua conta.

Esse exemplo pressupõe que você já tenha criado uma função Lambda em sua conta e a CodeBuild usará para atualizar as variáveis de ambiente da função Lambda. Para obter mais informações sobre como configurar uma função Lambda por meio CodeBuild, consulte o [Implemente uma função Lambda usando o AWS SAM CodeBuild Lambda Java](sample-lambda-sam-gradle.md) exemplo ou visite. [AWS Lambda](https://aws.amazon.com/lambda/)

## Configurar o repositório de origem
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Crie um repositório de origem para armazenar o script Python do Boto3.

**Para configurar o repositório de origem**

1. Copie o script do Python a seguir em um novo arquivo chamado `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. Faça o upload do arquivo Python em um repositório de origem compatível. Para obter uma lista dos tipos de fonte compatíveis, consulte [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Crie um projeto CodeBuild Lambda Python
<a name="sample-lambda-boto3-python.create-project"></a>

Crie um projeto CodeBuild Lambda Python.

**Para criar seu projeto CodeBuild Lambda Java**

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Se uma página de CodeBuild informações for exibida, escolha **Criar projeto de construção**. Caso contrário, no painel de navegação, expanda **Compilar**, escolha **Projetos de compilação** e, depois, **Criar projeto de compilação**. 

1. Em **Nome do projeto**, insira um nome para esse projeto de compilação. Os nomes dos projetos de criação devem ser exclusivos em cada AWS conta. Também é possível incluir uma descrição opcional do projeto de compilação para ajudar outros usuários a entender para que esse projeto é usado.

1. Em **Código-fonte**, selecione o repositório de origem em que seu AWS SAM projeto está localizado.

1. Em **Ambiente**:
   + Para **Computação**, selecione **Lambda**.
   + Em **Runtime(s)**, escolha **Python**.
   + Para **Imagem**, selecione **aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12**.
   + Em **Perfil de serviço**, deixe a opção **Novo perfil de serviço** selecionada. Anote o **nome da função**. Isso será necessário quando você atualizar as permissões do IAM do projeto posteriormente neste exemplo.

1. Selecione **Create build project (Criar projeto de compilação)**.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. No painel de navegação, escolha **Funções** e selecione o perfil de serviço associado ao projeto. Você pode encontrar sua função de projeto em CodeBuild selecionando seu projeto de compilação, escolhendo **Editar**, **Ambiente** e, em seguida, **Função de serviço**.

1. Escolha a guia **Relacionamentos de confiança** e, em seguida, escolha **Editar política de confiança**.

1. Adicione a seguinte política em linha ao perfil do IAM. Isso será usado para implantar sua AWS SAM infraestrutura posteriormente. Para obter mais informações, consulte [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no *Guia do usuário do IAM*.

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

****  

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

------

## Configurar o buildspec do projeto
<a name="sample-lambda-boto3-python.set-up-buildspec"></a>

Para atualizar a função do Lambda, o script lê as variáveis de ambiente do buildspec para encontrar o nome da função do Lambda, o nome da variável de ambiente e o valor da variável de ambiente.

**Para configurar o buildspec do projeto**

1. No CodeBuild console, selecione seu projeto de compilação e escolha **Editar** e **Buildspec**.

1. Em **Buildspec**, escolha **Inserir comandos de compilação** e, em seguida, escolha **Alternar para editor**.

1. Exclua os comandos de compilação pré-preenchidos e cole o seguinte 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. Selecione **Atualizar buildspec**.

## Atualizar a configuração do Lambda
<a name="sample-lambda-boto3-python.update"></a>

Use o CodeBuild Lambda Python para atualizar automaticamente a configuração da função Lambda.

**Para atualizar a configuração da função do Lambda**

1. Selecione **Iniciar compilação**.

1. Quando a compilação estiver concluída, navegue até a função do Lambda.

1. Escolha **Configuração** e, em seguida, as variáveis de **Ambiente**. Você deve ver uma nova variável de ambiente com a chave `FEATURE_ENABLED` e o valor `true`.

## Limpar a infraestrutura
<a name="sample-lambda-boto3-python.clean-up"></a>

Para evitar cobranças adicionais pelos recursos que você usou durante este tutorial, exclua os recursos criados para o seu CodeBuild projeto.

**Para limpar a infraestrutura**

1. Navegue até o CloudWatch console e exclua os grupos de CloudWatch registros associados ao seu CodeBuild projeto.

1. Navegue até o CodeBuild console e exclua seu CodeBuild projeto escolhendo **Excluir projeto de compilação**.

1. Se você criou uma função do Lambda para o propósito deste exemplo, escolha **Ações** e **Excluir função** para limpar a função do Lambda.

## Extensões
<a name="sample-lambda-boto3-python.extensions"></a>

Se você quiser estender essa amostra para gerenciar outros AWS recursos usando o AWS CodeBuild Lambda Python:
+ Atualize o script Python para modificar os novos recursos usando o Boto3.
+ Atualize o papel do IAM associado ao seu CodeBuild projeto para ter permissões para os novos recursos.
+ Adicione quaisquer novas variáveis de ambiente associadas aos novos recursos ao buildspec.