Ejemplo: crear un activador AWS CodeCommit para una AWS Lambda función existente - AWS CodeCommit

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

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 Creación de la función de Lambda.

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.

Configurar manualmente los permisos para CodeCommit permitir la ejecución de una función Lambda

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.

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" }
  2. Guarde el archivo como un archivo JSON con un nombre que le resulte fácil de recordar (por ejemplo, .json). AllowAccessfromMyDemoRepo

  3. 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 AddPermissionlos modelos de eventos Pull/Push en la Guía del usuario.AWS Lambda

  4. Inicie sesión en la consola de IAM AWS Management Console y ábrala en https://console.aws.amazon.com/iam/.

  5. En el panel de navegación Dashboard, elija Roles y, en la lista de roles, seleccione lambda_basic_execution.

  6. 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).

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

  8. 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, selecciona 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).

  9. 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:

    { "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)

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.

Para crear un disparador para una función de Lambda
  1. Abra la CodeCommit consola en https://console.aws.amazon.com/codesuite/codecommit/home.

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

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

  4. Elija Create trigger.

  5. 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 activador se ejecute solo cuando un usuario cree una etiqueta o una rama en el CodeCommit repositorio, elimine Todos los eventos del repositorio y, a continuación, elija Crear rama 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.

  6. (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.

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

  8. 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

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 MyDemoRepoque publique todos los eventos del repositorio en una función Lambda denominada así MyCodeCommitFunctionpor 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.

  2. (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": [] }
  3. En una terminal o línea de comandos, ejecuta el put-repository-triggers comando para crear el disparador. CodeCommit Por ejemplo, para usar un archivo JSON denominado trigger.json para crear el disparador:

    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" }
  4. 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" } ] }
  5. 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.