AWS CLI バージョン 2 の新機能と変更点
このトピックでは、新機能と、AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の動作における変更について説明します。これらの変更では、バージョン 1 と同じ動作をバージョン 2 で実行するために、スクリプトまたはコマンドを更新する必要がある場合があります。
AWS CLI バージョン 2 の新機能
AWS CLI バージョン 2 は、AWS CLI の最新メジャーバージョンであり、最新機能をすべてサポートしています。バージョン 2 で導入された一部の機能は、バージョン 1 との下位互換性がないため、これらの機能にアクセスするには、アップグレードする必要があります。主な機能は以下のとおりです。
- Python インタプリタは不要です
-
AWS CLI バージョン 2 では Python を別途インストールする必要はありません。組み込みバージョンが含まれています。
- ウィザード
-
ウィザードは AWS CLI バージョン 2 と共に使用できます。ウィザードの指示に従って、特定のコマンドを作成できます。
- IAM Identity Center 認証
-
組織で AWS IAM Identity Center (IAM Identity Center) を使用している場合、ユーザーは Active Directory、組み込み IAM Identity Center ディレクトリ、または IAM Identity Center に接続された別の IdP にサインインできます。次に、それらは、AWS CLI コマンドを実行できる AWS Identity and Access Management (IAM) ロールにマッピングされます。
- 自動プロンプト
-
有効にした場合、AWS CLI バージョン 2 では、
aws
コマンドの実行時にコマンド、パラメータ、およびリソースのプロンプトを表示できます。 - AWS CLI に対して公式の Amazon ECR Public イメージまたは Docker イメージを実行する
-
AWS CLI の公式 Docker イメージは、AWS が直接サポートおよび維持する分離、移植性、およびセキュリティを提供します。これにより、インストールを自分で管理しなくても、コンテナベースの環境で AWS CLI バージョン 2 を使用できます。
- クライアント側のページャー
-
AWS CLI バージョン 2 では、出力にクライアント側のページャープログラムを使用できます。デフォルトでは、この機能がオンになり、オペレーティングシステムのデフォルトのページャープログラムを介してすべての出力を返します。
- aws configure import
-
AWS Management Consoleから生成された重要な
.csv
認証情報をインポートします。IAM ユーザー名と一致するプロファイル名を持つ.csv
ファイルがインポートされます。 aws configure list-profiles
-
設定したすべてのプロファイルの名前を一覧表示します。
- YAML ストリーム出力形式
-
yaml
およびyaml-stream
形式では YAML形式のメリットを活用します。また、データをユーザーにストリーミングすることで、大きなデータセットの表示の応答性を向上させます。クエリ全体がダウンロードされる前に、YAML データの表示および使用を開始できます。 - DynamoDB 用の新しい高レベルの
ddb
コマンド -
AWS CLI バージョン 2 には高レベルの Amazon DynamoDB コマンド
ddb put
および ddb select
があります。これらのコマンドは、DynamoDB テーブルに項目を配置し、DynamoDB テーブルまたはインデックスを検索するためのシンプルなインターフェイスを提供します。 aws logs tail
-
AWS CLI バージョン 2 には、Amazon CloudWatch Logs グループのログを末尾にするカスタム
aws logs tail
コマンドがあります。デフォルトでは、このコマンドは過去 10 分間の関連するすべての CloudWatch Logs ストリームから、ログを返します。 - 高レベルの s3 コマンドに対するメタデータのサポートを追加
-
AWS CLI バージョン 2 で、高レベルの
s3
コマンドに--copy-props
パラメータが追加されました。このパラメータを使用すると、Amazon Simple Storage Service (Amazon S3) の追加のメタデータとタグを設定できます。 - AWS_REGION
-
AWS CLI バージョン 2 には、
AWS_REGION
と呼ばれる、AWS SDK 互換環境変数があります。この変数は、リクエストの送信先となる AWS リージョン を指定します。これは、AWS_DEFAULT_REGION
環境変数を上書きします (AWS CLI にのみに適用されます)。
AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更
このセクションでは、AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の動作におけるすべての変更について説明します。これらの変更では、バージョン 1 と同じ動作をバージョン 2 で実行するために、スクリプトまたはコマンドを更新する必要がある場合があります。
トピック
- テキストファイルのエンコードを設定するために環境変数を追加
- バイナリパラメータはデフォルトで base64 エンコードされた文字列として渡されるようになりました
- マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました
- パラメータの http:// または https:// URL の自動取得の廃止
- デフォルトですべての出力に使用されるページャー
- タイムスタンプの出力値は ISO 8601 形式に標準化されています
- 変更のない、CloudFormation デプロイの処理の改善
- us-east-1 リージョンの Amazon S3 エンドポイントのデフォルト動作を変更しました
- リージョンの AWS STS エンドポイントのデフォルトの動作を変更しました
- ecr get-login を削除し、ecr get-login-password に置き換えました
- プラグインに対する AWS CLI バージョン 2 のサポートが変更されます
- 非表示エイリアスのサポートを削除しました
- api_versions 設定ファイルの設定はサポートされていません
- AWS CLI バージョン 2 は、署名 V4 のみを使用して Amazon S3 リクエストを認証します
- AWS CLI バージョン 2 はページングパラメータとの整合性が高くなっています
- AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。
テキストファイルのエンコードを設定するために環境変数を追加
デフォルトでは、blob のテキストファイルはインストールされたロケールと同じエンコードを使用します。AWS CLI バージョン 2 では Python の組み込みバージョンを使用しているため、PYTHONUTF8
と PYTHONIOENCODING
環境変数はサポートされていません。テキストファイルのエンコードをロケールと異なるように設定するには、AWS_CLI_FILE_ENCODING
環境変数を使用します。次の例では、Windows で UTF-8
を使用してテキストファイルを開くように AWS CLI を設定します。
AWS_CLI_FILE_ENCODING=UTF-8
詳細については、「AWS CLI の環境変数の設定」を参照してください。
バイナリパラメータはデフォルトで base64 エンコードされた文字列として渡されるようになりました
AWS CLI では、base64
AWS CLI バージョン 2 では、デフォルトですべてのバイナリ入力パラメータとバイナリ出力パラメータが base64 でエンコードされた文字列 blobs
(バイナリラージオブジェクト) として渡されます 詳細については、「blob」を参照してください。
AWS CLI バージョン 1 の動作に戻すには、cli_binary_format
ファイル設定または --cli-binary-format
パラメータを使用します。
マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました
aws s3
名前空間のコマンドの AWS CLI バージョン 1 を使用して、ある S3 バケットの場所から別の S3 バケットの場所にファイルをコピーし、そのオペレーションでマルチパートコピーを使用する場合、ソースオブジェクトのファイルプロパティはターゲットオブジェクトにコピーされません。
デフォルトでは、AWS CLI バージョン 2 の対応するコマンドでは、すべてのタグとプロパティの一部を送信元から送信先のコピーに転送します。AWS CLI バージョン 1 と比較した場合、これによりさらに多くの AWS API コールが Amazon S3 エンドポイントに対して行われる可能性があります。AWS CLI バージョン 2 で s3
コマンドのデフォルト動作を変更するには、--copy-props
パラメータを使用します。
詳細については、「マルチパートコピーのファイルプロパティとタグ」を参照してください。
パラメータの http://
または https://
URL の自動取得の廃止
AWS CLI バージョン 2 では、パラメータ値が http://
または https://
で始まる場合は GET
オペレーションは実行されず、返されたコンテンツはパラメータの値として使用されません。その結果、関連するコマンドラインのオプション cli_follow_urlparam
が AWS CLI バージョン 2 から削除されます。
URL を取得し、その URL の内容をパラメータの値に渡す必要がある場合は、curl
または同様のツールを使用して URL の内容をローカルファイルにダウンロードすることをお勧めします。次に、file://
構文を使用してそのファイルの内容を読み込み、パラメータの値として使用します。
例えば、次のコマンドでは、http://www.example.com
で見つかったページの内容を取得し、その内容をパラメータとして渡そうとしなくなりました。代わりに、リテラルテキスト文字列 https://example.com
をパラメータとして渡します。
$
aws ssm put-parameter \
--value http://www.example.com \
--name prod.microservice1.db.secret \
--type String 2
ウェブ URL の内容をパラメータとして取得して使用する場合は、バージョン 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
前の例では、-o
パラメータは、ソースファイルと同じ名前で現在のフォルダにファイルを保存するよう curl
に指示します。2 番目のコマンドは、ダウンロードしたファイルの内容を取得し、その内容を --policy-document
の値として渡します。
デフォルトですべての出力に使用されるページャー
AWS CLI バージョン 2 はデフォルトで、すべての出力をオペレーティングシステムのデフォルトページャープログラム経由で返します。このプログラムは Linux および macOS では less
more
別のページングプログラムを使用するか、まったく使用しないように AWS CLI バージョン 2 を設定できます。詳細については、「クライアント側のページャー」を参照してください。
タイムスタンプの出力値は ISO 8601 形式に標準化されています
AWS CLI バージョン 2 はデフォルトで、すべてのタイムスタンプレスポンス値を ISO 8601
HTTP API レスポンスから返された形式でタイムスタンプを表示するには、config
ファイルで値 wire
を使用します。詳細については、「cli_timestamp_format
」を参照してください。
変更のない、CloudFormation デプロイの処理の改善
デフォルトで、AWS CLI バージョン 1 では、変更を行わない AWS CloudFormation テンプレートをデプロイすると、AWS CLI が失敗のエラーコードを返します。これをエラーと見なさずにスクリプトを続行すると、問題が発生する可能性があります。AWS CLI バージョン 1 でこれに対処するには、0
を返すフラグ -–no-fail-on-empty-changeset
を追加します。
これは一般的なユースケースであるため、AWS CLI バージョン 2 では、デプロイによって変更が行われず、オペレーションが空の変更セットを返す場合、デフォルトで正常終了コード 0
が返されます。
元の動作に戻すには、フラグ --fail-on-empty-changeset
を追加します。
us-east-1
リージョンの Amazon S3 エンドポイントのデフォルト動作を変更しました
us-east-1
リージョンを使用するように AWS CLI バージョン 1 を設定すると、AWS CLI は us-east-1
リージョンで物理的にホストされているグローバル s3.amazonaws.com
エンドポイントを使用します。AWS CLI バージョン 2 では、リージョンが指定されると、真のリージョンのエンドポイント s3.us-east-1.amazonaws.com
を使用します。AWS CLI バージョン 2 によるグローバルエンドポイントの使用を強制するには、コマンドのリージョンを aws-global
に設定できます。
リージョンの AWS STS エンドポイントのデフォルトの動作を変更しました
AWS CLI バージョン 2 はデフォルトで、現在設定されている AWS リージョンのリージョンエンドポイントにすべての AWS Security Token Service (AWS STS) API リクエストを送信します。
AWS CLI バージョン 1 はデフォルトで、AWS STS リクエストをグローバル AWS STS エンドポイントに送信します。このバージョン 1 のデフォルト動作は、sts_regional_endpoints
設定を使用して制御できます。
ecr get-login
を削除し、ecr get-login-password
に置き換えました
AWS CLI バージョン 2 はコマンド aws ecr get-login
を、コンテナ認証との自動統合を改善するコマンド aws
ecr get-login-password
に置き換えます。
aws ecr get-login-password
コマンドでは、プロセスリスト、シェル履歴、またはその他のログファイル内の認証情報が公開されるリスクが減ります。また、docker login
コマンドとの互換性が向上し、オートメーションが向上します。
aws ecr get-login-password
コマンドは、AWS CLI バージョン 1.17.10 以降、および AWS CLI バージョン 2 で使用できます。下位互換性のため、古い aws ecr get-login
コマンドは AWS CLI バージョン 1 で引き続き使用できます。
aws ecr get-login-password
コマンドを使用すると、パスワードを取得する以下のコードを置き換えることができます。
$
(aws ecr get-login --no-include-email)
パスワードをシェルの履歴またはログに公開するリスクを減らすには、代わりに以下の例のコマンドを使用します。この例では、パスワードは docker login
コマンドに直接パイプされ、そこで --password-stdin
オプションによってパスワードパラメータに割り当てられます。
$
aws ecr get-login-password | docker login --username AWS
--password-stdin
MY-REGISTRY-URL
詳細については、AWS CLI バージョン 2 リファレンスガイドの「aws ecr get-login-password
プラグインに対する AWS CLI バージョン 2 のサポートが変更されます
AWS CLI バージョン 2 でのプラグインサポートは完全に暫定的なもので、安定した新しいプラグインインターフェイスがリリースされるまで、ユーザーによる AWS CLI CLI バージョン 1 からの移行をサポートすることを目的としています。AWS CLI バージョン 2 の将来のバージョンで、特定のプラグインまたは AWS CLI プラグインインターフェイスがサポートされるという保証はありません。プラグインに依存している場合は、AWS CLI の特定バージョンにロックして、アップグレード時にはプラグインの機能をテストしてください。
プラグインサポートを有効にするには、[plugins]
に ~/.aws/config
セクションを作成します。
[plugins] cli_legacy_plugin_path =
<path-to-plugins>
/python3.7/site-packages<plugin-name>
=<plugin-module>
[plugins]
セクションで、cli_legacy_plugin_path
変数を定義し、その値を、プラグインモジュールがある Python サイトパッケージのパスに設定します。次に、プラグインの名前 (plugin-name
)、およびプラグインのソースコードを含む Python モジュールのファイル名 (plugin-module
) を指定して、プラグインを設定できます。AWS CLI は、各プラグインをロードするために、それぞれの plugin-module
をインポートして awscli_initialize
関数を呼び出します。
非表示エイリアスのサポートを削除しました
AWS CLI バージョン 2 では、バージョン 1 でサポートされていた次の非表示エイリアスがサポートされなくなりました。
以下の表では、AWS CLI バージョン 2 を含めたすべてのバージョンで機能するサービス、コマンド、およびパラメータが最初の列に表示されています。2 番目の列には、AWS CLI バージョン 2 では機能しなくなったエイリアスが表示されています。
作業サービス、コマンド、パラメータ | 廃止されたエイリアス |
---|---|
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 | start |
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 |
api_versions
設定ファイルの設定はサポートされていません
AWS CLI バージョン 2 では、api_versions
設定ファイルの設定を使用した、古いバージョンの AWS のサービス API コールがサポートさません。すべての AWS CLI コマンドは、エンドポイントで現在サポートされている最新バージョンのサービス API を呼び出すようになりました。
AWS CLI バージョン 2 は、署名 V4 のみを使用して Amazon S3 リクエストを認証します
AWS CLI バージョン 2 では、Amazon S3 エンドポイントに送信されるサービスリクエストを暗号化的に認証するための以前の署名アルゴリズムはサポートされていません。この署名は、すべての Amazon S3 リクエストで自動的に行われます。また、署名バージョン 4 の署名プロセスのみがサポートされています。署名バージョンを設定することはできません。すべての Amazon S3 バケット署名済み URL は SigV4 のみを使用し、最大有効期間は 1 週間になりました。
AWS CLI バージョン 2 はページングパラメータとの整合性が高くなっています
AWS CLI バージョン 1 では、コマンドラインでページ分割パラメータを指定すると、自動ページ分割が想定どおりにオフになります。ただし、‐‐cli-input-json
パラメータを指定したファイルを使用してページ分割パラメータを指定する場合、自動ページ分割がオフになっていないため、予期しない出力が発生する可能性があります。AWS CLI バージョン 2 では、パラメータの指定方法に関係なく、自動ページ分割がオフになります。
AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。
AWS CLI バージョン 2 はすべてのコマンドでより高い一貫性があり、AWS CLI バージョン 1 と比較した場合、適切な終了コードを正しく返します。また、終了コード 252、253、254 を追加しました。終了コードの詳細については、「AWS CLI でのコマンドラインのリターンコード」を参照してください。
AWS CLI バージョン 1 によるリターンコード値の使用方法に関する依存関係がある場合は、終了コードをチェックして、予期している値を取得していることを確認するようお勧めします。