

# Authentication and access credentials for the AWS CLI
<a name="cli-chap-authentication"></a>

AWS サービスを使用して開発するときは、AWS CLI が AWS との間でどのように認証するかを確立する必要があります。AWS CLI にプログラムでアクセスするための認証情報を設定するには、次のいずれかのオプションを選択します。オプションは推奨順になっています。


****  

| 認証タイプ | 目的 | 手順 | 
| --- | --- | --- | 
|  AWS マネジメントコンソールの認証情報  | **(推奨)** コンソール認証情報を使用して AWS CLI にログインし、短期の認証情報を使用します。AWS アカウントアクセスにルート、IAM ユーザー、または IAM とのフェデレーションを使用する場合に推奨 | [コンソール認証情報を使用して AWS ローカル開発にログインする](cli-configure-sign-in.md) | 
|  IAM アイデンティティセンターのワークフォースユーザーの短期認証情報  | IAM Identity Center のワークフォースユーザーに短期の認証情報を使用します。セキュリティのベストプラクティスは、IAM アイデンティティセンターで AWS Organizations を使用することです。その場合は、組み込みの IAM アイデンティティセンターディレクトリや Active Directory などのユーザーディレクトリを短期認証情報と組み合わせます。 | [AWS CLI を使用した IAM アイデンティティセンター認証の設定](cli-configure-sso.md) | 
| IAM ユーザーの短期認証情報 | 長期認証情報よりも安全な IAM ユーザーの短期認証情報を使用します。認証情報が漏洩した場合でも、有効期限が切れる前に使用される可能性のある期間が限られます。 | [Authenticating with short-term credentials for the AWS CLI](cli-authentication-short-term.md) | 
| Amazon EC2 インスタンスの IAM または IAM アイデンティティセンターのユーザー。 | Amazon EC2 インスタンスメタデータを使用し、Amazon EC2 インスタンスに割り当てられたロールを使用して一時的な認証情報のクエリを実行します。 | [Using Amazon EC2 instance metadata as credentials in the AWS CLI](cli-configure-metadata.md) | 
| アクセス許可のロールの引き受け | 別の認証情報メソッドと組み合わせて、ユーザーがアクセスできない可能性のある AWS のサービスに一時的にアクセスできるようにするためのロールを引き受けます。 | [AWS CLI での IAM ロールの使用](cli-configure-role.md) | 
| IAM ユーザーの長期認証情報 | (非推奨) 有効期限のない長期認証情報を使用します。 | [Authenticating using IAM user credentials for the AWS CLI](cli-authentication-user.md) | 
| IAM または IAM アイデンティティセンターのワークフォースユーザーの外部ストレージ  | (非推奨) 別の認証情報メソッドと組み合わせます。ただし、認証情報値の値は AWS CLI 以外の場所に保存します。この方法は、認証情報が保存される外部の場所の安全性に依存します。 | [Sourcing credentials with an external process in the AWS CLI](cli-configure-sourcing-external.md) | 

## 設定と認証情報の優先順位
<a name="cli-chap-authentication-precedence"></a>

認証情報と構成設定は、システム環境変数、ユーザー環境変数、ローカルの AWS 設定ファイルなど複数の場所にあり、コマンドラインでパラメータとして明示的に宣言される場合もあります。特定の認証は、他の認証よりも優先されます。AWS CLI 認証設定は、次の順番で優先されます。

1. **[コマンドラインオプション](cli-configure-options.md)** - `--region`、`--output`、`--profile` パラメータなど、他の任意の場所にある設定を上書きします。

1. **[環境変数](cli-configure-envvars.md)** - システムの環境変数に値を保存できます。

1. **[ロールの継承](cli-configure-role.md)** - 設定または [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) コマンドを通じて IAM ロールのアクセス許可を継承します。

1. **[ウェブ ID によるロールの継承](cli-configure-role.md)** - 設定または [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) コマンドを通じてウェブ ID を使用して IAM ロールのアクセス許可を継承します。

1. **[AWS IAM アイデンティティセンター](cli-configure-files.md)** – `config` ファイルに保存された IAM ID センターの設定は、`aws configure sso` コマンド実行時に更新されます。そうすると、`aws sso login` コマンドを実行すると認証情報が認証されます。「`config`」ファイルは、Linux または macOS では「`~/.aws/config`」、Windows では「`C:\Users\USERNAME\.aws\config`」にあります。

1. **[認証情報ファイル](cli-configure-files.md)** – コマンド `aws configure` を実行すると、`credentials` ファイルと `config` ファイルが更新されます。「`credentials`」ファイルは、Linux または macOS では「`~/.aws/credentials`」、Windows では「`C:\Users\USERNAME\.aws\credentials`」にあります。

1. **[カスタムプロセス](cli-configure-sourcing-external.md)** — 外部ソースから認証情報を取得します。

1. **[設定ファイル](cli-configure-files.md)** - コマンド `aws configure` を実行すると、`credentials` ファイルと `config` ファイルが更新されます。「`config`」ファイルは、Linux または macOS では「`~/.aws/config`」、Windows では「`C:\Users\USERNAME\.aws\config`」にあります。

1. **[コンテナ認証情報](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)** - IAM ロールを各 Amazon Elastic コンテナサービス (Amazon ECS) タスク定義に関連付けることができます。関連付けられると、そのロールの一時認証情報は、そのタスクのコンテナで使用できるようになります。詳細については、*Amazon Elastic Container Service 開発者ガイド*の「[タスク用の IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)」を参照してください。

1. **[Amazon EC2 インスタンスプロファイルの認証情報](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)** - IAM ロールを各 Amazon Elastic コンピュートクラウド (Amazon EC2) インスタンスに関連付けることができます。関連付けられると、そのロールの一時認証情報は、インスタンスで実行中のコードで使用できるようになります。認証情報は、Amazon EC2 メタデータサービスを通じて配信されます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 の IAM ロール](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)」および「*IAM ユーザーガイド*」の「[インスタンスプロファイルの使用 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)」を参照してください。

## このセクションのその他のトピック
<a name="cli-chap-authentication-topics"></a>
+ [AWS CLI を使用した IAM アイデンティティセンター認証の設定](cli-configure-sso.md)
+ [Authenticating with short-term credentials for the AWS CLI](cli-authentication-short-term.md)
+ [AWS CLI での IAM ロールの使用](cli-configure-role.md)
+ [Authenticating using IAM user credentials for the AWS CLI](cli-authentication-user.md)
+ [Using Amazon EC2 instance metadata as credentials in the AWS CLI](cli-configure-metadata.md)
+ [Sourcing credentials with an external process in the AWS CLI](cli-configure-sourcing-external.md)

# コンソール認証情報を使用して AWS ローカル開発にログインする
<a name="cli-configure-sign-in"></a>

既存の AWS マネジメントコンソールのサインイン認証情報を使用して、AWS サービスにプログラムでアクセスできます。ブラウザベースの認証フローの後、AWS は AWS CLI、AWS Tools for PowerShell、AWS SDK などのローカル開発ツールで動作する一時的な認証情報を生成します。この機能は、特に長期的なアクセスキーの管理よりもインタラクティブな認証を希望する場合、AWS CLI 認証情報の設定と管理のプロセスを簡素化します。

このプロセスでは、最初のアカウント設定時に作成されたルート認証情報、IAM ユーザー、または ID プロバイダーからのフェデレーティッド ID を使用して認証でき、AWS CLI によって一時的な認証情報が自動的に管理されます。このアプローチにより、長期的な認証情報をローカルに保存する必要がなくなるため、セキュリティが強化されます。

`aws login` コマンドを実行すると、アクティブなコンソールセッションから選択することも、ブラウザベースの認証フローを使用してサインインすることもできます。これにより、一時的な認証情報が自動的に生成されます。CLI は、これらの認証情報を最大 12 時間自動的に更新します。

設定が完了すると、セッションは AWS CLI およびその他の AWS SDK およびツールで使用できます。

**Topics**
+ [

## 前提条件
](#cli-configure-sign-in-prerequisites)
+ [

## `aws login` コマンドを使用して AWS CLI にログインします。
](#cli-configure-sign-in-login-command)
+ [

## プロファイルでコマンドを実行する
](#cli-configure-sign-in-with-profile)
+ [

## aws logout コマンドを使用してセッションからサインアウトする
](#cli-configure-sign-in-sign-out)
+ [

## トラブルシューティング
](#cli-configure-sign-in-troubleshooting)
+ [

## 関連リソース
](#cli-configure-sign-in-resources)

## 前提条件
<a name="cli-configure-sign-in-prerequisites"></a>
+ AWS CLI をインストールします。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」を参照してください。`aws login` コマンドを使用するには、2.32.0 以降のバージョンが必要です。
+ ルートユーザー、IAM ユーザー、または IAM とのフェデレーションを通じて AWS マネジメントコンソールにサインインするためのアクセス。IAM Identity Center を使用する場合は、代わりに「[AWS CLI を使用した IAM アイデンティティセンター認証の設定](cli-configure-sso.md)」を参照してください。
+ IAM ID に適切なアクセス許可があることを確認します。[SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/signin/latest/userguide/security-iam-awsmanpol.html) 管理ポリシーを IAM ユーザー、ロール、またはグループにアタッチします。ルートユーザーとしてサインインする場合、追加のアクセス許可は必要ありません。

## `aws login` コマンドを使用して AWS CLI にログインします。
<a name="cli-configure-sign-in-login-command"></a>

`aws login` コマンドを実行して、既存の AWS マネジメントコンソール認証情報を使用して認証します。以前にプロファイルを設定していない場合は、追加情報の入力を求められます。プロファイルにサインインまたは設定するには、以下の手順に従います。

1. 任意のターミナルで `aws login` コマンドを実行します。

   ```
   $ aws login
   ```

   名前付きプロファイルにサインインするか、新しいプロファイルを作成するには、`--profile` オプションを使用します。

   ```
   $ aws login --profile my-dev-profile
   ```
   + これが新しいプロファイルであるか、AWS リージョンが指定されていない場合、AWS CLI はリージョンを指定するように求めます。

     ```
     No AWS region has been configured. The AWS region is the geographic location of 
     your AWS resources. 
     
     If you've used AWS before and already have resources in your account, tell us 
     which region they were created in. If you haven't created resources in your account 
     before, you can pick the region closest to you: 
     https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. 
     You are able to change the region in the CLI at any time with the command 
     `aws configure set region NEW_REGION`.
     
     AWS Region [us-east-1]:
     ```
   + AWS CLI を使用するデバイスにブラウザがない場合は、`--remote` オプションを使用して、ブラウザ対応デバイスで開くための URL を指定できます。

     ```
     $ aws login --remote
     ```
**注記**  
同一デバイス (`aws login`) 認証およびデバイス間 (`aws login --remote`) 認証へのアクセスを制御できます。関連する IAM ポリシーで次のリソース ARN を使用します。  
`arn:aws:signin:region:account-id:oauth2/public-client/localhost` – この ARN は、`aws login` による同一デバイス認証に使用します。
`arn:aws:signin:region:account-id:oauth2/public-client/remote` – この ARN は、`aws login --remote` によるデバイス間認証に使用します。

1. AWS CLI は、AWS アカウントのサインインプロセスを行うためのデフォルトのブラウザを開きます。

   ```
   Attempting to open the login page for `us-east-1` in your default browser. 
   If the browser does not open, use the following URL to complete your login:
   https://signin.us-east-1.amazonaws.com/authorize?<abbreviated>
   
   If you cannot connect to this URL, make sure that you have specified a valid region.
   ```
   + `--remote` オプションを使用した場合、使用している認可のタイプに基づいて、サインインプロセスを手動で開始する手順が表示されます。表示される URL は、https://us-east-1.signin.amazonaws.com/authorize. で始まる一意の URL です。ブラウザのログインが完了したら、結果の認可コードをコピーして CLI に貼り付ける必要があります。

     ```
     Browser will not be automatically opened.
     Please visit the following URL:
     https://region.signin.amazonaws.com/authorize?<abbreviated>
     
     Please enter the authorization code displayed in the browser:
     ```

1. ブラウザで、表示されたリストから使用する認証情報を選択し、ターミナルに戻ります。
   + 設定しているプロファイルに、新しいセッションと一致しない以前に設定されたログインセッションがある場合、既存のプロファイルに対応するセッションを切り替えていることを確認するように AWS CLI から求められます。

     ```
     Profile signin is already configured to use session arn:aws:iam::0123456789012:user/ReadOnly. 
     Do you want to overwrite it to use arn:aws:iam::0123456789012:user/Admin instead? (y/n):.
     ```

1. 最後のメッセージは、完了したプロファイル設定について説明しています。これで、このプロファイルを使用して認証情報をリクエストできます。`aws login` コマンドを使用して、コマンドを実行するために必要な認証情報をリクエストして取得します。

   認証トークンは、解決されたプロファイルに基づいたファイル名を使用して、`.aws/login/cache` ディレクトリの下のディスクにキャッシュされます。

### 生成された設定ファイル
<a name="cli-configure-sign-in-generated-config"></a>

これらのステップを実行すると、`config` ファイルに次のような `default` プロファイルが作成されます。

```
[default]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1
```

## プロファイルでコマンドを実行する
<a name="cli-configure-sign-in-with-profile"></a>

サインインしたら、認証情報を使用して、関連付けられたプロファイルで AWS CLI コマンドを呼び出すことができます。次の例は、`default` プロファイルを使用する `get-caller-identity` コマンドを示しています。

```
$ aws sts get-caller-identity
```

特定のセッションにサインインするには、`--profile` オプションを使用します。

```
$ aws sts get-caller-identity --profile my-dev-profile
```

AWS CLI と SDK は、必要に応じて 15 分ごとにキャッシュされた認証情報を自動的に更新します。セッション全体は、IAM プリンシパルの設定セッション期間 (最大 12 時間) まで有効です。その後、`aws login` を再度実行する必要があります。

## aws logout コマンドを使用してセッションからサインアウトする
<a name="cli-configure-sign-in-sign-out"></a>

セッションの使用が完了したら、認証情報の有効期限が切れるのを待つか、`aws logout` コマンドを実行してキャッシュされた認証情報を削除することができます。コマンドラインまたは `AWS_PROFILE` 環境変数でプロファイルが指定されていない場合、コマンドはデフォルトのプロファイルからサインアウトします。次の例では、デフォルトプロファイルからサインアウトします。

```
$ aws logout
```

特定のセッションからサインアウトするには、`--profile` オプションを使用します。

```
$ aws logout --profile my-dev-profile
```

ログイン認証情報を使用するすべてのプロファイルからサインアウトするには、`--all` オプションを使用します。

```
$ aws logout --all
```

### キャッシュされた認証情報
<a name="cli-configure-sign-in-sharing-login-creds"></a>

一時キャッシュされた認証情報と更新に必要なメタデータは、デフォルトで Linux および macOS の `~/.aws/login/cache`、または Windows の `%USERPROFILE%\.aws\login\cache` に保存されます。

短期の認証情報キャッシュを別の場所に保存するには、`AWS_LOGIN_CACHE_DIRECTORY` 環境変数を設定します。

#### プロセス認証情報としてのログイン認証情報の共有
<a name="cli-configure-sign-in-cached-credentials"></a>

AWS SDK やその他の開発ツールの古いバージョンでは、コンソール認証情報がまだサポートされていない場合があります。回避策として、プロセス認証情報プロバイダーとして機能するように AWS CLI を設定できます。CLI は、Credential\$1process プロファイルを使用するように設定されたツールと共有しながら、必要に応じて認証情報を更新し続けます。

この例では、AWS CLI を使用してプロファイルサインインのために最初にログインします。

```
$ aws login --profile signin
```

次に、サインインプロファイルを指す credential\$1process オプションを使用してプロファイルを手動で設定します。これで、プロセスプロファイルを使用するように SDK またはツールを設定できます。これにより、CLI が呼び出され、サインインプロファイルから認証情報を共有します。

```
[profile signin]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1

[profile process] 
credential_process = aws configure export-credentials --profile signin --format process
region = us-east-1
```

## トラブルシューティング
<a name="cli-configure-sign-in-troubleshooting"></a>

このページには、AWS CLI のコンソール認証情報を使用した AWS ローカル開発のログインに関する問題のトラブルシューティングに関する推奨事項が含まれています。

**注記**  
AWS CLI を使用して発生する可能性のあるその他の問題のトラブルシューティングについては、「[AWS CLI のエラーのトラブルシューティング](cli-chap-troubleshooting.md)」を参照してください。

### 「aws login」を使用した後の ExpiredToken または AccessDeniedException エラー
<a name="expired-token-login-troubleshooting"></a>

特定のプロファイルに対して `aws login` を実行した後に AWS CLI コマンドを実行すると、期限切れまたは無効な認証情報エラーが発生する可能性があります。

```
$ aws s3 ls

An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired.
```

**考えられる原因:** そのプロファイルに既存の認証情報と新しいログイン認証情報が混在している

`aws configure list` または `aws configure list --profile <profile name>` を実行して、CLI がデフォルトまたは指定されたプロファイルの認証情報を解決する場所を出力します。

TYPE 列がログイン以外のものである場合は、ターゲットプロファイルに別のタイプの認証情報が設定されていることを意味します。

この例では、ログイン認証情報よりも優先されるホームディレクトリの共有認証情報ファイルから認証情報が解決されています。

```
$  aws configure list
NAME       : VALUE                    : TYPE             : LOCATION
profile    : <not set>                : None             : None
access_key : ****************MPLE     : shared-credentials-file :
secret_key : ****************EKEY     : shared-credentials-file :
region     : us-east-1                : config-file      : ~/.aws/config
```

これに対処するには、ターゲットプロファイルの設定と認証情報ファイルから既存の認証情報を手動で削除します。これを行うと、`aws configure list` 再実行時にログイン認証情報が表示されます。

```
$  aws configure list
NAME       : VALUE                    : TYPE             : LOCATION
profile    : <not set>                : None             : None
access_key : ****************MPLE     : login            :
secret_key : ****************EKEY     : login            :
region     : us-east-1                : config-file      : ~/.aws/config
```

または、`--debug` オプションを使用すると、CLI が認証情報を解決する場所が表示されます。

### 「aws login」の実行時にファイアウォールがネットワークアクセスをブロックする
<a name="firewall-blocking-login-troubleshooting"></a>

`aws login` の実行中に、AWS CLI がネットワークにアクセスできないポップアップやファイアウォールソフトウェアからのメッセージが表示されることがあります。

**考えられる原因:** ファイアウォールまたはセキュリティソフトウェアが AWS CLI が OAuth コールバックの処理に使用されるポートを開くのを妨げています。

この問題を回避するには、代わりに `--remote` オプションを使用します。これにより、OAuth コールバックを使用する代わりに、認可コードをコピーして貼り付けるよう求められます。

```
$ aws login --remote
```

## 関連リソース
<a name="cli-configure-sign-in-resources"></a>

その他のリソースは次のとおりです。
+ [AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)
+ [`aws login` (AWS CLI バージョン 2 リファレンス](https://docs.aws.amazon.com/cli/latest/reference/))
+ [`aws logout` (AWS CLI バージョン 2 リファレンス](https://docs.aws.amazon.com/cli/latest/reference/))

# AWS CLI を使用した IAM アイデンティティセンター認証の設定
<a name="cli-configure-sso"></a>

このトピックでは、AWS IAM アイデンティティセンター (IAM アイデンティティセンター) を使用して AWS CLI を設定し、AWS CLI コマンドを実行するための認証情報を取得する方法について説明します。IAM アイデンティティセンターユーザーを認証し、AWS CLI コマンドを実行するための認証情報を `config` ファイルを通じて取得する主な方法には、次の 2 つがあります。
+ **(推奨)** SSO トークンプロバイダー設定。
+ 更新不可のレガシー設定。

アカウント ID とロールを使用しないベアラー認証の使用方法については、「*Amazon CodeCatalyst ユーザーガイド*」の「[CodeCatalyst で AWS CLI を使用するためのセットアップ](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)」を参照してください。

**注記**  
AWS CLI コマンドで IAM アイデンティティセンターを使用するガイド付きプロセスについては、「[チュートリアル: IAM アイデンティティセンターを使用して AWS CLI で Amazon S3 コマンドを実行する](cli-configure-sso-tutorial.md)」を参照してください。

**トピック**
+ [前提条件](#cli-configure-sso-prereqs)
+ [`aws configure sso` ウィザードでプロファイルを設定する](#cli-configure-sso-configure)
+ [`aws configure sso-session` ウィザードで `sso-session` セクションのみを設定する](#cli-configure-sso-session)
+ [`config` ファイルを使用した手動設定](#cli-configure-sso-manual)
+ [IAM アイデンティティセンターのセッションにサインインする](#cli-configure-sso-login)
+ [IAM アイデンティティセンターのプロファイルでコマンドを実行する](#cli-configure-sso-use)
+ [IAM アイデンティティセンターのセッションからサインアウトする](#cli-configure-sso-logout)
+ [トラブルシューティング](#cli-configure-sso-tshoot)
+ [関連リソース](#cli-configure-sso-resources)

## 前提条件
<a name="cli-configure-sso-prereqs"></a>
+ AWS CLI をインストールします。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」を参照してください。
+ 最初に IAM Identity Center 内で SSO 認証へのアクセス権が必要です。AWS 認証情報にアクセスするには、次のいずれかの方法を選択します。

### IAM Identity Center 経由のアクセスを確立していません
<a name="idc-access"></a>

「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[開始方法](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)」の手順に従います。このプロセスでは、IAM Identity Center をアクティブ化して、管理者ユーザーを作成し、適切な最小特権のアクセス許可セットを追加します。

**注記**  
最小特権権のアクセス許可を適用するアクセス許可セットを作成します。雇用主がこの目的のためにカスタムアクセス許可セットを作成していない限り、定義済みの `PowerUserAccess` アクセス許可セットを使用することをお勧めします。

ポータルを終了し、AWS アカウントにもう一度サインインすると、、プログラムによるアクセスの詳細、および `Administrator` または `PowerUserAccess` のオプションが表示されます。SDK を使用する場合は `PowerUserAccess` を選択します。

### 雇用主が管理するフェデレーション ID プロバイダー (Azure AD や Okta など) を通じて AWS へのアクセス権を既に持っています。
<a name="federated-access"></a>

ID プロバイダーのポータルから AWS にサインインします。クラウド管理者から `PowerUserAccess` (開発者) アクセス許可を付与されている場合は、アクセス権のある AWS アカウント とアクセス許可セットが表示されます。アクセス許可セットの名前の横に、そのアクセス許可セットを使用してアカウントに手動またはプログラムでアクセスするオプションが表示されます。

カスタム実装では、アクセス許可セット名が異なるなど、エクスペリエンスが異なる場合があります。どのアクセス許可セットを使用すればよいかわからない場合は、IT チームにお問い合わせください。

### 雇用主が管理する AWS アクセスポータルを通じて AWS へのアクセス権を既に持っています。
<a name="accessportal-access"></a>

AWS アクセスポータルを通じて AWS にサインインします。クラウド管理者から `PowerUserAccess` (開発者) アクセス許可を付与されている場合は、アクセス権のある AWS アカウント とアクセス許可セットが表示されます。アクセス許可セットの名前の横に、そのアクセス許可セットを使用してアカウントに手動またはプログラムでアクセスするオプションが表示されます。

### 雇用主が管理するフェデレーションカスタム ID プロバイダーを通じて AWS へのアクセス権を既に持っています。
<a name="customfederated-access"></a>

サポートについては、IT チームにお問い合わせください。

IAM アイデンティティセンターへのアクセスを取得したら、次を実行して IAM アイデンティティセンターの情報を収集します。

1. `aws configure sso` の実行に必要な `SSO Start URL` と `SSO Region` の値を収集する

   1. AWS アクセスポータルで、開発に使用するアクセス許可セットを選択し、**[アクセスキー]** リンクを選択します。

   1. **[認証情報の取得]** ダイアログボックスで、オペレーティングシステムに一致するタブを選択します。

   1. `SSO Start URL` と `SSO Region` の値の取得に使用する **[IAM Identity Center 認証情報]** メソッドを選択します。

1. または、バージョン 2.22.0 以降では、開始 URL の代わりに発行者 URL を使用できます。発行者 URL は AWS IAM アイデンティティセンター コンソールの次のいずれかの場所にあります。
   + **[ダッシュボード]** ページでは、発行者 URL は設定の概要にあります。
   + **[設定]** ページでは、発行者 URL は **ID ソース**の設定にあります。

1. どのスコープ値を登録するかについては、「*IAM Identity Center ユーザーガイド*」の「[OAuth 2.0 アクセススコープ](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)」を参照してください。

## `aws configure sso` ウィザードでプロファイルを設定する
<a name="cli-configure-sso-configure"></a>

**IAM アイデンティティセンターで有効化されたプロファイルを AWS CLI に対して設定するには**

1. 任意のターミナルで `aws configure sso` コマンドを実行します。

------
#### [ (Recommended) IAM Identity Center ]

   セッション名を作成し、IAM Identity Center の開始 URL または発行者 URL、IAM Identity Center ディレクトリをホストする AWS リージョン、および登録スコープを指定します。

   ```
   $ aws configure sso
   SSO session name (Recommended): my-sso
   SSO start URL [None]: https://my-sso-portal.awsapps.com/start
   SSO region [None]: us-east-1
   SSO registration scopes [None]: sso:account:access
   ```

   デュアルスタックをサポートするには、デュアルスタック SSO 開始 URL を使用します。

   ```
   $ aws configure sso
   SSO session name (Recommended): my-sso
   SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
   SSO region [None]: us-east-1
   SSO registration scopes [None]: sso:account:access
   ```

   バージョン **2.22.0** 以降の AWS CLI では、Proof Key for Code Exchange (PKCE) 認可がデフォルトで使用され、ブラウザを搭載したデバイスで必須となります。デバイス認可を引き続き使用するには、`--use-device-code` オプションを追加します。

   ```
   $ aws configure sso --use-device-code
   ```

------
#### [ Legacy IAM Identity Center ]

   セッション名をスキップし、IAM アイデンティティセンターの開始 URL と、IAM アイデンティティセンターのディレクトリをホストする AWS リージョンを指定します。

   ```
   $ aws configure sso
   SSO session name (Recommended):
   SSO start URL [None]: https://my-sso-portal.awsapps.com/start
   SSO region [None]:us-east-1
   ```

   デュアルスタックサポートの場合

   ```
   $ aws configure sso
   SSO session name (Recommended):
   SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
   SSO region [None]:us-east-1
   ```

------

1. AWS CLI は、デフォルトのブラウザを開いて、IAM アイデンティティセンターのアカウントのサインインプロセスを開始しようとします。このプロセスでは、AWS CLI によるデータへのアクセスを許可するように求められる場合があります。AWS CLI は SDK for Python 上に構築されているため、アクセス許可メッセージには 名前 `botocore` のさまざまなバリエーションが含まれる場合があります。
   + **AWS CLI がブラウザを開くことができない場合**、使用している認可のタイプに基づいて、サインインプロセスを手動で開始する手順が表示されます。

------
#### [ PKCE authorization ]

     バージョン 2.22.0 以降の AWS CLI では、Proof Key for Code Exchange (PKCE) 認可がデフォルトで使用されます。表示される URL は、以下から始まる一意の URL です。
     + IPv4: *https://oidc.us-east-1.amazonaws.com/authorize*
     + デュアルスタック: *https://oidc.us-east-1.api.aws/authorize*

     PKCE 認可 URL は、サインインするのと同じデバイスで開く必要があり、ブラウザを搭載したデバイスで使用する必要があります。

     ```
     Attempting to automatically open the SSO authorization page in your 
     default browser.
     If the browser does not open or you wish to use a different device to 
     authorize the request, open the following URL:
     
     https://oidc.us-east-1.amazonaws.com/authorize?<abbreviated>
     ```

------
#### [ Device authorization ]

     OAuth 2.0 デバイス認可は、2.22.0 より前のバージョンの AWS CLI で使用されます。新しいバージョンでこの方法を有効にするには、`--use-device-code` オプションを使用します。

     デバイス認可 URL は、サインインするのと同じデバイスで開く必要はなく、ブラウザの有無にかかわらずデバイスで使用できます。エンドポイントの形式は、設定によって異なります。
     + IPv4: *https://device.sso.us-west-2.amazonaws.com/*
     + デュアルスタック: *https://device.sso.us-west-2.api.aws/*

     ```
     If the browser does not open or you wish to use a different device to 
     authorize this request, open the following URL:
     https://device.sso.us-west-2.amazonaws.com/
     
     Then enter the code:
     QCFK-N451
     ```

------

1. 表示されたリストから使用する AWS アカウントを選択します。使用する権限のあるアカウントが 1 つだけの場合、AWS CLI はそのアカウントを自動的に選択し、プロンプトをスキップします。

   ```
   There are 2 AWS accounts available to you.
   > DeveloperAccount, developer-account-admin@example.com (123456789011) 
     ProductionAccount, production-account-admin@example.com (123456789022)
   ```

1. 表示されたリストから使用する IAM ロールを選択します。使用できるロールが 1 つしかない場合、AWS CLI はそのロールを自動的に選択し、プロンプトをスキップします。

   ```
   Using the account ID 123456789011
   There are 2 roles available to you.
   > ReadOnly
     FullAccess
   ```

1. [デフォルトの出力形式](cli-configure-files.md#cli-config-output)、コマンドの送信先になる[デフォルトAWS リージョン](cli-configure-files.md#cli-config-region)、および[プロファイルの名前](cli-configure-files.md)を指定します。プロファイル名として `default` を指定すると、このプロファイルは使用されるデフォルトプロファイルになります。次の例では、デフォルトのリージョン、デフォルトの出力形式、プロファイルの名前を入力します。

   ```
   Default client Region [None]: us-west-2<ENTER>
   CLI default output format (json if not specified) [None]: json<ENTER>
   Profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
   ```

1. 最後のメッセージは、完了したプロファイル設定について説明しています。これで、このプロファイルを使用して認証情報をリクエストできます。`aws sso login` コマンドを使用して、コマンドを実行するために必要な認証情報をリクエストして取得します。手順については、「[IAM アイデンティティセンターのセッションにサインインする](#cli-configure-sso-login)」を参照してください。

### 生成された設定ファイル
<a name="cli-configure-sso-generated"></a>

これらのステップを実行すると、`config` ファイルに次のような `sso-session` セクションと名前付きプロファイルが作成されます。

------
#### [ IAM Identity Center ]

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

デュアルスタックサポートの場合

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_registration_scopes = sso:account:access
```

------
#### [ Legacy IAM Identity Center ]

```
[profile my-dev-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json
```

デュアルスタックサポートの場合

```
[profile my-dev-profile]
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_region = us-east-1
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json
```

------

## `aws configure sso-session` ウィザードで `sso-session` セクションのみを設定する
<a name="cli-configure-sso-session"></a>

**注記**  
この設定は、従来の IAM アイデンティティセンターとは互換性がありません。

`aws configure sso-session` コマンドは、`~/.aws/config` ファイル内の `sso-session` セクションを更新します。`aws configure sso-session` コマンドを実行し、IAM Identity Center の開始 URL または発行者 URL と、IAM Identity Center ディレクトリをホストする AWS リージョンを指定します。

```
$ aws configure sso-session
SSO session name: my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

デュアルスタックをサポートするには、デュアルスタック SSO 開始 URL を使用します。

```
$ aws configure sso-session
SSO session name: my-sso
SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

## `config` ファイルを使用した手動設定
<a name="cli-configure-sso-manual"></a>

IAM アイデンティティセンターの設定情報は `config` ファイルに保存されており、テキストエディタを使用して編集できます。名前付きプロファイルに IAM アイデンティティセンターのサポートを手動で追加するには、`config` ファイルにキーと値を追加する必要があります。

### IAM アイデンティティセンターの設定ファイル
<a name="cli-configure-sso-manual-config"></a>

`config` ファイルの `sso-session` セクションを使用して、SSO アクセストークンを取得するための設定変数をグループ化します。これらを使用して、AWS 認証情報を取得できます。次の設定を使用します。
+ **(必須)** `sso\$1start\$1url`
+ **(必須)** `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

`sso-session` セクションを定義し、プロファイルに関連付けます。`sso_region` および `sso_start_url` の設定は、`sso-session` セクション内で設定する必要があります。SDK が SSO 認証情報をリクエストできるように、通常、`sso_account_id` と `sso_role_name` は `profile`セクション内に設定する必要があります。

次の例では、SSO 認証情報をリクエストするように SDK を設定し、トークンの自動更新をサポートしています。

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
```

デュアルスタックをサポートするには、デュアルスタック SSO 開始 URL 形式を使用します。

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
```

これにより、`sso-session` 設定を複数のプロファイルでも再利用できるようになります。

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[profile prod]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole2

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
```

デュアルスタックをサポートするには、デュアルスタック SSO 開始 URL 形式を使用します。

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[profile prod]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole2

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
```

ただし、`sso_account_id` と `sso_role_name` は SSO トークン設定のすべてのシナリオで必須というわけではありません。アプリケーションでベアラー認証をサポートする AWS のサービスのみを使用する場合、従来の AWS 認証情報は必要ありません。ベアラー認証は、ベアラートークンと呼ばれるセキュリティトークンを使用する HTTP 認証スキームです。このシナリオでは、`sso_account_id` と `sso_role_name` は必須ではありません。AWS のサービスでベアラートークン認可をサポートしているかどうかについては、各サービスのガイドを参照してください。

さらに、登録スコープは `sso-session` の一部として設定できます。スコープは、ユーザーのアカウントに対するアプリケーションのアクセスを制限する OAuth 2.0 のメカニズムです。アプリケーションは 1 つ以上のスコープをリクエストでき、アプリケーションに発行されたアクセストークンは付与されたスコープに限定されます。これらのスコープは、登録された OIDC クライアントがリクエストできるアクセス許可と、クライアントが取得するアクセストークンを定義します。次の例では、アカウント/ロールを一覧表示するアクセスを許可するように `sso_registration_scopes` を設定しています。

```
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

デュアルスタックサポートの場合

```
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_registration_scopes = sso:account:access
```

認証トークンは、セッション名に基づいたファイル名を使用して、`sso/cache` ディレクトリの下のディスクにキャッシュされます。

### 従来の IAM アイデンティティセンターの設定ファイル
<a name="cli-configure-sso-manual-legacy"></a>

**注記**  
トークンの自動更新は、更新不可のレガシー設定ではサポートされていません。SSO トークン設定を使用することをお勧めします。

名前付きプロファイルに手動で IAM Identity Center サポートを追加するには、`config` ファイルのプロファイル定義に次のキーと値を追加する必要があります。
+ `sso\$1start\$1url`
+ `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`

`.aws/config` ファイル内で有効なその他のキーや値を含めることができます。次の例は、IAM アイデンティティセンターのプロファイルの例です。

```
[profile my-sso-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-west-2
sso_account_id = 111122223333
sso_role_name = SSOReadOnlyRole
region = us-west-2
output = json
```

デュアルスタックサポートの場合

```
[profile my-sso-profile]
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_region = us-west-2
sso_account_id = 111122223333
sso_role_name = SSOReadOnlyRole
region = us-west-2
output = json
```

コマンドを実行するには、まず [IAM アイデンティティセンターのセッションにサインインする](#cli-configure-sso-login) コマンドを使用して一時認証情報をリクエストおよび取得する必要があります。

`config` ファイルと`credentials` ファイルの詳細については、「[Configuration and credential file settings in the AWS CLI](cli-configure-files.md)」を参照してください。

## IAM アイデンティティセンターのセッションにサインインする
<a name="cli-configure-sso-login"></a>

**注記**  
サインインプロセス中に、データへのアクセスを AWS CLI に許可するように求められる場合があります。AWS CLI は SDK for Python 上に構築されているため、アクセス許可メッセージには 名前 `botocore` のさまざまなバリエーションが含まれる場合があります。

IAM アイデンティティセンターの認証情報セットを取得してキャッシュするには、AWS CLI の次のコマンドを実行してデフォルトのブラウザを開き、IAM アイデンティティセンターのログインを確認します。

```
$ aws sso login --profile my-dev-profile
SSO authorization page has automatically been opened in your default browser. 
Follow the instructions in the browser to complete this authorization request.
Successfully logged into Start URL: https://my-sso-portal.awsapps.com/start
```

IAM アイデンティティセンターの認証情報はキャッシュされ、AWS CLI はそれらを使用して、プロファイルで指定されている IAM ロールの AWS 認証情報を安全に取得します。

### AWS CLI がブラウザを開けない場合
<a name="cli-configure-sso-login-browser"></a>

AWS CLI ブラウザを自動的に開くことができない場合、使用している認可のタイプに基づいて、サインインプロセスを手動で開始する手順が表示されます。

------
#### [ PKCE authorization ]

バージョン 2.22.0 以降の AWS CLI では、Proof Key for Code Exchange (PKCE) 認可がデフォルトで使用されます。表示される URL は、以下から始まる一意の URL です。
+ IPv4: *https://oidc.us-east-1.amazonaws.com/authorize*
+ デュアルスタック: *https://oidc.us-east-1.api.aws/authorize*

PKCE 認可 URL は、サインインするのと同じデバイスで開く必要があり、ブラウザを搭載したデバイスで使用する必要があります。

```
Attempting to automatically open the SSO authorization page in your 
default browser.
If the browser does not open or you wish to use a different device to 
authorize the request, open the following URL:

https://oidc.us-east-1.amazonaws.com/authorize?<abbreviated>
```

------
#### [ Device authorization ]

OAuth 2.0 デバイス認可は、2.22.0 より前のバージョンの AWS CLI で使用されます。新しいバージョンでこの方法を有効にするには、`--use-device-code` オプションを使用します。

デバイス認可 URL は、サインインするのと同じデバイスで開く必要はなく、ブラウザの有無にかかわらずデバイスで使用できます。

```
If the browser does not open or you wish to use a different device to 
authorize this request, open the following URL:
https://device.sso.us-west-2.amazonaws.com/

Then enter the code:
QCFK-N451
```

------

`aws sso login` コマンドの `--sso-session` パラメータを使用してログインするときに、どの `sso-session` プロファイルを使用するかも指定できます。この `sso-session` オプションは、従来の IAM アイデンティティセンターでは使用できません。

```
$ aws sso login --sso-session my-dev-session
```

バージョン 2.22.0 以降では、PKCE 認可はデフォルトです。サインインにデバイス認可を使用するには、`--use-device-code` オプションを追加します。

```
$ aws sso login --profile my-dev-profile --use-device-code
```

認証トークンは、`sso_start_url` に基づいたファイル名を使用して、`~/.aws/sso/cache` ディレクトリの下のディスクにキャッシュされます。

## IAM アイデンティティセンターのプロファイルでコマンドを実行する
<a name="cli-configure-sso-use"></a>

ログインしたら、認証情報を使用して、関連付けられた名前付きプロファイルで AWS CLI コマンドを呼び出すことができます。次の例は、プロファイルを使用するコマンドを示しています。

```
$ aws sts get-caller-identity --profile my-dev-profile
```

IAM アイデンティティセンターにサインインしており、キャッシュされた認証情報の有効期限が切れていない限り、AWS CLI は必要に応じて期限切れの AWS 認証情報を自動的に更新します。ただし、IAM Identity Center 認証情報の有効期限が切れた場合は、IAM Identity Center アカウントに再度ログインして明示的に更新する必要があります。

## IAM アイデンティティセンターのセッションからサインアウトする
<a name="cli-configure-sso-logout"></a>

IAM アイデンティティセンターのプロファイルの使用が完了したら、認証情報の有効期限が切れるのを待つか、次のコマンドを実行してキャッシュされた認証情報を削除することができます。

```
$ aws sso logout
Successfully signed out of all SSO profiles.
```

## トラブルシューティング
<a name="cli-configure-sso-tshoot"></a>

AWS CLI の使用中に問題が発生した場合のトラブルシューティングのステップについては、「[AWS CLI のエラーのトラブルシューティング](cli-chap-troubleshooting.md)」を参照してください。

## 関連リソース
<a name="cli-configure-sso-resources"></a>

その他のリソースは次のとおりです。
+ [AWS CLI の AWS IAM アイデンティティセンター の概念](cli-configure-sso-concepts.md)
+ [チュートリアル: IAM アイデンティティセンターを使用して AWS CLI で Amazon S3 コマンドを実行する](cli-configure-sso-tutorial.md)
+ [AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)
+ [Configuration and credential file settings in the AWS CLI](cli-configure-files.md)
+ [https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/sso/login.html](https://docs.aws.amazon.com/cli/latest/reference/sso/login.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html) (*AWS CLI バージョン 2 リファレンス*)
+ 「*Amazon CodeCatalyst ユーザーガイド*」の「[Setting up to use the AWS CLI with CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)」
+ 「*IAM アイデンティティセンターのユーザーガイド*」の [OAuth 2.0 アクセススコープ](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)
+ 「*IAM アイデンティティセンターのユーザーガイド*」の[入門チュートリアル](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)

# AWS CLI の AWS IAM アイデンティティセンター の概念
<a name="cli-configure-sso-concepts"></a>

このトピックでは、AWS IAM アイデンティティセンター (IAM アイデンティティセンター) の主な概念について説明します。IAM アイデンティティセンターは、既存の ID プロバイダー (IdP) と統合することで、複数の AWS アカウント アカウント、アプリケーション、SDK、およびツールにわたるユーザーアクセス管理を簡素化するクラウドベースの IAM サービスです。一元化されたユーザーポータルを通じて安全なシングルサインオン、アクセス許可管理、監査が可能になり、組織の ID とアクセスのガバナンスが合理化されます。

**Topics**
+ [

## IAM アイデンティティセンターとは
](#cli-configure-sso-concepts-what)
+ [

## 用語
](#cli-configure-sso-terms)
+ [

## IAM アイデンティティセンターの仕組み
](#cli-configure-sso-concepts-process)
+ [

## その他のリソース
](#cli-configure-sso-concepts-resources)

## IAM アイデンティティセンターとは
<a name="cli-configure-sso-concepts-what"></a>

IAM アイデンティティセンターは、複数の AWS アカウントやビジネスアプリケーションへのアクセスを一元管理できるクラウドベースの Identity and Access Management (IAM) サービスです。

このサービスには、権限があるユーザーが既存の企業認証情報を使用して、アクセス許可が付与されている AWS アカウントとアプリケーションにアクセスできるユーザーポータルが用意されています。これにより、組織は一貫したセキュリティポリシーを適用し、ユーザーアクセス管理を効率化できます。

使用する IdP に関係なく、IAM Identity Center によってこれらの区別はなくなります。例えば、ブログ記事「[The Next Evolution in IAM Identity Center](https://aws.amazon.com/blogs/aws/the-next-evolution-in-aws-single-sign-on/)」で説明されているように、Microsoft Azure AD を接続できます。

**注記**  
アカウント ID とロールを使用しないベアラー認証の使用方法については、Amazon CodeCatalyst ユーザーガイドの「[CodeCatalyst で AWS CLI を使用するためのセットアップ](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)」を参照してください。

## 用語
<a name="cli-configure-sso-terms"></a>

IAM アイデンティティセンターを使用する際によく使われる用語は次のとおりです。

**ID プロバイダー (IdP)**  
IAM アイデンティティセンター、Microsoft Azure AD、Okta、または独自の企業ディレクトリサービスなどの ID 管理システム。

**AWS IAM アイデンティティセンター**  
IAM アイデンティティセンターは、AWS 所有の IdP サービスです。以前は AWS Single Sign-On と呼ばれてたもので、SDK とツールには下位互換性のために `sso` API 名前空間が保持さています。詳細については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[What is IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed)」(IAM Identity Center とは) を参照してください。

**AWS アクセスポータル URL、SSO 開始 URL、開始 URL**  
認可済み AWS アカウント、サービス、リソースにアクセスするための組織固有の IAM Identity Center URL。

**発行者 URL**  
承認済み AWS アカウント、サービス、リソースにプログラムによりアクセスするための組織固有の IAM Identity Center 発行者 URL。AWS CLI のバージョン 2.22.0 以降では、発行者 URL は開始 URL と置き換えて使用できます。

**フェデレーション**  
シングルサインオン (SSO) を有効にするために IAM アイデンティティセンターと ID プロバイダー間に信頼を確立するプロセス。

**AWS アカウント**  
AWS IAM アイデンティティセンター を通じてユーザーにアクセスを付与する AWS アカウント。

**アクセス許可セット、AWS 認証情報、認証情報、sigv4 認証情報**  
AWS のサービス へのアクセスを付与するためにユーザーまたはグループに割り当てることができる事前定義されたアクセス許可のコレクション。

**登録スコープ、アクセススコープ、スコープ**  
スコープは、アプリケーションによるユーザーアカウントへのアクセスを制限するための OAuth 2.0 のメカニズムです。アプリケーションは 1 つ以上のスコープをリクエストでき、アプリケーションに発行されたアクセストークンは付与されたスコープに限定されます。スコープの詳細については、*IAM Identity Center ユーザーガイド*の「[アクセススコープ](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept) 」を参照してください。

**トークン、更新トークン、アクセストークン**  
トークンは、認証時に発行される一時的なセキュリティ認証情報です。これらのトークンには、ID と付与されたアクセス許可に関する情報が含まれています。  
IAM アイデンティティセンターのポータルを通じて AWS リソースやアプリケーションにアクセスするときに、トークンが AWS に提示され、認証と承認が行われます。これにより、AWS はユーザーの ID を確認し、ユーザーが要求したアクションを実行するために必要なアクセス許可をユーザーが持っていることを確認できます。  
認証トークンは、セッション名に基づいた JSON ファイル名を使用して、`~/.aws/sso/cache` ディレクトリの下のディスクにキャッシュされます。

**セッション**  
IAM アイデンティティセンターのセッションとは、ユーザーが認証され、AWS リソースやアプリケーションへのアクセスが承認されている期間を指します。ユーザーが IAM アイデンティティセンターのポータルにサインインすると、セッションが確立され、ユーザーのトークンは指定された期間にわたり有効になります。セッション時間に詳細については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[Set session duration](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)」を参照してください。  
セッション中は、セッションがアクティブな状態である限り、再認証をする必要なく、異なる AWS アカウントやアプリケーション間を移動できます。セッションの有効期限が切れた場合は、もう一度サインインしてアクセスを更新してください。  
IAM アイデンティティセンターのセッションは、ユーザーアクセス認証情報の有効期限を制限することでセキュリティのベストプラクティスを実施しながら、シームレスなユーザーエクスペリエンスを提供するのに役立ちます。

**Proof Key for Code Exchange (PKCE) を使用した認可コードの付与**  
バージョン 2.22.0 以降、Proof Key for Code Exchange (PKCE) は、ブラウザを搭載したデバイス向けの OAuth 2.0 認証付与フローです。PKCE は、ウェブブラウザを搭載したデスクトップやモバイルデバイスから AWS リソースへのアクセスを認証し、同意を得るためのシンプルで安全な方法です。これはデフォルトの認可動作です。PKCE の詳細については、*AWS IAM アイデンティティセンター ユーザーガイド*の「[PKCE を使用した認可コード付与](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#auth-code-grant-pkce)」を参照してください。

**デバイス認可付与**  
ウェブブラウザの有無にかかわらず、デバイスで使用可能な OAuth 2.0 認証付与フロー。セッション期間の設定の詳細については、*AWS IAM アイデンティティセンター ユーザーガイド*の「[デバイス認可付与](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#device-auth-grant)」を参照してください。

## IAM アイデンティティセンターの仕組み
<a name="cli-configure-sso-concepts-process"></a>

IAM アイデンティティセンターは、IAM アイデンティティセンター、Microsoft Azure AD、Okta など、組織の ID プロバイダーと統合されます。ユーザーはこの ID プロバイダーに対して認証を行い、IAM アイデンティティセンターはそれらの ID を AWS 環境内の適切なアクセス許可とアクセスにマッピングします。

次の IAM アイデンティテセンターのワークフローは、IAM アイデンティティセンターを使用するように AWS CLI が既に設定されていることを前提としています。

1. 任意のターミナルで `aws sso login` コマンドを実行します。

1. AWS アクセスポータル にサインインし、新しいセッションを開始します。
   + 新しいセッションを開始すると、キャッシュされている更新トークンとアクセストークンが届きます。
   + 既にアクティブなセッションがある場合、既存のセッションが再利用され、既存のセッションの有効期限が切れると期限切れになります。

1. `config` ファイルで設定したプロファイルに基づいて、IAM アイデンティティセンターは適切なアクセス許可セットを引き受け、関連する AWS アカウントおよびアプリケーションへのアクセスを付与します。

1. AWS CLI、SDK、およびツールは引き受けた IAM ロールを使用して、そのセッションの有効期限が切れるまで、Amazon S3 バケットの作成などの AWS のサービスを呼び出します。

1. IAM アイデンティティセンターから取得したアクセストークンは 1 時間ごとにチェックされ、更新トークンを使用して自動的に更新されます。
   + アクセストークンの有効期限が切れると、SDK やツールは更新トークンを使用して新しいアクセストークンを取得します。そして、これらのトークンのセッション期間を比較し、更新トークンの有効期限が切れていない場合は、IAM アイデンティティセンターが新しいアクセストークンを提供します。
   + 更新トークンの有効期限が切れている場合は、新しいアクセストークンは提供されず、セッションは終了します。

1. セッションは、更新トークンの有効期限が切れるか、`aws sso logout` コマンドを使用して手動でログアウトすると終了します。キャッシュされた認証情報は削除されます。IAM アイデンティティセンターを使用してサービスへのアクセスを継続するには、`aws sso login` コマンドを使用して新しいセッションを開始する必要があります。

## その他のリソース
<a name="cli-configure-sso-concepts-resources"></a>

その他のリソースは次のとおりです。
+ [AWS CLI を使用した IAM アイデンティティセンター認証の設定](cli-configure-sso.md)
+ [チュートリアル: IAM アイデンティティセンターを使用して AWS CLI で Amazon S3 コマンドを実行する](cli-configure-sso-tutorial.md)
+ [AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)
+ [Configuration and credential file settings in the AWS CLI](cli-configure-files.md)
+ [https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/sso/login.html](https://docs.aws.amazon.com/cli/latest/reference/sso/login.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html) (*AWS CLI バージョン 2 リファレンス*)
+ 「*Amazon CodeCatalyst ユーザーガイド*」の「[Setting up to use the AWS CLI with CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)」
+ 「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[IAM Identity Center rename](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed)」
+ 「*IAM アイデンティティセンターのユーザーガイド*」の [OAuth 2.0 アクセススコープ](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)
+ 「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[Set session duration](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)」
+ 「*IAM アイデンティティセンターのユーザーガイド*」の[入門チュートリアル](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)

# チュートリアル: IAM アイデンティティセンターを使用して AWS CLI で Amazon S3 コマンドを実行する
<a name="cli-configure-sso-tutorial"></a>

このトピックでは、現在の AWS IAM アイデンティティセンター (IAM アイデンティティセンター) を使用してユーザーを認証し、 Amazon Simple Storage Service (Amazon S3) の AWS Command Line Interface (AWS CLI) コマンドを実行するための認証情報を取得するように AWS CLI を設定する方法について説明します。

**Topics**
+ [

## ステップ 1: IAM アイデンティティセンターを使用した認証
](#cli-configure-sso-tutorial-authentication)
+ [

## ステップ 2: IAM アイデンティティセンターの情報を収集する
](#cli-configure-sso-tutorial-gather)
+ [

## ステップ 3: Amazon S3 バケットを作成する
](#cli-configure-sso-tutorial-buckets)
+ [

## ステップ 4: AWS CLI をインストールする
](#cli-configure-sso-tutorial-install)
+ [

## ステップ 5: AWS CLI プロファイルを設定する
](#cli-configure-sso-tutorial-configure)
+ [

## ステップ 6: IAM アイデンティティセンターにログインする
](#cli-configure-sso-tutorial-login.title)
+ [

## ステップ 7: Amazon S3 コマンドを実行する
](#cli-configure-sso-tutorial-commands)
+ [

## ステップ 8: IAM アイデンティティセンターからログアウトする
](#cli-configure-sso-tutorial-logout)
+ [

## ステップ 9: リソースをクリーンアップする
](#cli-configure-sso-tutorial-cleanup)
+ [

## トラブルシューティング
](#cli-configure-sso-tutorial-tshoot)
+ [

## その他のリソース
](#cli-configure-sso-tutorial-resources.title)

## ステップ 1: IAM アイデンティティセンターを使用した認証
<a name="cli-configure-sso-tutorial-authentication"></a>

IAM アイデンティティセンター内で SSO 認証へのアクセスを取得します。AWS 認証情報にアクセスするには、次のいずれかの方法を選択します。

### IAM Identity Center 経由のアクセスを確立していません
<a name="idc-access"></a>

「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[開始方法](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)」の手順に従います。このプロセスでは、IAM Identity Center をアクティブ化して、管理者ユーザーを作成し、適切な最小特権のアクセス許可セットを追加します。

**注記**  
最小特権権のアクセス許可を適用するアクセス許可セットを作成します。雇用主がこの目的のためにカスタムアクセス許可セットを作成していない限り、定義済みの `PowerUserAccess` アクセス許可セットを使用することをお勧めします。

ポータルを終了し、AWS アカウントにもう一度サインインすると、、プログラムによるアクセスの詳細、および `Administrator` または `PowerUserAccess` のオプションが表示されます。SDK を使用する場合は `PowerUserAccess` を選択します。

### 雇用主が管理するフェデレーション ID プロバイダー (Azure AD や Okta など) を通じて AWS へのアクセス権を既に持っています。
<a name="federated-access"></a>

ID プロバイダーのポータルから AWS にサインインします。クラウド管理者から `PowerUserAccess` (開発者) アクセス許可を付与されている場合は、アクセス権のある AWS アカウント とアクセス許可セットが表示されます。アクセス許可セットの名前の横に、そのアクセス許可セットを使用してアカウントに手動またはプログラムでアクセスするオプションが表示されます。

カスタム実装では、アクセス許可セット名が異なるなど、エクスペリエンスが異なる場合があります。どのアクセス許可セットを使用すればよいかわからない場合は、IT チームにお問い合わせください。

### 雇用主が管理する AWS アクセスポータルを通じて AWS へのアクセス権を既に持っています。
<a name="accessportal-access"></a>

AWS アクセスポータルを通じて AWS にサインインします。クラウド管理者から `PowerUserAccess` (開発者) アクセス許可を付与されている場合は、アクセス権のある AWS アカウント とアクセス許可セットが表示されます。アクセス許可セットの名前の横に、そのアクセス許可セットを使用してアカウントに手動またはプログラムでアクセスするオプションが表示されます。

### 雇用主が管理するフェデレーションカスタム ID プロバイダーを通じて AWS へのアクセス権を既に持っています。
<a name="customfederated-access"></a>

サポートについては、IT チームにお問い合わせください。

## ステップ 2: IAM アイデンティティセンターの情報を収集する
<a name="cli-configure-sso-tutorial-gather"></a>

AWS へのアクセスを取得したら、次を実行して IAM アイデンティティセンターの情報を収集します。

1. `aws configure sso` の実行に必要な `SSO Start URL` と `SSO Region` の値を収集する

   1. AWS アクセスポータルで、開発に使用するアクセス許可セットを選択し、**[アクセスキー]** リンクを選択します。

   1. **[認証情報の取得]** ダイアログボックスで、オペレーティングシステムに一致するタブを選択します。

   1. `SSO Start URL` と `SSO Region` の値の取得に使用する **[IAM Identity Center 認証情報]** メソッドを選択します。

1. または、バージョン 2.22.0 以降では、開始 URL の代わりに新しい発行者 URL を使用できます。発行者 URL は AWS IAM アイデンティティセンター コンソールの次のいずれかの場所にあります。
   + **[ダッシュボード]** ページでは、発行者 URL は設定の概要にあります。
   + **[設定]** ページでは、発行者 URL は **ID ソース**の設定にあります。

1. どのスコープ値を登録するかについては、「*IAM Identity Center ユーザーガイド*」の「[OAuth 2.0 アクセススコープ](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)」を参照してください。

## ステップ 3: Amazon S3 バケットを作成する
<a name="cli-configure-sso-tutorial-buckets"></a>

AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

このチュートリアルでは、後でリストで取得するバケットをいくつか作成します。

## ステップ 4: AWS CLI をインストールする
<a name="cli-configure-sso-tutorial-install"></a>

お使いのオペレーティングシステムの手順に従って、AWS CLI をインストールします。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」を参照してください。

インストールが完了したら、任意のターミナルを開き、次のコマンドを実行してインストールを確認します。これにより、AWS CLI のインストール済みバージョンが表示されます。

```
$ aws --version
```

## ステップ 5: AWS CLI プロファイルを設定する
<a name="cli-configure-sso-tutorial-configure"></a>

次のいずれかの方法でプロファイルを設定します

### `aws configure sso` ウィザードでプロファイルを設定する
<a name="li-configure-sso-tutorial-configure-wizard"></a>

`config` ファイルの `sso-session` セクションを使用して、SSO アクセストークンを取得するための設定変数をグループ化します。これらを使用して、AWS 認証情報を取得できます。次の設定を使用します。
+ **(必須)** `sso\$1start\$1url`
+ **(必須)** `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

`sso-session` セクションを定義し、プロファイルに関連付けます。`sso_region` および `sso_start_url` の設定は、`sso-session` セクション内で設定する必要があります。SDK が SSO 認証情報をリクエストできるように、通常、`sso_account_id` と `sso_role_name` は `profile`セクション内に設定する必要があります。

次の例では、SSO 認証情報をリクエストするように SDK を設定し、トークンの自動更新をサポートしています。

```
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

デュアルスタックのサポートには、デュアルスタック SSO 開始 URL 形式を使用できます。

```
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

バージョン 2.22.0 以降の AWS CLI では、Proof Key for Code Exchange (PKCE) 認可がデフォルトで使用され、ブラウザを搭載したデバイスで必須となります。デバイス認可を引き続き使用するには、`--use-device-code` オプションを追加します。

```
$ aws configure sso --use-device-code
```

### `config` ファイルを使用した手動設定
<a name="cli-configure-sso-tutorial-configure-manual"></a>

`config` ファイルの `sso-session` セクションを使用して、SSO アクセストークンを取得するための設定変数をグループ化します。これらを使用して、AWS 認証情報を取得できます。次の設定を使用します。
+ **(必須)** `sso\$1start\$1url`
+ **(必須)** `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

`sso-session` セクションを定義してプロファイルに関連付けます。`sso_region` と `sso_start_url` は `sso-session` セクション内に設定する必要があります。SDK が SSO 認証情報をリクエストできるように、通常、`sso_account_id` と `sso_role_name` は `profile`セクション内に設定する必要があります。

次の例では、SSO 認証情報をリクエストするように SDK を設定し、トークンの自動更新をサポートしています。

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

デュアルスタックをサポートするには、デュアルスタック SSO 開始 URL 形式を使用します。

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_registration_scopes = sso:account:access
```

認証トークンは、セッション名に基づいたファイル名を使用して、`~/.aws/sso/cache` ディレクトリの下のディスクにキャッシュされます。

## ステップ 6: IAM アイデンティティセンターにログインする
<a name="cli-configure-sso-tutorial-login.title"></a>

**注記**  
サインインプロセス中に、データへのアクセスを AWS CLI に許可するように求められる場合があります。AWS CLI は SDK for Python 上に構築されているため、アクセス許可メッセージには 名前 `botocore` のさまざまなバリエーションが含まれる場合があります。

IAM アイデンティティセンターの認証情報を取得してキャッシュするには、AWS CLI の次のコマンドを実行してデフォルトのブラウザを開き、IAM アイデンティティセンターのログインを確認します。

```
$ aws sso login --profile my-dev-profile
```

バージョン 2.22.0 以降では、PKCE 認可はデフォルトです。サインインにデバイス認可を使用するには、`--use-device-code` オプションを追加します。

```
$ aws sso login --profile my-dev-profile --use-device-code
```

## ステップ 7: Amazon S3 コマンドを実行する
<a name="cli-configure-sso-tutorial-commands"></a>

前に作成したバケットを一覧表示するには、[https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) コマンドを使用します。次の例では、すべての Amazon S3 バケットを一覧表示します。

```
$ aws s3 ls
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2
```

## ステップ 8: IAM アイデンティティセンターからログアウトする
<a name="cli-configure-sso-tutorial-logout"></a>

IAM アイデンティティセンターのプロファイルの使用が完了したら、次のコマンドを実行してキャッシュされた認証情報を削除します。

```
$ aws sso logout
Successfully signed out of all SSO profiles.
```

## ステップ 9: リソースをクリーンアップする
<a name="cli-configure-sso-tutorial-cleanup"></a>

このチュートリアルが完了したら、Amazon S3 バケットなど、このチュートリアルで作成し、不要になったリソースをクリーンアップします。

## トラブルシューティング
<a name="cli-configure-sso-tutorial-tshoot"></a>

AWS CLI の使用中に問題が発生した場合の一般的なトラブルシューティングのステップについては、「[AWS CLI のエラーのトラブルシューティング](cli-chap-troubleshooting.md)」を参照してください。

## その他のリソース
<a name="cli-configure-sso-tutorial-resources.title"></a>

その他のリソースは次のとおりです。
+ [AWS CLI の AWS IAM アイデンティティセンター の概念](cli-configure-sso-concepts.md)
+ [AWS CLI を使用した IAM アイデンティティセンター認証の設定](cli-configure-sso.md)
+ [AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)
+ [Configuration and credential file settings in the AWS CLI](cli-configure-files.md)
+ [https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/sso/login.html](https://docs.aws.amazon.com/cli/latest/reference/sso/login.html) (*AWS CLI バージョン 2 リファレンス*)
+ [https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html) (*AWS CLI バージョン 2 リファレンス*)
+ 「*Amazon CodeCatalyst ユーザーガイド*」の「[Setting up to use the AWS CLI with CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)」
+ 「*IAM アイデンティティセンターのユーザーガイド*」の [OAuth 2.0 アクセススコープ](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)
+ 「*IAM アイデンティティセンターのユーザーガイド*」の[入門チュートリアル](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)

# Authenticating with short-term credentials for the AWS CLI
<a name="cli-authentication-short-term"></a>

セッション期間の長いオプションで [IAM Identity Center 認証](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html)を使用するように SDK またはツールを設定することをお勧めします。ただし、AWS アクセスポータルにある一時的な認証情報をコピーして使用することもできます。有効期限が切れたら、新しい認証情報をコピーする必要があります。一時的な認証情報は、プロファイルで使用することも、システムプロパティや環境変数の値として使用することもできます。

1. [AWS アクセスポータルにサインインします](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosignin.html)。

1. [次の手順](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html)に従って、AWS アクセスポータルから IAM ロール認証情報をコピーします。

   1. リンク先の手順のステップ 2 で、AWS アカウントと、開発ニーズに合ったアクセスを許可する IAM ロールの名前を選択します。通常、このロールには **PowerUserAccess** や **Developer** などの名前が付いています。

   1. ステップ 4 で、**[AWS 認証情報ファイルにプロファイルを追加]** オプションを選択し、内容をコピーします。

1. 共有 `credentials` ファイルを作成するか、開きます。このファイルは、`~/.aws/credentials` Linux および macOS システム、および `%USERPROFILE%\.aws\credentials` Windows 上にあります。詳細については、「[Configuration and credential file settings in the AWS CLI](cli-configure-files.md)」を参照してください。

1. 共有 `credentials` ファイルに次のテキストを追加します。サンプル値を、コピーした認証情報に置き換えます。

   ```
   [default] 
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE 
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
   ```

1. 共有 `config` ファイルに、希望するデフォルトのリージョンと形式を追加します。

   ```
   [default]
   region=us-west-2
   output=json
   
   [profile user1]
   region=us-east-1
   output=text
   ```

SDK は、サービスクライアントを作成するときに、これらの一時的な認証情報にアクセスしてリクエストごとに使用します。ステップ 2a で選択した IAM ロールの設定により、[一時的な認証情報の有効期間](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)が決まります。最大期間は 12 時間です。

認証情報が期限切れになるたびに、これらのステップを繰り返します。

# AWS CLI での IAM ロールの使用
<a name="cli-configure-role"></a>

[AWS Identity and Access Management (IAM) ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)は、ユーザーが追加の (または異なる) アクセス許可を取得するか、または異なる AWS アカウントでアクションを実行するアクセス許可を取得するこをできる認可ツールです。

**Topics**
+ [

## 前提条件
](#cli-role-prereqs)
+ [

## IAM ロール使用の概要
](#cli-role-overview)
+ [

## ロールの設定と使用
](#cli-role-prepare)
+ [

## 多要素認証を使用する
](#cli-configure-role-mfa)
+ [

## クロスアカウントロールと外部 ID
](#cli-configure-role-xaccount)
+ [

## 監査を容易にするためのロールセッション名の指定
](#cli-configure-role-session-name)
+ [

## ウェブ ID を使用したロールの継承
](#cli-configure-role-oidc)
+ [

## キャッシュされた認証情報のクリア
](#cli-configure-role-cache)

## 前提条件
<a name="cli-role-prereqs"></a>

これらの `iam` コマンドを使用するには、AWS CLI をインストールして設定する必要があります。これには、ロールが別の認証情報メソッドとペアになっていると仮定して設定されたプロファイルの設定が含まれます。詳細については、[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md) を参照してください。

## IAM ロール使用の概要
<a name="cli-role-overview"></a>

IAM ロールを使用するように AWS Command Line Interface (AWS CLI) を設定するには、`~/.aws/config` ファイルでロールのプロファイルを定義します。

次の例は `marketingadmin` という名前のロールプロファイルを示しています。`--profile marketingadmin` を使用して (または [AWS\$1PROFILE 環境変数](cli-configure-envvars.md)でこれを指定して) コマンドを実行する場合、AWS CLI は個別のプロファイル `user1` で定義された認証情報を使用して Amazon リソースネーム (ARN) `arn:aws:iam::123456789012:role/marketingadminrole` のロールを引き受けます。このロールに割り当てられたアクセス権限で許可される任意のオペレーションを実行することができます。

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
source_profile = user1
```

その後、このロールを使用するアクセス許可があるユーザー認証情報を含む、別の名前付きプロファイルを示す `source_profile` を指定できます。前の例では、`marketingadmin` プロファイルは `user1` プロファイル内の認証情報を使用しています。AWS CLI コマンドがプロファイル `marketingadmin` を使用するように指定すると、AWS CLI はリンクされた `user1` プロファイルの認証情報を自動的に検索し、それらを使用して、指定された IAM ロールの一時的な認証情報をリクエストします。CLI では、バックグラウンドで [sts: AssumeRole ](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) オペレーションを使用してこれを実現します。これらの一時的な認証情報は次に、リクエストされた AWS CLI コマンドを実行するために使用されます。指定されたロールには、リクエストされた AWS CLI コマンドの実行を許可する IAM 許可ポリシーがアタッチされている必要があります。

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたは Amazon Elastic Container Service (Amazon ECS) コンテナ内から AWS CLI コマンドを実行するには、インスタンスプロファイルまたはコンテナにアタッチされた IAM ロールを使用できます。プロファイルを指定しない、または環境変数を設定しない場合、そのロールが直接使用されます。これにより、存続期間の長いアクセスキーをインスタンスで保存することを回避できます。これらのインスタンスまたはコンテナのロールは、別のロールの認証情報を取得するためにのみ使用できます。これを行うには、`credential_source` (`source_profile` の代わりに) を使用して、認証情報を検索する方法を指定します。`credential_source` 属性では、以下の値がサポートされます。
+ `Environment` - 環境変数からソース認証情報の取得。
+ `Ec2InstanceMetadata` - Amazon EC2 インスタンスプロファイルにアタッチされた IAM ロールの使用。
+ `EcsContainer` - Amazon ECS コンテナにアタッチされた IAM ロールの使用。

次の例は、Amazon EC2 インスタンスプロファイルを参照される場合に使われる同じ `marketingadminrole` ロールを示しています。

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
```

ロールを呼び出すとき、多要素認証や外部 ID (サードパーティー企業がクライアントのリソースにアクセスするために使用する) の使用などを必須とする追加オプションがあります。AWS CloudTrail ログでより簡単に監査できる一意のロールセッション名を指定することもできます。

## ロールの設定と使用
<a name="cli-role-prepare"></a>

IAM ロールを指定するプロファイルを使用してコマンドを実行すると、AWS CLI はソースプロファイルの認証情報を使用して AWS Security Token Service (AWS STS) を呼び出し、指定したロールの一時的な認証情報を要求します。ソースプロファイルのユーザーは、指定されたプロファイルのロール用の `sts:assume-role` を呼び出すアクセス許可を持っている必要があります。ロールには、ソースプロファイルのユーザーがこのロールを使用できる信頼関係が必要です。ロールの一時的な認証情報を取得して使用するプロセスを、一般に*ロールを引き受ける*と呼びます。

「*AWS Identity and Access Management ユーザーガイド*」の「[IAM ユーザーにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)」にある手順を実行することによって、ユーザーに引き受けさせたいアクセス許可を持つロールを IAM で作成できます。ロールとソースプロファイルの ユーザーが同じアカウントに存在する場合、ロールの信頼関係を設定するときに、独自のアカウント ID を入力することができます。

ロールを作成した後、 ユーザーが引き受けることを許可するように信頼関係を変更します。

次の例では、ロールにアタッチできる信頼ポリシーを示します。このポリシーは、アカウント「123456789012」の任意のユーザーがロールを引き受けることを許可します (そのアカウントの管理者が明示的にユーザーに「`sts:AssumeRole`」のアクセス許可を付与した**場合**)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

信頼ポリシーは、実際にはアクセス許可を付与しません。アカウントの管理者は、適切なアクセス許可を持つポリシーをアタッチすることによって、ロールを引き受けるアクセス許可を個々のユーザーに委任する必要があります。次の例では、ユーザーに付与を行い、ユーザーが `marketingadminrole` ロールのみを引き受けることを許可するポリシーを示しています。ロールを引き受けるためのユーザーアクセスの付与の詳細については、*IAM ユーザーガイド*の「[ロールを切り替えるためのユーザーアクセス許可の付与](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/marketingadminrole"
    }
  ]
}
```

------

ユーザーには、ロールプロファイルを使用して AWS CLI コマンドを実行するための追加のアクセス許可は必要ありません。代わりに、コマンドを実行するためのアクセス権限は、*ロール*にアタッチされたアクセス権限によって提供されます。アクセス許可ポリシーをロールにアタッチして、どの AWS リソースに対してどのアクションを実行できるかを指定します。ロールへのアクセス許可のアタッチ (ユーザーと同じ機能) の詳細については、「IAM ユーザーガイド」の「[IAM ユーザーのアクセス許可の変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)」を参照してください。

ロールプロファイル、ロールのアクセス許可、ロールの信頼関係およびユーザーアクセス許可が正しく設定されたので、コマンドラインで `--profile` オプションを呼び出してロールを使用できます。例えば、以下の例では、このトピックの冒頭で定義された`ls` ロールにアタッチされたアクセス権限を使用して Amazon S3 `marketingadmin` コマンドを呼び出します。

```
$ aws s3 ls --profile marketingadmin
```

いくつかの呼び出しにロールを使用するには、コマンドラインから、現在のセッションに対して `AWS_PROFILE` 環境変数を設定することができます。この環境変数が定義されている場合、各コマンドで `--profile` オプションを指定する必要はありません。

**Linux または macOS**

```
$ export AWS_PROFILE=marketingadmin
```

**Windows**:

```
C:\> setx AWS_PROFILE marketingadmin
```

IAM ユーザー、グループ、ロール、ベストプラクティスの詳細については、「*IAM ユーザーガイド*」の「[IAM ID (ユーザー、グループ、ロール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」および「[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id-roles.html)」を参照してください。

## 多要素認証を使用する
<a name="cli-configure-role-mfa"></a>

セキュリティを高めるには、ロールプロファイルを使用して呼び出しを試みるときに、多要素認証 (MFA) デバイスから生成された一回限りのキー、U2F デバイス、またはモバイルアプリケーションを指定するようにユーザーに要求することができます。

まず、MFA を要求するために IAM ロールの信頼関係を変更することを選択できます。これにより、すべてのユーザーは最初に MFA を使用して認証しなくてはロールを使用できなくなります。例として、次の例の `Condition` 行を参照してください。このポリシーでは、`anika` という名前のユーザーが、MFA を使用して認証した場合にのみ、ポリシーがアタッチされているロールを引き受けることを許可しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" },
      "Action": "sts:AssumeRole",
      "Condition": { "Bool": { "aws:multifactorAuthPresent": true } }
    }
  ]
}
```

------

次に、ロールプロファイルに、ユーザーの MFA デバイスの ARN を指定する行を追加します。次のサンプル `config` ファイルエントリでは、2 つのロールプロファイルを示しています。どちらもユーザー `anika` のアクセスキーを使用してロール `cli-role` の一時的な認証情報をリクエストします。ユーザー `anika` には、ロールの信頼ポリシーによって付与されたロールを引き受けるためのアクセス権限があります。

```
[profile role-without-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile=cli-user

[profile role-with-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile = cli-user
mfa_serial = arn:aws:iam::128716708097:mfa/cli-user

[profile cli-user]
region = us-west-2
output = json
```

この `mfa_serial` 設定では、次に示すような ARN またはハードウェア MFA トークンのシリアル番号を使用できます。

最初のプロファイル `role-without-mfa` では、 MFA は不要です。ただし、前の例でロールにアタッチされた信頼ポリシーが MFA を必要とするため、このプロファイルを使用してコマンドを実行しても失敗します。

```
$ aws iam list-users --profile role-without-mfa

An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied
```

2 番目のプロファイルエントリ `role-with-mfa` は、使用する MFA デバイスを識別します。ユーザーがこのプロファイルを使用した AWS CLI コマンドの実行を試行すると、AWS CLI が MFA デバイスによって提供されるワンタイムパスワード (OTP) の入力を求めるプロンプトをユーザーに表示します。MFA 認証が成功すると、コマンドによってリクエストされたオペレーションが実行されます。OTP は画面に表示されません。

```
$ aws iam list-users --profile role-with-mfa
Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user:
{
    "Users": [
        {
            ...
```

## クロスアカウントロールと外部 ID
<a name="cli-configure-role-xaccount"></a>

クロスアカウントロールとしてロールを設定することにより、 ユーザーが別のアカウントに属しているロールを使用できるようにすることができます。ロールの作成時に、[「IAM ユーザーに権限を委任するロールを作成する」](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)の説明に従って、ロールタイプを **[別の AWS アカウント]** に設定します。必要に応じて、[**MFA が必要**] を選択します。「**MFA が必要**」設定では、 [多要素認証を使用する](#cli-configure-role-mfa) の説明に従って、信頼関係の適切な条件を設定します。

[外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) を使用して、複数のアカウント間でロールを使用できるユーザーをさらに制御する場合は、ロールプロファイルにも `external_id` パラメータを追加する必要があります。これは通常、もう一方のアカウントが社外または組織外のユーザーによって制御される場合にのみ使用します。

```
[profile crossaccountrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
external_id = 123456
```

## 監査を容易にするためのロールセッション名の指定
<a name="cli-configure-role-session-name"></a>

ロールが多くの個人間で共有されると、監査はより難しくなります。そこで、呼び出された各オペレーションを、アクションを呼び出した個人に関連付けることが必要になります。ただし、個人がロールを使用する場合、個人によるロールの引き受けはオペレーションの呼び出しとは別のアクションであるため、この 2 つを手動で相互に関連付ける必要があります。

ユーザーがロールを引き受けるときに一意のロールセッション名を指定すれば、この手順を簡素化できます。これを行うには、ロールを指定する `role_session_name` ファイルの各名前付きプロファイルに `config` パラメータを追加します。`role_session_name` 値が `AssumeRole` オペレーションに渡され、ロールセッションの ARN の一部になります。また、ログに記録されたすべてのオペレーションの AWS CloudTrail ログにも含まれます。

例えば、次のようにロールベースのプロファイルを作成できます。

```
[profile namedsessionrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
role_session_name = Session_Maria_Garcia
```

これにより、ロールセッションに次の ARN が付与されます。

```
arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia
```

また、すべての AWS CloudTrail ログには、各オペレーションでキャプチャされた情報にロールセッション名が含まれます。

## ウェブ ID を使用したロールの継承
<a name="cli-configure-role-oidc"></a>

プロファイルを設定して、AWS CLI が[ウェブ ID フェデレーションと Open ID Connect (OIDC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) を使用してロールを引き受ける必要があることを示すことができます。これをプロファイルで指定すると、AWS CLI は自動的に対応する AWS STS `AssumeRoleWithWebIdentity` 呼び出しを行います。

**注記**  
IAM ロールを使用するプロファイルを指定すると、AWS CLI は適切な呼び出しを行って、一時的な認証情報を取得します。これらの認証情報は `~/.aws/cli/cache` に保存されます。同じプロファイルを指定するそれ以降の AWS CLI コマンドでは、有効期限が切れるまで、キャッシュされた一時的な認証情報が使用されます。有効期限が切れると、AWS CLI は自動的に認証情報を更新します。

ウェブ ID フェデレーションを使用して一時的な認証情報を取得、使用するには、共有プロファイルで以下の設定値を指定します。

[role\$1arn](#cli-configure-role)  
引き受けるロールの ARN を指定します。

web\$1identity\$1token\$1file  
OAuth 2.0 アクセストークンまたは ID プロバイダによって提供される OpenID Connect ID トークンを含むファイルへのパスを指定します。AWS CLI はこのファイルをロードし、その内容を `WebIdentityToken` 引数として `AssumeRoleWithWebIdentity` オペレーションに渡します。

[role\$1session\$1name](#cli-configure-role-session-name)  
このロール継承セッションに適用されるオプションの名前を指定します。

ウェブ ID を使用したロールの継承プロファイルの設定に必要な最小限の設定例を次に示します。

```
# In ~/.aws/config

[profile web-identity]
role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume
web_identity_token_file=/path/to/a/token
```

この設定は、[環境変数](cli-configure-envvars.md)を使用して提供することもできます。

AWS\$1ROLE\$1ARN  
引き受けるロールの ARN。

AWS\$1WEB\$1IDENTITY\$1TOKEN\$1FILE  
ウェブ ID トークンファイルへのパス。

AWS\$1ROLE\$1SESSION\$1NAME  
このロール継承セッションで適用される名前です。

**注記**  
これらの環境変数は、現在、ウェブ ID プロバイダーのロールを継承する場合にのみ適用されます。これらは、AssumeRole プロバイダーの設定には適用されません。

## キャッシュされた認証情報のクリア
<a name="cli-configure-role-cache"></a>

ロールを使用する際、AWS CLI は、有効期限が切れるまで一時的な認証情報をキャッシュします。次回この一時的な認証情報を使用しようとすると、AWS CLI はユーザーに代わってこの情報の更新を試みます。

ロールの一時的な認証情報が[取り消された場合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)、それらは自動的には更新されず、使用しようとすると失敗します。ただし、キャッシュを削除して、AWS CLI で新しい認証情報を取得するように強制することができます。

**Linux または macOS**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**:

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# Authenticating using IAM user credentials for the AWS CLI
<a name="cli-authentication-user"></a>

**警告**  
セキュリティリスクを避けるため、専用ソフトウェアを開発するときや実際のデータを扱うときは、IAM ユーザーを認証に使用しないでください。代わりに、[AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) などの ID プロバイダーとのフェデレーションを使用してください。

このセクションでは、IAM ユーザーで基本的な設定を構成する方法について説明します。これらには、`config` ファイルと `credentials` ファイルを使用したセキュリティ認証情報が含まれます。代わりに AWS IAM アイデンティティセンター の設定手順を参照するには、「[AWS CLI を使用した IAM アイデンティティセンター認証の設定](cli-configure-sso.md)」を参照してください。

**Contents**
+ [

## ステップ 1: IAM ユーザーを作成する
](#cli-authentication-user-create)
+ [

## ステップ 2: アクセスキーを取得する
](#cli-authentication-user-get)
+ [

## ステップ 3: AWS CLI を設定する
](#cli-authentication-user-configure.title)
  + [

### `aws configure`の使用
](#cli-authentication-user-configure-wizard)
  + [

### .CSV ファイルによるアクセスキーのインポート
](#cli-authentication-user-configure-csv)
  + [

### `config` ファイルと `credentials` ファイルの直接編集
](#cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file)
+ [

## (オプション) IAM ユーザー認証情報での多要素認証の使用
](#cli-authentication-user-configure-csv.titlecli-authentication-user-mfa)

## ステップ 1: IAM ユーザーを作成する
<a name="cli-authentication-user-create"></a>

「*IAM ユーザーガイド*」の「[IAM ユーザーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)」の手順に従って IAM ユーザーを作成します。
+ **[アクセス許可オプション]** で、このユーザーにアクセス許可を割り当てる方法として **[ポリシーを直接アタッチする]** を選択します。
+ ほとんどの「開始方法」 SDK チュートリアルでは、Amazon S3 サービスを例として使用しています。アプリケーションに Amazon S3 へのフルアクセスを提供するには、このユーザーにアタッチする `AmazonS3FullAccess` ポリシーを選択します。

## ステップ 2: アクセスキーを取得する
<a name="cli-authentication-user-get"></a>

1. AWS マネジメントコンソール にサインインして、IAM コンソール [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開きます。

1. IAM コンソールのナビゲーションペインで **[ユーザー]** を選択し、以前に作成したユーザーの **`User name`** を選択します。

1. ユーザーのページで、**[セキュリティ認証情報]** ページを選択します。次に、**[アクセスキー]** で **[アクセスキーの作成]** を選択します。

1.  **[アクセスキーの作成ステップ 1]** で、**[コマンドラインインターフェイス (CLI)]** を選択します。

1. **[アクセスキーの作成ステップ 2]** で、オプションのタグを入力して **[次へ]** を選択します。

1. **[アクセスキーの作成ステップ 3]** で、**[.csv ファイルをダウンロード]** を選択し、IAM ユーザーのアクセスキーとシークレットアクセスキーを含む `.csv` ファイルを保存します。この情報は後で必要になります。

1. [完了] を選択します。

## ステップ 3: AWS CLI を設定する
<a name="cli-authentication-user-configure.title"></a>

一般的に、AWS CLI には以下の情報が必要です。
+ アクセスキー ID
+ シークレットアクセスキー
+ AWS リージョン
+ 出力形式

この情報は、AWS CLI により、`default` ファイルの、`credentials` という名前の*プロファイル* (設定のコレクション) に保存されます。デフォルトでは、このプロファイル内の情報は、使用するプロファイルを明示的に指定しない AWS CLI コマンドを実行する場合に使用されます。`credentials` ファイルの詳細については、「[Configuration and credential file settings in the AWS CLI](cli-configure-files.md)」を参照してください。

AWS CLI を設定するには、次のいずれかの手順を使用します。

**Topics**
+ [

### `aws configure`の使用
](#cli-authentication-user-configure-wizard)
+ [

### .CSV ファイルによるアクセスキーのインポート
](#cli-authentication-user-configure-csv)
+ [

### `config` ファイルと `credentials` ファイルの直接編集
](#cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file)

### `aws configure`の使用
<a name="cli-authentication-user-configure-wizard"></a>

一般的な使用の場合、`aws configure` コマンドが、AWS CLI のインストールをセットアップするための最も簡単な方法です。この設定ウィザードでは、開始するために必要な各情報を入力するよう求められます。`--profile` オプションを使用した場合、特に指定しない限り、AWS CLI はこの情報を `default` プロファイルに保存します。

次の例では、サンプル値を使用して `default` プロファイルを設定します。次のセクションで説明するように、これらの値を独自の値に置き換えます。

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

次の例では、サンプル値を使用して `userprod` という名前のプロファイルを設定します。次のセクションで説明するように、これらの値を独自の値に置き換えます。

```
$ aws configure --profile userprod
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

### .CSV ファイルによるアクセスキーのインポート
<a name="cli-authentication-user-configure-csv"></a>

`aws configure` を使用してアクセスキーを入力する代わりに、アクセスキーの作成後にダウンロードしたプレーンテキスト `.csv` ファイルをインポートできます。

`.csv` ファイルには、次のヘッダーが含まれている必要があります。
+ ユーザー名 - この列は `.csv` に追加する必要があります。これは、インポート時に `config` と `credentials` ファイルでプロファイル名を作成するために使用されます。
+ アクセスキー ID
+ シークレットアクセスキー

**注記**  
最初のアクセスキーの作成時に、**[csv ファイルをダウンロード]** ダイアログボックスを閉じると、その後はシークレットアクセスキーにアクセスできなくなります。`.csv` ファイルが必要な場合は、必要なヘッダーと保存したキーペア情報を使用して自分でファイルを作成する必要があります。アクセスキー情報にアクセスできない場合は、新しいアクセスキーを作成する必要があります。

`.csv` ファイルをインポートするには、次のような `--csv` オプションで `aws configure import` コマンドを使用します。

```
$ aws configure import --csv file://credentials.csv
```

詳細については、「`aws\$1configure\$1import`」を参照してください。

### `config` ファイルと `credentials` ファイルの直接編集
<a name="cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file"></a>

`config` ファイルと `credentials` ファイルを直接編集するには、次の操作を行います。

1. 共有 AWS `credentials` ファイルを作成するか、開きます。このファイルは、`~/.aws/credentials` Linux および macOS システム、および `%USERPROFILE%\.aws\credentials` Windows 上にあります。詳細については、「[Configuration and credential file settings in the AWS CLI](cli-configure-files.md)」を参照してください。

1. 共有 `credentials` ファイルに次のテキストを追加します。以前にダウンロードした `.csv` ファイル内のサンプル値を置き換え、ファイルを保存します。

   ```
   [default] 
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE 
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   ```

## (オプション) IAM ユーザー認証情報での多要素認証の使用
<a name="cli-authentication-user-configure-csv.titlecli-authentication-user-mfa"></a>

セキュリティを高めるには、呼び出しを試みるときに、多要素認証 (MFA) デバイス、U2F デバイス、またはモバイルアプリケーションから生成された一回限りのキーを使用することができます。

MFA が有効な IAM ユーザーで、[https://docs.aws.amazon.com/cli/latest/reference/configure/mfa-login.html](https://docs.aws.amazon.com/cli/latest/reference/configure/mfa-login.html) コマンドを実行して、指定されたプロファイルの多要素認証 (MFA) で使用する新しいプロファイルを設定します。プロファイルが指定されていない場合、MFA は `default` プロファイルに基づいています。デフォルトプロファイルが設定されていない場合、`mfa-login` コマンドは MFA 情報を尋ねる前に AWS 認証情報の入力を求めます。次のコマンド例では、デフォルト設定を使用して MFA プロファイルを作成します。

```
$ aws configure mfa-login
MFA serial number or ARN: arn:aws:iam::123456789012:mfa/MFADeviceName
MFA token code: 123456
Profile to update [session-MFADeviceName]:
Temporary credentials written to profile 'session-MFADeviceName'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile session-MFADeviceName when running AWS CLI commands
```

既存のプロファイルを更新するには、`--update-profile` パラメータを使用します。

```
$ aws configure mfa-login --profile myprofile --update-profile mfaprofile
MFA token code: 123456
Temporary credentials written to profile 'mfaprofile'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile mfaprofile when running AWS CLI commands
```

このコマンドは現在、ハードウェアまたはソフトウェアベースのワンタイムパスワード (OTP) 認証のみをサポートしています。パスキーと U2F デバイスは現在、このコマンドではサポートされていません。

MFA プロファイルを使用するには、コマンドで `--profile` オプションを使用します。

```
$ aws s3 ls --profile mfaprofile
```

MFA を IAM ユーザーに割り当てる方法など、IAM で MFA を使用する方法の詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[IAM での AWS 多要素認証](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)」を参照してください。

# Using Amazon EC2 instance metadata as credentials in the AWS CLI
<a name="cli-configure-metadata"></a>

Amazon Elastic Compute Cloud (Amazon EC2) インスタンス内から AWS CLI を実行すると、コマンドへの認証情報の提供を簡素化できます。各 Amazon EC2 インスタンスには、AWS CLI が一時的な認証情報を直接クエリできるメタデータが含まれています。IAM ロールがインスタンスにアタッチされている場合、AWS CLI はインスタンスメタデータから認証情報を自動的かつ安全に取得します。

このサービスを無効にするには、[AWS\$1EC2\$1METADATA\$1DISABLED](cli-configure-envvars.md#envvars-list-AWS_EC2_METADATA_DISABLED) 環境変数を使用します。

**Topics**
+ [

## 前提条件
](#cli-configure-metadata-prereqs)
+ [

## Amazon EC2 メタデータのプロファイルの設定
](#cli-configure-metadata-configure)

## 前提条件
<a name="cli-configure-metadata-prereqs"></a>

AWS CLI で Amazon EC2 認証情報を使用するには、以下を完了する必要があります。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ 設定ファイルおよび名前付きプロファイルについて理解します。詳細については、「[Configuration and credential file settings in the AWS CLI](cli-configure-files.md)」を参照してください。
+ 必要なリソースへのアクセス権を持つ AWS Identity and Access Management (IAM) ロールが作成されており、Amazon EC2 インスタンスの起動時にそのロールをインスタンスに割り当てた。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 の IAM ポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)」および「*IAM ユーザーガイド*」の「[Amazon EC2 インスタンスで実行されるアプリケーションに AWS リソースへのアクセス許可を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html)」を参照してください。

## Amazon EC2 メタデータのプロファイルの設定
<a name="cli-configure-metadata-configure"></a>

ホスティングする Amazon EC2 インスタンスプロファイルで使用可能な認証情報の使用を指定するには、設定ファイルの名前付きプロファイルで次の構文を使用します。詳細な手順については、以下のステップを参照してください。

```
[profile profilename]
role_arn = arn:aws:iam::123456789012:role/rolename
credential_source = Ec2InstanceMetadata
region = region
```

1. 設定ファイルにプロファイルを作成します。

   ```
   [profile profilename]
   ```

1. 必要なリソースにアクセスできる IAM arn ロールを追加します。

   ```
   role_arn = arn:aws:iam::123456789012:role/rolename
   ```

1. 認証情報のソースとして `Ec2InstanceMetadata` を指定します。

   ```
   credential_source = Ec2InstanceMetadata
   ```

1. リージョンを設定します。

   ```
   region = region
   ```

**例**

次の例では、*`marketingadminrole`* ロールを引き受け、`marketingadmin` という名前の Amazon EC2 インスタンスプロファイルの `us-west-2` リージョンを使用します。

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
region = us-west-2
```

# Sourcing credentials with an external process in the AWS CLI
<a name="cli-configure-sourcing-external"></a>

**警告**  
このトピックでは、外部プロセスからの認証情報の調達について説明します。認証情報を生成するコマンドが非承認のプロセスやユーザーからアクセスできることは、セキュリティ上のリスクにつながります。AWS CLI および AWS が提供するサポートされた安全な代替方法を使用して、認証情報が侵害されるリスクを低下することをおすすめします。漏洩を防ぐために、`config` ファイルおよびサポートされたファイルとツールの安全を確保します。  
カスタム認証情報ツールが機密情報を `StdErr` に書き込まないことを確実にしてください。SDK および AWS CLI がそのような情報をキャプチャしてログに記録し、不正ユーザーに情報を公開する可能性があるためです。

AWS CLI で直接サポートされていない認証情報を生成または参照する方法がある場合は、`config` ファイル内の `credential_process` を設定することで、それを使用するように AWS CLI を設定できます。

例えば、`config` ファイルに次のようなエントリを含めることができます。

```
[profile developer]
credential_process = /opt/bin/awscreds-custom --username helen
```

**構文**  
任意のオペレーティングシステムと互換性のある方法でこの文字列を作成するには、以下のルールに従います。
+ パスまたはファイル名にスペースが含まれている場合は、完全なパスとファイル名を二重引用符 (" ") で囲みます。パスとファイル名は A 〜 Z、a 〜 z、0 〜 9、- \$1 . の文字、スペースのみで構成できます。
+ パラメータ名またはパラメータ値にスペースが含まれている場合は、その要素を二重引用符 (" ") で囲みます。囲むのは、名前または値のみであり、そのペアではありません。
+ 文字列に環境変数を含めないでください。例えば、`$HOME` または `%USERPROFILE%` を含めることはできません。
+ ホームフォルダを `~` として指定しないでください。完全パスを指定する必要があります。

**Windows の例**

```
credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
```

**Linux または macOS の例**

```
credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
```

**認証情報プログラムからの想定される出力**

AWS CLI はプロファイルで指定されたようにコマンドを実行し、次に `STDOUT` からデータを読み取ります。指定するコマンドは、以下の構文と一致する JSON 出力を `STDOUT` に生成する必要があります。

```
{
  "Version": 1,
  "AccessKeyId": "an AWS access key",
  "SecretAccessKey": "your AWS secret access key",
  "SessionToken": "the AWS session token for temporary credentials", 
  "Expiration": "ISO8601 timestamp when the credentials expire"
}
```

**注記**  
本文書の執筆時点では、`Version` キーは `1` に設定する必要があります。構造が進化するため、時間の経過と共に増えていく可能性があります。

`Expiration` キーは、[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) 形式のタイムスタンプです。`Expiration` キーがツールの出力にない場合、CLI はこの認証情報が更新されない長期の認証情報であると判断します。それ以外の認証情報は一時的な認証情報と見なされ、有効期限が切れる前に `credential_process` を再実行して自動的に更新されます。

**注記**  
AWS CLI は、外部プロセスの認証情報をロールを引き受けるような認証情報としてキャッシュ***しません***。キャッシュが必要な場合は、外部プロセス内で実装する必要があります。

外部プロセスはゼロ以外のリターンコードを返して、認証情報の取得時にエラーが発生したことを示すことができます。