

のバージョン 5 (V5) AWS Tools for PowerShell がリリースされました。

重要な変更とアプリケーションの移行については、[「移行トピック](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)」を参照してください。

 [https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS 認証情報の使用
<a name="specifying-your-aws-credentials"></a>

各 AWS Tools for PowerShell コマンドには、対応するウェブサービスリクエストに暗号で署名するために使用される AWS 認証情報のセットを含める必要があります。コマンド個別、セッション個別、すべてのセッションに対して認証情報が指定できます。

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

**注記**  
このトピックの情報は、短期または長期認証情報を手動で取得および管理する必要がある場合を対象としています。短期認証情報と長期認証情報に関する追加情報については、「*AWS SDK およびツールリファレンスガイド*」の「[その他の認証方法](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)」を参照してください。  
セキュリティのベストプラクティスについては、 AWS IAM アイデンティティセンター「」の説明に従って を使用します[による認証 AWS](creds-idc.md)。

ベストプラクティスとして、認証情報を公開しないように、コマンドにリテラル認証情報を配置しないでください。代わりに、使用する認証情報セットごとにプロファイルを作成し、このプロファイルを 2 つの認証情報ストアのどちらかに保存します。コマンドで正しいプロファイル名を指定すると、 AWS Tools for PowerShell が関連付けられている認証情報を取得します。 AWS 認証情報を安全に管理する方法の一般的な説明については、の[AWS 「アクセスキーを管理するためのベストプラクティス](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)」を参照してください*Amazon Web Services 全般のリファレンス*。

**注記**  
認証情報を取得して を使用するには、 AWS アカウントが必要です AWS Tools for PowerShell。 AWS アカウントを作成するには、[「開始方法: 初めての AWS ユーザーですか?](https://docs.aws.amazon.com/accounts/latest/reference/welcome-first-time-user.html)」を参照してください。 「 *AWS アカウント管理 リファレンスガイド*」の「」を参照してください

**Topics**
+ [認証情報ストアの場所](#specifying-your-aws-credentials-store)
+ [プロファイルの管理](#managing-profiles)
+ [認証情報の指定](#specifying-your-aws-credentials-use)
+ [認証情報の検索順序](#pstools-cred-provider-chain-legacy)
+ [での認証情報の処理 AWS Tools for PowerShell Core](#credential-handling-in-aws-tools-for-powershell-core)

## 認証情報ストアの場所
<a name="specifying-your-aws-credentials-store"></a>

 AWS Tools for PowerShell は、次の 2 つの認証情報ストアのいずれかを使用できます。
+  AWS SDK ストア。認証情報を暗号化し、ホームフォルダに保存します。Windows では、このストアは `C:\Users\username\AppData\Local\AWSToolkit\RegisteredAccounts.json` にあります。

  [AWS SDK for .NET](https://aws.amazon.com/sdk-for-net/) および [Toolkit for Visual Studio](https://aws.amazon.com/visualstudio/) でも AWS SDK ストアを使用できます。
+ 共有認証情報ファイルもホームフォルダに配置されますが、認証情報はプレーンテキストとして保存されます。

  デフォルトでは次の場所に認証情報ファイルが保存されます。
  + Windows の場合: `C:\Users\username\.aws\credentials`
  + Mac/Linuxの場合: `~/.aws/credentials` 

   AWS SDKs と AWS Command Line Interface は、認証情報ファイルを使用することもできます。 AWS ユーザーコンテキスト外でスクリプトを実行している場合は、認証情報を含むファイルが、すべてのユーザーアカウント (ローカルシステムおよびユーザー) が認証情報にアクセスできる場所にコピーされていることを確認してください。

## プロファイルの管理
<a name="managing-profiles"></a>

プロファイルを使用すると、さまざまな認証情報セットを参照できます AWS Tools for PowerShell。 AWS Tools for PowerShell コマンドレットを使用して、 AWS SDK ストアでプロファイルを管理できます。 AWS SDK ストアのプロファイルは、[Toolkit for Visual Studio](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/tkv_setup.html) を使用して管理できます。または、[AWS SDK for .NET](https://aws.amazon.com/sdk-for-net/) を使用してプログラムで管理することもできます。認証情報ファイルでプロファイルを管理する方法については、[AWS 「アクセスキーを管理するためのベストプラクティス](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)」を参照してください。

### 新しいプロファイルの追加
<a name="add-a-new-profile"></a>

 AWS SDK ストアに新しいプロファイルを追加するには、 コマンドを実行します`Set-AWSCredential`。アクセスキーとシークレットキーは、指定したプロファイル名の下のデフォルトの認証情報ファイルに保存されます。

```
PS > Set-AWSCredential `
                 -AccessKey AKIA0123456787EXAMPLE `
                 -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY `
                 -StoreAs MyNewProfile
```
+  `-AccessKey`– アクセスキー ID。
+  `-SecretKey`– シークレットキー。
+  `-StoreAs`– プロファイル名。これは一意である必要があります。デフォルトのプロファイルを指定するには、名前 `default` を使用します。

### プロファイルの更新
<a name="update-a-profile"></a>

 AWS SDK ストアは手動で管理する必要があります。たとえば、サービスの認証情報を後から変更する場合、ローカルに保存された認証情報を使用して [IAM コンソール](https://console.aws.amazon.com/iam/home)からコマンドを実行すると、次のエラーメッセージが表示されて失敗します。

```
The Access Key Id you provided does not exist in our records.
```

プロファイルを更新するには、プロファイルに対して `Set-AWSCredential` コマンドを繰り返し使用して、新しいアクセスキーとシークレットキーをプロファイルに渡します。

### プロファイルのリスト表示
<a name="list-profiles"></a>

現在の名前のリストを確認するには、次のコマンドを使用します。この例では、Shirley という名前のユーザーは、共有認証情報ファイル (`~/.aws/credentials`) に保存されている 3 つのプロファイルにアクセスできます。

```
PS > Get-AWSCredential -ListProfileDetail

ProfileName  StoreTypeName         ProfileLocation
-----------  -------------         ---------------
default      SharedCredentialsFile /Users/shirley/.aws/credentials
production   SharedCredentialsFile /Users/shirley/.aws/credentials
test         SharedCredentialsFile /Users/shirley/.aws/credentials
```

### プロファイルの削除
<a name="remove-a-profile"></a>

不要になったプロファイルを削除するには、次のコマンドを使用します。

```
PS > Remove-AWSCredentialProfile -ProfileName an-old-profile-I-do-not-need
```

`-ProfileName` パラメータは、削除するプロファイルを指定します。

廃止されたコマンド [Clear-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Clear-AWSCredential.html) は、下位互換性のために引き続き使用できますが、`Remove-AWSCredentialProfile` を使用することをお勧めします。

## 認証情報の指定
<a name="specifying-your-aws-credentials-use"></a>

認証情報を指定する方法は複数あります。推奨される方法は、リテラル認証情報をコマンドラインに組み込むのではなく、プロファイルを識別することです。 は、認証情報の検索順序で説明されている検索順序を使用してプロファイル AWS Tools for PowerShell を配置します。 [認証情報の検索順序](#pstools-cred-provider-chain-legacy)

Windows では、 AWS SDK ストアに保存されている AWS 認証情報は、ログインした Windows ユーザー ID で暗号化されます。別のアカウントを使用して復号化したり、最初に作成されたデバイスとは異なるデバイスで使用したりすることはできません。たとえば、スケジュールされたタスクを実行する場合など、別のユーザーの認証情報でタスクを実行するには、前のセクションで説明した方法により、そのユーザーとしてコンピュータにログオンする場合に使用する認証情報プロファイルをセットアップします。タスクを実行するユーザーとしてログインして認証情報のセットアップ手順を完了し、そのユーザーに適したプロファイルを作成します。その後、ログアウトし、独自の認証情報を使用して再度ログインし、スケジュールされたタスクを設定します。

**注記**  
共通パラメータ `-ProfileName` を使用してプロファイルを指定します。このパラメータは、以前の AWS Tools for PowerShell リリースの `-StoredCredentials`パラメータと同等です。下位互換性のために、`-StoredCredentials` も引き続きサポートされています。

### デフォルトのプロファイル (推奨)
<a name="default-profile-recommended"></a>

 AWS SDKsと管理ツールは、認証情報が という名前のプロファイルに保存されている場合、ローカルコンピュータで認証情報を自動的に見つけることができます`default`。たとえば、ローカルコンピュータに `default` という名前のプロファイルがある場合、`Initialize-AWSDefaultConfiguration` コマンドレットまたは `Set-AWSCredential` コマンドレットを実行する必要はありません。ツールでは、そのプロファイルに保存されているアクセスとシークレットキーのデータが自動的に使用されます。デフォルトリージョン (`Get-DefaultAWSRegion` の結果) 以外の AWS リージョンを使用する場合は、`Set-DefaultAWSRegion` を実行してリージョンを指定できます。

プロファイルが `default` という名前でなくても、現在のセッションでデフォルトプロファイルとして使用したい場合は、`Set-AWSCredential` を実行してデフォルトプロファイルとして設定します。

`Initialize-AWSDefaultConfiguration` を実行すると、すべての PowerShell セッションのデフォルトプロファイルを指定できます。この場合、認証情報はカスタム名のプロファイルから読み込まれ、`default` プロファイルは指定したプロファイルで上書きされます。

`Initialize-AWSDefaultConfiguration` は実行しないようお勧めします。ただし、PowerShell セッションを実行している Amazon EC2 インスタンスの起動にインスタンスプロファイルを使用していなくて、認証情報プロファイルを手動で設定する場合は除きます。この場合、認証情報プロファイルに認証情報は含まれません。EC2 インスタンスで `Initialize-AWSDefaultConfiguration` を実行した結果生じる認証情報プロファイルは、認証情報を直接保存するのではなく、インスタンスメタデータ (自動的に更新される一時的な認証情報を提供する) を指します。ただし、インスタンスのリージョンは保存されます。`Initialize-AWSDefaultConfiguration` を実行する別のシナリオとして、インスタンスが実行されているリージョン以外のリージョンに対して呼び出しを実行する場合があります。そのコマンドを実行すると、インスタンスメタデータに保存されているリージョンは永続的に上書きされます。

```
PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
```

**注記**  
デフォルトの認証情報は、`default`プロファイル名の SDK AWS ストアに含まれています。このコマンドを使用すると、その名前の既存のプロファイルが上書きされます。

EC2 インスタンスの起動にインスタンスプロファイルを使用している場合、PowerShell は AWS 認証情報とリージョン情報をインスタンスプロファイルから自動的に取得します。`Initialize-AWSDefaultConfiguration` を実行する必要はありません。EC2 インスタンスの起動にインスタンスプロファイルを使用している場合、`Initialize-AWSDefaultConfiguration` コマンドレットの実行は不要です。PowerShell がデフォルトで使用するのと同じインスタンスプロファイルが使用されます。

### セッションのプロファイル
<a name="session-profile"></a>

特定セッションにデフォルトのプロファイルを指定するには、`Set-AWSCredential` を使用します。このプロファイルはセッション期間中、デフォルトのプロファイルを上書きします。現在の `default` プロファイルの代わりにカスタム名のプロファイルをセッションで使用する場合は、この方法をお勧めします。

```
PS > Set-AWSCredential -ProfileName MyProfileName
```

**注記**  
1.1 より前の Tools for Windows PowerShell バージョンでは、`Set-AWSCredential` コマンドレットが正しく機能せず、「MyProfileName」で指定したプロファイルが上書きされていました。最新バージョンの Tools for Windows PowerShell を使用することをお勧めします。

### コマンドのプロファイル
<a name="command-profile"></a>

個々のコマンドでは、`-ProfileName` パラメータを追加して、その 1 つのコマンドだけに適用されるプロファイルを指定できます。このプロファイルは、次の例に示すように、デフォルトプロファイルまたはセッションプロファイルを上書きします。

```
PS > Get-EC2Instance -ProfileName MyProfileName
```

**注記**  
デフォルトまたはセッションのプロファイルを指定する場合には、`-Region` パラメータを追加してデフォルトまたはセッションのリージョンを上書きすることもできます。詳細については、「[の AWS リージョンを指定する AWS Tools for PowerShell](pstools-installing-specifying-region.md)」を参照してください。次の例では、デフォルトのプロファイルとリージョンを指定しています。  

```
PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
```

デフォルトでは、 AWS 共有認証情報ファイルはユーザーのホームフォルダ (`C:\Users\username\.aws`Windows の場合は 、Linux `~/.aws`の場合は ) にあると見なされます。別の場所に認証情報ファイルを指定するには、`-ProfileLocation` パラメータを含んで、認証情報ファイルのパスを指定します。次の例では、特定のコマンドに対してデフォルト以外の認証情報ファイルを指定しています。

```
PS > Get-EC2Instance -ProfileName MyProfileName -ProfileLocation C:\aws_service_credentials\credentials
```

**注記**  
通常の作業時間以外で、スケジュールされたタスクとして PowerShell スクリプトを実行している場合など、 AWSに通常サインインしていない時間中に PowerShell スクリプトを実行している場合、使用するプロファイルを指定するには、`-ProfileLocation` パラメータを追加して、その値に認証情報が保存されているファイルのパスを設定します。 AWS Tools for PowerShell スクリプトが正しいアカウント認証情報で実行されることを確認するには、スクリプトが AWS アカウントを使用しないコンテキストまたはプロセスで実行されるたびに `-ProfileLocation`パラメータを追加する必要があります。スクリプトがタスクを実行するために使用するローカルシステムまたは他のアカウントからアクセス可能な場所に、認証情報ファイルをコピーすることもできます。

## 認証情報の検索順序
<a name="pstools-cred-provider-chain-legacy"></a>

コマンドを実行すると、 は次の順序で認証情報 AWS Tools for PowerShell を検索します。使用可能な認証情報が見つかると停止します。

1. コマンドラインにパラメータとして埋め込まれているリテラル認証情報。

   コマンドラインにリテラル認証情報を入力するのではなく、プロファイルを使用することを強くお勧めします。

1. `-Credential` パラメータで指定された認証情報。

1. [Set-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Set-AWSCredential.html) コマンドレットを使用して指定されたプロファイル名またはプロファイルの場所。
   + プロファイル名のみを指定すると、コマンドは SDK ストアで AWS 指定されたプロファイルを検索し、存在しない場合はデフォルトの場所 AWS の共有認証情報ファイルから指定されたプロファイルを検索します。
   + プロファイルの場所のみを指定した場合、コマンドはその認証情報ファイルから `default` プロファイルを検索します。
   + 名前と場所の両方を指定した場合、コマンドはその認証情報ファイルで指定したプロファイルを検索します。

   指定されたプロファイルまたは場所が見つからない場合、このコマンドは例外をスローします。プロファイルとロケーションを両方とも指定しなかった場合のみ、以下の手順で検索が行われます。

1. 3 つの変数すべてに値がある場合、`AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、および `AWS_SESSION_TOKEN`環境変数から作成される認証情報。

1. `AWS_PROFILE` 環境変数で指定された名前の認証情報プロファイル。

1. 次の順序で、デフォルトのプロファイルを使用します。

   1.  AWS SDK ストアの`default`プロファイル。

   1. 共有 AWS `credentials`ファイルの`default`プロファイル。

   1.  AWS SDK ストアの`AWS PS Default`プロファイル。

1. IAM ロールを使用するように設定された Amazon EC2 インスタンスでコマンドが実行されている場合、EC2 インスタンスの一時的な認証情報は、インスタンスプロファイルからアクセスされます。

   Amazon EC2 インスタンスで IAM ロールを使用する方法の詳細については、「 [AWS SDK for .NET デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/)」の[「ロールによるアクセス権の付与](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html)」を参照してください。

この検索により指定された認証情報が検索できなかった場合、このコマンドは例外をスローします。

環境変数と認証情報プロファイルの詳細については、[AWS SDKs](https://docs.aws.amazon.com/sdkref/latest/guide/)」の次のトピックを参照してください。[環境変数](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)、[環境変数リスト](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#EVarSettings)、[共有設定ファイルと認証情報ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)。

## での認証情報の処理 AWS Tools for PowerShell Core
<a name="credential-handling-in-aws-tools-for-powershell-core"></a>

のコマンドレットは、 と同様に、実行時に AWS アクセスキーとシークレットキー、または認証情報プロファイルの名前 AWS Tools for PowerShell Core を受け入れます AWS Tools for Windows PowerShell。Windows で実行すると、どちらのモジュールも AWS SDK for .NET 認証情報ストアファイル (各ユーザーの `AppData\Local\AWSToolkit\RegisteredAccounts.json` ファイルに保存されています) にアクセスできます。

このファイルにはユーザーのキーが暗号化された形式で保存されていて、別のコンピュータで使用することはできません。これは、 が認証情報プロファイル AWS Tools for PowerShell を検索する最初のファイルであり、 が認証情報プロファイル AWS Tools for PowerShell を保存するファイルでもあります。 AWS SDK for .NET 認証情報ストアファイルの詳細については、[AWS 「認証情報の設定](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-config-creds.html)」を参照してください。Tools for Windows PowerShell モジュールでは、他のファイルまたは場所への認証情報の書き込みを現在サポートしていません。

どちらのモジュールも、他の AWS SDKsと で使用される AWS 共有認証情報ファイルからプロファイルを読み取ることができます AWS CLI。Windows では、このファイルのデフォルトの場所は `C:\Users\<userid>\.aws\credentials` です。Windows 以外のプラットフォームでは、このファイルは `~/.aws/credentials` に保存されています。`-ProfileLocation` パラメータを使用して、デフォルト以外のファイル名またはファイルの場所を指定することができます。

SDK 認証情報ストアには、Windows 暗号化 API を使用して暗号化された形式の認証情報が保持されています。これらの APIsは他のプラットフォームでは使用できないため、 AWS Tools for PowerShell Core モジュールは AWS 共有認証情報ファイルのみを使用し、共有認証情報ファイルへの新しい認証情報プロファイルの書き込みをサポートします。

以下のスクリプトの例は、`Set-AWSCredential` コマンドレットを使用して、[**AWSPowerShell**] または [**AWSPowerShell.NetCore**] モジュールのいずれかにより Windows で認証情報プロファイルを処理するためのオプションを示しています。

```
# Writes a new (or updates existing) profile with name "myProfileName"
# in the encrypted SDK store file

Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName

# Checks the encrypted SDK credential store for the profile and then
# falls back to the shared credentials file in the default location

Set-AWSCredential -ProfileName myProfileName

# Bypasses the encrypted SDK credential store and attempts to load the
# profile from the ini-format credentials file "mycredentials" in the
# folder C:\MyCustomPath

Set-AWSCredential -ProfileName myProfileName -ProfileLocation C:\MyCustomPath\mycredentials
```

以下の例は、Linux または Mac OS オペレーティングシステムでの [**AWSPowerShell.NetCore**] モジュールの動作を示しています。

```
# Writes a new (or updates existing) profile with name "myProfileName"
# in the default shared credentials file ~/.aws/credentials

Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName

# Writes a new (or updates existing) profile with name "myProfileName"
# into an ini-format credentials file "~/mycustompath/mycredentials"

Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName -ProfileLocation ~/mycustompath/mycredentials

# Reads the default shared credential file looking for the profile "myProfileName"

Set-AWSCredential -ProfileName myProfileName

# Reads the specified credential file looking for the profile "myProfileName"

Set-AWSCredential -ProfileName myProfileName -ProfileLocation ~/mycustompath/mycredentials
```