

# チュートリアル: 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\_start\_url`
+ **(必須)** `sso\_region`
+ `sso\_account\_id`
+ `sso\_role\_name`
+ `sso\_registration\_scopes`

`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\_start\_url`
+ **(必須)** `sso\_region`
+ `sso\_account\_id`
+ `sso\_role\_name`
+ `sso\_registration\_scopes`

`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)