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.
ItemReader (Carte)
Le ItemReader
champ est un JSON objet qui indique un ensemble de données et son emplacement. L'état d'une carte distribuée utilise ce jeu de données comme entrée. L'exemple suivant montre la syntaxe du ItemReader
champ si votre ensemble de données est un CSV fichier stocké dans un compartiment Amazon S3.
"ItemReader": {
"ReaderConfig": {
"InputType": "CSV",
"CSVHeaderLocation": "FIRST_ROW"
},
"Resource": "arn:aws:states:::s3:getObject",
"Parameters": {
"Bucket": "myBucket
",
"Key": "csvDataset/ratings.csv
"
}
}
Astuce
Dans Workflow Studio, vous spécifiez le jeu de données et son emplacement dans le champ Source de l'élément.
Table des matières
Contenu du ItemReader champ
Le contenu du ItemReader
champ varie en fonction de votre jeu de données. Par exemple, si votre ensemble de données est un JSON tableau transmis lors d'une étape précédente du flux de travail, le ItemReader
champ est omis. Si votre ensemble de données est une source de données Amazon S3, ce champ contient les sous-champs suivants.
ReaderConfig
Un JSON objet qui spécifie les détails suivants :
InputType
Spécifie le type de source de données Amazon S3, tel qu'un CSV fichier, un objet, un JSON fichier ou une liste d'inventaire Amazon S3. Dans Workflow Studio, vous pouvez sélectionner un type d'entrée dans la liste déroulante des sources d'articles Amazon S3 sous le champ Source de l'article.
CSVHeaderLocation
Note
Vous ne devez spécifier ce champ que si vous utilisez un CSV fichier comme ensemble de données.
Accepte l'une des valeurs suivantes pour spécifier l'emplacement de l'en-tête de colonne :
Important
À l'heure actuelle, Step Functions prend en charge CSV les en-têtes d'une taille maximale de 10 Ko.
FIRST_ROW
— Utilisez cette option si la première ligne du fichier est l'en-tête.GIVEN
— Utilisez cette option pour spécifier l'en-tête dans la définition de la machine à états. Par exemple, si votre CSV fichier contient les données suivantes.1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...
Fournissez le JSON tableau suivant en tant qu'CSVen-tête.
"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [
"userId"
,"movieId"
,"rating"
,"timestamp"
] } }
Astuce
Dans Workflow Studio, vous pouvez trouver cette option sous Configuration supplémentaire dans le champ Source de l'élément.
MaxItems
Limite le nombre d'éléments de données transmis à l'
Map
état. Supposons, par exemple, que vous fournissiez un CSV fichier contenant 1 000 lignes et que vous spécifiiez une limite de 100. Ensuite, l'interpréteur ne transmet que 100 lignes à l'Map
état. L'Map
état traite les éléments dans un ordre séquentiel, en commençant après la ligne d'en-tête.Par défaut, l'
Map
état itère sur tous les éléments de l'ensemble de données spécifié.Note
À l'heure actuelle, vous pouvez définir une limite maximale de 100 000 000. L'état de la carte distribuée arrête de lire les éléments au-delà de cette limite.
Astuce
Dans Workflow Studio, vous pouvez trouver cette option sous Configuration supplémentaire dans le champ Source de l'élément.
Vous pouvez également spécifier un chemin de référence vers une paire clé-valeur existante dans l'entrée d'état de votre carte distribuée. Ce chemin doit être résolu en un entier positif. Vous spécifiez le chemin de référence dans le
MaxItemsPath
sous-champ.Important
Vous pouvez spécifier le
MaxItems
ou leMaxItemsPath
sous-champ, mais pas les deux.
Resource
L'APIaction Amazon S3 que Step Functions doit invoquer en fonction de l'ensemble de données spécifié.
Parameters
Un JSON objet qui spécifie le nom du compartiment Amazon S3 et la clé d'objet dans lesquels l'ensemble de données est stocké.
Important
Assurez-vous que vos compartiments Amazon S3 se trouvent sous le même Compte AWS emplacement Région AWS que votre machine à états.
Exemples de jeux de données
Vous pouvez définir l'une des options suivantes comme jeu de données :
Important
Step Functions a besoin des autorisations appropriées pour accéder aux ensembles de données Amazon S3 que vous utilisez. Pour plus d'informations sur IAM les politiques relatives aux ensembles de données, consultezIAMpolitiques relatives aux ensembles de données.
L'état d'une carte distribuée peut accepter une JSON entrée transmise depuis une étape précédente du flux de travail. Cette entrée doit être soit un tableau, soit contenir un tableau dans un nœud spécifique. Pour sélectionner un nœud contenant le tableau, vous pouvez utiliser le ItemsPath (Carte)
champ.
Pour traiter les éléments individuels du tableau, l'état de la carte distribuée lance l'exécution d'un flux de travail enfant pour chaque élément du tableau. Les onglets suivants présentent des exemples d'entrée transmise à l'Map
état et d'entrée correspondante à l'exécution d'un flux de travail enfant.
Note
Step Functions omet le ItemReader
champ lorsque votre ensemble de données est un JSON tableau issu d'une étape précédente.
L'état d'une carte distribuée peut être itéré sur les objets stockés dans un compartiment Amazon S3. Lorsque l'exécution du flux de travail atteint Map
cet état, Step Functions invoque l'APIaction ListObjectsV2, qui renvoie un tableau des métadonnées de l'objet Amazon S3. Dans ce tableau, chaque élément contient des données, telles que ETaget Key, pour les données stockées dans le compartiment.
Pour traiter les éléments individuels du tableau, l'état de la carte distribuée lance l'exécution d'un flux de travail enfant. Supposons, par exemple, que votre compartiment Amazon S3 contienne 100 images. Ensuite, le tableau renvoyé après avoir invoqué l'ListObjectsV2
APIaction contient 100 éléments. L'état de la carte distribuée lance ensuite 100 exécutions de flux de travail secondaires pour traiter chaque élément du tableau.
Note
Actuellement, Step Functions inclut également un élément pour chaque dossier que vous créez dans un compartiment Amazon S3 spécifique à l'aide de la console Amazon S3. Cela entraîne l'exécution d'un flux de travail secondaire supplémentaire lancé par l'état de la carte distribuée. Pour éviter de créer une exécution de flux de travail secondaire supplémentaire pour le dossier, nous vous recommandons d'utiliser le AWS CLI pour créer des dossiers. Pour plus d'informations, consultez la section Commandes Amazon S3 de haut niveau dans le guide de AWS Command Line Interface l'utilisateur.
Step Functions a besoin des autorisations appropriées pour accéder aux ensembles de données Amazon S3 que vous utilisez. Pour plus d'informations sur IAM les politiques relatives aux ensembles de données, consultezIAMpolitiques relatives aux ensembles de données.
Les onglets suivants présentent des exemples de syntaxe de ItemReader
champ et d'entrée transmise à l'exécution d'un flux de travail enfant pour cet ensemble de données.
L'état d'une carte distribuée peut accepter un JSON fichier stocké dans un compartiment Amazon S3 en tant que jeu de données. Le JSON fichier doit contenir un tableau.
Lorsque l'exécution du flux de travail atteint Map
cet état, Step Functions appelle l'GetObjectAPIaction pour récupérer le fichier spécifiéJSON. L'Map
état itère ensuite sur chaque élément du tableau et lance l'exécution d'un flux de travail secondaire pour chaque élément. Par exemple, si votre JSON fichier contient 1 000 éléments de tableau, l'Map
État lance 1 000 exécutions de flux de travail enfants.
Note
L'entrée d'exécution utilisée pour démarrer l'exécution d'un flux de travail enfant ne peut pas dépasser 256 Ko. Step Functions prend toutefois en charge la lecture d'un élément d'une taille maximale de 8 Mo à partir d'un JSON fichier CSV OR si vous appliquez ensuite le
ItemSelector
champ facultatif pour réduire la taille de l'élément.Actuellement, Step Functions prend en charge 10 Go comme taille maximale d'un fichier individuel dans un rapport d'inventaire Amazon S3. Step Functions peut toutefois traiter plus de 10 Go si la taille de chaque fichier est inférieure à 10 Go.
Step Functions a besoin des autorisations appropriées pour accéder aux ensembles de données Amazon S3 que vous utilisez. Pour plus d'informations sur IAM les politiques relatives aux ensembles de données, consultezIAMpolitiques relatives aux ensembles de données.
Les onglets suivants présentent des exemples de syntaxe de ItemReader
champ et d'entrée transmise à l'exécution d'un flux de travail enfant pour cet ensemble de données.
Pour cet exemple, imaginez que vous avez un JSON fichier nommé
. Vous avez stocké ce fichier dans un préfixe nommé factcheck.json
dans un compartiment Amazon S3. Voici un exemple de JSON jeu de données.jsonDataset
[
{
"verdict": "true",
"statement_date": "6/11/2008",
"statement_source": "speech"
},
{
"verdict": "false",
"statement_date": "6/7/2022",
"statement_source": "television"
},
{
"verdict": "mostly-true",
"statement_date": "5/18/2016",
"statement_source": "news"
},
...
]
L'état d'une carte distribuée peut accepter un CSV fichier stocké dans un compartiment Amazon S3 en tant que jeu de données. Si vous utilisez un CSV fichier comme ensemble de données, vous devez spécifier un en-tête de CSV colonne. Pour plus d'informations sur la manière de spécifier un CSV en-tête, consultezContenu du ItemReader champ.
Comme il n'existe pas de format standardisé pour créer et gérer les données dans CSV les fichiers, Step Functions analyse CSV les fichiers selon les règles suivantes :
-
Les virgules (,) sont des séparateurs qui séparent les champs individuels.
-
Les nouvelles lignes sont un séparateur qui sépare les enregistrements individuels.
-
Les champs sont traités comme des chaînes. Pour les conversions de type de données, utilisez la fonction
States.StringToJson
intrinsèque dansItemSelector (Carte). -
Les guillemets doubles (» «) ne sont pas nécessaires pour entourer les chaînes. Toutefois, les chaînes placées entre guillemets doubles peuvent contenir des virgules et des nouvelles lignes sans qu'elles servent de délimiteurs.
-
Évitez les guillemets doubles en les répétant.
-
Si le nombre de champs d'une ligne est inférieur au nombre de champs de l'en-tête, Step Functions fournit des chaînes vides pour les valeurs manquantes.
-
Si le nombre de champs d'une ligne est supérieur au nombre de champs de l'en-tête, Step Functions ignore les champs supplémentaires.
Pour plus d'informations sur la façon dont Step Functions analyse un CSV fichier, consultezExample of parsing an input CSV file.
Lorsque l'exécution du flux de travail atteint Map
cet état, Step Functions appelle l'GetObjectAPIaction pour récupérer le fichier spécifiéCSV. L'Map
état itère ensuite sur chaque ligne du CSV fichier et lance l'exécution d'un flux de travail enfant pour traiter les éléments de chaque ligne. Supposons, par exemple, que vous CSV fournissiez un fichier contenant 100 lignes en entrée. Ensuite, l'interpréteur passe chaque ligne à l'Map
état. L'Map
état traite les éléments par ordre de série, en commençant après la ligne d'en-tête.
Note
L'entrée d'exécution utilisée pour démarrer l'exécution d'un flux de travail enfant ne peut pas dépasser 256 Ko. Step Functions prend toutefois en charge la lecture d'un élément d'une taille maximale de 8 Mo à partir d'un JSON fichier CSV OR si vous appliquez ensuite le
ItemSelector
champ facultatif pour réduire la taille de l'élément.Actuellement, Step Functions prend en charge 10 Go comme taille maximale d'un fichier individuel dans un rapport d'inventaire Amazon S3. Step Functions peut toutefois traiter plus de 10 Go si la taille de chaque fichier est inférieure à 10 Go.
Step Functions a besoin des autorisations appropriées pour accéder aux ensembles de données Amazon S3 que vous utilisez. Pour plus d'informations sur IAM les politiques relatives aux ensembles de données, consultezIAMpolitiques relatives aux ensembles de données.
Les onglets suivants présentent des exemples de syntaxe de ItemReader
champ et d'entrée transmise à l'exécution d'un flux de travail enfant pour cet ensemble de données.
Un état de carte distribuée peut accepter un fichier manifeste d'inventaire Amazon S3 stocké dans un compartiment Amazon S3 en tant que jeu de données.
Lorsque l'exécution du flux de travail atteint son Map
état, Step Functions appelle l'GetObjectAPIaction pour récupérer le fichier manifeste d'inventaire Amazon S3 spécifié. L'Map
état passe ensuite en revue les objets de l'inventaire pour renvoyer un tableau de métadonnées des objets d'inventaire Amazon S3.
Note
Actuellement, Step Functions prend en charge 10 Go comme taille maximale d'un fichier individuel dans un rapport d'inventaire Amazon S3. Step Functions peut toutefois traiter plus de 10 Go si la taille de chaque fichier est inférieure à 10 Go.
Step Functions a besoin des autorisations appropriées pour accéder aux ensembles de données Amazon S3 que vous utilisez. Pour plus d'informations sur IAM les politiques relatives aux ensembles de données, consultezIAMpolitiques relatives aux ensembles de données.
Voici un exemple de fichier d'inventaire au CSV format. Ce fichier inclut les objets nommés csvDataset
etimageDataset
, qui sont stockés dans un compartiment Amazon S3 nommésourceBucket
.
"sourceBucket","csvDataset/","0","2022-11-16T00:27:19.000Z"
"sourceBucket","csvDataset/titles.csv","3399671","2022-11-16T00:29:32.000Z"
"sourceBucket","imageDataset/","0","2022-11-15T20:00:44.000Z"
"sourceBucket","imageDataset/n02085620_10074.jpg","27034","2022-11-15T20:02:16.000Z"
...
Important
À l'heure actuelle, Step Functions ne prend pas en charge le rapport d'inventaire Amazon S3 défini par l'utilisateur sous forme de jeu de données. Vous devez également vous assurer que le format de sortie de votre rapport d'inventaire Amazon S3 est le suivantCSV. Pour plus d'informations sur les inventaires Amazon S3 et sur la façon de les configurer, consultez Amazon S3 Inventory dans le guide de l'utilisateur Amazon S3.
L'exemple suivant de fichier manifeste d'inventaire montre les CSV en-têtes des métadonnées des objets d'inventaire.
{
"sourceBucket" : "sourceBucket
",
"destinationBucket" : "arn:aws:s3:::inventory
",
"version" : "2016-11-30",
"creationTimestamp" : "1668560400000",
"fileFormat" : "CSV",
"fileSchema" : "Bucket, Key, Size, LastModifiedDate",
"files" : [ {
"key" : "source-bucket
/destination-prefix
/data/20e55de8-9c21-45d4-99b9-46c732000228.csv.gz
",
"size" : 7300,
"MD5checksum" : "a7ff4a1d4164c3cd55851055ec8f6b20"
} ]
}
Les onglets suivants présentent des exemples de syntaxe de ItemReader
champ et d'entrée transmise à l'exécution d'un flux de travail enfant pour cet ensemble de données.
IAMpolitiques relatives aux ensembles de données
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'StartExecution
APIaction 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 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.
Les exemples de IAM politiques suivants accordent le minimum de privilèges requis pour accéder à vos ensembles de données Amazon S3 à l'aide de la ListObjectsV2 et GetObjectAPIdes actions.
Exemple IAMpolitique relative à l'objet Amazon S3 en tant que jeu de données
L'exemple suivant montre une IAM politique qui accorde le moins de privilèges pour accéder aux objets organisés
dans un compartiment Amazon S3 nomméprocessImages
.myBucket
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::
myBucket
" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages
" ] } } } ] }
Exemple IAMpolitique pour un CSV fichier en tant que jeu de données
L'exemple suivant montre une IAM politique qui accorde le moins de privilèges pour accéder à un CSV fichier nommé
.ratings.csv
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
myBucket
/csvDataset
/ratings.csv
" ] } ] }
Exemple IAMpolitique pour un inventaire Amazon S3 sous forme de jeu de données
L'exemple suivant montre une IAM politique qui accorde le moins de privilèges pour accéder à un rapport d'inventaire Amazon S3.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
destination-prefix
/source-bucket
/config-ID
/YYYY-MM-DDTHH-MMZ
/manifest.json", "arn:aws:s3:::destination-prefix
/source-bucket
/config-ID
/data/*" ] } ] }