Referencia de acciones de invocación de AWS Step Functions - AWS CodePipeline

Referencia de acciones de invocación de AWS Step Functions

Acción de AWS CodePipeline que hace lo siguiente:

  • Inicia la ejecución de una máquina de estados de AWS Step Functions desde la canalización.

  • Proporciona a la máquina de estados un estado inicial a través de una propiedad de la configuración de la acción o de un archivo ubicado en un artefacto de la canalización que se va a pasar como entrada.

  • Si lo desea, puede especificar un prefijo del ID de ejecución para identificar las ejecuciones que se originan en la acción.

  • Admite máquinas de estados estándar y rápidas .

nota

La acción Step Functions se ejecuta en Lambda y, por lo tanto, tiene cuotas de tamaño de artefacto que son las mismas que las cuotas de tamaño de artefacto de las funciones de Lambda. Para obtener más información, consulte Cuotas de Lambda en la Guía para desarrolladores de Lambda.

Tipo de acción

  • Categoría: Invoke

  • Propietario: : AWS

  • Proveedor: StepFunctions

  • Versión: 1

Parámetros de configuración

StateMachineArn

Obligatorio: sí

Nombre del recurso de Amazon (ARN) de la máquina de estados que se va a invocar.

ExecutionNamePrefix

Obligatorio: no

De forma predeterminada, el ID de ejecución de la acción se utiliza como nombre de ejecución de la máquina de estados. Si se proporciona un prefijo, se antepone al ID de ejecución de la acción con un guión, y todo ello se utiliza en conjunto como el nombre de ejecución de la máquina de estados.

myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791

En las máquinas de estados rápidas, el nombre solo debe contener los caracteres 0-9, A-Z, a-z, - y _.

InputType

Obligatorio: no

  • Literal (valor predeterminado): cuando se especifica, el valor del campo Input se pasa directamente a la entrada de la máquina de estados.

    Ejemplo de entrada del campo Input cuando se selecciona Literal:

    {"action": "test"}
  • FilePath: el contenido de un archivo del artefacto de entrada especificado en el campo Input se utiliza como entrada para la ejecución de la máquina de estados. Cuando InputType está establecido en FilePath, se necesita un artefacto de entrada.

    Ejemplo de entrada del campo Input cuando se selecciona FilePath:

    assets/input.json
Input

Obligatorio: condicional

  • Literal: cuando InputType está establecido en Literal (valor predeterminado), este campo es opcional.

    Si se proporciona, el campo Input se utiliza directamente como entrada en la ejecución de la máquina de estados. De lo contrario, la máquina de estados se invoca con un objeto JSON vacío, {}.

  • FilePath: cuando InputType se establece en FilePath, este campo es obligatorio.

    También se necesita un artefacto de entrada cuando InputType está establecido en FilePath.

    El contenido del archivo del artefacto de entrada especificado se utiliza como entrada para la ejecución de la máquina de estados.

Artefactos de entrada

  • Número de artefactos: 0 to 1

  • Descripción: si InputType está establecido en FilePath, este artefacto será obligatorio y se utilizará como origen de la entrada en la ejecución de la máquina de estados.

Artefactos de salida

  • Número de artefactos: 0 to 1

  • Descripción:

    • Máquinas de estados estándar: si se proporciona el artefacto de salida, se rellena con la salida de la máquina de estados. Esta información se obtiene de la propiedad output de la respuesta de la API DescribeExecution de Step Functions una vez que la ejecución de la máquina de estados se completa correctamente.

    • Máquinas de estados rápidas: no son compatibles.

Variables de salida

Esta acción produce variables de salida a las que se puede hacer referencia en la configuración de una acción descendente de la canalización.

Para obtener más información, consulte Referencia de variables.

StateMachineArn

ARN de la máquina de estados.

ExecutionArn

ARN de la ejecución de la máquina de estados. Solo máquinas de estados estándar.

Permisos del rol de servicio: acción StepFunctions

A continuación se indican los permisos mínimos que se necesitan en StepFunctions para crear canalizaciones con una acción de invocación de Step Functions.

{ "Effect": "Allow", "Action": [ "states:DescribeStateMachine", "states:DescribeExecution", "states:StartExecution" ], "Resource": "resource_ARN" },

Ejemplo de configuración de una acción

Ejemplo de una entrada predeterminada

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix" } }

Ejemplo de una entrada literal

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix Input: '{"action": "test"}'
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "Input": "{\"action\": \"test\"}" } }

Ejemplo de un archivo de entrada

YAML
Name: ActionName InputArtifacts: - Name: myInputArtifact ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: 'arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine' ExecutionNamePrefix: my-prefix InputType: FilePath Input: assets/input.json
JSON
{ "Name": "ActionName", "InputArtifacts": [ { "Name": "myInputArtifact" } ], "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "InputType": "FilePath", "Input": "assets/input.json" } }

Comportamiento

Durante un lanzamiento, CodePipeline ejecuta la máquina de estado configurada utilizando la entrada especificada en la configuración de la acción.

Cuando InputType está establecido en Literal, el contenido del campo Input de la configuración de la acción se utiliza como entrada de la máquina de estados. Cuando no se proporciona una entrada literal, la ejecución de la máquina de estados utiliza un objeto JSON vacío, {}. Para obtener más información sobre la ejecución de una máquina de estados sin entrada, consulte la API StartExecution de Step Functions.

Cuando InputType está establecido en FilePath, la acción descomprime el artefacto de entrada y utiliza el contenido del archivo especificado en el campo Input de la configuración de la acción como entrada de la máquina de estados. Cuando se especifica FilePath, el campo Input es obligatorio y debe existir un artefacto de entrada; de lo contrario, la acción no se ejecutará correctamente.

Después de una ejecución de inicio correcta, el comportamiento será distinto en los dos tipos de máquina de estados, estándar y rápida.

Máquinas de estados estándar

Si la ejecución de la máquina de estados estándar se inició correctamente, CodePipeline sondeará la API DescribeExecution hasta que la ejecución alcance un estado terminal. Si la ejecución se completa correctamente, la acción será correcta; de lo contrario, se producirá un error.

Si hay un artefacto de salida configurado, contendrá el valor de retorno de la máquina de estados. Esta información se obtiene de la propiedad output de la respuesta de la API DescribeExecution de Step Functions una vez que la ejecución de la máquina de estados se completa correctamente. Tenga en cuenta que existen restricciones en la longitud de salida de esta API.

Gestión de errores

  • Si la acción no puede iniciar la ejecución de una máquina de estados, se producirá un error.

  • Si la ejecución de la máquina de estados no alcanza un estado terminal antes de que la acción Step Functions de CodePipeline agote el tiempo de espera (con valor predeterminado de 7 días), se producirá un error. A pesar de este error, la máquina de estados podría seguir funcionando. Para obtener más información sobre los tiempos de espera de ejecución de las máquinas de estado en Step Funcions, consulte Flujos de trabajo estándar en comparación con flujos de trabajo rápidos.

    nota

    Puede solicitar un aumento de la cuota del tiempo de espera de la acción de invocación en la cuenta que realiza la acción. Sin embargo, el aumento de cuota se aplicará a todas las acciones de ese tipo en todas las regiones de dicha cuenta.

  • Si la ejecución de la máquina de estados alcanza el estado terminal FAILED, TIMED_OUT o ABORTED, se producirá un error.

Máquinas de estados rápidas

Si la ejecución de la máquina de estados rápida se inició correctamente, la ejecución de la acción de invocación también se realizará correctamente.

Consideraciones sobre las acciones configuradas para máquinas de estados rápidas:

  • No puede designar un artefacto de salida.

  • La acción no espera a que se complete la ejecución de la máquina de estados.

  • Una vez que la ejecución de la acción se inicia en CodePipeline, la ejecución de la acción se realiza correctamente incluso si se produce un error.

Gestión de errores

  • Si CodePipeline no puede iniciar una ejecución de máquina de estados, se producirá un error en la ejecución de la acción. De lo contrario, la acción terminará correctamente de inmediato. La acción se ejecutará correctamente en CodePipeline independientemente del tiempo que la ejecución de la máquina de estados tarde en completarse o en proporcionar un resultado.

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.