Nouvelles fonctionnalités et modifications de la version 2 de l’AWS CLI
Cette rubrique décrit les nouvelles fonctionnalités et les changements de comportement entre la version 1 de l’AWS CLI et la version 2 de l’AWS CLI. Ces modifications peuvent vous obliger à mettre à jour vos scripts ou commandes pour obtenir le même comportement dans la version 2 que dans la version 1.
Rubriques
Nouvelles fonctionnalités de la version 2 de l’AWS CLI
La version 2 de l’AWS CLI est la version majeure la plus récente de l’AWS CLI, qui prend en charge toutes les dernières fonctionnalités. Certaines fonctionnalités introduites dans la version 2 ne sont pas rétrocompatibles avec la version 1, et vous devez effectuer une mise à niveau pour accéder à celles-ci. Ces fonctionnalités sont les suivantes :
- L’interpréteur Python n’est pas nécessaire
-
La version 2 de l’AWS CLI ne nécessite pas d’installation séparée de Python. Elle inclut une version intégrée.
- Assistants
-
Vous pouvez utiliser un assistant avec la version 2 de l’AWS CLI. Celui-ci vous guide tout au long de la construction de certaines commandes.
- Authentification IAM Identity Center
-
Si votre organisation utilise AWS IAM Identity Center (IAM Identity Center), les utilisateurs peuvent se connecter à Active Directory, à un annuaire IAM Identity Center intégré ou à un autre IdP connecté à IAM Identity Center. Ils sont ensuite mappés à un rôle AWS Identity and Access Management (IAM) qui vous permet d’exécuter des commandes de l’AWS CLI.
- Invite automatique
-
Lorsqu’elle est activée, la version 2 de l’AWS CLI peut vous inviter à fournir des commandes, des paramètres et des ressources lorsque vous exécutez une commande
aws. - Exécution des images officielles Amazon ECR Public ou Docker pour l’AWS CLI
-
Les images Docker officielles de l’AWS CLI fournissent l’isolation, la portabilité et la sécurité qu’AWS prend en charge et gère directement. Vous pouvez ainsi utiliser la version 2 de l’AWS CLI dans un environnement basé sur des conteneurs sans avoir à gérer l’installation vous-même.
- Pager côté client
-
La version 2 de l’AWS CLI intègre l’utilisation d’un programme de pager côté client pour la sortie. Cette fonctionnalité est activée par défaut et renvoie toutes les sorties via le programme de pager par défaut de votre système d’exploitation.
- aws configure import
-
Importez les informations d’identification au format
.csvgénérées à partir de la AWS Management Console. Un fichier.csvest importé avec le nom de profil correspondant au nom d’utilisateur IAM. aws configure list-profiles-
Répertorie les noms de tous les profils que vous avez configurés.
- Format de sortie du flux YAML
-
Les formats
yamletyaml-streamtirent parti du format YAMLtout en offrant une visualisation plus réactive des grands jeux de données en vous transmettant les données en streaming. Vous pouvez commencer à visualiser et à utiliser les données YAML avant le téléchargement complet des requêtes. - Nouvelles commandes
ddbde haut niveau pour DynamoDB -
La version 2 de l’AWS CLI comporte les commandes Amazon DynamoDB de haut niveau
ddb putetddb select. Ces commandes fournissent une interface simplifiée pour placer des éléments dans les tables DynamoDB, et effectuer des recherches dans une table ou un index DynamoDB. aws logs tail-
La version 2 de l’AWS CLI comporte une commande
aws logs tailpersonnalisée qui suit les journaux d’un groupe Amazon CloudWatch Logs. Par défaut, la commande renvoie les journaux de tous les flux CloudWatch Logs associés au cours des dix dernières minutes. - Ajout de la prise en charge des métadonnées pour les commandes s3 de haut niveau
-
La version 2 de l’AWS CLI ajoute le paramètre
--copy-propsaux commandess3de haut niveau. À l’aide de ce paramètre, vous pouvez configurer des métadonnées et des balises supplémentaires pour Amazon Simple Storage Service (Amazon S3). - AWS_REGION
-
La version 2 de l’AWS CLI possède une variable d’environnement appelée
AWS_REGION, compatible avec le kit AWS SDK. Cette variable indique la Région AWS vers laquelle envoyer les demandes. Elle remplace la variable d’environnementAWS_DEFAULT_REGION, qui n’est applicable que dans l’AWS CLI.
Changements majeurs entre la version 1 de l’AWS CLI et la version 2 de l’AWS CLI
Cette section décrit tous les changements de comportement entre la version 1 de l’AWS CLI et la version 2 de l’AWS CLI. Ces modifications peuvent vous obliger à mettre à jour vos scripts ou commandes pour obtenir le même comportement dans la version 2 que dans la version 1.
Rubriques
Ajout d’une variable d’environnement pour définir l’encodage de fichiers texte
Les paramètres binaires sont transmis en tant que chaînes codées en base64 par défaut.
Aucune récupération automatique des URL http:// ou https:// pour les paramètres
Normalisation de toutes les valeurs de sortie d’horodatage au format ISO 8601
Gestion améliorée des déploiements CloudFormation n’entraînant aucune modification
Modification du comportement par défaut des point de terminaison AWS STS
Retrait de la commande ecr get-login, remplacée par ecr get-login-password
Modification de la prise en charge des plug-ins dans la version 2 de l’AWS CLI
Paramètre de fichier de configuration api_versions non pris en charge
Meilleure cohérence de la version 2 de l’AWS CLI avec les paramètres de pagination
Ajout d’une variable d’environnement pour définir l’encodage de fichiers texte
Par défaut, les fichiers texte pour Blob utilisent le même encodage que les paramètres régionaux installés. Comme la version 2 de l’AWS CLI utilise une version intégrée de Python, les variables d’environnement PYTHONUTF8 et PYTHONIOENCODING ne sont pas prises en charge. Pour définir un encodage de fichiers texte différent de celui des paramètres régionaux, utilisez la variable d’environnement AWS_CLI_FILE_ENCODING. L’exemple suivant configure l’AWS CLI pour ouvrir des fichiers texte en UTF-8 sous Windows.
AWS_CLI_FILE_ENCODING=UTF-8
Pour plus d’informations, consultez Configuration des variables d’environnement pour l’AWS CLI.
Les paramètres binaires sont transmis en tant que chaînes codées en base64 par défaut.
Dans l’AWS CLI, certaines commandes nécessitaient des chaînes codées en base64
Par défaut, la version 2 de l’AWS CLI transmet désormais tous les paramètres binaires d’entrée et de sortie en tant que blobs (objet binaire volumineux) de chaînes codées en base64. Pour plus d’informations, consultez Blob.
Pour revenir au comportement de la version 1 de l’AWS CLI, utilisez la configuration de fichier cli_binary_format ou le paramètre --cli-binary-format.
Amélioration de la gestion par Amazon S3 des propriétés des fichiers et des balises pour les copies partitionnées
Lorsque vous utilisez les commandes de la version 1 de l’AWS CLI dans l’espace de noms aws s3 pour copier un fichier d’un emplacement de compartiment S3 vers un autre, et que cette opération utilise la copie en plusieurs parties, aucune propriété de fichier de l’objet source n’est copiée vers l’objet de destination.
Par défaut, les commandes correspondantes de la version 2 de l’AWS CLI transfèrent toutes les balises et certaines propriétés de la source vers la copie de destination. Par rapport à la version 1 de l’AWS CLI, cela peut entraîner davantage d’appels d’API AWS vers le point de terminaison Amazon S3. Pour modifier le comportement par défaut des commandes s3 de la version 2 de l’AWS CLI, utilisez le paramètre --copy-props.
Pour plus d’informations, consultez Propriétés des fichiers et balises dans les copies partitionnées.
Aucune récupération automatique des URL http:// ou https:// pour les paramètres
La version 2 de l’AWS CLI n’effectue pas d’opération GET lorsqu’une valeur de paramètre commence par http:// ou https://, et n’utilise pas le contenu renvoyé comme valeur du paramètre. Par conséquent, l’option de ligne de commande associée cli_follow_urlparam est supprimée de la version 2 de l’AWS CLI.
Si vous devez récupérer une URL et transmettre son contenu dans la 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.example.com et de le transmettre en tant que paramètre. Au lieu de cela, elle transmet la chaîne de texte littéral https://example.com en tant que paramètre.
$ aws ssm put-parameter \
--value http://www.example.com \
--name prod.microservice1.db.secret \
--type String 2
Si vous voulez 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 actuel 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.
Pager utilisé par défaut pour toutes les sorties
Par défaut, la version 2 de l’AWS CLI renvoie toutes les sorties via le programme de pager par défaut de votre système d’exploitation. Ce programme est le programme lessmore
Pour ce faire, vous pouvez configurer la version 2 de l’AWS CLI afin qu’elle utilise un programme de pagination différent ou aucun programme. Pour plus d’informations, consultez Pager côté client.
Normalisation de toutes les valeurs de sortie d’horodatage au format ISO 8601
Par défaut, la version 2 de l’AWS CLI renvoie toutes les valeurs de réponse d’horodatage au format ISO 8601
Pour afficher les horodatages au format renvoyé par la réponse de l’API HTTP, utilisez la valeur wire dans votre fichier config. Pour plus d’informations, consultez cli_timestamp_format.
Gestion améliorée des déploiements CloudFormation n’entraînant aucune modification
Par défaut, dans la version 1 de l’AWS CLI, si vous déployez un modèle CloudFormation qui n’entraîne aucune modification, l’AWS CLI renvoie un code d’erreur d’échec. Cela cause des problèmes si vous ignorez cette erreur et souhaitez que votre script continue. Vous pouvez contourner ce problème dans la version 1 de l’AWS CLI en ajoutant l’indicateur -–no-fail-on-empty-changeset, qui renvoie 0.
Comme il s’agit d’un cas d’utilisation courant, la version 2 de l’AWS CLI renvoie par défaut le code de sortie réussie 0 lorsque le déploiement n’entraîne aucun changement et que l’opération renvoie un jeu de modifications vide.
Pour revenir au comportement d’origine, ajoutez l’indicateur --fail-on-empty-changeset.
Modification du comportement par défaut du point de terminaison Amazon S3 régional pour la région us-east-1
Lorsque vous configurez la version 1 de l’AWS CLI pour utiliser la région us-east-1, l’AWS CLI utilise le point de terminaison global s3.amazonaws.com qui est physiquement hébergé dans la région us-east-1. La version 2 de l’AWS CLI utilise le véritable point de terminaison régional s3.us-east-1.amazonaws.com lorsque cette région est spécifiée. Pour forcer la version 2 de l’AWS CLI à utiliser le point de terminaison global, vous pouvez définir la région sur aws-global pour une commande.
Modification du comportement par défaut des point de terminaison AWS STS
Par défaut, la version 2 de l’AWS CLI envoie toutes les demandes d’API AWS Security Token Service (AWS STS) au point de terminaison régional pour la Région AWS actuellement configurée.
Par défaut, toute version antérieure à la version 1.42.0 de la version 1 de l’AWS CLI envoie des demandes AWS STS au point de terminaison global AWS STS. Vous pouvez contrôler ce comportement par défaut dans la version 1 à l’aide du paramètre sts_regional_endpoints. Toutes les versions à partir de la version 1.42.0 (incluse) utilisent également le point de terminaison régional par défaut. Si vous migrez vers la version 2 de l’AWS CLI à partir de ces versions plus récentes, ce comportement reste inchangé.
Retrait de la commande ecr get-login, remplacée par ecr get-login-password
La version 2 de l’AWS CLI remplace la commande aws ecr get-login par la commande aws
ecr get-login-password qui améliore l’intégration automatisée avec 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. Elle améliore également la compatibilité avec la commande docker login, permettant une meilleure automatisation.
La commande aws ecr get-login-password est disponible dans les versions 1.17.10 et ultérieures de l’AWS CLI, ainsi que dans la version 2 de l’AWS CLI. L’ancienne commande aws ecr get-login est toujours disponible dans la version 1 de l’AWS CLI pour la rétrocompatibilité.
Avec la commande aws ecr get-login-password, vous pouvez 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-stdinMY-REGISTRY-URL
Pour plus d’informations, consultez aws ecr get-login-password dans le Guide de référence de la version 2 de l’AWS CLI.
Modification de la prise en charge des plug-ins dans la version 2 de l’AWS CLI
La prise en charge des plug-ins dans la version 2 de l’AWS CLI est complètement provisoire et destinée à aider les utilisateurs à migrer depuis la version 1 de l’AWS CLI jusqu’à ce qu’une interface de plug-ins stable et mise à jour soit publiée. Il n’existe aucune garantie qu’un plug-in particulier, ou même l’interface de plug-ins de l’AWS CLI, sera pris en charge dans les futures versions de la version 2 de l’AWS CLI. Si vous utilisez des plug-ins, assurez-vous de verrouiller une version particulière de l’AWS CLI et de tester leur fonctionnalité lorsque vous effectuez la mise à niveau.
Pour activer la prise en charge des plug-ins, 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], définissez la variable cli_legacy_plugin_path et réglez sa valeur sur le chemin des packages du site Python sur lequel réside votre module de plug-ins. Vous pouvez ensuite configurer un plug-in en fournissant un nom pour celui-ci (plugin-name) et le nom de fichier du module Python (plugin-module) qui contient son code source. L’AWS CLI charge chaque plug-in en important son plugin-module et en appelant sa fonction awscli_initialize.
Suppression de la prise en charge des alias masqués
La version 2 de l’AWS CLI 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 la version 2 de l’AWS CLI. La deuxième colonne affiche l’alias qui ne fonctionne plus dans la version 2 de l’AWS CLI.
| 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émarrer |
| 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.lightsail.import-key-pair.public-key-base64 | public-key-base-64 |
| opsworks.register-volume.ec2-volume-id | ec-2-volume-id |
Paramètre de fichier de configuration api_versions non pris en charge
La version 2 de l’AWS CLI ne prend pas en charge l’appel de versions antérieures des API de service AWS à l’aide du paramètre de fichier de configuration api_versions. Toutes les commandes AWS CLI appellent désormais la dernière version des API de service actuellement prises en charge par le point de terminaison.
Utilisation exclusive de Signature v4 dans la version 2 de l’AWS CLI pour authentifier les demandes Amazon S3
La version 2 de l’AWS CLI ne prend pas en charge les algorithmes de signature antérieurs pour authentifier de manière cryptographique les demandes de service envoyées aux points de terminaison Amazon S3. Cette signature s’effectue automatiquement à chaque demande Amazon S3 et seul le processus de Signature version 4 est pris en charge. Vous ne pouvez pas configurer la version de Signature. Toutes les URL présignées de compartiment Amazon S3 utilisent désormais uniquement SigV4 et ont une durée d’expiration maximale d’une semaine.
Meilleure cohérence de la version 2 de l’AWS CLI avec les paramètres de pagination
Dans la version 1 de l’AWS CLI, si vous spécifiez les paramètres de pagination sur la ligne de commande, la pagination automatique est désactivée comme prévu. Toutefois, lorsque vous spécifiez des paramètres de pagination à l’aide d’un fichier contenant le paramètre ‐‐cli-input-json, la pagination automatique n’est pas désactivée, ce qui peut entraîner une sortie inattendue. La version 2 de l’AWS CLI désactive la pagination automatique, quelle que soit la façon dont vous fournissez les paramètres.
Plus grande cohérence des codes de retour fournis par la version 2 de l’AWS CLI pour toutes les commandes
Par rapport à la version 1 de l’AWS CLI, la version 2 de l’AWS CLI offre une plus grande cohérence entre toutes les commandes et renvoie correctement un code de sortie approprié. Nous avons également ajouté les codes de sortie 252, 253 et 254. Pour plus d’informations sur les codes de sortie, consultez Codes de retour de ligne de commande dans l’AWS CLI.
Si vous êtes tributaire de la façon dont la version 1 de l’AWS CLI utilise les valeurs des codes de retour, nous vous recommandons de vérifier les codes de sortie pour vous assurer que vous obtenez les valeurs attendues.