

# AWS CLI バージョン 2 の移行ガイド
<a name="cliv2-migration"></a>

このセクションには、AWS CLI バージョン 1 から AWS CLI バージョン 2 に更新する手順が記載されています。AWS CLI バージョン 2 は AWS CLI バージョン 1 に基づいて構築されており、コミュニティからフィードバックされた機能と機能強化が含まれています。AWS CLI バージョン 2 は、AWS CLI の最新メジャーバージョンであり、最新機能をすべてサポートしています。バージョン 2 で導入された一部の機能は、バージョン 1 にバックポートされないため、これらの機能にアクセスするには、アップグレードする必要があります。

予期しない問題を防ぐために、バージョン 2 に移行する前に、[バージョン間の違いを確認してください](cliv2-migration-changes.md)。AWS CLI バージョン 2 には、下位互換性のためにスクリプトやコマンドの更新が必要になる可能性のある新機能や変更が含まれています。

AWS CLI バージョン 1 と 2 では同じ `aws` コマンド名が使用されます。両方のバージョンがインストールされている場合、コンピュータによって検索パスで最初に見つかったバージョンが使用されます。これにより、新しいバージョンがインストールされている場合でも、`aws` コマンド名で古い AWS CLI バージョンが呼び出される可能性があります。

AWS CLI バージョン 2 に更新するには、以下の手順のいずれかに従います。
+ 以前に AWS CLI バージョン 1 をインストールした場合は、「[AWS CLI バージョン 1 から AWS CLI バージョン 2 をインストールする](cliv2-migration-instructions.md)」の手順に従います。
+ 以前に AWS CLI バージョン 1 をインストールしたことがない場合は、「[AWS CLI の開始方法](cli-chap-getting-started.md)」の手順に従います。

## CLI AWS 移行ツールを使用して破損を軽減する
<a name="using-migration-tools"></a>

AWS CLI バージョン 1 と AWS CLI バージョン 2 の間で動作が変更されているため、スクリプトまたはコマンドの更新が必要になる場合があります。既存のスクリプトが安全に移行されていることを検証せずに AWS CLI バージョン 2 にアップグレードすると、AWS アカウントのリソースに意図しない変更を加えられるなど、AWS CLI バージョン 2 でスクリプトを実行したときに予期しない影響が発生するリスクがあります。

移行のガイドとして使用できる AWS 所有のツールが 2 つあります。使用するツールにかかわらず、「[AWS CLI バージョン 2 の新機能と変更点](cliv2-migration-changes.md)」ガイドの「[AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking)」を参照することをお勧めします。

### アップグレードデバッグモード
<a name="cliv2-migration-upgrade-debug-mode"></a>

アップグレードデバッグモードは、AWS CLI バージョン 1 の機能で、バージョン `1.44.0` 以降で使用できます。この機能を有効にすると、実行する各 AWS CLI コマンドがチェックされ、実行環境が同じであると仮定して、AWS CLI バージョン 2 で動作が異なる可能性があるかどうかを確認します。AWS CLI バージョン 2 で実行されたコマンドの動作が異なる場合、コマンド出力とともに警告が表示され、AWS CLI バージョン 2 で AWS CLI バージョン 1 の動作を維持するために実行できる推奨アクションが表示されます。

アップグレードデバッグモードを使用して移行をガイドする主な理由は、コマンドの動作が変更されるかどうかを検出するための範囲が広いことです。「[AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking)」で説明されている 15 個の重大な変更のうち 14 個は、アップグレードデバッグモードで検出できます。この機能の制限については、「[アップグレードデバッグモードを使用して AWS CLI バージョン 1 を AWS CLI バージョン 2 にアップグレードする](cli-upgrade-debug-mode.md)」の「[制限](cli-upgrade-debug-mode.md#upgrade-mode-limitations)」を参照してください。一方、アップグレードデバッグモードを使用する主な欠点は、その出力が実行環境内でのみ有効であることです。AWS CLI バージョン 2 に移行した後に環境で AWS CLI 設定が変更された場合、重大な変更が発生する可能性があるため、更新された環境でアップグレードデバッグモードを使用して再検証する必要があります。

### AWS CLI V1-to-V2 移行ツール
<a name="cliv2-migration-migration-tool"></a>

AWS CLI V1-to-V2 移行ツールは、Python 3.9 以降で使用できるスタンドアロンツールです。このツールは、AWS CLI とは独立して実行される静的なリンターです。AWS CLI バージョン 2 で動作が異なる可能性のある AWS CLI バージョン 1 コマンドを含む bash スクリプトをリントします。AWS CLI バージョン 2 で動作が異なる可能性があると検出されたほとんどのコマンドについては、スクリプト内のコマンドを自動的に更新して、AWS CLI バージョン 2 で AWS CLI バージョン 1 の動作を保持できます。

AWS CLI V1-to-V2 移行ツールを使用して移行をガイドする主な理由は、スクリプトを自動的に更新して AWS CLI バージョン 2 で AWS CLI バージョン 1 の動作を保持できるため、自分で更新を行う時間と労力を節約できることです。一方、移行ツールの使用の主な欠点は、コマンドの動作が変化するかどうかを検出する範囲が狭いことです。静的ツールであるため、実行時に決定される動作の変更はチェックされません。

## アップグレードデバッグモードと AWS CLI V1-to-V2 移行ツールの選択
<a name="cliv2-migration-choosing-migration-tool"></a>

次の表は、アップグレードデバッグモードと AWS CLI V1-to-V2 移行ツールの主な違いをまとめたもので、ユースケースに適したツールを選択するガイドとして使用できます。


| アップグレードデバッグモード | AWS CLI V1-to-V2 移行ツール | 
| --- | --- | 
| AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の 15 個の重大な変更のうち 14 個を検出します。 | AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の 15 個の重大な変更のうち 7 個を検出します。 | 
| AWS CLI を実行できる任意のターミナルプログラムと互換性があります。 | bash スクリプトのリンティングのみをサポートします。 | 
| AWS CLI バージョン 1、バージョン 1.44.0 以降が必要です。 | AWS CLI とは別に実行されるため、AWS CLI をインストールする必要はありません。 | 
| AWS CLI バージョン 2 で AWS CLI バージョン 1 の動作を維持するには、手動で修正する必要があります。 | AWS CLI バージョン 2 で動作が異なる可能性があると検出されたほとんどの AWS CLI バージョン 1 コマンドを自動的に修正します。 | 
| 検出と推奨される修正は、それが実行される実行環境 (つまり、AWS CLI 設定) にのみ関連します。 | 検出と推奨される修正は環境とは無関係です。 | 
| 動作の変更をテストする各 AWS CLI コマンドを実行する必要があります。 | AWS CLI コマンドを実行する必要はありません。bash スクリプトごとに 1 回のみ実行する必要があります。 | 
| 誤検出を出力する既知のケースが正確に 5 つあります。 | 誤検出を出力する既知のケースが正確に 3 つあります。 | 

次の表は、「[AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking)」のうち、2 つの移行ツールのそれぞれでサポートされているものを示しています。


| 重要な変更 | アップグレードデバッグモードで検出 | AWS CLI V1-to-V2 移行ツールで検出 | 
| --- | --- | --- | 
| [テキストファイルのエンコードを設定するために環境変数を追加](cliv2-migration-changes.md#cliv2-migration-encodingenvvar) | はい | なし | 
| [バイナリパラメータはデフォルトで base64 エンコードされた文字列として渡されるようになりました](cliv2-migration-changes.md#cliv2-migration-binaryparam) | はい | はい | 
| [マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました](cliv2-migration-changes.md#cliv2-migration-s3-copy-metadata) | はい | はい | 
| [パラメータの `http://` または `https://` URL の自動取得の廃止](cliv2-migration-changes.md#cliv2-migration-paramfile) | あり | なし | 
| [デフォルトですべての出力に使用されるページャー](cliv2-migration-changes.md#cliv2-migration-output-pager) | はい | はい | 
| [タイムスタンプの出力値は ISO 8601 形式に標準化されています](cliv2-migration-changes.md#cliv2-migration-timestamp) | あり | なし | 
| [変更のない、CloudFormation デプロイの処理の改善](cliv2-migration-changes.md#cliv2-migration-cfn) | はい | はい | 
| [`us-east-1` リージョンの Amazon S3 エンドポイントのデフォルト動作を変更しました](cliv2-migration-changes.md#cliv2-migration-s3-regional-endpoint) | あり | なし | 
| [リージョンの AWS STS エンドポイントのデフォルトの動作を変更しました](cliv2-migration-changes.md#cliv2-migration-sts-regional-endpoint) | あり | なし | 
| [`ecr get-login` を削除し、`ecr get-login-password` に置き換えました](cliv2-migration-changes.md#cliv2-migration-ecr-get-login) | はい | はい | 
| [AWS CLIプラグインに対する バージョン 2 のサポートが変更されます](cliv2-migration-changes.md#cliv2-migration-profile-plugins) | あり | なし | 
| [非表示エイリアスのサポートを削除しました](cliv2-migration-changes.md#cliv2-migration-aliases) | はい | はい | 
| [`api_versions` 設定ファイルの設定はサポートされていません](cliv2-migration-changes.md#cliv2-migration-api-versions) | あり | なし | 
| [AWS CLI バージョン 2 は、署名 V4 のみを使用して Amazon S3 リクエストを認証します](cliv2-migration-changes.md#cliv2-migration-sigv4) | あり | なし | 
| [AWS CLI バージョン 2 はページングパラメータとの整合性が高くなっています](cliv2-migration-changes.md#cliv2-migration-skeleton-paging) | はい | あり | 
| [AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。](cliv2-migration-changes.md#cliv2-migration-return-codes) | なし | いいえ | 

## このセクションのその他のトピック
<a name="migrate-topics"></a>
+ [AWS CLI バージョン 2 の新機能と変更点](cliv2-migration-changes.md)
+ [AWS CLI バージョン 1 から AWS CLI バージョン 2 をインストールする](cliv2-migration-instructions.md)
+ [アップグレードデバッグモードを使用して AWS CLI バージョン 1 を AWS CLI バージョン 2 にアップグレードする](cli-upgrade-debug-mode.md)
+ [AWS CLI V1-to-V2 移行ツールを使用して AWS CLI バージョン 1 を AWS CLI バージョン 2 にアップグレードする](cli-migration-tool.md)

# AWS CLI バージョン 2 の新機能と変更点
<a name="cliv2-migration-changes"></a>

このトピックでは、新機能と、AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の動作における変更について説明します。これらの変更では、バージョン 1 と同じ動作をバージョン 2 で実行するために、スクリプトまたはコマンドを更新する必要がある場合があります。

**Topics**
+ [

## AWS CLI バージョン 2 の新機能
](#cliv2-migration-changes-features)
+ [

## AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更
](#cliv2-migration-changes-breaking)

## AWS CLI バージョン 2 の新機能
<a name="cliv2-migration-changes-features"></a>

AWS CLI バージョン 2 は、AWS CLI の最新メジャーバージョンであり、最新機能をすべてサポートしています。バージョン 2 で導入された一部の機能は、バージョン 1 との下位互換性がないため、これらの機能にアクセスするには、アップグレードする必要があります。主な機能は以下のとおりです。

**Python インタプリタは不要です**  
AWS CLI バージョン 2 では Python を別途インストールする必要はありません。組み込みバージョンが含まれています。

**[ウィザード](cli-usage-wizard.md)**  
ウィザードは AWS CLI バージョン 2 と共に使用できます。ウィザードの指示に従って、特定のコマンドを作成できます。

**[IAM Identity Center 認証IAM アイデンティティセンターの概念チュートリアル: AWS IAM アイデンティティセンター および Amazon S3AWS CLI の例](cli-configure-sso.md)**  
組織で AWS IAM アイデンティティセンター (IAM Identity Center) を使用している場合、ユーザーは Active Directory、組み込み IAM Identity Center ディレクトリ、または [IAM Identity Center に接続された別の IdP](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html) にサインインできます。次に、それらは、AWS CLI コマンドを実行できる AWS Identity and Access Management (IAM) ロールにマッピングされます。

**[自動プロンプト](cli-usage-parameters-prompting.md)**  
有効にした場合、AWS CLI バージョン 2 では、`aws` コマンドの実行時にコマンド、パラメータ、およびリソースのプロンプトを表示できます。

**[AWS CLI に対して公式の Amazon ECR Public イメージまたは Docker イメージを実行する](getting-started-docker.md)**  
AWS CLI の公式 Docker イメージは、AWS が直接サポートおよび維持する分離、移植性、およびセキュリティを提供します。これにより、インストールを自分で管理しなくても、コンテナベースの環境で AWS CLI バージョン 2 を使用できます。

**[クライアント側のページャー](cli-usage-pagination.md#cli-usage-pagination-clientside)**  
AWS CLI バージョン 2 では、出力にクライアント側のページャープログラムを使用できます。デフォルトでは、この機能がオンになり、オペレーティングシステムのデフォルトのページャープログラムを介してすべての出力を返します。

**[`aws configure import`](cli-configure-files.md#cli-config-aws_configure_import)**  
AWS マネジメントコンソールから生成された重要な `.csv` 認証情報をインポートします。IAM ユーザー名と一致するプロファイル名を持つ `.csv` ファイルがインポートされます。

**[https://docs.aws.amazon.com/cli/latest/reference/configure/list-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/configure/list-profiles.html)**  
設定したすべてのプロファイルの名前を一覧表示します。

**[YAML ストリーム出力形式](cli-usage-output-format.md#yaml-stream-output)**  
`yaml` および `yaml-stream` 形式では [YAML](https://yaml.org) 形式のメリットを活用します。また、データをユーザーにストリーミングすることで、大きなデータセットの表示の応答性を向上させます。クエリ全体がダウンロードされる前に、YAML データの表示および使用を開始できます。

**[DynamoDB 用の新しい高レベルの `ddb` コマンド](https://docs.aws.amazon.com/cli/latest/reference/ddb/index.html)**  
AWS CLI バージョン 2 には高レベルの Amazon DynamoDB コマンド [https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/put.html](https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/put.html) および [https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/select.html](https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/select.html) があります。これらのコマンドは、DynamoDB テーブルに項目を配置し、DynamoDB テーブルまたはインデックスを検索するためのシンプルなインターフェイスを提供します。

**[https://docs.aws.amazon.com/cli/latest/reference/logs/tail.html](https://docs.aws.amazon.com/cli/latest/reference/logs/tail.html)**  
AWS CLI バージョン 2 には、Amazon CloudWatch Logs グループのログを末尾にするカスタム `aws logs tail` コマンドがあります。デフォルトでは、このコマンドは過去 10 分間の関連するすべての CloudWatch Logs ストリームから、ログを返します。

**[高レベルの `s3` コマンドに対するメタデータのサポートを追加](cli-services-s3-commands.md#using-s3-commands-before-large)**  
AWS CLI バージョン 2 で、高レベルの `s3` コマンドに `--copy-props` パラメータが追加されました。このパラメータを使用すると、Amazon Simple Storage Service (Amazon S3) の追加のメタデータとタグを設定できます。

**[`AWS_REGION`](cli-configure-envvars.md#envvars-list-AWS_REGION)**  
AWS CLI バージョン 2 には、`AWS_REGION` と呼ばれる、AWS SDK 互換環境変数があります。この変数は、リクエストの送信先となる AWS リージョン を指定します。これは、`AWS_DEFAULT_REGION` 環境変数を上書きします (AWS CLI にのみに適用されます)。

## AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更
<a name="cliv2-migration-changes-breaking"></a>

このセクションでは、AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の動作におけるすべての変更について説明します。これらの変更では、バージョン 1 と同じ動作をバージョン 2 で実行するために、スクリプトまたはコマンドを更新する必要がある場合があります。

**Topics**
+ [

### テキストファイルのエンコードを設定するために環境変数を追加
](#cliv2-migration-encodingenvvar)
+ [

### バイナリパラメータはデフォルトで base64 エンコードされた文字列として渡されるようになりました
](#cliv2-migration-binaryparam)
+ [

### マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました
](#cliv2-migration-s3-copy-metadata)
+ [

### パラメータの `http://` または `https://` URL の自動取得の廃止
](#cliv2-migration-paramfile)
+ [

### デフォルトですべての出力に使用されるページャー
](#cliv2-migration-output-pager)
+ [

### タイムスタンプの出力値は ISO 8601 形式に標準化されています
](#cliv2-migration-timestamp)
+ [

### 変更のない、CloudFormation デプロイの処理の改善
](#cliv2-migration-cfn)
+ [

### `us-east-1` リージョンの Amazon S3 エンドポイントのデフォルト動作を変更しました
](#cliv2-migration-s3-regional-endpoint)
+ [

### リージョンの AWS STS エンドポイントのデフォルトの動作を変更しました
](#cliv2-migration-sts-regional-endpoint)
+ [

### `ecr get-login` を削除し、`ecr get-login-password` に置き換えました
](#cliv2-migration-ecr-get-login)
+ [

### AWS CLIプラグインに対する バージョン 2 のサポートが変更されます
](#cliv2-migration-profile-plugins)
+ [

### 非表示エイリアスのサポートを削除しました
](#cliv2-migration-aliases)
+ [

### `api_versions` 設定ファイルの設定はサポートされていません
](#cliv2-migration-api-versions)
+ [

### AWS CLI バージョン 2 は、署名 V4 のみを使用して Amazon S3 リクエストを認証します
](#cliv2-migration-sigv4)
+ [

### AWS CLI バージョン 2 はページングパラメータとの整合性が高くなっています
](#cliv2-migration-skeleton-paging)
+ [

### AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。
](#cliv2-migration-return-codes)

### テキストファイルのエンコードを設定するために環境変数を追加
<a name="cliv2-migration-encodingenvvar"></a>

 デフォルトでは、[blob](cli-usage-parameters-types.md#parameter-type-blob) のテキストファイルはインストールされたロケールと同じエンコードを使用します。AWS CLI バージョン 2 では Python の組み込みバージョンを使用しているため、`PYTHONUTF8` と `PYTHONIOENCODING` 環境変数はサポートされていません。テキストファイルのエンコードをロケールと異なるように設定するには、`AWS_CLI_FILE_ENCODING` 環境変数を使用します。次の例では、Windows で `UTF-8` を使用してテキストファイルを開くように AWS CLI を設定します。

```
AWS_CLI_FILE_ENCODING=UTF-8
```

詳細については、「[Configuring environment variables for the AWS CLI](cli-configure-envvars.md)」を参照してください。

### バイナリパラメータはデフォルトで base64 エンコードされた文字列として渡されるようになりました
<a name="cliv2-migration-binaryparam"></a>

AWS CLI では、[base64](https://wikipedia.org/wiki/Base64) でエンコードされた文字列を必要とするコマンドもあれば、UTF-8 エンコードのバイト文字列が必要なコマンドもあります。AWS CLI バージョン 1 では、2 つのエンコードされた文字列型間でデータを渡すには、多くの場合、中間処理が必要でした。AWS CLI バージョン 2 では、バイナリパラメータの処理の一貫性が向上するため、1 つのコマンドから別のコマンドに、より確実に値を受け渡すことができます。

AWS CLI バージョン 2 では、デフォルトですべてのバイナリ入力パラメータとバイナリ出力パラメータが base64 でエンコードされた文字列 `blobs` (バイナリラージオブジェクト) として渡されます 詳細については、「[blob](cli-usage-parameters-types.md#parameter-type-blob)」を参照してください。

AWS CLI バージョン 1 の動作に戻すには、`cli\$1binary\$1format` ファイル設定または `--cli-binary-format` パラメータを使用します。

### マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました
<a name="cliv2-migration-s3-copy-metadata"></a>

`aws s3` 名前空間のコマンドの AWS CLI バージョン 1 を使用して、ある S3 バケットの場所から別の S3 バケットの場所にファイルをコピーし、そのオペレーションで[マルチパートコピー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CopyingObjctsMPUapi.html)を使用する場合、ソースオブジェクトのファイルプロパティはターゲットオブジェクトにコピーされません。

デフォルトでは、AWS CLI バージョン 2 の対応するコマンドでは、すべてのタグとプロパティの一部を送信元から送信先のコピーに転送します。AWS CLI バージョン 1 と比較した場合、これによりさらに多くの AWS API コールが Amazon S3 エンドポイントに対して行われる可能性があります。AWS CLI バージョン 2 で `s3` コマンドのデフォルト動作を変更するには、`--copy-props` パラメータを使用します。

詳細については、「[マルチパートコピーのファイルプロパティとタグ](cli-services-s3-commands.md#using-s3-commands-before-tags)」を参照してください。

### パラメータの `http://` または `https://` URL の自動取得の廃止
<a name="cliv2-migration-paramfile"></a>

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` の値として渡します。

### デフォルトですべての出力に使用されるページャー
<a name="cliv2-migration-output-pager"></a>

AWS CLI バージョン 2 はデフォルトで、すべての出力をオペレーティングシステムのデフォルトページャープログラム経由で返します。このプログラムは Linux および macOS では [https://ss64.com/bash/less.html](https://ss64.com/bash/less.html) プログラム、Windows では [https://docs.microsoft.com/windows-server/administration/windows-commands/more](https://docs.microsoft.com/windows-server/administration/windows-commands/more) プログラムです。これにより、出力を一度に 1 ページずつ表示することで、サービスからの大量の出力内を移動できます。

別のページングプログラムを使用するか、まったく使用しないように AWS CLI バージョン 2 を設定できます。詳細については、「[クライアント側のページャー](cli-usage-pagination.md#cli-usage-pagination-clientside)」を参照してください。

### タイムスタンプの出力値は ISO 8601 形式に標準化されています
<a name="cliv2-migration-timestamp"></a>

AWS CLI バージョン 2 はデフォルトで、すべてのタイムスタンプレスポンス値を [ISO 8601](https://wikipedia.org/wiki/ISO_8601) 形式で返します。AWS CLI バージョン 1 では、コマンドによって返されるタイムスタンプ値が HTTP API レスポンスによって返された値の形式になっており、これはサービスによって異なる可能性がありました。

HTTP API レスポンスから返された形式でタイムスタンプを表示するには、`config` ファイルで値 `wire` を使用します。詳細については、「`cli\$1timestamp\$1format`」を参照してください。

### 変更のない、CloudFormation デプロイの処理の改善
<a name="cliv2-migration-cfn"></a>

デフォルトで、AWS CLI バージョン 1 では、変更を行わない 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 エンドポイントのデフォルト動作を変更しました
<a name="cliv2-migration-s3-regional-endpoint"></a>

`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 エンドポイントのデフォルトの動作を変更しました
<a name="cliv2-migration-sts-regional-endpoint"></a>

AWS CLI バージョン 2 はデフォルトで、現在設定されている AWS リージョンのリージョンエンドポイントにすべての AWS Security Token Service (AWS STS) API リクエストを送信します。

AWS CLI バージョン 1 の `1.42.0` 以前はデフォルトで、AWS STS リクエストをグローバル AWS STS エンドポイントに送信します。このバージョン 1 のデフォルト動作は、[https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-config-sts_regional_endpoints](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-config-sts_regional_endpoints) 設定を使用して制御できます。

`1.42.0` 以降のリリースでは、リージョンエンドポイントをデフォルトとして使用します。これらの新しいリリースから AWS CLI バージョン 2 に移行する場合、この動作は変更されません。

### `ecr get-login` を削除し、`ecr get-login-password` に置き換えました
<a name="cliv2-migration-ecr-get-login"></a>

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 リファレンスガイド」の「[https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html)」を参照してください。

### AWS CLIプラグインに対する バージョン 2 のサポートが変更されます
<a name="cliv2-migration-profile-plugins"></a>

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` 関数を呼び出します。

### 非表示エイリアスのサポートを削除しました
<a name="cliv2-migration-aliases"></a>

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` 設定ファイルの設定はサポートされていません
<a name="cliv2-migration-api-versions"></a>

AWS CLI バージョン 2 では、`api_versions` 設定ファイルの設定を使用した、古いバージョンの AWS のサービス API コールがサポートさません。すべての AWS CLI コマンドは、エンドポイントで現在サポートされている最新バージョンのサービス API を呼び出すようになりました。

### AWS CLI バージョン 2 は、署名 V4 のみを使用して Amazon S3 リクエストを認証します
<a name="cliv2-migration-sigv4"></a>

AWS CLI バージョン 2 では、Amazon S3 エンドポイントに送信されるサービスリクエストを暗号化的に認証するための以前の署名アルゴリズムはサポートされていません。この署名は、すべての Amazon S3 リクエストで自動的に行われます。また、[署名バージョン 4 の署名プロセス](https://docs.aws.amazon.com/AmazonS3/latest/userguide/reference_aws-signing.html)のみがサポートされています。署名バージョンを設定することはできません。すべての Amazon S3 バケット署名済み URL は SigV4 のみを使用し、最大有効期間は 1 週間になりました。

### AWS CLI バージョン 2 はページングパラメータとの整合性が高くなっています
<a name="cliv2-migration-skeleton-paging"></a>

AWS CLI バージョン 1 では、コマンドラインでページ分割パラメータを指定すると、自動ページ分割が想定どおりにオフになります。ただし、`‐‐cli-input-json` パラメータを指定したファイルを使用してページ分割パラメータを指定する場合、自動ページ分割がオフになっていないため、予期しない出力が発生する可能性があります。AWS CLI バージョン 2 では、パラメータの指定方法に関係なく、自動ページ分割がオフになります。

### AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。
<a name="cliv2-migration-return-codes"></a>

AWS CLI バージョン 2 はすべてのコマンドでより高い一貫性があり、AWS CLI バージョン 1 と比較した場合、適切な終了コードを正しく返します。また、終了コード 252、253、254 を追加しました。終了コードの詳細については、「[AWS CLI でのコマンドラインのリターンコード](cli-usage-returncodes.md)」を参照してください。

AWS CLI バージョン 1 によるリターンコード値の使用方法に関する依存関係がある場合は、終了コードをチェックして、予期している値を取得していることを確認するようお勧めします。

# AWS CLI バージョン 1 から AWS CLI バージョン 2 をインストールする
<a name="cliv2-migration-instructions"></a>

このトピックでは、AWS CLI バージョン 1 から AWS CLI バージョン 2 への移行手順について説明します。

AWS CLI バージョン 1 と 2 では同じ `aws` コマンド名が使用されます。両方のバージョンがインストールされている場合、コンピュータによって検索パスで最初に見つかったバージョンが使用されます。以前に AWS CLI バージョン 1 をインストールしていた場合は、AWS CLI バージョン 2 を使用するために次のいずれかを実行することをお勧めします。
+ ** 推奨** – [AWS CLI バージョン 1 をアンインストールし、AWS CLI バージョン 2 のみを使用してください。](#cliv2-migration-instructions-migrate)
+ [両方のバージョンをインストールするには](#cliv2-migration-instructions-side-by-side)、オペレーティングシステムの機能を使用して、2 つの `aws` コマンドのいずれかに対して異なる名前でシンボリックリンクまたはエイリアスを作成します。

バージョン 1 とバージョン 2 との間の重要な変更については、「[AWS CLI バージョン 2 の新機能と変更点](cliv2-migration-changes.md)」を参照してください。

## バージョン 1 をバージョン 2 に置き換える
<a name="cliv2-migration-instructions-migrate"></a>

以下のステップを実行して、AWS CLI バージョン 1 を AWS CLI バージョン 2 に置き換えます。

**AWS CLI バージョン 1 を AWS CLI バージョン 2 に置き換えるには**

1. 「[AWS CLI バージョン 2 の新機能と変更点](cliv2-migration-changes.md)」で、バージョン 1 とバージョン 2 との間の重要な変更を確認して、移行用の既存のスクリプトを準備します。アップグレードデバッグモード機能を使用して、「[アップグレードデバッグモードを使用して AWS CLI バージョン 1 を AWS CLI バージョン 2 にアップグレードする](cli-upgrade-debug-mode.md)」の手順に従って準備を進めることができます。

1. 「[AWS CLI バージョン 1 のインストール、更新、アンインストール](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html)」で、オペレーティングシステム用のアンインストール手順に従って、AWS CLI バージョン 1 をアンインストールします。

1. 以下のコマンドを使用して、AWS CLI が完全にアンインストールされたことを確認します。

   ```
   $ aws --version
   ```

   出力に基づいて、次のいずれかを実行します。
   + **バージョンが返されなかった:** AWS CLIバージョン 1 は正常にアンインストールされ、次のステップに進むことができます。
   + **バージョンが返された:** まだ AWS CLI バージョン 1 がインストールされています。トラブルシューティングステップについては、「[AWS CLI のアンインストール後に、「`aws --version`」コマンドがバージョンを返す](cli-chap-troubleshooting.md#tshoot-uninstall-1)」を参照してください。バージョンが出力されなくなるまで、トラブルシューティングステップを実行します。

1. 「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」に記載された、オペレーティングシステム用のインストール手順に従って、AWS CLI バージョン 2 をインストールします。

## サイドバイサイドのインストール
<a name="cliv2-migration-instructions-side-by-side"></a>

両方のバージョンをインストールするには、オペレーティングシステムの機能を使用して、2 つの `aws` コマンドのいずれかに対して異なる名前でシンボリックリンクまたはエイリアスを作成します。

1. 「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」に記載された、オペレーティングシステム用のインストール手順に従って、AWS CLI バージョン 2 をインストールします。

1. オペレーティングシステムの機能を使用して、2 つの `aws` コマンドのいずれかに対して異なる名前のシンボリックリンクまたはエイリアスを作成します。例えば、AWS CLI バージョン 2 には *`aws2`* を使用します。以下に、AWS CLI バージョン 2 のシンボリックリンクの例を示します。*PATH* を、インストール場所に置き換えます。

------
#### [ Linux and macOS ]

   Linux および macOS では、[シンボリックリンク](https://www.linux.com/topic/desktop/understanding-linux-links/)または[エイリアス](https://www.linux.com/topic/desktop/aliases-diy-shell-commands/)を使用できます。

   ```
   $ alias aws2='PATH'
   ```

------
#### [ Windows command prompt ]

   [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey)Windows の

   ```
   C:\> doskey aws2=PATH
   ```

------

# アップグレードデバッグモードを使用して AWS CLI バージョン 1 を AWS CLI バージョン 2 にアップグレードする
<a name="cli-upgrade-debug-mode"></a>

このトピックでは、AWS CLI バージョン 1 のアップグレードデバッグモードについて説明します。

AWS CLI バージョン 1 のユーザーは、AWS CLI バージョン 2 にアップグレードして、新機能と強化されたパフォーマンスを利用することをお勧めします。このトピックでは、AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の動作の変更について説明します。この変更では、同じ動作をするために、スクリプトまたはコマンドを更新する必要があるものについて述べます。AWS CLI バージョン 1 のアップグレードデバッグモードは、AWS CLI バージョン 2 で動作が異なる機能を使用する場合に警告を出力します。この機能は、予期しない問題を防ぐために AWS CLI バージョン 2 にアップグレードする前に変更する必要がある AWS CLI バージョン 1 コマンドを自動的に検出することで、アップグレードエクスペリエンスを向上させます。

詳細については、「[AWS CLI バージョン 2 の新機能と変更点](cliv2-migration-changes.md)」の「[AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking)」を参照してください。

## 前提条件
<a name="upgrade-mode-prerequisites"></a>

アップグレードデバッグモード機能は、AWS CLI バージョン `1.44.0` で導入されました。

AWS CLI バージョン 1 を使用して `aws --version` を実行し、AWS CLI バージョンが `1.44.0` 以降であることを確認します。

バージョンが `1.44.0` 未満の場合は、「[AWS CLI のインストール、更新、アンインストール](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html)」を参照してください。

## 仕組み
<a name="upgrade-mode-how-it-works"></a>

有効にすると、アップグレードデバッグモードは、AWS CLI バージョン 2 の更新で下位互換性のない変更が生じる機能が使用されている場合、それを検出します。AWS CLI バージョン 2 にアップグレードした後に [AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking) にリストされているコマンドまたは機能を使用すると、出力に警告が表示されます。互換性のない変更の検出は、使用されるコマンド、指定された引数、実行環境 (環境変数、構成設定など)、および場合によっては、使用される AWS アカウントのリソースの内容または構成に基づいています。

警告は、AWS CLI バージョン 2 へのアップグレードに伴う予期しない問題を防ぐためのアクションを示しています。警告メッセージで推奨される変更を行った後、コマンドを再実行して警告が表示されなくなったことを確認することで、コマンドが正常に更新されたことを確認できます。警告が解決されたことは、AWS CLI バージョン 2 へのアップグレード時に説明されている重大な変更が、このコマンドで発生する可能性がなくなったことを示します。

次の例は、これらの警告がどのように表示されるかを示しています。このコマンドは警告の例を示しています。すべての警告テキストは「AWS CLI V2 UPGRADE WARNING」で始まり、その後に特定の警告メッセージが続きます。この場合、コマンドは、AWS CLI で URL の内容を取得し、その内容を `--template-body` パラメータ値として使用しており、これは AWS CLI バージョン 2 で削除された機能であるため、警告が出力されます。

```
$ aws cloudformation create-stack \
  --stack-name "stack012345" \
  --template-body "https://s3.amazonaws.com/amzn-s3-demo-bucket/template.json"

AWS CLI v2 UPGRADE WARNING: For input parameters that have a prefix of http:// or 
https://, AWS CLI v2 will not automatically request the content of the URL for 
the parameter, and the `cli_follow_urlparam` option has been removed. See 
https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration-changes.html#cliv2-migration-paramfile.
```

次の表は、すべての下位互換性のない変更と、AWS CLI バージョン 2 の更新で下位互換性のない変更が発生しないようにする方法を示しています。デバッグモードで警告を解決する修復アクションは太字です。


| 重要な変更 | V1 で V2 の動作に移行する | V2 では、V1 の動作を保持します。 | 
| --- | --- | --- | 
| [テキストファイルのエンコードを設定するために環境変数を追加](cliv2-migration-changes.md#cliv2-migration-encodingenvvar) | PYTHONUTF8 および PYTHONIOENCODING 環境変数を設定します。 | AWS\$1CLI\$1FILE\$1ENCODING 環境変数を V1 で指定されたエンコードに設定します。 | 
| [バイナリパラメータはデフォルトで base64 エンコードされた文字列として渡されるようになりました](cliv2-migration-changes.md#cliv2-migration-binaryparam) | base64 で パラメータの値をエンコードします。パラメータがファイルからロードされている場合は、ファイルコンテンツを base64 でエンコードします。 | cli\$1binary\$1format 設定を「raw-in-base64-out」に設定します。 | 
| [マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました](cliv2-migration-changes.md#cliv2-migration-s3-copy-metadata) | 該当なし。バージョン 1 でバージョン 2 の動作に移行できません。 | --copy-props none パラメータを使用します。 | 
| [パラメータの `http://` または `https://` URL の自動取得の廃止](cliv2-migration-changes.md#cliv2-migration-paramfile) | URL の内容をローカルファイルにダウンロードするには、curl (または代替ツール) を使用します。次に、[file://](https://docs.aws.amazon.com/cli/v1/userguide/cli-usage-parameters-file.html) を使用してパラメータにファイルコンテンツをロードします。または、cli\$1follow\$1urlparam を false に設定して、raw URL をパラメータ値として指定します。 | 該当なし。バージョン 2 でバージョン 1 の動作を保持できません。 | 
| [デフォルトですべての出力に使用されるページャー](cliv2-migration-changes.md#cliv2-migration-output-pager) | 該当なし。バージョン 1 でバージョン 2 の動作に移行できません。 | cli\$1pager 設定または AWS\$1PAGER 変数を空の文字列に設定します。 | 
| [タイムスタンプの出力値は ISO 8601 形式に標準化されています](cliv2-migration-changes.md#cliv2-migration-timestamp) | cli\$1timestamp\$1format 設定を iso8601 に設定します。 | cli\$1timestamp\$1format 設定を wire に設定します。 | 
| [変更のない、CloudFormation デプロイの処理の改善](cliv2-migration-changes.md#cliv2-migration-cfn) | --no-fail-on-empty-changeset パラメータを使用します。 | --fail-on-empty-changeset パラメータを使用します。 | 
| [`us-east-1` リージョンの Amazon S3 エンドポイントのデフォルト動作を変更しました](cliv2-migration-changes.md#cliv2-migration-s3-regional-endpoint) | AWS\$1ENDPOINT\$1URL\$1S3 環境変数または --endpoint-url コマンドラインオプションを us-east-1 [リージョン URL](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) に設定します。 | --region aws-global コマンドラインオプション。 | 
| [`ecr get-login` を削除し、`ecr get-login-password` に置き換えました](cliv2-migration-changes.md#cliv2-migration-ecr-get-login) | (1.17.10 以降) [`ecr get-login` を削除し、`ecr get-login-password` に置き換えました](cliv2-migration-changes.md#cliv2-migration-ecr-get-login) を使用して出力を docker コマンドにパイプします。 | 該当なし。バージョン 2 でバージョン 1 の動作を保持できません。 | 
| [AWS CLIプラグインに対する バージョン 2 のサポートが変更されます](cliv2-migration-changes.md#cliv2-migration-profile-plugins) | 該当なし。バージョン 1 でバージョン 2 の動作に移行できません。 | 設定ファイルの [plugins] セクションに [cli\$1legacy\$1plugin\$1path](https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#plugins) を設定します。バージョン 2 でプラグインをテストし、バージョン 2 バージョンをロックして、アップグレードするたびにプラグインをテストします。 | 
| [非表示エイリアスのサポートを削除しました](cliv2-migration-changes.md#cliv2-migration-aliases) | 古い非表示エイリアスの使用から、すべてのバージョンで動作する [非表示エイリアスのサポートを削除しました](cliv2-migration-changes.md#cliv2-migration-aliases) に切り替えます。 | 該当なし。バージョン 2 でバージョン 1 の動作を保持できません。 | 
| [`api_versions` 設定ファイルの設定はサポートされていません](cliv2-migration-changes.md#cliv2-migration-api-versions) | 古い API バージョンの使用を最新の API バージョンに移行してテストし、構成設定から [api\$1versions](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-config-api_versions) を削除します。 | 該当なし。バージョン 2 でバージョン 1 の動作を保持できません。 | 
| [AWS CLI バージョン 2 は、署名 V4 のみを使用して Amazon S3 リクエストを認証します](cliv2-migration-changes.md#cliv2-migration-sigv4) | 署名バージョンをバージョン 4 に指定します ([「リクエスト認証の署名バージョンの指定」を参照)](https://docs.aws.amazon.com/AmazonS3/latest/API/specify-signature-version.html)。 | 該当なし。バージョン 2 でバージョン 1 の動作を保持できません。 | 
| [AWS CLI バージョン 2 はページングパラメータとの整合性が高くなっています](cliv2-migration-changes.md#cliv2-migration-skeleton-paging) | 入力 JSON パラメータのページ分割パラメータをコマンド自体に移動します。 | 入力 JSON パラメータからページ分割パラメータを削除します。 | 
| [AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。](cliv2-migration-changes.md#cliv2-migration-return-codes) | 該当なし。バージョン 1 でバージョン 2 の動作に移行できません。 | 該当なし。バージョン 2 でバージョン 1 の動作を保持できません。 | 

## 制限
<a name="upgrade-mode-limitations"></a>

[AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking) のレビューを強くお勧めします。

### サポートされていない互換性のない変更の検出
<a name="upgrade-mode-limitations-unsupported-changes"></a>

アップグレードデバッグモード機能は、[AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。](cliv2-migration-changes.md#cliv2-migration-return-codes) を除くすべての互換性のない変更をサポートします。このモードは、AWS CLI ダウンストリームから返されるエラーコードの使用方法を考慮できません。

### 条件付き互換性のない変更の検出
<a name="upgrade-mode-limitations-condiditional-changes"></a>

[タイムスタンプの出力値は ISO 8601 形式に標準化されています](cliv2-migration-changes.md#cliv2-migration-timestamp) の検出は、検出が AWS アカウントの状態に依存する唯一のケースであり、アカウントリソースが後で更新されると、下位互換性のない変更が発生する可能性があります。サービスからの API レスポンスにタイムスタンプが含まれていない場合、この互換性のない変更は検出されません。

AWS CLI コマンドによって返されるタイムスタンプ形式に依存していて、ISO 8601 を使用するように AWS CLI をまだ設定していない場合は、バージョン 2 へのアップグレード後にタイムスタンプの処理が中断されないように特に注意してください。

### 解決不可能な互換性のない変更の検出
<a name="upgrade-mode-limitations-unresolvable-changes"></a>

アップグレードデバッグモードによる一部の警告出力は、コマンドまたは環境を変更しても解決できません。次のケースでは、対応する機能を使用している限り、警告がアップグレードデバッグモードで常に出力されます。
+ [AWS CLIプラグインに対する バージョン 2 のサポートが変更されます](cliv2-migration-changes.md#cliv2-migration-profile-plugins) - [設定ファイルの](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html)プラグインに依存している場合、アップグレードデバッグモードは常に解決できない警告を出力します。このモードでは、いずれかのプラグインが AWS CLI バージョン 2 で動作するかどうかは保証できません。
+ [マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました](cliv2-migration-changes.md#cliv2-migration-s3-copy-metadata) - `aws s3` を使用して bucket-to-bucket Amazon Amazon S3 コピーを実行する場合、アップグレードデバッグモードは常に解決できない警告を出力します。

### 誤検出
<a name="upgrade-mode-limitations-false-detections"></a>

アップグレードデバッグモードによる警告出力は、AWS CLI V2 へのアップグレード後に必ず下位互換性のない変更があるというものではありません。以下は、AWS CLI V2 で互換性のない変更が生じていないにもかかわらず、アップグレードデバッグモードで警告が出力される場合です。
+ [テキストファイルのエンコードを設定するために環境変数を追加](cliv2-migration-changes.md#cliv2-migration-encodingenvvar) - `PYTHONUTF8` または `PYTHONIOENCODING` 環境変数がテキストファイルのエンコードを設定するように指定されており、指定されたエンコードが既にインストールされたロケールと一致している場合、デバッグモードはエンコードがインストールされたロケールと一致するかどうかをチェックしないため、警告は誤検出である可能性があります。
+ [マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました](cliv2-migration-changes.md#cliv2-migration-s3-copy-metadata) - `aws s3` が bucket-to-bucket Amazon Amazon S3 コピーの実行に使用され、ソースオブジェクトが[マルチパートしきい値サイズ](https://docs.aws.amazon.com/cli/latest/topic/s3-config.html#multipart-threshold)を下回っているためにコピーがマルチパートでない場合、誤検出が出力されます。
+ [タイムスタンプの出力値は ISO 8601 形式に標準化されています](cliv2-migration-changes.md#cliv2-migration-timestamp) - cli\$1timestamp\$1format 設定が wire (デフォルト) に設定されており、ISO 8601 形式のタイムスタンプがサービスによって返される場合。
+ [変更のない、CloudFormation デプロイの処理の改善](cliv2-migration-changes.md#cliv2-migration-cfn) - `aws cloudformation deploy` コマンドで `--fail-on-empty-changeset` フラグが使用され、結果の変更セットが空の場合、誤検出が出力されます。また、変更セットが空ではなく、`--no-fail-on-empty-changeset` が使用されていない場合、誤検出が出力されます。
+ [`us-east-1` リージョンの Amazon S3 エンドポイントのデフォルト動作を変更しました](cliv2-migration-changes.md#cliv2-migration-s3-regional-endpoint) - Amazon S3 オペレーションの実行に `aws s3` または `aws s3api` が使用され、リージョンが `us-east-1` に設定されていて、`s3.us_east_1_regional_endpoint` 設定がリージョンに設定されておらず、[エンドポイント設定](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-endpoints.html#endpoints-precedence)が原因でリクエストにグローバル Amazon S3 エンドポイントが使用されている場合、デバッグモードは設定されたエンドポイント設定をチェックしないため、警告は誤検出である可能性があります。

## アップグレードデバッグモードを設定する
<a name="upgrade-mode-configure"></a>

アップグレードデバッグモードを有効または無効にするには、次の方法を使用します。優先順位は次のとおりです。
+ コマンドラインオプションは、単一のコマンドに対してアップグレードデバッグモードを有効化または無効化します。[アップグレードデバッグモードを使用するには、--v2-debug を使用します。](https://docs.aws.amazon.com/cli//latest/userguide/cli-configure-options.html#cli-configure-options-v2-debug)
+ 環境変数は、[AWS\$1CLI\$1UPGRADE\$1DEBUG\$1MODE](https://docs.aws.amazon.com/cli//latest/userguide/cli-configure-envvars.html#envvars-list-aws_cli_upgrade_debug_mode) 変数を使用します。

# AWS CLI V1-to-V2 移行ツールを使用して AWS CLI バージョン 1 を AWS CLI バージョン 2 にアップグレードする
<a name="cli-migration-tool"></a>

このトピックでは、AWS CLI V1-to-V2 移行ツールについて説明します。

AWS CLI バージョン 1 のユーザーは、AWS CLI バージョン 2 にアップグレードして、新機能と強化されたパフォーマンスを利用することをお勧めします。このトピックでは、AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の動作の変更について説明します。この変更では、同じ動作をするために、スクリプトまたはコマンドを更新する必要があるものについて述べます。AWS CLI V1-to-V2 移行ツールは、AWS CLI バージョン 1 コマンドを含む bash スクリプトを分析し、AWS CLI バージョン 2 の重大な変更で更新された機能の使用を検出します。さらに、このツールはスクリプトを自動的に変更して、検出したほとんどの問題を修正できます。このツールは、bash スクリプト内の AWS CLI バージョン 1 コマンドを自動的に検出して変更し、バージョン 2 へのアップグレード時に予期しない問題が発生することを防ぐことで、アップグレードエクスペリエンスを向上させます。

アップグレードデバッグモードと比較すると、AWS CLI V1-to-V2 移行ツールはスタンドアロンツールであり、AWS CLI コマンドの実行を必要としません。アップグレードデバッグモードと AWS CLI V1-to-V2 移行ツールの詳細な比較については、「[AWS CLI バージョン 2 の移行ガイド](cliv2-migration.md)」の「[CLI AWS 移行ツールを使用して破損を軽減する](cliv2-migration.md#using-migration-tools)」を参照してください。

詳細については、「[AWS CLI バージョン 2 の新機能と変更点](cliv2-migration-changes.md)」の「[AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking)」を参照してください。

## 仕組み
<a name="migration-tool-how-it-works"></a>

AWS CLI V1-to-V2 移行ツールは、CLI バージョン 1 を使用する bash スクリプトをリントできる AWS Python パッケージです。静的リンターであるため、マシンにインストールした AWS CLI バージョン 1 のバージョンには依存しません。このリンターはコマンドラインから呼び出され、bash スクリプトへのローカルファイルパスがパラメータとして提供されます。

移行ツールは、スクリプトで使用される AWS CLI バージョン 1 コマンドを変更することで、検出したほとんどの検出結果を解決する変更された bash スクリプトを自動的に生成することもできます。移行ツールは、AWS バージョン 2 との互換性を保ちながら、バージョン 1 の動作を保持するようにコマンドを変更します。

一部の検出結果については、AWS CLI V1-to-V2 移行ツールで検出できますが、自動修正は提供されません。このような場合、移行ツールは手動レビューが必要な検出としてフラグを付けます。

AWS CLI V1-to-V2 移行ツールがサポートする重大な変更と自動修正の詳細なリストについては、「[制限](#migration-tool-limitations)」を参照してください。

## 前提条件
<a name="migration-tool-prerequisites"></a>

### Python
<a name="migration-tool-prerequisites-python"></a>

このツールを使用するには、Python 3.9 以降がインストールされている必要があります。

正しい Python バージョンがインストールされていることを確認するには、ターミナルで次のコマンドを実行し、出力に 3.9 以上の Python バージョンが表示されていることを確認します。

```
$ python3 --version
```

古いバージョンの Python がある場合、または Python がインストールされていない場合は、[公式の Python ダウンロードページ](https://www.python.org/downloads/)から互換性のあるバージョンをダウンロードできます。

### pip
<a name="migration-tool-prerequisites-pip"></a>

互換性のあるバージョンの Python がインストールされていることに加えて、`pip` がインストールされている必要があります。

`pip` がインストールされていることを確認するには、次のコマンドを実行します。

```
$ python3 -m pip --version
```

`pip` がインストールされている場合は、次のような出力が表示されます。

```
pip 25.0.1 from ~/.local/lib/python3.13/site-packages (python 3.13)
```

`pip` がインストールされていない場合は、「[pip のインストール](https://docs.aws.amazon.com/cli/v1/userguide/install-linux.html#install-linux-pip-pip)」を参照してください。

## インストール
<a name="migration-tool-installation"></a>

AWS CLI V1-to-V2 移行ツールを新しい仮想環境にインストールします。

```
$ python3 -m venv .venv
$ source .venv/bin/activate
$ python3 -m pip install aws-cli-migrate
```

## Usage
<a name="migration-tool-usage"></a>

### ドライランモード (デフォルト)
<a name="migration-tool-usage-dryrun"></a>

ドライランモードでは、入力スクリプトを変更せずに、重大な変更の対象となる AWS CLI バージョン 1 コマンドを自動的に検出できます。

```
$ migrate-aws-cli --script upload_s3_files.sh
```

### 自動修正モード
<a name="migration-tool-usage-autofix"></a>

自動修正モードでは、入力スクリプトで AWS CLI バージョン 1 コマンドを自動的に検出して更新し、可能な場合は AWS CLI バージョン 2 で導入された変更による破損を軽減できます。

```
$ migrate-aws-cli --script upload_s3_files.sh --fix
```

必要に応じて、`--output` パラメータを介して出力パスを指定して、入力スクリプトを更新するのではなく、更新されたスクリプトを書き込むこともできます。

```
$ migrate-aws-cli --script upload_s3_files.sh --output upload_s3_files_v2.sh --fix
```

### インタラクティブモード
<a name="migration-tool-usage-interactive"></a>

インタラクティブモードでは、重大な変更の対象となる AWS CLI バージョン 1 コマンドを自動的に検出できます。ほとんどの検出結果には、AWS CLI バージョン 2 での破損を軽減するための修正案が表示されます。提案された修正を確認し、適用するかどうかを決定できます。必要に応じて、`--output` パラメータを介して出力パスを指定して、更新されたスクリプトを書き込む場所を制御します。

```
$ migrate-aws-cli --script upload_s3_files.sh --interactive \
--output upload_s3_files_v2.sh
```

次の出力スニペットは、インタラクティブモードでの検出結果の例です。

```
14 14│ 
15 15│ aws s3 ls s3://mybucket
16 16│ 
17   │-aws s3 cp s3://amzn-demo-bucket s3://amzn-demo-bucket2 --recursive
   17│+aws s3 cp s3://amzn-demo-bucket s3://amzn-demo-bucket2 --recursive --copy-props none
18 18│ 
19 19│ TEMPLATE_KEY="cloudformation/$(basename "$TEMPLATE_FILE")"
20 20│ 

examples/upload_s3_files.sh:17 [s3-copy] In AWS CLI v2, object properties will be copied 
from the source in multipart copies between S3 buckets. If a copy is or becomes multipart 
after upgrading to AWS CLI v2, extra API calls will be made. See 
https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration-changes.html#cliv2-migration-s3-copy-metadata.

Apply this fix? [y] yes, [n] no, [a] accept all of type, [r] reject all of type, [u] update all, 
[s] save and exit, [q] quit:
```

推奨される修正は、Git の diff に似た形式で表示されます。移行ツールは、`-` で始まる行の削除を提案し、`+` で始まる行の追加を提案します。前の例では、提案は、Amazon S3 コピーを実行する AWS CLI バージョン 1 コマンドに `--copy-props none` パラメータを追加するものとして解釈できます。

推奨される修正ごとに、次のいずれかのコントロールを入力できます。
+ 「`y`」を入力して、提案された修正を受け入れます。
+ 「`n`」を入力して、現在の修正を拒否します。
+ 「`a`」を入力して、同じタイプのすべての修正を受け入れます。
+ 「`r`」を入力して、同じタイプのすべての修正を拒否します。
+ 「`u`」を入力して、残りのすべての修正を受け入れます。
+ 「`s`」を入力して、保存し終了します。
+ 「`q`」を入力して、保存せずに終了します。

一部の検出結果は、修正案が提示されずに手動レビューのフラグが立てられる場合があります。これらの検出結果を確認し、参照されている重大な変更の影響を受けるかどうかを検証する必要があります。これらの検出結果の影響を受ける場合は、検出結果の説明で指定されたガイダンスに従って、AWS CLI バージョン 2 で導入された重大な変更を回避または準備するために必要な変更を行う必要があります。

## 制限
<a name="migration-tool-limitations"></a>

AWS CLI V1-to-V2 移行ツールは現在、AWS CLI バージョン 2 で導入されたすべての重大な変更をサポートしているわけではなく、重大な変更が実際に発生していなくてもコマンドの検出を出力する誤検出のケースがあります。

「[AWS CLI バージョン 2 の新機能と変更点](cliv2-migration-changes.md)」に記載されている「[AWS CLI バージョン 1 と AWS CLI バージョン 2 の間の重要な変更](cliv2-migration-changes.md#cliv2-migration-changes-breaking)」について理解することを強くお勧めします。

### テキストベースの分析
<a name="migration-tool-limitations-static-linter"></a>

移行ツールは、スクリプトを実行せずに分析します。これにより、重大な変更を検出する AWS CLI コマンドの検出方法が制限されます。移行ツールは AWS CLI コマンドのテキストのみを調べることができます。非推奨のパラメータを AWS CLI に直接渡す代わりに変数に保存するなど、実行時に発生する問題を検出することはできません。

### サポートされていない互換性のない変更の検出
<a name="migration-tool-limitations-unsupported-changes"></a>

移行ツールにおける重大な変更に対するサポート範囲を以下の表にまとめます。


| 重要な変更 | 検出をサポート | 自動修正をサポート | 
| --- | --- | --- | 
| [テキストファイルのエンコードを設定するために環境変数を追加](cliv2-migration-changes.md#cliv2-migration-encodingenvvar) | いいえ | なし | 
| [バイナリパラメータはデフォルトで base64 エンコードされた文字列として渡されるようになりました](cliv2-migration-changes.md#cliv2-migration-binaryparam) | はい | はい | 
| [マルチパートコピーのファイルプロパティとタグの Amazon S3 処理が改善されました](cliv2-migration-changes.md#cliv2-migration-s3-copy-metadata) | はい | あり | 
| [パラメータの `http://` または `https://` URL の自動取得の廃止](cliv2-migration-changes.md#cliv2-migration-paramfile) | なし | なし | 
| [デフォルトですべての出力に使用されるページャー](cliv2-migration-changes.md#cliv2-migration-output-pager) | はい | あり | 
| [タイムスタンプの出力値は ISO 8601 形式に標準化されています](cliv2-migration-changes.md#cliv2-migration-timestamp) | なし | なし | 
| [変更のない、CloudFormation デプロイの処理の改善](cliv2-migration-changes.md#cliv2-migration-cfn) | はい | あり | 
| [`us-east-1` リージョンの Amazon S3 エンドポイントのデフォルト動作を変更しました](cliv2-migration-changes.md#cliv2-migration-s3-regional-endpoint) | なし | なし | 
| [リージョンの AWS STS エンドポイントのデフォルトの動作を変更しました](cliv2-migration-changes.md#cliv2-migration-sts-regional-endpoint) | なし | なし | 
| [`ecr get-login` を削除し、`ecr get-login-password` に置き換えました](cliv2-migration-changes.md#cliv2-migration-ecr-get-login) | あり | なし | 
| [AWS CLIプラグインに対する バージョン 2 のサポートが変更されます](cliv2-migration-changes.md#cliv2-migration-profile-plugins) | なし | なし | 
| [非表示エイリアスのサポートを削除しました](cliv2-migration-changes.md#cliv2-migration-aliases) | はい | あり | 
| [`api_versions` 設定ファイルの設定はサポートされていません](cliv2-migration-changes.md#cliv2-migration-api-versions) | なし | なし | 
| [AWS CLI バージョン 2 は、署名 V4 のみを使用して Amazon S3 リクエストを認証します](cliv2-migration-changes.md#cliv2-migration-sigv4) | なし | なし | 
| [AWS CLI バージョン 2 はページングパラメータとの整合性が高くなっています](cliv2-migration-changes.md#cliv2-migration-skeleton-paging) | あり | なし | 
| [AWS CLI バージョン 2 は、すべてのコマンドで一貫性のあるリターンコードを提供します。](cliv2-migration-changes.md#cliv2-migration-return-codes) | なし | 不可 | 