

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.

# Ejemplo: crear un activador AWS CodeCommit para una AWS Lambda función existente
<a name="how-to-notify-lambda-cc"></a>

La forma más sencilla de crear un disparador que invoque una función de Lambda es crear ese disparador en la consola de Lambda. Esta integración integrada garantiza que CodeCommit cuente con los permisos necesarios para ejecutar la función. Para añadir un disparador para una función de Lambda existente, vaya a la consola de Lambda y elija la función. En la pestaña **Triggers (Disparadores)** de la función, siga los pasos que se indican en **Add trigger (Añadir disparador)**. Estos pasos son similares a los que se muestran en [Crear la función de Lambda](how-to-notify-lambda.md#how-to-notify-lambda-create-function).

También puede crear un activador para una función Lambda en un CodeCommit repositorio. Para hacerlo, tendrá que seleccionar una función de Lambda existente que se va a invocar. También requiere que configure manualmente los permisos necesarios CodeCommit para ejecutar la función.

**Topics**
+ [Configurar manualmente los permisos para CodeCommit permitir la ejecución de una función Lambda](#how-to-notify-lam-perm)
+ [Crear un disparador para la función Lambda en un CodeCommit repositorio (consola)](#how-to-notify-lam-console)
+ [Crear un activador para una función Lambda para un CodeCommit repositorio ()AWS CLI](#how-to-notify-lam-cli)

## Configurar manualmente los permisos para CodeCommit permitir la ejecución de una función Lambda
<a name="how-to-notify-lam-perm"></a>

Si crea un disparador CodeCommit que invoca una función Lambda, debe configurar manualmente los permisos que CodeCommit permiten ejecutar la función Lambda. Para evitar la configuración manual, considere la posibilidad de crear el disparador para la función en la consola de Lambda.<a name="how-to-notify-lambda-create-function-perm"></a>

**Para CodeCommit permitir la ejecución de una función Lambda**

1. Abra un editor de texto sin formato y cree un archivo JSON que especifique el nombre de la función de Lambda, los detalles del CodeCommit repositorio y las acciones que desea permitir en Lambda, similar a lo siguiente:

   ```
   {
       "FunctionName": "MyCodeCommitFunction", 
       "StatementId": "1", 
       "Action": "lambda:InvokeFunction", 
       "Principal": "codecommit.amazonaws.com", 
       "SourceArn": "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo", 
       "SourceAccount": "111122223333"
   }
   ```

1. Guarde el archivo como un archivo JSON con un nombre que le resulte fácil de recordar (por ejemplo, .json). *AllowAccessfromMyDemoRepo*

1. Usando el archivo JSON que acaba de crear, en el terminal (Linux, macOS o Unix) o la línea de comandos (Windows), ejecute el comando **aws lambda add-permissions** para añadir un permiso a la política de recursos asociada con su función de Lambda:

   ```
   aws lambda add-permission --cli-input-json file://AllowAccessfromMyDemoRepo.json
   ```

   Este comando devuelve el JSON de la instrucción de directiva que acaba de añadir, de manera similar a esta:

   ```
   {
       "Statement": "{\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"111122223333\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo\"}},\"Action\":[\"lambda:InvokeFunction\"],\"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codecommit.amazonaws.com\"},\"Sid\":\"1\"}"
   }
   ```

   Para obtener más información sobre las políticas de recursos para las funciones Lambda, consulte [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)[The Pull/Push Event Models](https://docs.aws.amazon.com/lambda/latest/dg/intro-invocation-modes.html) en la Guía del *AWS Lambda usuario*.

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. En el **panel** de navegación del panel de control, elija **Funciones** y, en la lista de funciones, seleccione*lambda\$1basic\$1execution*.

1. En la página de resumen del rol, elija la pestaña **Permissions (Permisos)** y en **Inline Policies (Políticas en línea)**, seleccione **Create Role Policy (Crear política de rol)**.

1. En la página **Set Permissions**, elija **Policy Generator** y después elija **Select**.

1. En la página **Edit Permissions**, lleve a cabo alguna de las siguientes operaciones:
   + En **Effect**, elija **Allow**.
   + En **Servicio de AWS **, seleccione **AWS CodeCommit**.
   + En **Acciones**, seleccione **GetRepository**.
   + En **Amazon Resource Name (ARN)**, introduzca el ARN para el repositorio (por ejemplo, `arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo`).

   Elija **Add statement (Añadir declaración)** y, luego, seleccione **Next Step (Paso siguiente)**.

1. En la página **Review Policy (Revisar política)**, elija **Apply Policy (Aplicar política)**. 

   Su instrucción de directiva debe parecerse a los siguientes ejemplos:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt11111111",
               "Effect": "Allow",
               "Action": [
                   "codecommit:GetRepository"
               ],
               "Resource": [
                   "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo"
               ]
           }
       ]
   }
   ```

------

## Crear un disparador para la función Lambda en un CodeCommit repositorio (consola)
<a name="how-to-notify-lam-console"></a>

Una vez creada la función Lambda, puede crear un disparador CodeCommit que ejecute la función en respuesta a los eventos del repositorio que especifique.

**nota**  
Antes de poder probar o ejecutar correctamente el desencadenador del ejemplo, debe configurar las políticas que permiten CodeCommit invocar la función y la función Lambda para obtener información sobre el repositorio. Para obtener más información, consulte [Para CodeCommit permitir la ejecución de una función Lambda](#how-to-notify-lambda-create-function-perm).

**Para crear un disparador para una función de Lambda**

1. [Abra la CodeCommit consola en codecommit/home. https://console.aws.amazon.com/codesuite/](https://console.aws.amazon.com/codesuite/codecommit/home)

1. En **Repositories (Repositorios)**, seleccione aquel en el que quiera crear los disparadores para los eventos del repositorio.

1. En el panel de navegación del repositorio, elija **Settings (Configuración)** y, a continuación, seleccione **Triggers (Disparadores)**.

1. Elija **Create trigger**.

1. En **Create trigger (Crear disparador)**, haga lo siguiente:

    
   + En **Nombre del disparador**, introduzca un nombre para el disparador (por ejemplo,). *MyLambdaFunctionTrigger*
   + En **Eventos**, seleccione los eventos del repositorio que activan la función de Lambda. 

     Si elige **All repository events**, no podrá seleccionar ningún otro evento. Si desea seleccionar un subconjunto de eventos, borre **All repository events** y seleccione los eventos que quiera de la lista. Por ejemplo, si desea que el disparador solo se active cuando un usuario crea una etiqueta o una ramificación en el repositorio de CodeCommit , elimine **All repository events (Todos los eventos del repositorio)** y elija **Create branch or tag (Crear bifurcación o etiqueta)**.
   + Si desea que el disparador se aplique a todas las ramificaciones del repositorio, en **Branches (Ramificaciones)**, deje la selección en blanco, ya que esta opción predeterminada se aplica el disparador para que todas las ramificaciones de forma automática. Si desea que este disparador se aplique a ramificaciones específicas solo, elija hasta 10 nombres de ramificaciones de la lista de ramificaciones del repositorio.
   + En **Choose the service to use (Elija el servicio que utilizar)**, seleccione **AWS Lambda**.
   + En **función de Lambda**, seleccione el nombre de la función de la lista o escriba el ARN de la función.
   + (Opcional) En **Datos personalizados**, introduzca la información que desee incluir en la función de Lambda (por ejemplo, el nombre del canal IRC que usan los desarrolladores para hablar del desarrollo del repositorio). Este campo es una cadena. No se puede usar para transmitir parámetros dinámicos.

1. (Opcional) Elija **Test trigger (Probar disparador)**. Esta opción intenta invocar la función con datos de muestra sobre el repositorio, incluido el ID de confirmación más reciente para el repositorio. (Si no existe ningún historial de confirmaciones, se generan valores de muestra compuestos de ceros). Esto le ayuda a confirmar que ha configurado correctamente el acceso entre CodeCommit y la función Lambda.

1. Seleccione **Create trigger (Crear disparador)** para acabar de crear el disparador.

1. Para verificar la funcionalidad del disparador, cree y envíe una confirmación al repositorio en el que haya configurado el disparador. Debería ver una respuesta de la función Lambda en la pestaña **Monitorización** para esa función de Lambda en la consola. 

## Crear un activador para una función Lambda para un CodeCommit repositorio ()AWS CLI
<a name="how-to-notify-lam-cli"></a>

También puede usar la línea de comandos para crear un activador para una función Lambda en respuesta a eventos del CodeCommit repositorio, por ejemplo, cuando alguien envía una confirmación a su repositorio. 

**Para crear un disparador para una función de Lambda**

1. Abrir un editor de texto sin formato y cree un archivo JSON que especifique:
   + El nombre de la función de Lambda.
   + El repositorio y las ramificaciones que desee monitorizar con este disparador. (Si no especifica ramificaciones, el disparador se aplica a todas las ramificaciones del repositorio).
   + Los eventos que activan este disparador.

    Guarde el archivo. 

   Por ejemplo, si desea crear un activador para un repositorio denominado *MyDemoRepo* que publique todos los eventos del repositorio en una función Lambda denominada *MyCodeCommitFunction* para dos ramas, *main* y: *preprod*

   ```
   {
       "repositoryName": "MyDemoRepo",
       "triggers": [
           {
               "name": "MyLambdaFunctionTrigger",
               "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction",
               "customData": "",
               "branches": [
                   "main", "preprod"
               ],
               "events": [
                   "all"
               ]
           }
       ]
   }
   ```

   Debe haber un bloque de disparadores en JSON para cada disparador en un repositorio. Para crear más de un disparador en un repositorio, incluya bloques adicionales en el JSON. Recuerde que todos los disparadores creados en este archivo son para el repositorio especificado. No puede crear disparadores de varios repositorios en un único archivo JSON. Por ejemplo, si desea crear dos disparadores para un repositorio, puede crear un archivo JSON con dos bloques de disparadores. En el siguiente ejemplo, no se especifican ramificaciones en el segundo bloque de disparadores, por lo que el disparador se aplica a todas las ramificaciones:

    

   ```
   {
       "repositoryName": "MyDemoRepo",
       "triggers": [
           {
               "name": "MyLambdaFunctionTrigger",
               "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction",
               "customData": "",
               "branches": [
                   "main", "preprod"
               ],
               "events": [
                   "all"
               ]
           },
           {
               "name": "MyOtherLambdaFunctionTrigger",
               "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyOtherCodeCommitFunction",
               "customData": "",
               "branches": [],
               "events": [
                   "updateReference", "deleteReference"
               ]
           }
       ]
   }
   ```

   Puede crear disparadores para eventos que especifique, como por ejemplo cuando se inserta una confirmación en un repositorio. Entre los tipos de eventos se incluyen:
   + `all`: todos los eventos del repositorio y las ramificaciones especificados.
   + `updateReference`: si las confirmaciones se envían al repositorio y ramificaciones especificados.
   + `createReference`: si se crea una nueva ramificación o etiqueta en el repositorio especificado.
   + `deleteReference`: si se elimina una ramificación o etiqueta en el repositorio especificado.
**nota**  
Puede usar más de un tipo de evento en un disparador. Sin embargo, si especifica `all`, no podrá especificar ningún otro evento. 

   Para ver la lista completa de tipos de eventos válidos, en el terminal o el símbolo del sistema, introduzca **aws codecommit put-repository-triggers help**. 

   Además, puede incluir una cadena en `customData` (por ejemplo, el nombre del canal IRC que usan los desarrolladores para hablar del desarrollo en este repositorio). Este campo es una cadena. No se puede usar para transmitir parámetros dinámicos. Esta cadena se añade como atributo al CodeCommit JSON devuelto en respuesta al desencadenador.

1. (Opcional) Ejecute el comando **test-repository-triggers** en un terminal o la línea de comandos. Por ejemplo, se utiliza lo siguiente para comprobar que el archivo JSON denominado *trigger.json* es válido y CodeCommit puede activar la función Lambda. Esta prueba utiliza datos de muestra para disparar la función si no hay datos reales disponibles.

   ```
   aws codecommit test-repository-triggers --cli-input-json file://trigger.json
   ```

   Si se ejecuta correctamente, este comando proporciona información similar a la siguiente:

   ```
   {
       "successfulExecutions": [
           "MyLambdaFunctionTrigger"
       ],
       "failedExecutions": []
   }
   ```

1. En el terminal o el símbolo del sistema, ejecute el comando **put-repository-triggers** para crear el disparador en CodeCommit. Por ejemplo, para usar un archivo JSON llamado *trigger.json* para crear el activador:

   `aws codecommit put-repository-triggers --cli-input-json file://trigger.json`

   Este comando devuelve un ID de configuración similar a este:

   ```
   {
       "configurationId": "0123456-I-AM-AN-EXAMPLE"
   }
   ```

1. Para ver la configuración del disparador, ejecute el comando **get-repository-triggers** y especifique el nombre del repositorio:

   `aws codecommit get-repository-triggers --repository-name MyDemoRepo`

   Este comando devuelve la estructura de todos los disparadores configurados para el repositorio, de forma similar a la siguiente:

   ```
   {
       "configurationId": "0123456-I-AM-AN-EXAMPLE",
       "triggers": [
           {
               "events": [
                   "all"
               ],
               "destinationArn": "arn:aws:lambda:us-east-1:111122223333:MyCodeCommitFunction",
               "branches": [
                   "main",
                   "preprod"
               ],
               "name": "MyLambdaFunctionTrigger",
               "customData": "Project ID 12345"
           }
       ]
   }
   ```

1. Para comprobar la funcionalidad del disparador, cree y envíe una confirmación al repositorio en el que haya configurado el disparador. Debería ver una respuesta de la función Lambda en la pestaña **Monitorización** para esa función de Lambda en la consola. 