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

AWS CodeCommit ya no está disponible para nuevos clientes. Los clientes actuales 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 AWS CodeCommit activador para una AWS Lambda función

Puede crear un disparador para un CodeCommit repositorio de modo que los eventos del repositorio invoquen una función Lambda. En este ejemplo, se crea una función Lambda que devuelve lo URL utilizado para clonar el repositorio en un registro de Amazon CloudWatch .

Creación de la función de Lambda

Al utilizar la consola Lambda para crear la función, también puede crear un CodeCommit activador para la función Lambda. Los siguientes pasos incluyen una función de Lambda de ejemplo. El ejemplo está disponible en dos idiomas: JavaScript y Python. La función devuelve lo URLs utilizado para clonar un repositorio en un CloudWatch registro.

Para crear una función de Lambda mediante un esquema de Lambda
  1. Inicie sesión en AWS Management Console y abra la AWS Lambda consola en https://console.aws.amazon.com/lambda/.

  2. En la página Funciones de Lambda, seleccione Crear una función. (Si no ha utilizado Lambda antes, seleccione Comience ahora).

  3. En la página Crear función, elija Diseñar desde cero. En Nombre de la función, proporciona un nombre para la función, por ejemplo MyLambdaFunctionforCodeCommit. En Runtime, elija el idioma que desee usar para escribir la función y, a continuación, elija Crear función.

  4. En la pestaña Configuration (Configuración), elija Add trigger (Agregar desencadenador).

  5. En la configuración del activador, elija CodeCommituno de los servicios de la lista desplegable.

    Creación de un repositorio desde la consola

    • En Nombre del repositorio, elija el nombre del repositorio donde desea configurar el disparador que utiliza la función de Lambda en respuesta a los eventos del repositorio.

    • 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 AWS 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, elija All branches. En caso contrario, elija Specific branches. La ramificación predeterminada para el repositorio se añade por defecto. Puede conservar o eliminar esta ramificación de la lista. Seleccione hasta un máximo de diez nombres de ramificaciones de la lista de ramificaciones del repositorio.

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

    Elija Añadir.

  6. En la página Configuration (Configuración), en Function code (Código de función), en el tipo de entrada de código, elija Edit code inline (Editar código insertado). En Runtime (Motor de ejecución), elija Node.js. Si desea crear una función de ejemplo en Python, elija Python.

  7. En Code entry type, elija Edit code inline y, a continuación, sustituya el código "hello world" por uno de los dos siguientes ejemplos.

    Para Node.js:

    import { CodeCommitClient, GetRepositoryCommand, } from "@aws-sdk/client-codecommit"; const codecommit = new CodeCommitClient({ region: "your-region" }); /** * @param {{ Records: { codecommit: { references: { ref: string }[] }, eventSourceARN: string }[]} event */ export const handler = async (event) => { // Log the updated references from the event const references = event.Records[0].codecommit.references.map( (reference) => reference.ref, ); console.log("References:", references); // Get the repository from the event and show its git clone URL const repository = event.Records[0].eventSourceARN.split(":")[5]; const params = { repositoryName: repository, }; try { const data = await codecommit.send(new GetRepositoryCommand(params)); console.log("Clone URL:", data.repositoryMetadata.cloneUrlHttp); return data.repositoryMetadata.cloneUrlHttp; } catch (error) { console.error("Error:", error); throw new Error( `Error getting repository metadata for repository ${repository}`, ); } };

    Para Python:

    import json import boto3 codecommit = boto3.client("codecommit") def lambda_handler(event, context): # Log the updated references from the event references = { reference["ref"] for reference in event["Records"][0]["codecommit"]["references"] } print("References: " + str(references)) # Get the repository from the event and show its git clone URL repository = event["Records"][0]["eventSourceARN"].split(":")[5] try: response = codecommit.get_repository(repositoryName=repository) print("Clone URL: " + response["repositoryMetadata"]["cloneUrlHttp"]) return response["repositoryMetadata"]["cloneUrlHttp"] except Exception as e: print(e) print( "Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.".format( repository ) ) raise e
  8. En la pestaña Permisos, en la función de ejecución, elija la función para abrirla en la IAM consola. Edite la política asociada para agregar el permiso GetRepository del repositorio en el que desea utilizar el desencadenador.

Visualización del disparador de la función de Lambda en el repositorio de AWS CodeCommit

Una vez que haya creado la función de Lambda, puede ver y probar el disparador en AWS CodeCommit. Al probar el disparador, se ejecuta la función en respuesta a los eventos del repositorio que especifique.

Para ver y probar el disparador de la función de Lambda
  1. Abre la CodeCommit consola en https://console.aws.amazon.com/codesuite/codecommit/home.

  2. En Repositories (Repositorios), elija el repositorio donde desea ver los disparadores.

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

  4. Revise la lista de disparadores para el repositorio. Debería ver el disparador que ha creado en la consola de Lambda. Elíjala de la lista y, a continuación, 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 AWS CodeCommit y la función Lambda.

  5. Para continuar comprobando 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. En la pestaña Supervisión, seleccione Ver los inicios de sesión CloudWatch. La CloudWatch consola se abre en una pestaña nueva y muestra los eventos de su función. Seleccione el flujo de registro de la lista correspondiente al momento en el que envió la confirmación. Debería ver información del evento similar a esta:

    START RequestId: 70afdc9a-EXAMPLE Version: $LATEST 2015-11-10T18:18:28.689Z 70afdc9a-EXAMPLE References: [ 'refs/heads/main' ] 2015-11-10T18:18:29.814Z 70afdc9a-EXAMPLE Clone URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo END RequestId: 70afdc9a-EXAMPLE REPORT RequestId: 70afdc9a-EXAMPLE Duration: 1126.87 ms Billed Duration: 1200 ms Memory Size: 128 MB Max Memory Used: 14 MB