

# インスタンスへの IAM ロールのアタッチ
<a name="attach-iam-role"></a>

IAM ロールはインスタンスの起動時または起動後に作成してインスタンスにアタッチできます。IAM ロールを置き換えたりデタッチしたりすることもできます。

**インスタンスの起動中に IAM ロールを作成してアタッチする (推奨)**

1. EC2 インスタンスの起動中に **[高度な詳細]** を展開します。

1. **[IAM インスタンスプロファイル]** セクションで、**[新しい IAM ロールを作成]** を選択します。

1. 以下を実行できるインラインロールの作成フォームが開きます。
   + **[ロール名]** を指定する (例: `EC2-S3-Access-Role`)
   + AWS マネージドポリシーを選択するか、インスタンス用のカスタムポリシーを作成することで許可を定義する

     例えば、S3 へのアクセス権を付与するには `AmazonS3ReadOnlyAccess` マネージドポリシーを選択します。
   + `ec2.amazonaws.com` によるロールの引き受けを許可する信頼ポリシーを確認する
   + メタデータ用のオプションのタグを追加する

1. [**ロールの作成**] を選択してください。

   新しく作成されたロールが自動的に選択され、インスタンスの起動時にインスタンスプロファイル経由でインスタンスにアタッチされます。

**注記**  
インスタンスの起動中にコンソールを使用してロールを作成するときは、ロールと同じ名前のインスタンスプロファイルが自動的に作成されます。インスタンスプロファイルは、起動時に IAM ロール情報をインスタンスに渡すコンテナです。

**重要**  
インスタンスにアタッチできる IAM ロールは 1 つだけですが、同じロールを複数のインスタンスにアタッチできます。
アプリケーションが必要とする特定の API コールへのアクセスを制限する最小特権の IAM ポリシーを関連付けてください。

IAM ロールの作成と使用の詳細については、「*IAM ユーザーガイド*」の「[ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)」を参照してください。

**インスタンスの起動中に既存の IAM ロールをアタッチする**  
Amazon EC2 コンソールを使用して起動時に IAM ロールをインスタンスにアタッチするには、**[高度な詳細]** を展開します。**[IAM インスタンスプロファイル]** で、ドロップダウンリストから IAM ロールを選択します。

**注記**  
IAM コンソールを使用して IAM ロールを作成した場合はインスタンスプロファイルが自動的に作成され、ロールと同じ名前が付けられています。AWS CLI、API、または AWS SDK を使用して IAM ロールを作成した場合はインスタンスプロファイルにロールと異なる名前を付けた可能性があります。

実行中または停止しているインスタンスに IAM ロールをアタッチできます。インスタンスに既に IAM ロールがアタッチされている場合はそれを新しい IAM ロールに置き換える必要があります。

------
#### [ Console ]<a name="attach-iam-role-console"></a>

**IAM ロールをインスタンスにアタッチするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択してください。

1. [**アクション**] メニューで、[**セキュリティ**]、[**IAM ロールの変更**] の順に選択してください。

1. **[IAM ロール]** で IAM インスタンスプロファイルを選択してください。

1. **[IAM ロールの更新]** を選択してください。

------
#### [ AWS CLI ]
<a name="attach-iam-role-instance-cli"></a>
**IAM ロールをインスタンスにアタッチするには**  
[associate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) コマンドを使用して、IAM ロールをインスタンスにアタッチします。インスタンスプロファイルを指定する際にはインスタンスプロファイルの Amazon リソースネーム (ARN) を使用することも、そのインスタンスプロファイルの名前を使用することもできます。

```
aws ec2 associate-iam-instance-profile \
    --instance-id i-1234567890abcdef0 \
    --iam-instance-profile Name="TestRole-1"
```

------
#### [ PowerShell ]

**IAM ロールをインスタンスにアタッチするには**  
[Register-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2IamInstanceProfile.html) コマンドレットを使用します。

```
Register-EC2IamInstanceProfile `
    -InstanceId i-1234567890abcdef0 `
    -IamInstanceProfile_Name TestRole-1
```

------

既に IAM ロールがアタッチされているインスタンスで IAM ロールを置き換えるには、インスタンスが実行されている必要があります。既存のロールをデタッチしないでインスタンスの IAM ロールを変更する場合に、これを行うことができます。例えば、インスタンスで実行しているアプリケーションが実行する API アクションが中断されないようにするために、これを行うことができます。

------
#### [ Console ]<a name="replace-iam-role-console"></a>

**インスタンスの IAM ロールを置き換えるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択してください。

1. [**アクション**] メニューで、[**セキュリティ**]、[**IAM ロールの変更**] の順に選択してください。

1. **[IAM ロール]** で IAM インスタンスプロファイルを選択してください。

1. **[IAM ロールの更新]** を選択してください。

------
#### [ AWS CLI ]<a name="replace-iam-role-cli"></a>

**インスタンスの IAM ロールを置き換えるには**

1. 必要に応じて、[describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) コマンドを使用して、関連付け ID を取得します。

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. [replace-iam-instance-profile-association](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-iam-instance-profile-association.html) コマンドを使用します。既存のインスタンスプロファイルの関連付け ID と、新しいインスタンスプロファイルの ARN または名前を指定します。

   ```
   aws ec2 replace-iam-instance-profile-association \
       --association-id iip-assoc-0044d817db6c0a4ba \
       --iam-instance-profile Name="TestRole-2"
   ```

------
#### [ PowerShell ]

**インスタンスの IAM ロールを置き換えるには**

1. 必要に応じて、[Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) コマンドレットを使用して、関連付け ID を取得します。

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. [Set-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Set-EC2IamInstanceProfileAssociation.html) コマンドレットを使用します。既存のインスタンスプロファイルの関連付け ID と、新しいインスタンスプロファイルの ARN または名前を指定します。

   ```
   Set-EC2IamInstanceProfileAssociation `
       -AssociationId iip-assoc-0044d817db6c0a4ba `
       -IamInstanceProfile_Name TestRole-2
   ```

------

実行中または停止中のインスタンスから IAM ロールをデタッチできます。

------
#### [ Console ]<a name="detach-iam-role-console"></a>

**インスタンスから IAM ロールをデタッチするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択してください。

1. [**アクション**] メニューで、[**セキュリティ**]、[**IAM ロールの変更**] の順に選択してください。

1. [**AM ロール**] で、[**IAM ロールがありません**] を選択してください。

1. **[IAM ロールの更新]** を選択してください。

1. 確認を求められたら、「**Detach**」と入力してから、**[デタッチ]** を選択してください。

------
#### [ AWS CLI ]<a name="detach-iam-role-cli"></a>

**インスタンスから IAM ロールをデタッチするには**

1. 必要に応じて、[describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) を使用して、デタッチする IAM インスタンスプロファイルの関連付け ID を取得します。

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. [disassociate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html) コマンドを使用します。

   ```
   aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-0044d817db6c0a4ba
   ```

------
#### [ PowerShell ]

**インスタンスから IAM ロールをデタッチするには**

1. 必要に応じて、[Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) を使用して、デタッチする IAM インスタンスプロファイルの関連付け ID を取得します。

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. [Unregister-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2IamInstanceProfile.html) コマンドレットを使用します。

   ```
   Unregister-EC2IamInstanceProfile -AssociationId iip-assoc-0044d817db6c0a4ba
   ```

------