Briser les modifications — Migrer à partir deAWS CLIversion 1 vers la version 2 - AWS Command Line Interface

Python 2.7, 3.4 et 3.5 sont obsolètes pour leAWS CLILétablissement de version 1. Pour en savoir plus, consultez leAWS CLILétablissement de la version 1 d'À propos de laAWS CLIversions.

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.

Briser les modifications — Migrer à partir deAWS CLIversion 1 vers la version 2

Cette rubrique décrit les changements de comportement entreAWS CLIversion 1 etAWS CLILa version 2 qui peut nécessiter une modification des scripts ou des commandes pour obtenir le même comportement dans la version 2 que dans la version 1.

AWS CLILa version 2 utilise désormais une variable d'environnement pour définir l'encodage de fichier texte

Par défaut, les fichiers texte utilisent le même encodage que les paramètres régionaux installés. Pour définir un encodage de fichier texte différent de celui des paramètres régionaux, utilisez la variable d'environnement AWS_CLI_FILE_ENCODING. L'exemple ci-dessous définit l'interface de ligne de commande pour ouvrir des fichiers texte en UTF-8 sur Windows.

AWS_CLI_FILE_ENCODING=UTF-8

Pour plus d'informations, consultez Variables d'environnement pour configurer l’AWS CLI..

AWS CLILa version 2 transmet désormais les paramètres binaires en tant que chaînes codées en base64 par défaut

AWS CLILa version 1 n'avait pas toujours facilité la transmission des paramètres binaires de la sortie d'une commande à l'entrée d'une autre commande sans passer par des traitements intermédiaires. Certaines commandes sont requisesbase64chaînes codées, d'autres nécessitaient des chaînes d'octets codées en UTF8.AWS CLILa version 2 assure une plus grande cohérence de la gestion des paramètres binaires afin de permettre une transmission plus fiable des valeurs d'une commande à une autre.

Par défaut, l'AWS CLILa version 2 transmet désormais tous les paramètres d'entrée binaire et de sortie binaire en tant que chaînes codées en base64. Le type d'un paramètre qui nécessite une entrée binaire est spécifié comme objet blob dans la documentation. Pour transmettre des données binaires sous forme de fichier à unAWS CLI, l'AWS CLILa version 2 vous permet de spécifier le fichier à l'aide des préfixes suivants :

  • file://— LeAWS CLIL'traite le contenu du fichier comme du texte codé en base64. Par exemple: --some-param file://~/my/path/file-with-base64.txt

  • fileb://— LeAWS CLIL'traite le contenu du fichier comme des données binaires non encodées. Par exemple: --some-param fileb://~/my/path/file-with-raw-binary.bin

Vous pouvez dire auAWS CLIversion 2 pour repasser à l'AWS CLIversion 1 en spécifiant la ligne suivante dans la~/.aws/configpour un profil.

cli_binary_format=raw-in-base64-out

Vous pouvez également rétablir le paramètre d'une commande individuelle, en remplaçant le paramètre de profil actif et en incluant le paramètre --cli-binary-format raw-in-base64-out sur la ligne de commande.

Si vous revenez à l'AWS CLIversion 1 et spécifiez un fichier pour un paramètre binaire à l'aide de l'file://oufileb://, leAWS CLIL'traite le contenu du fichier comme des données binaires non encodées.

AWS CLILa version 2 améliore la gestion par Amazon S3 des propriétés de fichier et des balises lors de l'exécution de copies en plusieurs parties

Lorsque vous utilisez l'AWS CLIversion 1 des commandes dans laaws s3pour copier un fichier d'un emplacement de compartiment Amazon S3 vers un autre emplacement de compartiment Amazon S3, et cette opération utilisecopie partitionnée, aucune propriété de fichier de l'objet source n'est copiée dans l'objet de destination.

Par défaut, l'AWS CLIversion 2 des commandess3L'qui effectuent les copies en plusieurs parties transfèrent désormais toutes les balises et l'ensemble de propriétés suivant de la source vers la copie de destination :content-type,content-language,content-encoding,content-disposition,cache-control,expires, etmetadata.

Cela peut entraîner desAWSAppels d'API vers le point de terminaison Amazon S3 qui n'auraient pas été effectués si vous aviez utilisé l'AWS CLIversion 1. Peuvent être inclus : HeadObject, GetObjectTagging et PutObjectTagging.

Si vous devez modifier ce comportement par défaut dansAWS CLIversion 2, utilisez la commande--copy-propsPour spécifier l'une des options suivantes :

  • par défaut— La valeur par défaut. Spécifie que la copie inclut toutes les balises attachées à l'objet source et les propriétés englobées par le paramètre --metadata-directive utilisé pour les copies non partitionnées : content-type, content-language, content-encoding, content-disposition, cache-control, expires et metadata.

  • Métadata directive— Spécifie que la copie inclut uniquement les propriétés englobées par l'--metadata-directiveutilisé pour les copies non partitionnées. Aucune balise n'est copiée.

  • aucun(e)— Spécifie que la copie n'inclut aucune des propriétés de l'objet source.

AWS CLILa version 2 ne récupère plus automatiquementhttp://ouhttps://URL pour les paramètres

LeAWS CLILa version 2 n'effectue plus d'opération GET lorsqu'une valeur de paramètre commence parhttp://ouhttps://, puis utilise le contenu renvoyé comme valeur du paramètre. Si vous devez récupérer une URL et transmettre le contenu lu à partir de cette URL comme valeur d'un paramètre, nous vous recommandons d'utiliser curl ou un outil similaire pour télécharger le contenu de l'URL dans un fichier local. Ensuite, utilisez la syntaxe file:// pour lire le contenu de ce fichier et l'utiliser comme valeur du paramètre.

Par exemple, la commande suivante n'essaie plus de récupérer le contenu de la page se trouvant dans http://www.google.com et de le transmettre en tant que paramètre. Au lieu de cela, elle transmet la chaîne de texte littéral https://google.com en tant que paramètre.

$ aws ssm put-parameter --value http://www.google.com --name prod.microservice1.db.secret --type String 2

Si vous voulez vraiment récupérer et utiliser le contenu d'une URL web comme paramètre, vous pouvez effectuer les opérations suivantes dans la version 2 :

$ curl https://my.example.com/mypolicyfile.json -o mypolicyfile.json $ aws iam put-role-policy --policy-document file://./mypolicyfile.json --role-name MyRole --policy-name MyReadOnlyPolicy

Dans l'exemple précédent, le paramètre -o indique à curl qu'il doit enregistrer le fichier dans le dossier actif avec le même nom que le fichier source. La deuxième commande récupère le contenu de ce fichier téléchargé et le transmet en tant que valeur de --policy-document.

AWS CLILa version 2 utilise un programme de pagination pour toutes les sorties par défaut.

Par défaut,AWS CLILa version 2 renvoie toutes les sorties via le programme de pager par défaut de votre système d'exploitation. Par défaut, ce programme est le programme less sous Linux et macOS, et le programme more sous Windows. Cela peut faciliter votre navigation sur une grande quantité de sortie d'un service en affichant cette sortie une page à la fois. Cependant, vous voulez parfois toute la sortie sans avoir besoin d'appuyer sur une touche pour obtenir chaque page, par exemple lorsque vous exécutez des scripts. Pour cela, vous pouvez configurer l'AWS CLIversion 2 d'utiliser un programme de pagination différent ou aucun programme. Pour ce faire, configurez la variable d'environnement AWS_PAGER ou le paramètre cli_pager dans votre fichier ~/.aws/config et spécifiez la commande que vous souhaitez utiliser. Vous pouvez spécifier une commande qui se trouve dans votre chemin de recherche ou spécifier le chemin d'accès complet et le nom de fichier de n'importe quelle commande disponible sur votre ordinateur.

Vous pouvez désactiver complètement toute utilisation d'un programme de pagination externe en définissant la variable sur une chaîne vide comme indiqué dans les exemples suivants.

En définissant une option dans l'~/.aws/configfile

L'exemple suivant montre comment le définir pour le profil default, mais vous pouvez l'ajouter à n'importe quel profil de votre fichier ~/.aws/config.

[default] cli_pager=

En définissant une variable d'environnement

Linux ou macOS:

$ export AWS_PAGER=""

Windows :

C:\> setx AWS_PAGER ""

AWS CLILa version 2 renvoie désormais toutes les valeurs de sortie d'horodatage au format ISO 8601.

Par défaut,AWS CLILa version 2 renvoie toutes les valeurs de réponse d'horodatage dans l'Format ISO 8601. DansAWS CLILa version 1, les commandes renvoyaient des valeurs d'horodatage dans n'importe quel format retourné par la réponse de l'API HTTP, qui pouvait varier d'un service à l'autre.

Les horodatages au format ISO 8601 ressemblent aux exemples suivants. Le premier exemple montre l'heure en temps universel coordonné (UTC) en incluant un Z après l'heure. La date et l'heure sont séparées par un T.

2019-10-31T22:21:41Z

Pour spécifier un fuseau horaire différent, au lieu de Z, spécifiez un + ou un - et le nombre d'heures que le fuseau horaire a en plus ou en moins par rapport à l'heure UTC, sous forme de valeur à deux chiffres. L'exemple suivant montre la même heure que l'exemple précédent, mais ajustée à l'heure standard du Pacifique, qui se traduit par huit heures de retard par rapport à l'heure UTC.

2019-10-31T14:21:41-08

Pour afficher les horodatages au format renvoyé par la réponse de l'API HTTP, ajoutez la ligne suivante à votre profil .aws/config.

cli_timestamp_format = wire

AWS CLIversion 2 améliore la gestion deAWS CloudFormationdéploiements qui n'entraînent aucun changement

DansAWS CLIversion 1, si vous avez déployé unAWS CloudFormationqui n'a entraîné aucun changement, par défaut, l'AWS CLIéchoue et affiche un code d'erreur. Un problème risque de survenir si vous ignorez cette erreur et souhaitez que votre script continue. Vous pouvez contourner ce problème dansAWS CLIversion 1, en ajoutant le drapeau-–no-fail-on-empty-changesetqui renvoie0et ne provoque pas d'erreur dans votre script.

Comme il s'agit du scénario courant, la méthodeAWS CLIla version 2 renvoie désormais par défaut un code de sortie réussi de0Lorsqu'aucune modification n'est causée par le déploiement et que l'opération renvoie un ensemble de modifications vide.

DansAWS CLIversion 2, pour revenir au comportement d'origine, vous devez ajouter le nouvel indicateur--fail-on-empty-changeset.

AWS CLIversion 2 utilise les clés Amazon S3 de manière plus cohérente

Pour les commandes de personnalisation Amazon S3 dans les3, nous avons amélioré la cohérence de l'affichage des chemins. DansAWS CLIversion 2, les chemins sont toujours affichés par rapport à la clé correspondante. LeAWS CLILa version 1 montrait parfois les chemins sous forme absolue et parfois sous forme relative.

AWS CLIversion 2 utilise le point de terminaison régional Amazon S3 correct pourus-east-1Region (Région)

Lorsque vous configurezAWS CLIversion 1 pour utiliser leus-east-1, la régionAWS CLIutilisé l's3.amazonaws.comqui était physiquement hébergé dans leus-east-1région.AWS CLIversion 2 utilise désormais le véritable point de terminaison régionals3.us-east-1.amazonaws.comlorsque cette région est spécifiée. Pour forcer l'AWS CLIversion 2 pour utiliser le point de terminaison global, vous pouvez définir la région pour une commande suraws-global.

AWS CLILa version 2 utilise desAWS STSpar défaut

Par défaut,AWS CLILa version 2 envoie tousAWS STSDemandes d'API vers le point de terminaison régional pour l'interface en cours de configurationAWSRégion .

Par défaut,AWS CLILa version 1 envoieAWS STSdemandes adressées à laAWS STS. Vous pouvez contrôler ce comportement par défaut dans la version V1 en utilisant le paramètre sts_regional_endpoints.

AWS CLILa version 2 remplaceecr get-loginavececr get-login-password

LeAWS CLIversion 2 remplace la commandeaws ecr get-loginavec le nouveauaws ecr get-login-passwordL'améliore l'intégration automatisée avec l'authentification du conteneur.

La commande aws ecr get-login-password réduit le risque d'exposer vos informations d'identification dans la liste des processus, l'historique du shell ou d'autres fichiers journaux. Il améliore également la compatibilité avec la commande docker login, permettant une meilleure automatisation.

Leaws ecr get-login-passwordest disponible dans l'AWS CLIversion 1.17.10 et ultérieure, et leAWS CLIversion 2. L'ancienaws ecr get-loginest toujours disponible dans l'AWS CLIversion 1 pour la compatibilité descendante.

La commande aws ecr get-login-password permet de remplacer le code suivant qui récupère un mot de passe.

$(aws ecr get-login --no-include-email)

Pour réduire le risque d'exposer le mot de passe à l'historique ou aux journaux du shell, utilisez plutôt l'exemple de commande suivant. Dans cet exemple, le mot de passe est transféré directement à la commande docker login, où il est affecté au paramètre password par l'option --password-stdin.

aws ecr get-login-password | docker login --username AWS --password-stdin MY-REGISTRY-URL

AWS CLILa prise en charge de la version 2 des plug-ins est en train

Prise en charge du plug-in dans l'AWS CLILa version 2 est complètement provisoire et destinée à aider les utilisateurs à migrer à partir de l'AWS CLILa version 1 jusqu'à ce qu'une interface stable et mise à jour du plug-in soit publiée. Il n'y a aucune garantie qu'un plug-in particulier ou même l'interface du plug-in de l'interface de ligne de commande sera pris en charge dans les futures versions de l'AWS CLIversion 2. Si vous comptez sur des plug-ins, assurez-vous de verrouiller une version particulière de l'interface de ligne de commande et de tester la fonctionnalité de votre plug-in lorsque vous effectuez la mise à niveau.

Pour activer la prise en charge du plug-in, créez une section [plugins] dans votre ~/.aws/config.

[plugins] cli_legacy_plugin_path = <path-to-plugins>/python3.7/site-packages <plugin-name> = <plugin-module>

Dans la section [plugins], commencez par définir la variable cli_legacy_plugin_path et définissez sa valeur sur le chemin des packages du site Python dans lequel réside votre module de plug-in. Ensuite, vous pouvez configurer un plug-in en fournissant un nom pour le plug-in (plugin-name), et le nom de fichier du module Python, (plugin-module), qui contient le code source de votre plug-in. L'interface de ligne de commande charge chaque plug-in en important son plugin-module et en appelant sa fonction awscli_initialize.

AWS CLILa version 2 ne prend plus en charge les alias « masqués »

AWS CLILa version 2 ne prend plus en charge les alias masqués suivants, qui étaient pris en charge dans la version 1.

Dans le tableau suivant, la première colonne affiche le service, la commande et le paramètre qui fonctionnent dans toutes les versions, y compris l'AWS CLIversion 2. La deuxième colonne affiche l'alias qui ne fonctionne plus dans l'AWS CLIversion 2

Service, commande et paramètre fonctionnels Alias obsolète
cognito-identity create-identity-pool open-id-connect-provider-arns open-id-connect-provider-ar-ns
storagegateway describe-tapes tape-arns tape-ar-ns
storagegateway.describe-tape-archives.tape-arns tape-ar-ns
storagegateway.describe-vtl-devices.vtl-device-arns vtl-device-ar-ns
storagegateway.describe-cached-iscsi-volumes.volume-arns volume-ar-ns
storagegateway.describe-stored-iscsi-volumes.volume-arns volume-ar-ns
route53domains.view-billing.start-time début
deploy.create-deployment-group.ec2-tag-set ec-2-tag-set
deploy.list-application-revisions.s3-bucket s-3-bucket
deploy.list-application-revisions.s3-key-prefix s-3-key-prefix
deploy.update-deployment-group.ec2-tag-set ec-2-tag-set
iam.enable-mfa-device.authentication-code1 authentication-code-1
iam.enable-mfa-device.authentication-code2 authentication-code-2
iam.resync-mfa-device.authentication-code1 authentication-code-1
iam.resync-mfa-device.authentication-code2 authentication-code-2
importexport.get-shipping-label.street1 street-1
importexport.get-shipping-label.street2 street-2
importexport.get-shipping-label.street3 street-3
lambda.publish-version.code-sha256 code-sha-256
lightsail.import-key-pair.public-key-base64 public-key-base-64
opsworks.register-volume.ec2-volume-id ec-2-volume-id

AWS CLIversion 2 ne prend plus en charge leapi_versionsfichier de configuration, paramètre

AWS CLIla version 2 ne prend plus en charge l'appel d'anciennes versions deAWSAPI de service à l'aide de l'outilapi_versionsparamètre du fichier de configuration. TousAWS CLIappellent maintenant la dernière version des API de service actuellement prises en charge par le point de terminaison.