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.
Gestion de l'état et transformation des données
Découvrez comment transmettre des données entre états avec des variables et transformer des données avec JSONata.
Step Functions analyse les fichiers délimités par du texte selon les règles suivantes :
-
Le délimiteur qui sépare les champs est spécifié par
CSVDelimiter
in ReaderConfig. Le délimiteur est par défaut.COMMA
-
Les nouvelles lignes sont un séparateur qui sépare les enregistrements.
-
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 obligatoires pour entourer les chaînes. Toutefois, les chaînes placées entre guillemets doubles peuvent contenir des virgules et des nouvelles lignes sans agir comme des délimiteurs d'enregistrement.
-
Vous pouvez conserver les guillemets 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.
Exemple d'analyse d'un fichier CSV d'entrée
Supposons que vous ayez fourni un fichier CSV nommé
contenant une ligne en entrée. Vous avez ensuite stocké ce fichier dans un compartiment Amazon S3 nommémyCSVInput.csv
. Le fichier CSV est le suivant.amzn-s3-demo-bucket
abc,123,"This string contains commas, a double quotation marks (""), and a newline (
)",{""MyKey"":""MyValue""},"[1,2,3]"
La machine à états suivante lit ce fichier CSV et l'utilise ItemSelector (Carte) pour convertir les types de données de certains champs.
{
"StartAt": "Map",
"States": {
"Map": {
"Type": "Map",
"ItemProcessor": {
"ProcessorConfig": {
"Mode": "DISTRIBUTED",
"ExecutionType": "STANDARD"
},
"StartAt": "Pass",
"States": {
"Pass": {
"Type": "Pass",
"End": true
}
}
},
"End": true,
"Label": "Map",
"MaxConcurrency": 1000,
"ItemReader": {
"Resource": "arn:aws:states:::s3:getObject",
"ReaderConfig": {
"InputType": "CSV",
"CSVHeaderLocation": "GIVEN",
"CSVHeaders": [
"MyLetters",
"MyNumbers",
"MyString",
"MyObject",
"MyArray"
]
},
"Parameters": {
"Bucket": "amzn-s3-demo-bucket
",
"Key": "myCSVInput.csv
"
}
},
"ItemSelector": {
"MyLetters.$": "$$.Map.Item.Value.MyLetters",
"MyNumbers.$": "States.StringToJson($$.Map.Item.Value.MyNumbers)",
"MyString.$": "$$.Map.Item.Value.MyString",
"MyObject.$": "States.StringToJson($$.Map.Item.Value.MyObject)",
"MyArray.$": "States.StringToJson($$.Map.Item.Value.MyArray)"
}
}
}
}
Lorsque vous exécutez cette machine à états, elle produit le résultat suivant.
[
{
"MyNumbers": 123,
"MyObject": {
"MyKey": "MyValue"
},
"MyString": "This string contains commas, a double quote (\"), and a newline (\n)",
"MyLetters": "abc",
"MyArray": [
1,
2,
3
]
}
]