Trabajar con tipos de acciones - AWS CodePipeline

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.

Trabajar con tipos de acciones

Los tipos de acciones son acciones preconfiguradas que usted, como proveedor, crea para los clientes mediante uno de los modelos de integración compatibles en AWS CodePipeline.

Puede solicitar, ver y actualizar los tipos de acciones. Si el tipo de acción se creó para su cuenta como propietario, puede usarlo AWS CLI para ver o actualizar las propiedades y la estructura del tipo de acción. Si eres el proveedor o el propietario del tipo de acción, tus clientes pueden elegir la acción y añadirla a sus pipelines una vez que esté disponible en CodePipeline.

nota

Las acciones se crean con custom en el campo owner para ejecutarlas con un proceso de trabajo. No se crean con un modelo de integración. Para obtener información acerca de las acciones personalizadas, consulte Crear y añadir una acción personalizada en CodePipeline.

Componentes de tipo acción

Los siguientes componentes componen un tipo de acción.

  • ID de tipo de acción: el ID consta de la categoría, el propietario, el proveedor y la versión. En el siguiente ejemplo se muestra un ID de tipo de acción con el propietario de ThirdParty, una categoría de Test, el nombre de proveedor TestProvider y una versión de 1.

    { "Category": "Test", "Owner": "ThirdParty", "Provider": "TestProvider", "Version": "1" },
  • Configuración del ejecutor: el modelo de integración, o motor de acción, especificado al crear la acción. Al especificar el ejecutor de un tipo de acción, se elige uno de los dos tipos siguientes:

    • Lambda: el propietario del tipo de acción escribe la integración como una función Lambda, que se invoca CodePipeline siempre que haya un trabajo disponible para la acción.

    • JobWorker: El propietario del tipo de acción escribe la integración como un trabajador laboral que sondea los puestos disponibles en la cartera de clientes. A continuación, el trabajador ejecuta el trabajo y envía el resultado del trabajo a través CodePipeline de las CodePipeline API.

      nota

      El modelo de integración de los procesos de trabajo no es el modelo de integración preferido.

  • Artefactos de entrada y salida: límites de los artefactos que el propietario del tipo de acción designa para los clientes de la acción.

  • Permisos: la estrategia de permisos que designa a los clientes que pueden acceder al tipo de acción de terceros. Las estrategias de permisos disponibles dependen del modelo de integración elegido para el tipo de acción.

  • URL: enlaces profundos a recursos con los que el cliente puede interactuar, como la página de configuración del propietario del tipo de acción.

Solicitar un tipo de acción

Cuando un proveedor externo solicita un nuevo tipo de CodePipeline acción, el tipo de acción se crea para el propietario del tipo de acción CodePipeline, que puede administrar y ver el tipo de acción.

Un tipo de acción puede ser público o privado. Cuando se crea el tipo de acción, es privado. Para solicitar que un tipo de acción se cambie a una acción pública, ponte en contacto con el equipo CodePipeline de servicio.

Antes de crear el archivo de definición de acciones, los recursos del ejecutor y la solicitud de tipo de acción para el CodePipeline equipo, debes elegir un modelo de integración.

Paso 1: Elegir modelo de integración

Elija su modelo de integración y, a continuación, cree la configuración para ese modelo. Tras elegir el modelo de integración, debe configurar los recursos de integración.

  • Para el modelo de integración de Lambda, cree una función de Lambda y agregue permisos. Agregue permisos a la función Lambda de su integrador para proporcionar CodePipeline al servicio permisos para invocarlo mediante CodePipeline el principio del servicio:. codepipeline.amazonaws.com Los permisos se pueden agregar mediante la línea de AWS CloudFormation comandos.

    • Ejemplo de adición de permisos mediante AWS CloudFormation:

      CodePipelineLambdaBasedActionPermission: Type: 'AWS::Lambda::Permission' Properties: Action: 'lambda:invokeFunction' FunctionName: {"Fn::Sub": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:function-name"} Principal: codepipeline.amazonaws.com
    • Documentación para la línea de comandos

  • Para el modelo de integración de los trabajadores, se crea una integración con una lista de cuentas permitidas en la que el trabajador busca puestos de trabajo con las CodePipeline API.

Paso 2: Crear un archivo de definición de tipo de acción

El tipo de acción se define en un archivo de definición de tipo de acción mediante JSON. En el archivo, debe incluir la categoría de acción, el modelo de integración utilizado para administrar el tipo de acción y las propiedades de configuración.

nota

Después de crear una acción pública, no puede cambiar la propiedad del tipo de acción en properties de optional a required. No se puede cambiar el owner.

Para obtener más información sobre los parámetros del archivo de definición de tipos de acciones, consulta ActionTypeDeclarationy consulta UpdateActionTypela Referencia de la CodePipeline API.

El archivo de definición de tipos de acción consta de ocho secciones:

  • description: la descripción del tipo de acción que se va a actualizar.

  • executor: información sobre el ejecutor de un tipo de acción que se creó con un modelo de integración compatible, ya sea Lambda o job worker. Solo puede proporcionar jobWorkerExecutorConfiguration o lambdaExecutorConfiguration, según el tipo de ejecutor.

    • configuration: recursos para la configuración del tipo de acción, en función del modelo de integración elegido. Para el modelo de integración de Lambda, utilice el ARN de función de Lambda. Para el modelo de integración de procesos de trabajo, utilice la cuenta o la lista de cuentas desde donde se ejecuta el proceso de trabajo.

    • jobTimeout: el tiempo de espera en segundos para el trabajo. La ejecución de una acción puede constar de varios trabajos. Este es el tiempo de espera de una sola tarea y no de toda la ejecución de la acción.

      nota

      Para el modelo de integración de Lambda, el tiempo de espera máximo es de 15 minutos.

    • policyStatementsTemplate: La declaración de política que especifica los permisos en la cuenta del CodePipeline cliente que se necesitan para ejecutar correctamente una acción.

    • type: el modelo de integración utilizado para crear y actualizar el tipo de acción, ya sea Lambda o JobWorker.

  • id: la categoría, el propietario, el proveedor y el ID de versión del tipo de acción:

    • category: el tipo de acción puede realizarse en la etapa: fuente, compilación, implementación, prueba, invocación o aprobación.

    • provider: el proveedor del tipo de acción al que se llama, como la empresa proveedora o el nombre del producto. El nombre del proveedor se proporciona al crear el tipo de acción.

    • owner: el creador del tipo de acción que se llama: AWS o ThirdParty.

    • version: una cadena utilizada para versionar el tipo de acción. Para la primera versión, establezca el número de versión en 1.

  • inputArtifactDetails: el número de artefactos que cabe esperar de la fase anterior de la canalización.

  • outputArtifactDetails: el número de artefactos que cabe esperar del resultado de la fase de tipo acción.

  • permissions: detalles que identifican las cuentas con permisos para usar el tipo de acción.

  • properties: los parámetros necesarios para completar las tareas del proyecto.

    • description: la descripción de la propiedad de configuración de la acción que se muestra a los usuarios.

    • optional: si la propiedad de configuración es opcional.

    • noEcho: si el valor del campo introducido por el cliente se omite del registro. Si es true así, el valor se redacta cuando se devuelve con una solicitud de GetPipeline API.

    • key: si la propiedad de configuración es una clave.

    • queryable: si la propiedad se usa con el sondeo. Un tipo de acción puede tener hasta una propiedad consultable. Si tiene una, dicha propiedad debe ser obligatoria y no ser secreta.

    • name: el nombre de la propiedad que se muestra a los usuarios.

  • urls: se muestra una lista de las URL CodePipeline a los usuarios.

    • entityUrlTemplate: URL de los recursos externos del tipo de acción, como una página de configuración.

    • executionUrlTemplate: URL con los detalles de la última ejecución de la acción.

    • revisionUrlTemplate: URL que aparece en la CodePipeline consola y dirige a la página en la que los clientes pueden actualizar o cambiar la configuración de la acción externa.

    • thirdPartyConfigurationUrl: la dirección URL de una página en la que los usuarios pueden registrarse en un servicio externo y realizar la configuración inicial de la acción proporcionada por ese servicio.

En el código siguiente se muestra un ejemplo de archivo de definición del tipo de acción.

{ "actionType": { "description": "string", "executor": { "configuration": { "jobWorkerExecutorConfiguration": { "pollingAccounts": [ "string" ], "pollingServicePrincipals": [ "string" ] }, "lambdaExecutorConfiguration": { "lambdaFunctionArn": "string" } }, "jobTimeout": number, "policyStatementsTemplate": "string", "type": "string" }, "id": { "category": "string", "owner": "string", "provider": "string", "version": "string" }, "inputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "outputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "permissions": { "allowedAccounts": [ "string" ] }, "properties": [ { "description": "string", "key": boolean, "name": "string", "noEcho": boolean, "optional": boolean, "queryable": boolean } ], "urls": { "configurationUrl": "string", "entityUrlTemplate": "string", "executionUrlTemplate": "string", "revisionUrlTemplate": "string" } } }

Paso 3: registre su integración en CodePipeline

Para registrar su tipo de acción CodePipeline, póngase en contacto con el equipo de CodePipeline servicio con su solicitud.

El equipo CodePipeline de servicio registra la nueva integración del tipo de acción realizando cambios en el código base del servicio. CodePipeline registra dos acciones nuevas: una acción pública y una acción privada. Utiliza la acción privada para realizar las pruebas y, cuando esté lista, activa la acción pública para atender el tráfico de clientes.

Para registrar una solicitud de una integración de Lambda
  • Envíe una solicitud al equipo CodePipeline de servicio mediante el siguiente formulario.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. The Lambda function ARN 4. List of Regiones de AWS where your action will be available 5. Will this be available as a public action?
Para registrar una solicitud de una integración de proceso de trabajo
  • Envíe una solicitud al equipo CodePipeline de servicio mediante el siguiente formulario.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type. 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. URL information: Website URL: https://www.example.com/%TestThirdPartyName%/%TestVersionNumber% Example URL pattern where customers will be able to review their configuration information for the action: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%CustomerActionConfiguration% Example runtime URL pattern: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%TestRunId% 4. List of Regiones de AWS where your action will be available 5. Will this be available as a public action?

Paso 4: Activar la nueva integración

Póngase en contacto con el equipo de CodePipeline servicio cuando esté listo para usar la nueva integración públicamente.

Añadir un tipo de acción disponible a una canalización (consola)

Añada su tipo de acción a una canalización para poder probarla. Puede hacerlo creando una nueva canalización o editando una existente.

nota

Si su tipo de acción es una acción de categoría de origen, compilación o implementación, puede añadirla creando una canalización. Si el tipo de acción figura en la categoría de pruebas, debe añadirla modificando una canalización existente.

Para añadir tu tipo de acción a una canalización existente desde la CodePipeline consola
  1. Inicia sesión en la CodePipeline consola AWS Management Console y ábrela en http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. En la lista de canalizaciones, elija la canalización a la que quieres añadir el tipo de acción.

  3. En la página de vista de resumen de la canalización, elija Editar.

  4. Elija editar la etapa. En la etapa en la que desea añadir la acción de aprobación, elija + Añadir grupo de acciones. Aparece la página Editar acción.

  5. En la página Editar acción, en Nombre de la acción, introduzca un nombre para la acción. Este es el nombre que se muestra para la etapa de su proceso.

  6. En el Proveedor de acciones, elige el tipo de acción de la lista.

    Tenga en cuenta que el valor de la lista se basa en el provider especificado en el archivo de definición del tipo de acción.

  7. En Artefactos de entrada, introduzca el nombre del artefacto en este formato:

    Artifactname::FileName

    Tenga en cuenta que las cantidades mínimas y máximas permitidas se definen en función de los inputArtifactDetails especificados en el archivo de definición del tipo de acción.

  8. Seleccione Conectar a <Nombre_aación>.

    Se abre una ventana del navegador que conecta con el sitio web que ha creado para su tipo de acción.

  9. Inicie sesión en su sitio web como cliente y complete los pasos que sigue un cliente para usar su tipo de acción. Los pasos variarán en función de la categoría de la acción, el sitio web y la configuración, pero normalmente incluyen una acción de finalización que devuelve al cliente a la página Editar acción.

  10. En la página CodePipeline Editar acción, se muestran los campos de configuración adicionales de la acción. Los campos que se muestran son las propiedades de configuración que especificó en el archivo de definición de acciones. Introduzca la información en los campos personalizados para el tipo de acción.

    Por ejemplo, si el archivo de definición de acciones especificó un nombre de propiedad Host, y un campo con la etiqueta Host con la etiqueta para la acción en la página Editar acción.

  11. En Artefactos de salida, introduzca el nombre del artefacto en este formato:

    Artifactname::FileName

    Tenga en cuenta que las cantidades mínimas y máximas permitidas se definen en función de los outputArtifactDetails especificados en el archivo de definición del tipo de acción.

  12. Elija Listo para volver a la página de detalles de la canalización.

    nota

    Si lo desea, sus clientes pueden utilizar la CLI para añadir el tipo de acción a su canalización.

  13. Para probar su acción, confirme un cambio en el origen especificado en la etapa de origen de la canalización o siga los pasos indicados en Iniciar manualmente una canalización.

Para crear una canalización con su tipo de acción, siga los pasos en Cree una canalización en CodePipeline y elija su tipo de acción entre tantas etapas como vaya a probar.

Ver un tipo de acción

Puede usar la CLI para ver el tipo de acción. Utilice el comando get-action-type para ver los tipos de acciones que se han creado mediante un modelo de integración.

Para ver un tipo de acción
  1. Cree un archivo JSON de entrada con el nombre file.json. Agregue su ID de tipo de acción en formato JSON, tal como se muestra en el siguiente ejemplo.

    { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }
  2. En una ventana de terminal o en la línea de comandos, ejecute el comando get-action-type.

    aws codepipeline get-action-type --cli-input-json file://file.json

    Este comando devuelve el resultado de la definición de acción para un tipo de acción. En este ejemplo, se muestra un tipo de acción que se creó con el modelo de integración de Lambda.

    { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda" }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "<account-id>" ] }, "properties": [] } }

Actualizar un tipo de acción

Puede usar la CLI para editar los tipos de acciones que se crean con un modelo de integración.

En el caso de un tipo de acción pública, no puede actualizar el propietario, no puede cambiar las propiedades opcionales por obligatorias y solo puede añadir nuevas propiedades opcionales.

  1. Use el comando get-action-type para obtener la estructura del tipo de acción. Copie la estructura.

  2. Cree un archivo de entrada JSON con el nombre action.json. Pegue en ella la estructura del tipo de acción que copió en el paso anterior. Actualice los parámetros que desee cambiar. También puede añadir parámetros opcionales.

    Para obtener más información sobre los parámetros del archivo de entrada, consulte la descripción del archivo de definición de acciones en Paso 2: Crear un archivo de definición de tipo de acción.

    En el siguiente ejemplo, se muestra cómo actualizar un tipo de acción de ejemplo creado con el modelo de integración de Lambda. En este ejemplo, se realizan los siguientes cambios:

    • Cambie el nombre de provider a TestProvider1.

    • Añada un límite de tiempo de espera del trabajo de 900 segundos.

    • Añade una propiedad de configuración de acciones llamada Host que se muestra al cliente que utiliza la acción.

      { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda", "jobTimeout": 900 }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider1", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "account-id" ] }, "properties": { "description": "Owned build action parameter description", "optional": true, "noEcho": false, "key": true, "queryable": false, "name": "Host" } } }
  3. En el terminal o la línea de comandos, ejecute el comando update-action-type.

    aws codepipeline update-action-type --cli-input-json file://action.json

    Este comando devuelve el resultado del tipo de acción para que coincida con los parámetros actualizados.