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

AWS CodeCommit ya no está disponible para nuevos clientes. Los clientes existentes de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. Más información

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

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

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

    Este comando devuelve la declaración JSON de política que acaba de añadir, similar a la siguiente:

    { "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 AWS Management Console y abra la consola enIAM. https://console.aws.amazon.com/iam/

  5. En el panel de navegación del panel de control, elija Funciones y, en la lista de funciones, 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, seleccione GetRepository.

    • En Amazon Resource Name (ARN), introduce 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 codecommit/home. https://console.aws.amazon.com/codesuite/

  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 la función Lambda, elija el nombre de la función de la lista o introduzca el nombre ARN de la función.

    • (Opcional) En Datos personalizados, introduzca la información que desee incluir en la función Lambda (por ejemplo, el nombre del IRC canal que utilizan los desarrolladores para analizar el desarrollo en el 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, como cuando alguien envía una confirmación a su repositorio.

Para crear un disparador para una función de Lambda
  1. Abre un editor de texto sin formato y crea un JSON archivo 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 llamado MyDemoRepo que publica 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 activación en el JSON para cada activador de un repositorio. Para crear más de un activador para un repositorio, incluya bloques adicionales en elJSON. Recuerde que todos los disparadores creados en este archivo son para el repositorio especificado. No puedes crear activadores para varios repositorios en un solo JSON archivo. Por ejemplo, si desea crear dos activadores para un repositorio, puede crear un JSON archivo con dos bloques de activadores. 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, puedes incluir una cadena customData (por ejemplo, el nombre de un IRC canal que los desarrolladores usen cuando hablen sobre el 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 a la CodeCommit JSON devuelta en respuesta al disparador.

  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 JSON archivo 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, ejecute el put-repository-triggers comando para crear el disparador. CodeCommit Por ejemplo, para usar un JSON archivo llamado 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.