

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Crée une machine à AWS Step Functions états, que vous pouvez utiliser pour orchestrer des AWS Lambda fonctions et d'autres AWS ressources afin de créer des flux de travail complexes et robustes.

Pour plus d'informations sur Step Functions, consultez le [AWS Step Functions Guide du développeur ](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html).

**Note**  
Lorsque vous déployez vers AWS CloudFormation, vos AWS SAM ressources sont AWS SAM transformées en CloudFormation ressources. Pour de plus amples informations, veuillez consulter [CloudFormation Ressources générées pour AWS SAM](sam-specification-generated-resources.md).

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

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

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

## Propriétés
<a name="sam-resource-statemachine-properties"></a>

 `AutoPublishAlias`   <a name="sam-statemachine-autopublishalias"></a>
Nom de l’alias de la machine d'état. Pour en savoir plus sur l'utilisation des alias de machine d'état Step Functions, consultez la section [Gérer les déploiements continus avec des versions et des alias](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-cd-aliasing-versioning.html) dans le Guide du développeur *AWS Step Functions .*  
Utiliser `DeploymentPreference` pour configurer les préférences de déploiement pour votre alias. Si vous ne le spécifiez pas`DeploymentPreference`, AWS SAM configurera le trafic pour qu'il passe immédiatement à la nouvelle version de State Machine.  
AWS SAM définit les versions `DeletionPolicy` et `UpdateReplacePolicy` to `Retain` par défaut. Les versions précédentes ne seront pas supprimées automatiquement.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la ` [ Name](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachinealias.html#cfn-stepfunctions-statemachinealias-name)` propriété d'une `AWS::StepFunctions::StateMachineAlias` ressource.

 `UseAliasAsEventTarget`   <a name="sam-statemachine-usealiasaseventtarget"></a>
Indiquez s'il faut transmettre l'alias, créé à l'aide de la `AutoPublishAlias` propriété, à la cible de la source d'événements définie avec [Events](#sam-statemachine-events).  
Spécifiez `True` d'utiliser l'alias comme cible des événements.  
*Type* : valeur booléenne  
*Obligatoire* : non  
*Par défaut* : `False`  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `Definition`   <a name="sam-statemachine-definition"></a>
La définition de la machine à états est un objet dont le format correspond au format de votre fichier AWS SAM modèle, par exemple JSON ou YAML. Les définitions de machine d'état respectent le [langage des états Amazon](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html).  
Pour un exemple de définition de machine d'état en ligne, consultez [Exemples](#sam-resource-statemachine--examples).  
Vous devez fournir une `Definition` ou une `DefinitionUri`.  
*Type*: carte (map)  
*Obligatoire* : Conditionnelle  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `DefinitionSubstitutions`   <a name="sam-statemachine-definitionsubstitutions"></a>
 string-to-stringCarte qui spécifie les mappages pour les variables d'espace réservé dans la définition de la machine à états. Cela permet au client d'injecter des valeurs obtenues au moment de l'exécution, par exemple à partir de fonctions intrinsèques, dans la définition de la machine d'état.  
*Type*: carte (map)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est similaire à celle `[DefinitionSubstitutions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitionsubstitutions)` d'une `AWS::StepFunctions::StateMachine` ressource. Si des fonctions intrinsèques sont spécifiées dans une définition de machine à états en ligne, AWS SAM ajoute des entrées à cette propriété pour les injecter dans la définition de machine à états.

 `DefinitionUri`   <a name="sam-statemachine-definitionuri"></a>
L'URI Amazon Simple Storage Service (Amazon S3) ou le chemin d'accès au fichier local de la définition de la machine d'état écrits dans la [Langue des états d'Amazon](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html).  
Si vous fournissez un chemin d'accès au fichier local, le modèle doit passer par le flux de travail qui inclut le fichier `sam deploy` ou la commande `sam package` pour que la définition soit correctement transformée. Pour ce faire, vous devez utiliser la version 0.52.0 ou ultérieure de la CLI AWS SAM .  
Vous devez fournir une `Definition` ou une `DefinitionUri`.  
*Type* : chaîne \$1[Emplacement S3](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitions3location)  
*Obligatoire* : Conditionnelle  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[DefinitionS3Location](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitions3location)` propriété d'une `AWS::StepFunctions::StateMachine` ressource.

 `DeploymentPreference`   <a name="sam-statemachine-deploymentpreference"></a>
Les paramètres qui permettent et configurent les déploiements de machines à états progressifs. Pour en savoir plus sur les déploiements progressifs de Step Functions, consultez la section [Gérer les déploiements continus avec des versions et des alias](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-cd-aliasing-versioning.html) dans le Guide du développeur *AWS Step Functions .*  
Spécifiez `AutoPublishAlias` avant de configurer cette propriété. Vos paramètres `DeploymentPreference` seront appliqués à l'alias spécifié avec `AutoPublishAlias`.  
Lorsque vous spécifiez`DeploymentPreference`, AWS SAM génère automatiquement la valeur de la `StateMachineVersionArn` sous-propriété.  
*Type :* [DeploymentPreference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachinealias-deploymentpreference.html)  
*Obligatoire* : non  
*CloudFormation compatibilité* : AWS SAM génère et attache la valeur de `StateMachineVersionArn` propriété à la propriété `DeploymentPreference` d'une `AWS::StepFunctions::StateMachineAlias` ressource `DeploymentPreference` et la `[DeploymentPreference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachinealias.html#cfn-stepfunctions-statemachinealias-deploymentpreference)` transmet à celle-ci. 

 `Events`   <a name="sam-statemachine-events"></a>
Spécifie les événements qui déclenchent cette machine d'état. Les événements sont constitués d'un type et d'un ensemble de propriétés qui dépendent du type.  
*Type :* [EventSource](sam-property-statemachine-statemachineeventsource.md)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `Logging`   <a name="sam-statemachine-logging"></a>
Définit quels événements de l'historique d'exécution sont journalisés et à quel emplacement.  
*Type :* [LoggingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-loggingconfiguration)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[LoggingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-loggingconfiguration)` propriété d'une `AWS::StepFunctions::StateMachine` ressource.

 `Name`   <a name="sam-statemachine-name"></a>
Nom de la machine d'état.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[StateMachineName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-statemachinename)` propriété d'une `AWS::StepFunctions::StateMachine` ressource.

 `PermissionsBoundary`   <a name="sam-statemachine-permissionsboundary"></a>
L'ARN d'une limite d'autorisations à utiliser pour le rôle d'exécution de cette machine d'état. Cette propriété ne fonctionne que si le rôle est généré pour vous.  
*Type* : chaîne  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[PermissionsBoundary](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-permissionsboundary)` propriété d'une `AWS::IAM::Role` ressource.

 `Policies`   <a name="sam-statemachine-policies"></a>
Politiques d'autorisation pour cette machine d'état. Les politiques seront ajoutées au rôle d'exécution par défaut Gestion des identités et des accès AWS (IAM) de la machine à états.  
Cette propriété accepte une valeur unique ou une liste de valeurs. Les valeurs autorisées sont les suivantes :  
+ [Modèles de politique AWS SAM](serverless-policy-templates.md).
+ L'ARN d'une [politique gérée par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) ou d'une [politique gérée par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies).
+ Le nom d'une politique AWS gérée dans la [liste](https://github.com/aws/serverless-application-model/blob/develop/samtranslator/internal/data/aws_managed_policies.json) suivante.
+ Une [politique IAM en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) formatée dans YAML sous forme de mappage.
Si vous définissez la propriété `Role`, cette propriété est ignorée.
*Type* : chaîne \$1 liste \$1 carte  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

`PropagateTags`  <a name="sam-statemachine-propagatetags"></a>
Indiquez s'il faut ou non transmettre les balises de la propriété `Tags` aux ressources [AWS::Serverless::StateMachine](sam-specification-generated-resources-statemachine.md) que vous avez générées. Spécifiez `True` pour la propagation des balises dans vos ressources générées.  
*Type* : valeur booléenne  
*Obligatoire* : non  
*Par défaut* : `False`  
*CloudFormation compatibilité* : cette propriété est unique AWS SAM et n'a pas d' CloudFormation équivalent.

 `Role`   <a name="sam-statemachine-role"></a>
L'ARN d'un rôle IAM à utiliser comme rôle d'exécution de cette machine d'état.  
*Type* : chaîne  
*Obligatoire* : Conditionnelle  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[ RoleArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-rolearn)` propriété d'une `AWS::StepFunctions::StateMachine` ressource.

 `RolePath`   <a name="sam-statemachine-rolepath"></a>
Le chemin d'accès au rôle d'exécution IAM de la machine d'état.  
Utilisez cette propriété lorsque le rôle est généré pour vous. Ne l'utilisez pas lorsque le rôle est spécifié avec la propriété `Role`.  
*Type* : chaîne  
*Obligatoire* : Conditionnelle  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[Path](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path)` propriété d'une `AWS::IAM::Role` ressource.

 `Tags`   <a name="sam-statemachine-tags"></a>
Une string-to-string carte qui spécifie les balises ajoutées à la machine d'état et le rôle d'exécution correspondant. Pour en savoir plus sur les clés et les valeurs valides pour les étiquettes, consultez la propriété [Étiquettes](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tags) d'une ressource [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).  
*Type*: carte (map)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est similaire à celle `[Tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tags)` d'une `AWS::StepFunctions::StateMachine` ressource. AWS SAM ajoute automatiquement une `stateMachine:createdBy:SAM` balise à cette ressource et au rôle par défaut généré pour celle-ci.

 `Tracing`   <a name="sam-statemachine-tracing"></a>
Indique si la machine à états AWS X-Ray est activée ou non. Pour plus d'informations sur l'utilisation de X-Ray avec Step Functions, consultez [AWS X-Ray et Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-xray-tracing.html) dans le *Guide du développeur AWS Step Functions *.  
*Type :* [TracingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tracingconfiguration)  
*Obligatoire* : non  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[TracingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-tracingconfiguration)` propriété d'une `AWS::StepFunctions::StateMachine` ressource.

 `Type`   <a name="sam-statemachine-type"></a>
Le type de la machine d'état.  
*Valeurs valides* : `STANDARD` ou `EXPRESS`  
*Type :* chaîne  
*Obligatoire* : non  
*Par défaut* : `STANDARD`  
*CloudFormation compatibilité* : cette propriété est transmise directement à la `[StateMachineType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-statemachinetype)` propriété d'une `AWS::StepFunctions::StateMachine` ressource.

## Valeurs renvoyées
<a name="sam-resource-statemachine-return-values"></a>

### Réf
<a name="sam-resource-statemachine-return-values-ref"></a>

Lorsque vous fournissez l'ID logique de cette ressource à la fonction intrinsèque Réf, Réf renvoie l'Amazon Resource Name (ARN) de la ressource sous-jacente `AWS::StepFunctions::StateMachine`.

Pour plus d'informations sur l'utilisation de la fonction `Ref`, consultez [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) dans le *Guide de l'utilisateur AWS CloudFormation *. 

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

`Fn::GetAtt` renvoie une valeur pour un attribut de ce type indiqué. Voici les attributs disponibles et des exemples de valeurs de retour. 

Pour plus d'informations sur l'utilisation de `Fn::GetAtt`, consultez [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) dans le *Guide de l'utilisateur AWS CloudFormation *. 

`Name`  <a name="Name-fn::getatt"></a>
Renvoie le nom de la machine d'état, comme `HelloWorld-StateMachine`.

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

### Fichier de définition de la machine d'état
<a name="sam-resource-statemachine--examples--state-machine-definition-file"></a>

Voici un exemple de définition de machine à états intégrée qui permet à une fonction lambda d'invoquer une machine à états. Notez que cet exemple attend de la `Role` propriété qu'elle configure une politique appropriée pour autoriser l'invocation. Le fichier `my_state_machine.asl.json` doit être écrit dans la [Langue des états Amazon](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html).

Dans cet exemple, les `DefinitionSubstitution` entrées permettent à la machine d'état d'inclure les ressources déclarées dans le fichier AWS SAM modèle.

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

### Définition de la machine d'état en ligne
<a name="sam-resource-statemachine--examples--inline-state-machine-definition"></a>

Voici un exemple de définition de machine d'état en ligne.

Dans cet exemple, le fichier AWS SAM modèle est écrit en YAML, de sorte que la définition de la machine d'état est également en YAML. Pour déclarer une définition de machine à états intégrée en JSON, écrivez votre fichier AWS SAM modèle 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
```