

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 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 角色連接到一個執行個體中，但您可以將相同的角色連接到多個執行個體中。
關聯限制存取應用程式所需特定 API 呼叫的最低權限 IAM 政策。

如需建立 IAM 角色的詳細資訊，請參閱*IAM 使用者指南*中的[角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

**在執行個體啟動期間連接現有的 IAM 角色**  
若要使用 Amazon EC2 主控台在啟動時將現有的 IAM 角色連接至執行個體，請展開**進階詳細資訊**。針對 **IAM 執行個體描述檔**，從下拉式清單中選取 IAM 角色。

**注意**  
若您已使用主控台建立 IAM 角色，則會為您建立執行個體設定檔，且其名稱會與該角色相同。如果您使用 AWS CLI、 API 或 AWS SDK 建立 IAM 角色，您可能已為執行個體描述檔指定與該角色不同的名稱。

您可以將 IAM 角色連接至正在執行或已停止的執行個體。如果執行個體已連接 IAM 角色，您必須將其取代為新的 IAM 角色。

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

**將 IAM 角色連接至執行個體 (主控台)**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體。

1. 選擇 **Actions** (動作)、**Security** (安全性)、**Modify IAM role** (修改 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 Resource Name (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) cmdlet。

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

------

若要取代已擁有連接 IAM 角色之執行個體上的 IAM 角色，則執行個體必須處於執行中狀態。如果您想要變更執行個體上的 IAM 角色，但不中斷現有的角色，您可以這麼做。例如，您可以這麼做確保執行個體上應用程式執行的 API 動作不會中斷。

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

**取代執行個體的 IAM 角色**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體。

1. 選擇 **Actions** (動作)、**Security** (安全性)、**Modify IAM role** (修改 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) cmdlet 來獲取關聯 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) cmdlet。指定現有執行個體設定檔的關聯 ID，以及新的執行個體設定檔的 ARN 或名稱。

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

------

您可透過執行中或已停止的執行個體來分離 IAM 角色。

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

**分離 IAM 角色和執行個體**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體。

1. 選擇 **Actions** (動作)、**Security** (安全性)、**Modify IAM role** (修改 IAM 角色)。

1. 針對 **IAM role (IAM 角色)**，選擇 **No IAM Role (無 IAM 角色)**。

1. 選擇**更新 IAM 角色**。

1. 出現確認提示時，請輸入**分離**，然後選擇**分離**。

------
#### [ 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) cmdlet。

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

------