AWS::Serverless::StateMachine
Puede utilizar una máquina de estado AWS Step Functions para orquestar funciones de AWS Lambda y otros recursos de AWS para formar flujos de trabajo complejos y sólidos.
Para obtener más información acerca de Step Functions, consulta la AWS Step FunctionsGuía para desarrolladores de .
nota
Al realizar la implementación en AWS CloudFormation, AWS SAM transforma sus recursos de AWS SAM en recursos de CloudFormation. Para obtener más información, consulta Recursos de CloudFormation generados para AWS SAM.
Sintaxis
Para declarar esta entidad en su plantilla de AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis:
YAML
Type: AWS::Serverless::StateMachine Properties: AutoPublishAlias:StringUseAliasAsEventTarget:BooleanDefinition:MapDefinitionSubstitutions:MapDefinitionUri:String | S3LocationDeploymentPreference:DeploymentPreferenceEvents:EventSourceLogging:LoggingConfigurationName:StringPermissionsBoundary:StringPolicies:String | List | MapPropagateTags:BooleanRolePath:StringRole:StringTags:MapTracing:TracingConfigurationType:String
Propiedades
-
AutoPublishAlias -
El nombre del alias de la máquina de estado. Para obtener más información sobre el uso de los alias de máquinas de estado de Step Functions, consulta Gestión de implementasciones continuas con versiones y alias en la Guía para desarrolladores de AWS Step Functions.
DeploymentPreferenceUtilícelo para configurar las preferencias de implementación de su alias. Si no especificasDeploymentPreference, AWS SAM configurará el tráfico para que cambie a la versión más reciente de la máquina de estados de una sola vez.AWS SAM establece las versiones
DeletionPolicyyUpdateReplacePolicyaRetainde forma predeterminada. Las versiones anteriores no se eliminarán automáticamente.Tipo: cadena
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
Namede un recursoAWS::StepFunctions::StateMachineAlias. -
UseAliasAsEventTarget -
Indique si quiere pasar o no el alias, creado mediante la propiedad
AutoPublishAlias, al destino del origen de eventos definido con Eventos.Especifique
Truesi quiere utilizar el alias como destino de los eventos.Tipo: Booleano
Obligatorio: no
Valor predeterminado:
FalseCompatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
Definition -
La definición de máquina de estado es un objeto, en el que el formato del objeto coincide con el formato del archivo de plantilla de AWS SAM, por ejemplo, JSON o YAML. Las definiciones de máquina de estado cumplen con el Amazon States Language.
Para ver un ejemplo de una definición de máquina de estados en línea, consulta Ejemplos.
Debe proporcionar un
Definitiono unDefinitionUri.Tipo: mapa
Obligatorio: condicional
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
DefinitionSubstitutions -
Un mapa (cadena a cadena) que especifica los mapeos para variables de marcador de posición en la definición de máquina de estado. Esto permite al cliente inyectar valores obtenidos en tiempo de ejecución, por ejemplo, a partir de funciones intrínsecas, en la definición de máquina de estado.
Tipo: mapa
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es similar a la propiedad
DefinitionSubstitutionsde un recursoAWS::StepFunctions::StateMachine. Si se especifica alguna función intrínseca en una definición de máquina de estados en línea, AWS SAM agrega entradas a esta propiedad para insertarlas en la definición de máquina de estados. -
DefinitionUri -
La URI de Amazon Simple Storage Service (Amazon S3) o la ruta de archivo local de la definición de la máquina de estados escrita en Amazon States Language.
Si proporcionas una ruta de archivo local, la plantilla debe seguir el flujo de trabajo que incluye el comando
sam deployosam packagepara transformar la definición correctamente. Para hacerlo, debe utilizar la versión 0.52.0 o posterior de la CLI de AWS SAM.Debe proporcionar un
Definitiono unDefinitionUri.Tipo: Cadena | S3Location
Obligatorio: condicional
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
DefinitionS3Locationde un recursoAWS::StepFunctions::StateMachine. -
DeploymentPreference -
Los ajustes que permiten y configuran las implementasciones graduales de máquinas de estado. Para obtener más información sobre las implementasciones graduales de Step Functions, consulta Gestión de implementasciones continuas con versiones y alias en la Guía para desarrolladores de AWS Step Functions.
Especifica esta propiedad
AutoPublishAliasantes de configurar. La configuraciónDeploymentPreferencese aplicará al alias especificado conAutoPublishAlias.Cuando especifica
DeploymentPreference, AWS SAM generará automáticamente el valor de la subpropiedadStateMachineVersionArn.Tipo: DeploymentPreference
Obligatorio: no
Compatibilidad con CloudFormation: AWS SAM genera y adjunta el valor de la propiedad
StateMachineVersionArnaDeploymentPreferencey transfiereDeploymentPreferencea la propiedadDeploymentPreferencede un recursoAWS::StepFunctions::StateMachineAlias. -
Events -
Especifica los eventos que activan esta máquina de estados. Los eventos constan de un tipo y un conjunto de propiedades que dependen del tipo.
Tipo: EventSource
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
Logging -
Define qué eventos del historial de ejecución se registran y dónde se registran.
Type: LoggingConfiguration
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
LoggingConfigurationde un recursoAWS::StepFunctions::StateMachine. -
Name -
El nombre de la máquina de estado.
Tipo: cadena
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
StateMachineNamede un recursoAWS::StepFunctions::StateMachine. -
PermissionsBoundary -
El ARN de un límite de permisos que se utilizará para el rol de ejecución de esta máquina de estados. Esta propiedad solo funciona si el rol se genera para usted.
Tipo: cadena
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
PermissionsBoundaryde un recursoAWS::IAM::Role. -
Policies -
Políticas de permisos para esta máquina de estados. Las políticas se añadirán al rol de ejecución predeterminada AWS Identity and Access Management (IAM) de la máquina de estados.
Esta propiedad acepta un valor único o una lista de valores. Entre los valores permitidos se incluyen:
-
La ARN de una política administrada por AWS o una política administrada por el cliente.
-
El nombre de una política administrada por AWS de la siguiente lista
. -
Una política de IAM en línea con formato en YAML como un mapa.
nota
Si especifica la propiedad
Role, pasa por alto esta propiedad.Tipo: Cadena | Lista | Mapa
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
Indique si quiere pasar o no las etiquetas de la propiedad
Tagsa los recursos generados AWS::Serverless::StateMachine. EspecificaTruepara propagar las etiquetas en los recursos generados.Tipo: Booleano
Obligatorio: no
Valor predeterminado:
FalseCompatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
Role -
El ARN de un rol de IAM que se utilizará como rol de ejecución de esta máquina de estados.
Tipo: cadena
Obligatorio: condicional
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
RoleArnde un recursoAWS::StepFunctions::StateMachine. -
RolePath -
La ruta al rol de ejecución IAM de la máquina de estados.
Utilice esta propiedad cuando se genere el rol para usted. No la utilice si el rol se especifica con la propiedad
Role.Tipo: cadena
Obligatorio: condicional
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
Pathde un recursoAWS::IAM::Role. -
Una asignación de cadena a cadena que especifica las etiquetas que se agregan a la máquina de estado y la función de ejecución correspondiente. Para obtener información sobre las claves y los valores válidos de las etiquetas, consulta la propiedad Etiquetas de un recurso AWS::StepFunctions::StateMachine.
Tipo: mapa
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es similar a la propiedad
Tagsde un recursoAWS::StepFunctions::StateMachine. AWS SAM agrega automáticamente una etiquetastateMachine:createdBy:SAMa este recurso y al rol predeterminado que se genera para él. -
Tracing -
Selecciona si AWS X-Ray está habilitada o no para la máquina de estado. Para obtener más información sobre X-Ray con Step Functions, consulta Step Functions y AWS X-Ray en la Guía para desarrolladores de AWS Step Functions.
Type: TracingConfiguration
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
TracingConfigurationde un recursoAWS::StepFunctions::StateMachine. -
Type -
El tipo de máquina de estado.
Valores válidos:
STANDARDoEXPRESSTipo: cadena
Obligatorio: no
Valor predeterminado:
STANDARDCompatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
StateMachineTypede un recursoAWS::StepFunctions::StateMachine.
valores devueltos
Ref.
Al proporcionar el ID lógico de este recurso a la función intrínseca Ref, esta devuelve el nombre de recurso de Amazon (ARN) del recurso AWS::StepFunctions::StateMachine subyacente.
Para obtener más información sobre el uso de la función Ref, consulta Ref en la Guía del usuario de AWS CloudFormation.
Fn::GetAtt
Fn::GetAtt devuelve un valor para un atributo especificado de este tipo. A continuación se indican los atributos disponibles y los valores devueltos de muestra.
Para obtener más información acerca de cómo usar Fn::GetAtt, consulta Fn::GetAtt en la Guía del usuario de AWS CloudFormation.
Name-
Devuelve el nombre de la máquina de estados, como
HelloWorld-StateMachine.
Ejemplos
Archivo de definición de máquina de estado
A continuación, se muestra un ejemplo de una definición de máquina de estados en línea que permite que una función de Lambda invoque una máquina de estados en línea. Tenga en cuenta que en este ejemplo se espera que la propiedad Role configure la política adecuada para permitir la invocación. El archivo my_state_machine.asl.json debe estar escrito en Amazon States Language.
En este ejemplo, las entradas DefinitionSubstitution permiten que la máquina de estados incluya los recursos declarados en el archivo de plantilla de AWS SAM.
YAML
MySampleStateMachine: Type: AWS::Serverless::StateMachine Properties: DefinitionUri: statemachine/my_state_machine.asl.json Role: arn:aws:iam::123456123456:role/service-role/my-sample-role Tracing: Enabled: true DefinitionSubstitutions: MyFunctionArn: !GetAtt MyFunction.Arn MyDDBTable: !Ref TransactionTable
Definición de máquina de estados en línea
A continuación, se muestra un ejemplo de una definición de máquinas de estado insertadas.
En este ejemplo, el archivo de plantilla de AWS SAM está escrito en YAML, por lo que la definición de la máquina de estados también está en YAML. Para declarar una definición de máquina de estados integrada en JSON, escriba el archivo de plantilla de AWS SAM en JSON.
YAML
MySampleStateMachine: Type: AWS::Serverless::StateMachine Properties: Definition: StartAt: MyLambdaState States: MyLambdaState: Type: Task Resource: arn:aws:lambda:us-east-1:123456123456:function:my-sample-lambda-app End: true Role: arn:aws:iam::123456123456:role/service-role/my-sample-role Tracing: Enabled: true