ResultWriter (Carte) - AWS Step Functions

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.

ResultWriter (Carte)

Le ResultWriter champ est un JSON objet qui indique l'emplacement Amazon S3 où Step Functions écrit les résultats des exécutions du flux de travail enfant lancées par un état de carte distribuée. Par défaut, Step Functions n'exporte pas ces résultats.

Important

Assurez-vous que le compartiment Amazon S3 que vous utilisez pour exporter les résultats d'un Map Run se trouve sous le même Compte AWS and Région AWS en tant que machine d'État. Sinon, l'exécution de votre machine d'état échouera avec l'States.ResultWriterFailederreur.

L'exportation des résultats vers un compartiment Amazon S3 est utile si la taille de votre charge utile de sortie dépasse 256 Ko. Step Functions consolide toutes les données d'exécution du flux de travail enfant, telles que les entrées et sorties d'exécutionARN, et le statut d'exécution. Il exporte ensuite les exécutions avec le même statut vers leurs fichiers respectifs à l'emplacement Amazon S3 spécifié. L'exemple suivant montre la syntaxe du ResultWriter champ si vous exportez les résultats de l'exécution du flux de travail enfant. Dans cet exemple, vous stockez les résultats dans un compartiment nommé amzn-s3-demo-destination-bucket dans un préfixe appelécsvProcessJobs.

{ "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" } } }
Astuce

Dans Workflow Studio, vous pouvez exporter les résultats d'exécution du flux de travail enfant en sélectionnant Exporter les résultats de l'état de la carte vers Amazon S3. Indiquez ensuite le nom du compartiment Amazon S3 et le préfixe vers lesquels vous souhaitez exporter les résultats.

Step Functions a besoin des autorisations appropriées pour accéder au bucket et au dossier dans lesquels vous souhaitez exporter les résultats. Pour plus d'informations sur la IAM politique requise, consultezIAMpolitiques pour ResultWriter.

Si vous exportez les résultats de l'exécution du flux de travail enfant, l'exécution de l'état de la carte distribuée renvoie le Map Run ARN et les données relatives au lieu d'exportation Amazon S3 au format suivant :

{ "MapRunArn": "arn:aws:states:us-east-2:123456789012:mapRun:csvProcess/Map:ad9b5f27-090b-3ac6-9beb-243cd77144a7", "ResultWriterDetails": { "Bucket": "amzn-s3-demo-destination-bucket", "Key": "csvProcessJobs/ad9b5f27-090b-3ac6-9beb-243cd77144a7/manifest.json" } }

Step Functions exporte les exécutions avec le même statut vers leurs fichiers respectifs. Par exemple, si les exécutions du flux de travail de votre enfant se sont soldées par 500 résultats réussis et 200 échecs, Step Functions crée deux fichiers à l'emplacement Amazon S3 spécifié pour les résultats de réussite et d'échec. Dans cet exemple, le fichier de résultats de réussite contient les 500 résultats de réussite, tandis que le fichier de résultats d'échec contient les 200 résultats d'échec.

Pour une tentative d'exécution donnée, Step Functions crée les fichiers suivants dans l'emplacement Amazon S3 spécifié en fonction du résultat de votre exécution :

  • manifest.json— Contient les métadonnées Map Run, telles que l'emplacement d'exportation, Map Run ARN et des informations sur les fichiers de résultats.

    Si vous avez redrivena Map Run, le manifest.json fichier, contient des références à toutes les exécutions réussies d'un flux de travail enfant lors de toutes les tentatives d'exécution d'un Map Run. Toutefois, ce fichier contient des références aux exécutions échouées et en attente pour un redrive.

  • SUCCEEDED_n.json— Contient les données consolidées pour toutes les exécutions réussies de flux de travail pour enfants. n représente le numéro d'index du fichier. Le numéro d'index commence à 0. Par exemple, SUCCEEDED_1.json.

  • FAILED_n.json— Contient les données consolidées pour toutes les exécutions de flux de travail enfants ayant échoué, expiré ou abandonné. Utilisez ce fichier pour effectuer une restauration après un échec d'exécution. n représente l'index du fichier. Le numéro d'index commence à 0. Par exemple, FAILED_1.json.

  • PENDING_n.json— Contient les données consolidées pour toutes les exécutions de flux de travail enfants qui n'ont pas été démarrées en raison de l'échec ou de l'abandon du Map Run. n représente l'index du fichier. Le numéro d'index commence à 0. Par exemple, PENDING_1.json.

Step Functions prend en charge des fichiers de résultats individuels d'une capacité maximale de 5 Go. Si la taille d'un fichier dépasse 5 Go, Step Functions crée un autre fichier pour écrire les résultats d'exécution restants et ajoute un numéro d'index au nom du fichier. Par exemple, si la taille du Succeeded_0.json fichier dépasse 5 Go, Step Functions crée un Succeeded_1.json fichier pour enregistrer les résultats restants.

Si vous n'avez pas spécifié d'exporter les résultats de l'exécution du flux de travail enfant, l'exécution de la machine d'état renvoie un tableau des résultats d'exécution du flux de travail enfant, comme indiqué dans l'exemple suivant :

Note

Si la taille de sortie renvoyée dépasse 256 Ko, l'exécution de la machine d'état échoue et renvoie une States.DataLimitExceeded erreur.

[ { "statusCode": 200, "inputReceived": { "show_id": "s1", "release_year": "2020", "rating": "PG-13", "type": "Movie" } }, { "statusCode": 200, "inputReceived": { "show_id": "s2", "release_year": "2021", "rating": "TV-MA", "type": "TV Show" } }, ... ]

IAMpolitiques pour ResultWriter

Lorsque vous créez des flux de travail avec la console Step Functions, Step Functions peut générer automatiquement des IAM politiques basées sur les ressources incluses dans votre définition de flux de travail. Ces politiques incluent le minimum de privilèges nécessaires pour permettre au rôle de machine d'état d'invoquer l'StartExecutionAPIaction pour l'état de la carte distribuée. Ces politiques incluent également le minimum de privilèges nécessaires pour accéder à Step Functions. AWS ressources, telles que les buckets et les objets Amazon S3 et les fonctions Lambda. Nous vous recommandons vivement de n'inclure que les autorisations nécessaires dans vos IAM politiques. Par exemple, si votre flux de travail inclut un Map état en mode distribué, limitez vos politiques au compartiment et au dossier Amazon S3 spécifiques qui contiennent votre ensemble de données.

Important

Si vous spécifiez un compartiment et un objet Amazon S3, ou un préfixe, avec un chemin de référence vers une paire clé-valeur existante dans l'entrée d'état de votre carte distribuée, assurez-vous de mettre à jour les IAM politiques de votre flux de travail. Élargissez les politiques jusqu'au bucket et aux noms d'objets auxquels le chemin aboutit au moment de l'exécution.

L'exemple IAM de politique suivant accorde le minimum de privilèges requis pour écrire les résultats de l'exécution du flux de travail de votre enfant dans un dossier nommé csvJobs dans un compartiment Amazon S3 à l'aide de l'PutObjectAPIaction.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/csvJobs/*" ] } ] }

Si le compartiment Amazon S3 dans lequel vous écrivez le résultat de l'exécution du flux de travail enfant est chiffré à l'aide d'un AWS Key Management Service (AWS KMS) clé, vous devez inclure le nécessaire AWS KMS autorisations dans votre IAM politique. Pour de plus amples informations, veuillez consulter IAMautorisations pour AWS KMS key compartiment Amazon S3 chiffré.