

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Actualizar la configuración de una función Lambda con CodeBuild Lambda Python
<a name="sample-lambda-boto3-python"></a>

En el siguiente ejemplo de Python, se utilizan [Boto3](https://aws.amazon.com/sdk-for-python/) y Lambda CodeBuild Python para actualizar la configuración de una función Lambda. Este ejemplo se puede ampliar para gestionar otros recursos mediante programación. AWS Para obtener más información, consulte la [documentación de Boto3](https://aws.amazon.com/sdk-for-python/).

## Requisitos previos
<a name="sample-lambda-boto3-python.prerequisites"></a>

Cree o busque una función de Lambda en su cuenta.

En este ejemplo se supone que ya ha creado una función Lambda en su cuenta y que la utilizará CodeBuild para actualizar las variables de entorno de la función Lambda. Para obtener más información sobre cómo configurar una función Lambda mediante CodeBuild, consulte el [Implemente una función Lambda con AWS SAM CodeBuild Lambda Java](sample-lambda-sam-gradle.md) ejemplo o visite. [AWS Lambda](https://aws.amazon.com/lambda/)

## Configuración del repositorio de origen
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Cree un repositorio de origen para almacenar su script de Boto3 para Python.

**Para configurar el repositorio de origen**

1. Copie el siguiente script de Python en un archivo nuevo denominado `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. Cargue el archivo de python a un repositorio de origen compatible. Para obtener una lista de los tipos de fuentes compatibles, consulte [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Crear un proyecto de CodeBuild Python Lambda
<a name="sample-lambda-boto3-python.create-project"></a>

Cree un proyecto de CodeBuild Python Lambda.

**Para crear su proyecto CodeBuild Lambda Java**

1. Abra la AWS CodeBuild consola en [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Si aparece una página de CodeBuild información, elija **Crear** proyecto de compilación. De lo contrario, en el panel de navegación, expanda **Compilar**, elija **Proyectos de compilación** y, a continuación, elija **Crear proyecto de compilación**. 

1. En **Project name (Nombre de proyecto)**, escriba un nombre para este proyecto de compilación. Los nombres de los proyectos de compilación deben ser únicos en cada AWS cuenta. También puede introducir una descripción opcional del proyecto de compilación para ayudar a otros usuarios a entender para qué se utiliza el proyecto.

1. En **Fuente**, selecciona el repositorio de origen en el que se encuentra tu AWS SAM proyecto.

1. En **Environment (Entorno)**:
   + En **Computación**, seleccione **Lambda**.
   + En **Tiempo(s) de ejecución**, elija **Python**.
   + En **Imagen**, selecciona **aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12**.
   + En **Rol de servicio**, seleccione **Nuevo rol de servicio**. Anote el **Nombre del rol**. Esto será necesario cuando actualice los permisos de IAM del proyecto más adelante en este ejemplo.

1. Elija **Crear el proyecto de compilación**.

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. En el panel de navegación, elija **Roles** y seleccione el rol de servicio asociado a su proyecto. ******Para encontrar su función en el proyecto, seleccione el proyecto de construcción, elija Edición, Entorno y, a continuación, la función de servicio CodeBuild .******

1. Elija la pestaña **Relaciones de confianza** y, a continuación, **Editar política de confianza**.

1. Agregue la siguiente política insertada al rol de IAM. Esto se utilizará para implementar su AWS SAM infraestructura más adelante. Para obtener más información, consulta [Adición y eliminación de permisos de identidad de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) en la *Guía del usuario de IAM*.

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

****  

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

------

## Configuración de la especificación de compilación del proyecto
<a name="sample-lambda-boto3-python.set-up-buildspec"></a>

Para actualizar la función de Lambda, el script lee las variables de entorno de la especificación de compilación y busca el nombre de la función de Lambda, el nombre de la variable de entorno y el valor de la variable de entorno.

**Para configurar la especificación de compilación del proyecto**

1. En la CodeBuild consola, selecciona tu proyecto de compilación y, a continuación, selecciona **Editar** y **Buildspec**.

1. En **Especificación de compilación**, elija **Insertar comandos de compilación** y, a continuación, **Cambiar al editor**.

1. Elimine los comandos de compilación rellenados previamente y pegue la siguiente especificación de compilación.

   ```
   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. Seleccione **Update buildspec (Actualizar buildspec)**.

## Actualización de la configuración de Lambda
<a name="sample-lambda-boto3-python.update"></a>

Utilice CodeBuild Lambda Python para actualizar automáticamente la configuración de la función Lambda.

**Para actualizar la configuración de la función de Lambda**

1. Seleccione **Iniciar la compilación**.

1. Una vez finalizada la compilación, navegue hasta su función de Lambda.

1. Seleccione **Configuración** y, a continuación, elija las variables de **Entorno**. Debería aparecer una nueva variable de entorno con la clave `FEATURE_ENABLED` y el valor `true`.

## Limpieza de la infraestructura
<a name="sample-lambda-boto3-python.clean-up"></a>

Para evitar cargos adicionales por los recursos que utilizó durante este tutorial, elimine los recursos creados para su CodeBuild proyecto.

**Para limpiar la infraestructura**

1. Navegue a la CloudWatch consola y elimine los grupos de CloudWatch registros asociados a su CodeBuild proyecto.

1. Ve a la CodeBuild consola y elimina tu CodeBuild proyecto seleccionando **Eliminar proyecto de compilación**.

1. Si ha creado una función de Lambda para usarla en este ejemplo, elija **Acciones** y **Eliminar la función** para limpiar la función de Lambda.

## Extensiones
<a name="sample-lambda-boto3-python.extensions"></a>

Si desea ampliar este ejemplo para gestionar otros AWS recursos mediante AWS CodeBuild Lambda Python:
+ Actualice el script de Python para modificar los nuevos recursos con Boto3.
+ Actualice la función de IAM asociada a su CodeBuild proyecto para tener permisos para los nuevos recursos.
+ Agregue cualquier variable de entorno nueva asociada a los nuevos recursos a su especificación de compilación.