

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

# 管理 Elastic Beanstalk 服務角色
<a name="iam-servicerole"></a>

為了管理和監控您的環境， 會代表您對環境資源 AWS Elastic Beanstalk 執行動作。Elastic Beanstalk 需要特定許可才能執行這些動作，並擔任 AWS Identity and Access Management (IAM) 服務角色來取得這些許可。

Elastic Beanstalk 每次擔任服務角色時，都必須使用暫時性的安全登入資料。為取得這些憑證，Elastic Beanstalk 會傳送請求至區域專用端點上的 AWS Security Token Service (AWS STS)。如需詳細資訊，請參閱*《IAM 使用者指南》*中的[臨時安全登入資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。

**注意**  
如果環境所在區域的 AWS STS 端點已停用，Elastic Beanstalk 會在無法停用的替代端點上傳送請求。此端點與其他區域相關聯。因此，該請求是跨區域請求。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[AWS STS 在 AWS 區域中啟用和停用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)。

## 使用 Elastic Beanstalk 主控台和 EB CLI 管理服務角色
<a name="iam-servicerole-console"></a>

透過一組足夠的許可，您可以使用 Elastic Beanstalk 主控台和 EB CLI，為您的環境設定服務角色。它們會建立預設服務角色並在其中使用受管政策。

### 受管服務角色政策
<a name="iam-servicerole-policy"></a>

Elastic Beanstalk 提供了一個用於[增強型運作狀態監控](health-enhanced.md)的受管政策，以及另一個具備[受管平台更新](environment-platform-update-managed.md)所需額外許可的受管政策。主控台和 EB CLI 會將這兩種政策指派給其為您建立的預設服務角色。這些政策應該僅用於此預設服務角色。它們不應該與您帳戶中的其他使用者或角色搭配使用。

#### `AWSElasticBeanstalkEnhancedHealth`
<a name="iam-servicerole-policy.health"></a>

此政策會授予許可，讓 Elastic Beanstalk 能夠監控執行個體和環境運作狀態。亦包含 Amazon SQS 動作，讓 Elastic Beanstalk 能監控工作者環境的佇列活動。若要檢視此受管政策的內容，請參閱《 *AWS 受管政策參考指南*》中的 [ AWSElasticBeanstalkEnhancedHealth](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkEnhancedHealth.html) 頁面。

#### `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`
<a name="iam-servicerole-policy.service"></a>

此政策會授予許可，讓 Elastic Beanstalk 能夠代表您更新環境以執行受管平台更新。若要檢視此受管政策的內容，請參閱《 *AWS 受管政策參考指南*》中的 [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy.html) 頁面。

**服務層級許可分組**

此政策會根據提供的許可集分組到陳述式中。
+ *`ElasticBeanstalkPermissions`* – 此許可群組用於呼叫 Elastic Beanstalk 服務動作 (Elastic Beanstalk API)。
+ *`AllowPassRoleToElasticBeanstalkAndDownstreamServices`* – 此許可群組允許將任何角色傳遞給 Elastic Beanstalk 和其他下游服務，如 CloudFormation。
+ *`ReadOnlyPermissions`* – 此許可群組用於收集執行中環境的相關資訊。
+ *`*OperationPermissions`* – 具有此命名模式的群組用於呼叫必要的操作來執行平台更新。
+ *`*BroadOperationPermissions`* – 具有此命名模式的群組用於呼叫必要的操作來執行平台更新。它們也包含支援舊式環境的廣泛許可。
+ *`*TagResource`* – 具有此命名模式的群組適用於使用建立時標記 API 的呼叫，以在 Elastic Beanstalk 環境中建立的資源上附加標籤。

若要檢視受管政策的內容，您也可以使用 IAM 主控台中的 [**Policies** (政策) 頁面](https://console.aws.amazon.com/iam/home#policies)。

**重要**  
Elastic Beanstalk 受管政策不提供精細許可，其會授予使用 Elastic Beanstalk 應用程式可能需要的所有許可。在某些情況下，您可能想要進一步限制受管政策的許可。如需一個使用案例的範例，請參閱 [防止跨環境 Amazon S3 儲存貯體存取](AWSHowTo.iam.cross-env-s3-access.md)。  
此外，我們的受管政策也不涵蓋您可能新增至解決方案，並且不由 Elastic Beanstalk 管理的自訂資源許可。若要實作更精細的許可、最低必要許可或自訂資源許可，請使用[自訂政策](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)。

**已廢除的 受管政策**  
在過去，Elastic Beanstalk 支援 **AWSElasticBeanstalkService** 受管服務角色政策。此政策已由 **AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy** 取代。您可能仍然可以在 IAM 主控台中查看和使用先前的政策。

若要檢視受管政策內容，請參閱《*AWS  受管政策參考指南*》中的 [AWSElasticBeanstalkService](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkService.html)。

但是，我們建議您轉換為使用新的受管政策 (**AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy**)。新增自訂政策以授予自訂資源的許可 (如果您有)。

### 使用 Elastic Beanstalk 主控台
<a name="iam-servicerole-console"></a>

當您在 Elastic Beanstalk 主控台啟動環境時，主控台會建立名為 `aws-elasticbeanstalk-service-role` 的預設服務角色，然後將具有預設許可的受管政策連接至該服務角色。

為了讓 Elastic Beanstalk 能夠擔任 `aws-elasticbeanstalk-service-role` 角色，服務角色會在信任關係政策中，將 Elastic Beanstalk 指定為信任實體。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "elasticbeanstalk.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
          "StringEquals": {
            "sts:ExternalId": "elasticbeanstalk"
          }
        }
      }
    ]
}
```

------

當您為環境啟用[受管平台更新](environment-platform-update-managed.md)時，Elastic Beanstalk 會擔任另一個受管更新服務角色以執行受管更新。根據預設，Elastic Beanstalk 主控台使用同一個產生的服務角色 `aws-elasticbeanstalk-service-role` 做為受管更新服務角色。如果您變更預設服務角色，主控台會將受管更新服務角色設定為使用受管更新服務連結角色：`AWSServiceRoleForElasticBeanstalkManagedUpdates`。如需服務連結角色的詳細資訊，請參閱[使用服務連結角色](#iam-servicerole-slr)。

**注意**  
由於許可問題，Elastic Beanstalk 服務不一定能夠成功為您建立此服務連結角色。因此，主控台會嘗試明確地建立。為確保您的帳戶具有此服務連結角色，請至少在使用主控台後建立環境，然後將受管更新設定為在建立環境前啟用。

### 使用 EB CLI
<a name="iam-servicerole-ebcli"></a>

如果您使用 Elastic Beanstalk 命令列界面 (EB CLI) 的 [**eb create**](eb3-create.md) 命令啟動環境，而且不透過 `--service-role` 選項指定服務角色，Elastic Beanstalk 會建立預設的服務角色 `aws-elasticbeanstalk-service-role`。若預設服務角色已存在，Elastic Beanstalk 會將其運用於新環境。在這些情況下，Elastic Beanstalk 主控台也會執行類似的動作。

與主控台不同的是，您無法使用 EB CLI 命令選項指定受管更新服務角色。如果您為環境啟用受管更新，您必須透過組態選項設定受管更新服務角色。下列範例會啟用受管更新，並使用預設服務角色以做為受管更新服務角色。

**Example .ebextensions/managed-platform-update.config**  

```
option_settings:
  aws:elasticbeanstalk:managedactions:
    ManagedActionsEnabled: true
    PreferredStartTime: "Tue:09:00"
    ServiceRoleForManagedUpdates: "aws-elasticbeanstalk-service-role"
  aws:elasticbeanstalk:managedactions:platformupdate:
    UpdateLevel: patch
    InstanceRefreshEnabled: true
```

## 使用 Elastic Beanstalk API 管理服務角色
<a name="iam-servicerole-api"></a>

當您使用 Elastic Beanstalk API 的 `CreateEnvironment` 動作建立環境時，請使用 `aws:elasticbeanstalk:environment` 命名空間中的 `ServiceRole` 組態選項來指定服務角色。如需有關搭配 Elastic Beanstalk API 使用增強型運作狀態監視的詳細資訊，請參閱[將增強型運作狀態報告與 Elastic Beanstalk API 搭配使用](health-enhanced-api.md) 。

此外，如果您為環境啟用[受管平台更新](environment-platform-update-managed.md)，您可以使用 `aws:elasticbeanstalk:managedactions` 命名空間的 `ServiceRoleForManagedUpdates` 選項指定受管更新服務角色。

## 使用服務連結角色
<a name="iam-servicerole-slr"></a>

服務連結角色是 Elastic Beanstalk 預先定義的一種特殊服務角色類型，包含該服務代表您呼叫其他 AWS 服務所需的所有許可。服務連結角色會您的帳戶建立關聯。Elastic Beanstalk 只會建立一次此角色，然後在建立其他環境時重複使用。如需透過 Elastic Beanstalk 環境使用服務連結角色的詳細資訊，請參閱[使用 Elastic Beanstalk 的服務連結角色](using-service-linked-roles.md)。

如果您使用 Elastic Beanstalk API 建立環境，且未指定服務角色，Elastic Beanstalk 會為您的帳戶建立[監控服務連結角色](using-service-linked-roles-monitoring.md) (如果該角色不存在)。Elastic Beanstalk 會將此角色用於新的環境。您也可以使用 IAM，預先建立您帳戶的監控服務連結角色。在您的帳戶擁有此角色之後，您可以使用它來建立使用 Elastic Beanstalk API、Elastic Beanstalk 主控台或 EB CLI 的環境。

如果您啟用環境的[受管平台更新](environment-platform-update-managed.md)，並指定 `AWSServiceRoleForElasticBeanstalkManagedUpdates` 為 `aws:elasticbeanstalk:managedactions` 命名空間 `ServiceRoleForManagedUpdates` 選項的值，Elastic Beanstalk 會為您的帳戶建立[受管更新服務連結角色](using-service-linked-roles-managedupdates.md) (如果該角色不存在)。Elastic Beanstalk 使用此角色為新環境執行受管更新。

**注意**  
當您建立環境時，若 Elastic Beanstalk 嘗試為您的帳戶建立監控和受管更新服務連結角色，您必須擁有 `iam:CreateServiceLinkedRole` 許可。如果您沒有此許可，環境建立會失敗，並顯示一則說明問題的訊息。  
或者，具有建立服務連結角色許可的另一個使用者可用 IAM 預先建立服務連結角色。使用此方法，您不需要 `iam:CreateServiceLinkedRole` 許可即可建立環境。

## 驗證預設服務角色許可
<a name="iam-servicerole-verify"></a>

由您的預設服務角色所授予的許可，可能會基於角色建立的時間、上次啟動環境的時間和使用的用戶端，而有所不同。在 IAM 主控台中，您可以驗證預設服務角色所授予的許可。

**若要驗證預設服務角色的許可**

1. 在 IAM 主控台中，開啟 [**Roles** (角色) 頁面](https://console.aws.amazon.com/iam/home#roles)。

1. 選擇 **aws-elasticbeanstalk-service-role (aws-elasticbeanstalk-service-role)**。

1. 在 **Permissions** (許可) 索引標籤中，請檢閱角色連接的政策清單。

1. 若要檢視政策所授予的許可，請選擇政策。

## 更新過時的預設服務角色
<a name="iam-servicerole-update"></a>

如果預設的服務角色缺少所需的許可，您可以藉由在 Elastic Beanstalk 環境的管理主控台中[建立新環境](using-features.environments.md)，來更新該角色的許可。

或者，您可以透過手動方式，將受管政策新增至預設的服務角色。

**若要受管政策新增到預設的服務角色**

1. 在 IAM 主控台中，開啟 [**Roles** (角色) 頁面](https://console.aws.amazon.com/iam/home#roles)。

1. 選擇 **aws-elasticbeanstalk-service-role (aws-elasticbeanstalk-service-role)**。

1. 在 **Permissions** (許可) 標籤上，選擇 **Attach policies** (連接政策)。

1. 輸入 **AWSElasticBeanstalk** 來篩選政策。

1. 選擇下列的政策，然後選擇 **Attach policy** (連接政策)：
   + `AWSElasticBeanstalkEnhancedHealth`
   + `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`

## 新增預設服務角色的許可
<a name="iam-servicerole-addperms"></a>

如果您的應用程式包含參考 資源的組態檔案，而該 AWS 資源的許可未包含在 的預設服務角色中，則 Elastic Beanstalk 可能需要額外的許可。當它在受管更新期間處理組態檔案時，需要這些額外的許可來解析這些引用。如果缺少許可，則更新會失敗，而且 Elastic Beanstalk 會傳回訊息，指示所需的許可。請依照下列步驟將其他服務的許可新增至 IAM 主控台中的預設服務角色。

**若要針對預設服務角色新增額外的政策**

1. 在 IAM 主控台中，開啟 [**Roles** (角色) 頁面](https://console.aws.amazon.com/iam/home#roles)。

1. 選擇 **aws-elasticbeanstalk-service-role (aws-elasticbeanstalk-service-role)**。

1. 在 **Permissions** (許可) 標籤上，選擇 **Attach policies** (連接政策)。

1. 為您的應用程式使用的其他服務，選取受管原則，例如 `AmazonAPIGatewayAdministrator` 或 `AmazonElasticFileSystemFullAccess`。

1. 選擇**連接政策**。

## 建立服務角色
<a name="iam-servicerole-create"></a>

如果您無法使用預設服務角色，請建立服務角色。

**若要建立服務角色**

1. 在 IAM 主控台中，開啟 [**Roles** (角色) 頁面](https://console.aws.amazon.com/iam/home#roles)。

1. 選擇建**立角色**。

1. 在 **AWS service** (AWS 服務) 之下選擇 **AWS Elastic Beanstalk**，然後選取您的使用案例。

1. 選擇**下一步：許可**。

1. 連接 `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy` 與 `AWSElasticBeanstalkEnhancedHealth` 受管政策，以及提供您應用程式所需許可的其他任何政策。

1. 選擇下**一步：標籤**。

1. (選用) 附加標籤至角色。

1. 選擇下**一步：檢閱**。

1. 輸入角色的名稱。

1. 選擇建**立角色**。

當您利用[環境建立精靈](environments-create-wizard.md)或 `eb create` 指令中的 `--service-role` 選項來建立環境時，請套用自訂的服務角色。