Cette documentation concerne uniquement la version 1 de l’AWS CLI. Pour la documentation relative à la version 2 de l’AWS CLI, consultez le Guide de l’utilisateur de la version 2.
Chargement d’un paramètre depuis un fichier dans l’AWS CLI
Certains paramètres attendent des noms de fichier en tant qu’arguments à partir desquels l’AWS CLI charge les données. D’autres paramètres vous permettent de spécifier la valeur du paramètre sous forme de texte saisi sur la ligne de commande ou de lecture à partir d’un fichier. Qu’un fichier soit obligatoire ou facultatif, vous devez encoder le fichier correctement afin que l’AWS CLI puisse le comprendre. L’encodage du fichier doit correspondre aux paramètres régionaux par défaut du système de lecture. Vous pouvez déterminer cela à l’aide de la méthode locale.getpreferredencoding() Python.
Cette méthode permet de charger un fichier pour un paramètre unique. Pour plus d’informations sur le chargement de plusieurs paramètres avec un fichier unique, consultez Fichiers d’entrées et squelettes de l’AWS CLI dans l’AWS CLI.
Note
Par défaut, Windows PowerShell génère du texte en UTF-16, ce qui entraîne un conflit avec l’encodage UTF-8 utilisé par les fichiers JSON et de nombreux systèmes Linux. Nous vous recommandons d’utiliser -Encoding ascii avec les commandes PowerShell Out-File pour vous assurer que le fichier obtenu pourra être lu par l’AWS CLI.
Rubriques
Chargement d’un paramètre depuis un fichier
Il est parfois pratique de charger une valeur de paramètre à partir d’un fichier plutôt que d’essayer de la taper entièrement comme valeur de paramètre de ligne de commande, par exemple lorsque le paramètre est une chaîne JSON complexe. Pour spécifier un fichier qui contient la valeur, spécifiez une URL de fichier au format suivant :
file://complete/path/to/file
-
Les deux premières barres obliques « / » font partie de la spécification. Si le chemin d’accès requis commence par un caractère « / », le résultat contiendra trois barres obliques :
file://./folder/file -
L’URL fournit le chemin d’accès au fichier qui contient le contenu effectif du paramètre.
-
Lors de l’utilisation de fichiers contenant des espaces ou des caractères spéciaux, suivez les règles en matière de guillemets pour votre terminal.
Note
Ce comportement est automatiquement désactivé pour les paramètres qui attendent déjà une URL, comme le paramètre qui identifie une URL de modèle CloudFormation. Vous pouvez également désactiver ce comportement en désactivant le paramètre cli_follow_urlparam dans votre fichier de configuration AWS CLI.
Les chemins de fichiers des exemples suivants sont interprétés comme étant relatifs au répertoire de travail actuel.
L’option de préfixe file:// prend en charge les extensions de style Unix, dont « ~/ », « ./ » et « ../ ». Sous Windows, l’expression « ~/ » s’étend à votre répertoire utilisateur, stocké dans la variable d’environnement %USERPROFILE%. Par exemple, sous Windows 10, un répertoire utilisateur figure généralement sous %USERPROFILE%.
Les documents JSON qui sont intégrés en tant que valeur d’un autre document JSON doivent toujours inclure une séquence d’échappement.
$aws sqs create-queue --queue-name my-queue --attributesfile://attributes.json
attributes.json
{ "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\",\"maxReceiveCount\":\"5\"}" }
Fichiers binaires
Pour les commandes qui acceptent des données binaires comme paramètre, spécifiez que les données sont un contenu binaire à l’aide du préfixe fileb://. Les commandes qui acceptent des données binaires sont les suivantes :
-
Paramètre
aws ec2 run-instances:--user-data. -
Paramètre
aws s3api put-object:--sse-customer-key. -
Paramètre
aws kms decrypt:--ciphertext-blob.
L’exemple suivant génère une clé AES binaire 256 bits à l’aide d’un outil de ligne de commande Linux, puis la fournit à Amazon S3 pour chiffrer un fichier chargé côté serveur.
$dd if=/dev/urandom bs=1 count=32 > sse.key32+0 records in 32+0 records out 32 bytes (32 B) copied, 0.000164441 s, 195 kB/s$aws s3api put-object \ --bucket amzn-s3-demo-bucket \ --key test.txt \ --body test.txt \--sse-customer-key fileb://sse.key\ --sse-customer-algorithm AES256{ "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==", "SSECustomerAlgorithm": "AES256", "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\"" }
Fichiers éloignés
L’AWS CLI prend également en charge le chargement de paramètres depuis un fichier hébergé sur Internet avec une URL http:// ou https://. L’exemple suivant fait référence à un fichier stocké dans un compartiment Amazon S3. Cela vous permet d’accéder à des fichiers de paramètres depuis n’importe quel ordinateur, mais le conteneur doit être publiquement accessible.
$aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappingshttp://amzn-s3-demo-bucket.s3.amazonaws.com/filename.json
Les exemples précédents supposent que le fichier filename.json contient les données JSON suivantes.
[ { "DeviceName": "/dev/sdb", "Ebs": { "VolumeSize": 20, "DeleteOnTermination": false, "VolumeType": "standard" } } ]
Pour obtenir un autre exemple faisant référence à un fichier contenant des paramètres au format JSON, consultez Attachement d’une politique gérée par IAM à un utilisateur.
Chargement d’un fichier en tant que valeur de syntaxe raccourcie
Lors de l’utilisation d’une syntaxe raccourcie dans laquelle une valeur est grande ou complexe, il est souvent plus facile de la charger dans un fichier en tant que valeur. Pour charger un fichier en tant que valeur de syntaxe raccourcie, le formatage changera légèrement. Au lieu de key=value, vous utiliserez l’opérateur @= au lieu de l’opérateur =. Le code @= signifie à l’AWS CLI que la valeur doit être lue comme un chemin de fichier et non comme une chaîne. L’exemple suivant montre une paire clé-valeur en train de charger un fichier pour sa valeur.
L’exemple suivant montre comment charger un fichier de certificat pour la commande aws
rolesanywhere create-trust-anchor.
$aws rolesanywhere create-trust-anchor --name TrustAnchor \ --source sourceData={x509CertificateData@=file://root-ca.crt},sourceType="CERTIFICATE_BUNDLE" \ --enabled
Pour plus d’informations sur la syntaxe raccourcie, consultez Utilisation d’une syntaxe raccourcie dans l’AWS CLI.