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

Le ResultWriter champ est un objet JSON 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 emplacement Région AWS que votre 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écution, l'ARN 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é myOutputBucket dans un préfixe appelécsvProcessJobs.

{ "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "myOutputBucket", "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 politique IAM requise, consultezPolitiques IAM 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 l'ARN Map Run 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": "myOutputBucket", "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, l'ARN Map Run et des informations sur les fichiers de résultats.

    Si vous avez redrivenun Map Run, le manifest.json fichier contient des références à toutes les exécutions de flux de travail enfant réussies 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 ou en attente pour une exécution spécifiqueredrive.

  • 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" } }, ... ]

Politiques IAM pour ResultWriter

Lorsque vous créez des flux de travail avec la console Step Functions, Step Functions peut générer automatiquement des politiques IAM en fonction des ressources figurant 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'action d'StartExecutionAPI pour l'état de la carte distribuée. Ces politiques incluent également le minimum de privilèges nécessaires aux Step Functions pour accéder aux 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 politiques IAM. 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 politiques IAM pour 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 de politique IAM 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'PutObjectaction API.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::resultBucket/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'une AWS Key Management Service (AWS KMS) clé, vous devez inclure les AWS KMS autorisations nécessaires dans votre politique IAM. Pour plus d'informations, consultez Autorisations IAM pour le compartiment Amazon S3 AWS KMS key chiffré.