

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.

# AWS::Serverless::StateMachine
<a name="sam-resource-statemachine"></a>

Crea una máquina de AWS Step Functions estados que se puede utilizar para organizar AWS Lambda funciones y otros AWS recursos con el fin de crear flujos de trabajo complejos y sólidos.

Para obtener más información acerca de Step Functions, consulta la [AWS Step Functions Guía para desarrolladores de ](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html).

**nota**  
Cuando lo despliega AWS CloudFormation, AWS SAM transforma sus AWS SAM recursos en CloudFormation recursos. Para obtener más información, consulte [CloudFormation Recursos generados para AWS SAM](sam-specification-generated-resources.md).

## Sintaxis
<a name="sam-resource-statemachine-syntax"></a>

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

### YAML
<a name="sam-resource-statemachine-syntax.yaml"></a>

```
Type: AWS::Serverless::StateMachine
Properties:
  AutoPublishAlias: {{String}}
  UseAliasAsEventTarget: {{Boolean}}
  [Definition](#sam-statemachine-definition): {{Map}}
  [DefinitionSubstitutions](#sam-statemachine-definitionsubstitutions): {{Map}}
  [DefinitionUri](#sam-statemachine-definitionuri): {{String | [S3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitions3location)}}
  DeploymentPreference: {{[DeploymentPreference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachinealias-deploymentpreference.html)}}
  [Events](#sam-statemachine-events): {{EventSource}}
  [Logging](#sam-statemachine-logging): {{[LoggingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-loggingconfiguration)}}
  [Name](#sam-statemachine-name): {{String}}
  [PermissionsBoundary](#sam-statemachine-permissionsboundary): {{String}}
  [Policies](#sam-statemachine-policies): {{String | List | Map}}
  PropagateTags: {{Boolean}}
  [RolePath](#sam-statemachine-rolepath): {{String}}
  [Role](#sam-statemachine-role): {{String}}
  [Tags](#sam-statemachine-tags): {{Map}}
  [Tracing](#sam-statemachine-tracing): {{[TracingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tracingconfiguration)}}
  [Type](#sam-statemachine-type): {{String}}
```

## Propiedades
<a name="sam-resource-statemachine-properties"></a>

 `AutoPublishAlias`   <a name="sam-statemachine-autopublishalias"></a>
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](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-cd-aliasing-versioning.html) en la Guía para desarrolladores de AWS Step Functions *.  
`DeploymentPreference`Utilícelo para configurar las preferencias de implementación de su alias. Si no lo especificas`DeploymentPreference`, 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 `DeletionPolicy` y en `UpdateReplacePolicy` de forma `Retain` predeterminada. Las versiones anteriores no se eliminarán automáticamente.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la ` [ Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachinealias.html#cfn-stepfunctions-statemachinealias-name)` propiedad de un `AWS::StepFunctions::StateMachineAlias` recurso.

 `UseAliasAsEventTarget`   <a name="sam-statemachine-usealiasaseventtarget"></a>
Indique si quiere pasar o no el alias, creado mediante la propiedad `AutoPublishAlias`, al destino del origen de eventos definido con [Eventos](#sam-statemachine-events).  
Especifique `True` si quiere utilizar el alias como destino de los eventos.  
*Tipo*: Booleano  
*Obligatorio*: no  
*Valor predeterminado*: `False`  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

 `Definition`   <a name="sam-statemachine-definition"></a>
La definición de la máquina de estados es un objeto, donde el formato del objeto coincide con el formato del archivo de AWS SAM plantilla, por ejemplo, JSON o YAML. Las definiciones de máquina de estado cumplen con el [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html).  
Para ver un ejemplo de una definición de máquina de estados en línea, consulta [Ejemplos](#sam-resource-statemachine--examples).  
Debe proporcionar un `Definition` o un `DefinitionUri`.  
*Tipo*: mapa  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

 `DefinitionSubstitutions`   <a name="sam-statemachine-definitionsubstitutions"></a>
Un string-to-string mapa que especifica las asignaciones de las variables de marcador de posición en la definición de la máquina de estados. 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  
*CloudFormation compatibilidad*: esta propiedad es similar a la `[DefinitionSubstitutions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitionsubstitutions)` propiedad de un recurso. `AWS::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`   <a name="sam-statemachine-definitionuri"></a>
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](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html).  
Si proporcionas una ruta de archivo local, la plantilla debe seguir el flujo de trabajo que incluye el comando `sam deploy` o `sam package` para 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 `Definition` o un `DefinitionUri`.  
*Tipo*: Cadena \| [S3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitions3location)  
*Obligatorio*: condicional  
*CloudFormation compatibilidad*: esta propiedad se transfiere directamente a la `[DefinitionS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitions3location)` propiedad de un `AWS::StepFunctions::StateMachine` recurso.

 `DeploymentPreference`   <a name="sam-statemachine-deploymentpreference"></a>
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](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-cd-aliasing-versioning.html) en la Guía para desarrolladores de AWS Step Functions *.  
Especifica esta propiedad `AutoPublishAlias` antes de configurar. La configuración `DeploymentPreference` se aplicará al alias especificado con `AutoPublishAlias`.  
Cuando se especifica`DeploymentPreference`, AWS SAM genera el valor de la `StateMachineVersionArn` subpropiedad automáticamente.  
*Tipo:* [DeploymentPreference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachinealias-deploymentpreference.html)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: AWS SAM genera y adjunta el valor de la `StateMachineVersionArn` propiedad `DeploymentPreference` y lo transfiere `DeploymentPreference` a la `[DeploymentPreference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachinealias.html#cfn-stepfunctions-statemachinealias-deploymentpreference)` propiedad de un `AWS::StepFunctions::StateMachineAlias` recurso. 

 `Events`   <a name="sam-statemachine-events"></a>
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](sam-property-statemachine-statemachineeventsource.md)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva AWS SAM y no tiene un CloudFormation equivalente.

 `Logging`   <a name="sam-statemachine-logging"></a>
Define qué eventos del historial de ejecución se registran y dónde se registran.  
*Tipo:* [LoggingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-loggingconfiguration)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[LoggingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-loggingconfiguration)` propiedad de un `AWS::StepFunctions::StateMachine` recurso.

 `Name`   <a name="sam-statemachine-name"></a>
El nombre de la máquina de estado.  
*Tipo:* cadena  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[StateMachineName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-statemachinename)` propiedad de un `AWS::StepFunctions::StateMachine` recurso.

 `PermissionsBoundary`   <a name="sam-statemachine-permissionsboundary"></a>
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  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[PermissionsBoundary](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-permissionsboundary)` propiedad de un `AWS::IAM::Role` recurso.

 `Policies`   <a name="sam-statemachine-policies"></a>
Políticas de permisos para esta máquina de estados. Las políticas se añadirán a la función de ejecución predeterminada de la máquina de estados AWS Identity and Access Management (IAM).  
Esta propiedad acepta un valor único o una lista de valores. Entre los valores permitidos se incluyen:  
+ [Plantillas de política de AWS SAM](serverless-policy-templates.md).
+ La ARN de una [política administrada por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o una [política administrada por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies).
+ [El nombre de una política AWS administrada de la siguiente lista.](https://github.com/aws/serverless-application-model/blob/develop/samtranslator/internal/data/aws_managed_policies.json)
+ Una [política de IAM en línea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) con formato en YAML como un mapa.
Si especifica la propiedad `Role`, pasa por alto esta propiedad.
*Tipo*: Cadena \| Lista \| Mapa  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

`PropagateTags`  <a name="sam-statemachine-propagatetags"></a>
Indique si quiere pasar o no las etiquetas de la propiedad `Tags` a los recursos generados [AWS::Serverless::StateMachine](sam-specification-generated-resources-statemachine.md). Especifica `True` para propagar las etiquetas en los recursos generados.  
*Tipo*: Booleano  
*Obligatorio*: no  
*Valor predeterminado*: `False`  
*CloudFormation compatibilidad*: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.

 `Role`   <a name="sam-statemachine-role"></a>
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  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[ RoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-rolearn)` propiedad de un `AWS::StepFunctions::StateMachine` recurso.

 `RolePath`   <a name="sam-statemachine-rolepath"></a>
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  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[Path](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path)` propiedad de un `AWS::IAM::Role` recurso.

 `Tags`   <a name="sam-statemachine-tags"></a>
Un string-to-string mapa que especifica las etiquetas añadidas a la máquina de estados 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tags) de un recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html).  
*Tipo*: mapa  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad es similar a la `[Tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tags)` propiedad de un `AWS::StepFunctions::StateMachine` recurso. AWS SAM agrega automáticamente una `stateMachine:createdBy:SAM` etiqueta a este recurso y al rol predeterminado que se genera para él.

 `Tracing`   <a name="sam-statemachine-tracing"></a>
Selecciona si AWS X-Ray está habilitada o no para la máquina de estados. Para obtener más información sobre X-Ray con Step Functions, consulta [Step Functions y AWS X-Ray](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-xray-tracing.html) en la *Guía para desarrolladores de AWS Step Functions *.  
*Tipo:* [TracingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tracingconfiguration)  
*Obligatorio*: no  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[TracingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tracingconfiguration)` propiedad de un `AWS::StepFunctions::StateMachine` recurso.

 `Type`   <a name="sam-statemachine-type"></a>
El tipo de máquina de estado.  
*Valores válidos*: `STANDARD` o `EXPRESS`  
*Tipo*: cadena  
*Obligatorio*: no  
*Valor predeterminado*: `STANDARD`  
*CloudFormation compatibilidad*: esta propiedad se pasa directamente a la `[StateMachineType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-statemachinetype)` propiedad de un `AWS::StepFunctions::StateMachine` recurso.

## valores devueltos
<a name="sam-resource-statemachine-return-values"></a>

### Ref.
<a name="sam-resource-statemachine-return-values-ref"></a>

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 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) en la *Guía del usuario de AWS CloudFormation *. 

### Ventilador: GetAtt
<a name="sam-resource-statemachine-return-values-fn--getatt"></a>

`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 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html) en la *Guía del usuario de AWS CloudFormation *. 

`Name`  <a name="Name-fn::getatt"></a>
Devuelve el nombre de la máquina de estados, como `HelloWorld-StateMachine`.

## Ejemplos
<a name="sam-resource-statemachine--examples"></a>

### Archivo de definición de máquina de estado
<a name="sam-resource-statemachine--examples--state-machine-definition-file"></a>

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](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html).

En este ejemplo, las `DefinitionSubstitution` entradas permiten que la máquina de estados incluya los recursos declarados en el archivo de AWS SAM plantilla.

#### YAML
<a name="sam-resource-statemachine--examples--state-machine-definition-file--yaml"></a>

```
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 name="sam-resource-statemachine--examples--inline-state-machine-definition"></a>

A continuación, se muestra un ejemplo de una definición de máquinas de estado insertadas.

En este ejemplo, el archivo de AWS SAM plantilla 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, escribe el archivo de AWS SAM plantilla en JSON.

#### YAML
<a name="sam-resource-statemachine--examples--inline-state-machine-definition--yaml"></a>

```
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
```