

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

# 搭配 使用 Elastic Beanstalk AWS Identity and Access Management
<a name="AWSHowTo.iam"></a>

AWS Identity and Access Management (IAM) 可協助您安全地控制對 AWS 資源的存取。本節包含參考資料，說明使用 IAM 政策、執行個體描述檔和服務角色的相關資訊。

如需許可的概觀，請參閱[Elastic Beanstalk Service 角色、執行個體描述檔和使用者政策](concepts-roles.md)。對於大多數環境，在您啟動第一個環境時，由 Elastic Beanstalk 主控台提示您建立的服務角色和執行個體描述檔，會具有您需要的所有許可。同樣地，Elastic Beanstalk 所提供的完整存取和唯讀存取[受管政策](AWSHowTo.iam.managed-policies.md)，也包含了日常使用需要的所有使用者許可。

[IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMGettingStarted.html)提供 AWS 許可的深入涵蓋。

**Topics**
+ [管理 Elastic Beanstalk 執行個體描述檔](iam-instanceprofile.md)
+ [管理 Elastic Beanstalk 服務角色](iam-servicerole.md)
+ [使用 Elastic Beanstalk 的服務連結角色](using-service-linked-roles.md)
+ [管理 Elastic Beanstalk 使用者政策](AWSHowTo.iam.managed-policies.md)
+ [Elastic Beanstalk 的 Amazon Resource Name 格式](AWSHowTo.iam.policies.arn.md)
+ [Elastic Beanstalk 動作的資源與條件](AWSHowTo.iam.policies.actions.md)
+ [使用標籤來控制對 Elastic Beanstalk 資源的存取](AWSHowTo.iam.policies.access-tags.md)
+ [以受管政策為基礎的範例政策](ExamplePolicies_AEB.md)
+ [根據資源許可的範例政策](AWSHowTo.iam.example.resource.md)
+ [防止跨環境 Amazon S3 儲存貯體存取](AWSHowTo.iam.cross-env-s3-access.md)

# 管理 Elastic Beanstalk 執行個體描述檔
<a name="iam-instanceprofile"></a>

執行個體描述檔是 AWS Identity and Access Management (IAM) 角色的容器，您可以在執行個體啟動時用來將角色資訊傳遞至 Amazon EC2 執行個體。

如果 AWS 您的帳戶沒有 EC2 執行個體描述檔，您必須使用 IAM 服務建立一個。然後，您可以將 EC2 執行個體設定檔指派給您建立的新環境。Elastic Beanstalk 主控台中的**建立環境**步驟可讓您存取 IAM 主控台，以便建立具有所需許可的 EC2 執行個體描述檔。

**注意**  
先前，Elastic Beanstalk 會在 AWS 帳戶`aws-elasticbeanstalk-ec2-role`第一次建立環境時建立名為 的預設 EC2 執行個體描述檔。此執行個體設定檔包含預設受管政策。如果您的帳戶已經擁有此執行個體設定檔，您仍然可以將其指派給您的環境。  
不過，最近的 AWS 安全準則不允許 AWS 服務自動建立對其他 AWS 服務 EC2 具有信任政策的角色。基於這些安全性準則，Elastic Beanstalk 不再建立預設 `aws-elasticbeanstalk-ec2-role` 執行個體設定檔。



**受管政策**  
Elastic Beanstalk 提供多種受管政策，讓您的環境能夠滿足不同的使用案例。若要符合環境的預設使用案例，這些政策必須附加至 EC2 執行個體設定檔的角色。
+ **AWSElasticBeanstalkWebTier** – 授予應用程式許可，以將日誌上傳至 Amazon S3，以及將除錯資訊上傳至 AWS X-Ray。若要檢視受管政策內容，請參閱《*AWS  受管政策參考指南*》中的 [AWSElasticBeanstalkWebTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWebTier.html)。
+ **AWSElasticBeanstalkWorkerTier** - 授予許可來上傳日誌、除錯、指標發佈及工作者執行個體任務 (包括佇列管理、領導者選舉及周期性任務)。若要檢視受管政策內容，請參閱《*AWS  受管政策參考指南*》中的 [AWSElasticBeanstalkWorkerTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWorkerTier.html)。
+ **AWSElasticBeanstalkMulticontainerDocker** - 授予 Amazon Elastic Container Service 的許可，以協調 Docker 環境的叢集任務。若要檢視受管政策內容，請參閱《*AWS  受管政策參考指南*》中的 [AWSElasticBeanstalkMulticontainerDocker](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkMulticontainerDocker.html)。



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

**EC2 的信任關係政策**  
為了讓環境中的 EC2 執行個體能夠擔任必要的角色，執行個體設定檔必須在信任關係政策中，將 Amazon EC2 指定為受信任實體，如下所示。

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

****  

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

------

若要自訂許可，您可將政策新增至連接預設執行個體描述檔的角色，或自行建立具備一組受限許可的執行個體描述檔。

若要使用 [AI 驅動的環境分析](health-ai-analysis.md)功能，請將 `bedrock:InvokeModel`、`elasticbeanstalk:DescribeEvents`、 `bedrock:ListFoundationModels`和 `elasticbeanstalk:DescribeEnvironmentHealth`許可新增至執行個體描述檔。這些許可允許 Elastic Beanstalk 使用 Amazon Bedrock 和存取環境資料來分析日誌、事件和執行個體運作狀態。

**Topics**
+ [建立執行個體描述檔](#iam-instanceprofile-create)
+ [於預設執行個體描述檔新增許可](#iam-instanceprofile-addperms)
+ [驗證指派給執行個體設定檔的許可](#iam-instanceprofile-verify)
+ [更新過時的預設執行個體描述檔](#iam-instanceprofile-update)

## 建立執行個體描述檔
<a name="iam-instanceprofile-create"></a>

執行個體描述檔為標準 IAM 角色的包裝函式，可允許 EC2 執行個體擔任該角色。您可以使用預設 Elastic Beanstalk 受管政策建立執行個體描述檔。您也可以建立其他執行個體描述檔，以自訂不同應用程式的許可。或者，如果您不使用這些功能，您可以建立不包含授予工作者層或 ECS 受管 Docker 環境許可的兩個受管政策的執行個體描述檔。

**使用預設受管政策建立執行個體描述檔**

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

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

1. 針對**信任的實體類型**，請選擇 **AWS 服務**。

1. 針對**服務或使用案例**，選擇 **Elastic Beanstalk**。

1. 針對**使用案例**，選擇** Elastic Beanstalk – Compute**。

1. 選擇**下一步**。

1. 輸入 **Role name (角色名稱)**。

   您可以輸入 Elastic Beanstalk 主控台建議的預設角色名稱：`aws-elasticbeanstalk-ec2-role`。

1. 確認**許可政策**包含下列項目，然後選擇**下一步**：
   + `AWSElasticBeanstalkWebTier`
   + `AWSElasticBeanstalkWorkerTier`
   + `AWSElasticBeanstalkMulticontainerDocker`

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

**使用您特定的受管政策選擇來建立執行個體描述檔**

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

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

1. 在**受信任的實體類型**下，選擇 **AWS  服務**。

1. 在 **Use case** (使用案例) 下，選擇 **EC2**。

1. 選擇**下一步**。

1. 連接 Elastic Beanstalk 提供的合適受管政策，以及為您的應用程式提供所需許可的其他政策。

1. 選擇**下一步**。

1. 輸入角色的名稱。

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

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

## 於預設執行個體描述檔新增許可
<a name="iam-instanceprofile-addperms"></a>

如果您的應用程式存取未在預設執行個體描述檔中授予許可 AWS APIs 或資源，請在 IAM 主控台中新增授予許可的政策。

**若要在連接至預設執行個體描述檔的角色中新增政策**

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

1. 選擇指派為 EC2 執行個體設定檔的角色。

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

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

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

## 驗證指派給執行個體設定檔的許可
<a name="iam-instanceprofile-verify"></a>

指派給您預設執行個體描述檔的許可，可能會根據其建立的時間、上次啟動環境的時間和使用的用戶端，而有所不同。您可以在 IAM 主控台中，驗證預設執行個體描述檔上的許可。

**若要驗證預設執行個體描述檔的許可**

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

1. 選擇指派為 EC2 執行個體設定檔的角色。

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

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

## 更新過時的預設執行個體描述檔
<a name="iam-instanceprofile-update"></a>

如果預設執行個體設定檔缺少必要的許可，您可手動將受管政策新增至指派為 EC2 執行個體設定檔的角色。

**若要在連接至預設執行個體描述檔的角色中新增受管政策**

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

1. 選擇指派為 EC2 執行個體設定檔的角色。

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

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

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

# 管理 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` 選項來建立環境時，請套用自訂的服務角色。

# 使用 Elastic Beanstalk 的服務連結角色
<a name="using-service-linked-roles"></a>

AWS Elastic Beanstalk use AWS Identity and Access Management (IAM)[ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Elastic Beanstalk 的一種獨特 IAM 角色類型。服務連結角色由 Elastic Beanstalk 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

Elastic Beanstalk 定義了幾種類型的服務連結角色：
+ 「監控服務連結角色」**- 可讓 Elastic Beanstalk 監控執行中環境的運作狀態，並發佈運作狀態事件通知。
+ 「維護服務連結角色」**- 可讓 Elastic Beanstalk 為執行中環境執行定期維護活動。
+ *受管理的更新服務連結角色* - 讓 Elastic Beanstalk 能執行您執行環境中排定的平台更新。

**Topics**
+ [監控服務連結角色](using-service-linked-roles-monitoring.md)
+ [維護服務連結角色](using-service-linked-roles-maintenance.md)
+ [受管更新服務連結角色](using-service-linked-roles-managedupdates.md)

# 監控服務連結角色
<a name="using-service-linked-roles-monitoring"></a>

AWS Elastic Beanstalk use AWS Identity and Access Management (IAM)[ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Elastic Beanstalk 的一種獨特 IAM 角色類型。服務連結角色由 Elastic Beanstalk 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色讓設定 Elastic Beanstalk 變得更簡單，因為您不必手動新增必要的許可。Elastic Beanstalk 定義其服務連結角色的許可，除非另有定義，否則僅有 Elastic Beanstalk 可以擔任其角色。定義的許可包括信任政策和許可政策，且該許可政策無法附加至其他 IAM 實體。

您必須先刪除服務連結角色的相關資源，才能將其刪除。這可保護您的 Elastic Beanstalk 資源，避免您不小心移除資源的存取許可。

如需關於支援服務連結角色的其他服務的資訊，請參閱[可搭配 IAM 運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，並尋找 **Service-Linked Role** (服務連結角色) 欄顯示為 **Yes** (是) 的服務。選擇具有連結的**是**，以檢視該服務的服務連結角色文件。

## Elastic Beanstalk 的服務連結角色許可
<a name="service-linked-role-permissions-monitoring"></a>

Elastic Beanstalk 使用名為 **AWSServiceRoleForElasticBeanstalk** 的服務連結角色 - 可讓 Elastic Beanstalk 監控執行中環境的運作狀態，並發佈運作狀態事件通知。

AWSServiceRoleForElasticBeanstalk 服務連結角色信任下列服務可擔任該角色：
+ `elasticbeanstalk.amazonaws.com`

AWSServiceRoleForElasticBeanstalk 服務連結角色的許可政策包含 Elastic Beanstalk 代表您完成動作所需的所有許可：

### AllowCloudformationReadOperationsOnElasticBeanstalkStacks
<a name="service-linked-role-permissions-monitoringmonitoring.policy-source"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudformationReadOperationsOnElasticBeanstalkStacks",
            "Effect": "Allow",
            "Action": [
                "cloudformation:DescribeStackResource",
                "cloudformation:DescribeStackResources",
                "cloudformation:DescribeStacks"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stack/awseb-*",
                "arn:aws:cloudformation:*:*:stack/eb-*"
            ]
        },
        {
            "Sid": "AllowOperations",
            "Effect": "Allow",
            "Action": [
                "autoscaling:DescribeAutoScalingGroups",
                "autoscaling:DescribeAutoScalingInstances",
                "autoscaling:DescribeNotificationConfigurations",
                "autoscaling:DescribeScalingActivities",
                "autoscaling:PutNotificationConfiguration",
                "ec2:DescribeInstanceStatus",
                "ec2:AssociateAddress",
                "ec2:DescribeAddresses",
                "ec2:DescribeInstances",
                "ec2:DescribeSecurityGroups",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeTargetHealth",
                "elasticloadbalancing:DescribeTargetGroups",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sns:Publish"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

或者，您可以使用 AWS 受管政策來[提供 Elastic Beanstalk 的完整存取權](AWSHowTo.iam.managed-policies.md)。

## 為 Elastic Beanstalk 建立服務連結角色
<a name="create-service-linked-role-monitoring"></a>

您不需要手動建立服務連結角色，當您使用 Elastic Beanstalk API 建立 Elastic Beanstalk 環境，但未指定服務角色時，Elastic Beanstalk 會為您建立服務連結角色。

**重要**  
 如果您在 2017 年 9 月 27 日 Elastic Beanstalk 服務開始支援 AWSServiceRoleForElasticBeanstalk 服務連結角色之前即已使用該服務，而且您的帳戶需要此角色，Elastic Beanstalk 會在您的帳戶中建立 AWSServiceRoleForElasticBeanstalk 角色。若要進一步了解，請參閱[我的 IAM 帳戶中出現的新角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

當您建立環境時，若 Elastic Beanstalk 嘗試為您的帳戶建立 AWSServiceRoleForElasticBeanstalk 服務連結角色，您必須擁有 `iam:CreateServiceLinkedRole` 許可。如果您沒有此許可，環境建立會失敗，且您會看到一則說明問題的訊息。

或者，具有建立服務連結角色許可的另一個使用者可用 IAM 來預先建立服務連結角色。然後，即使沒有 `iam:CreateServiceLinkedRole` 權限，您也可以建立您的環境。

您 (或其他使用者) 可以使用 IAM 主控台透過 **Elastic Beanstalk** 使用案例建立服務連結角色。在 IAM CLI 或 IAM API 中，建立一個使用 `elasticbeanstalk.amazonaws.com` 服務名稱的服務連結角色。如需詳細資訊，請參閱 *IAM 使用者指南*中的[建立服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role)。如果您刪除此服務連結角色，您可以使用此相同的程序以再次建立該角色。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您使用 Elastic Beanstalk API 建立 Elastic Beanstalk 環境，但未指定服務角色時，Elastic Beanstalk 會再次為您建立服務連結角色。

## 編輯 Elastic Beanstalk 的服務連結角色
<a name="edit-service-linked-role-monitoring"></a>

Elastic Beanstalk 不允許您編輯 AWSServiceRoleForElasticBeanstalk 服務連結角色。因為有各種實體可能會參考服務連結角色，所以您無法在建立角色之後變更角色名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 Elastic Beanstalk 的服務連結角色
<a name="delete-service-linked-role-monitoring"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。然而，在手動刪除服務連結角色之前，您必須先清除資源。

### 清除服務連結角色
<a name="service-linked-role-review-before-delete-monitoring"></a>

您必須先確保所有 Elastic Beanstalk 環境皆使用不同的服務角色或已終止，才能使用 IAM 刪除服務連結角色。

**注意**  
當您嘗試終止環境時，如果 Elastic Beanstalk 服務仍在使用該服務連結角色，則終止可能會失敗。若此情況發生，請等待數分鐘後並再次嘗試操作。

**若要終止使用 AWSServiceRoleForElasticBeanstalk 的 Elastic Beanstalk 環境 (主控台)**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 選擇 **Actions** (動作)，然後選擇 **Terminate Environment** (終止環境)。

1. 使用畫面顯示對話方塊來確認環境終止。

如需使用 EB CLI 終止 Elastic Beanstalk 環境的詳細資訊，請參閱[**eb terminate**](eb3-terminate.md)。

如需使用 API 終止 Elastic Beanstalk 環境的詳細資訊，請參閱 [TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)。

### 手動刪除服務連結角色
<a name="slr-manual-delete-monitoring"></a>

使用 IAM 主控台、IAM CLI 或 IAM API 刪除 AWSServiceRoleForElasticBeanstalk 服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Elastic Beanstalk 服務連結角色的支援區域
<a name="slr-regions-monitoring"></a>

Elastic Beanstalk 在所有提供服務的區域中都支援使用服務連結角色。如需詳細資訊，請參閱 [AWS Elastic Beanstalk 端點和配額](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)。

# 維護服務連結角色
<a name="using-service-linked-roles-maintenance"></a>

AWS Elastic Beanstalk use AWS Identity and Access Management (IAM)[ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Elastic Beanstalk 的一種獨特 IAM 角色類型。服務連結角色由 Elastic Beanstalk 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色讓設定 Elastic Beanstalk 變得更簡單，因為您不必手動新增必要的許可。Elastic Beanstalk 定義其服務連結角色的許可，除非另有定義，否則僅有 Elastic Beanstalk 可以擔任其角色。定義的許可包括信任政策和許可政策，且該許可政策無法附加至其他 IAM 實體。

您必須先刪除服務連結角色的相關資源，才能將其刪除。這可保護您的 Elastic Beanstalk 資源，避免您不小心移除資源的存取許可。

如需關於支援服務連結角色的其他服務的資訊，請參閱[可搭配 IAM 運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，並尋找 **Service-Linked Role** (服務連結角色) 欄顯示為 **Yes** (是) 的服務。選擇具有連結的**是**，以檢視該服務的服務連結角色文件。

## Elastic Beanstalk 的服務連結角色許可
<a name="service-linked-role-permissions-maintenance"></a>

Elastic Beanstalk 使用名為 **AWSServiceRoleForElasticBeanstalkMaintenance** 的服務連結角色 - 可讓 Elastic Beanstalk 為執行中環境執行定期維護活動。

AWSServiceRoleForElasticBeanstalkMaintenance 服務連結角色信任下列服務可擔任該角色：
+ `maintenance.elasticbeanstalk.amazonaws.com`

AWSServiceRoleForElasticBeanstalkMaintenance 服務連結角色的許可政策包含 Elastic Beanstalk 代表您完成動作所需的所有許可：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
        {
            "Sid": "AllowCloudformationChangeSetOperationsOnElasticBeanstalkStacks",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:ListChangeSets",
                "cloudformation:DescribeStacks"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stack/awseb-*",
                "arn:aws:cloudformation:*:*:stack/eb-*"
            ]
        }
}
```

------

您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

或者，您可以使用 AWS 受管政策來[提供 Elastic Beanstalk 的完整存取權](AWSHowTo.iam.managed-policies.md)。

## 為 Elastic Beanstalk 建立服務連結角色
<a name="create-service-linked-role-maintenance"></a>

您不需要手動建立服務連結角色，當您使用 Elastic Beanstalk API 建立 Elastic Beanstalk 環境，但未指定執行個體描述檔時，Elastic Beanstalk 會為您建立服務連結角色。

**重要**  
 此服務連結角色可以顯示在您的帳戶，如果您於其他服務中完成一項動作時，可以使用支援此角色的功能。如果您在 2019 年 4 月 18 日 Elastic Beanstalk 服務開始支援 AWSServiceRoleForElasticBeanstalkMaintenance 服務連結角色之前即已使用該服務，而且您的帳戶需要此角色，Elastic Beanstalk 會在您的帳戶中建立 AWSServiceRoleForElasticBeanstalkMaintenance 角色。若要進一步了解，請參閱[我的 IAM 帳戶中出現的新角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您使用 Elastic Beanstalk API 建立 Elastic Beanstalk 環境，但未指定執行個體描述檔時，Elastic Beanstalk 會再次為您建立服務連結角色。

## 編輯 Elastic Beanstalk 的服務連結角色
<a name="edit-service-linked-role-maintenance"></a>

Elastic Beanstalk 不允許您編輯 AWSServiceRoleForElasticBeanstalkMaintenance 服務連結角色。因為有各種實體可能會參考服務連結角色，所以您無法在建立角色之後變更角色名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 Elastic Beanstalk 的服務連結角色
<a name="delete-service-linked-role-maintenance"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。然而，在手動刪除服務連結角色之前，您必須先清除資源。

### 清除服務連結角色
<a name="service-linked-role-review-before-delete-maintenance"></a>

您必須先終止使用服務連結角色的任何 Elastic Beanstalk 環境，才能使用 IAM 刪除該服務連結角色。

**注意**  
當您嘗試終止環境時，如果 Elastic Beanstalk 服務仍在使用該服務連結角色，則終止可能會失敗。若此情況發生，請等待數分鐘後並再次嘗試操作。

**若要終止使用 AWSServiceRoleForElasticBeanstalkMaintenance 的 Elastic Beanstalk 環境 (主控台)**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 選擇 **Actions** (動作)，然後選擇 **Terminate Environment** (終止環境)。

1. 使用畫面顯示對話方塊來確認環境終止。

如需使用 EB CLI 終止 Elastic Beanstalk 環境的詳細資訊，請參閱[**eb terminate**](eb3-terminate.md)。

如需使用 API 終止 Elastic Beanstalk 環境的詳細資訊，請參閱 [TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)。

### 手動刪除服務連結角色
<a name="slr-manual-delete-maintenance"></a>

使用 IAM 主控台、IAM CLI 或 IAM API 刪除 AWSServiceRoleForElasticBeanstalkMaintenance 服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Elastic Beanstalk 服務連結角色的支援區域
<a name="slr-regions-maintenance"></a>

Elastic Beanstalk 在所有提供服務的區域中都支援使用服務連結角色。如需詳細資訊，請參閱 [AWS Elastic Beanstalk 端點和配額](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)。

# 受管更新服務連結角色
<a name="using-service-linked-roles-managedupdates"></a>

AWS Elastic Beanstalk use AWS Identity and Access Management (IAM)[ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Elastic Beanstalk 的一種獨特 IAM 角色類型。服務連結角色由 Elastic Beanstalk 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色讓設定 Elastic Beanstalk 變得更簡單，因為您不必手動新增必要的許可。Elastic Beanstalk 定義其服務連結角色的許可，除非另有定義，否則僅有 Elastic Beanstalk 可以擔任其角色。定義的許可包括信任政策和許可政策，且該許可政策無法附加至其他 IAM 實體。

您必須先刪除服務連結角色的相關資源，才能將其刪除。這可保護您的 Elastic Beanstalk 資源，避免您不小心移除資源的存取許可。

如需關於支援服務連結角色的其他服務的資訊，請參閱[可搭配 IAM 運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，並尋找 **Service-Linked Role** (服務連結角色) 欄顯示為 **Yes** (是) 的服務。選擇具有連結的**是**，以檢視該服務的服務連結角色文件。

## Elastic Beanstalk 的服務連結角色許可
<a name="service-linked-role-permissions-managedupdates"></a>

Elastic Beanstalk 使用名為 **AWSServiceRoleForElasticBeanstalkManagedUpdates** 的服務連結角色 - 可讓 Elastic Beanstalk 為執行中環境執行排程的平台更新。

AWSServiceRoleForElasticBeanstalkManagedUpdates 服務連結角色信任下列服務可擔任該角色：
+ `managedupdates.elasticbeanstalk.amazonaws.com`

受管政策 **AWSElasticBeanstalkManagedUpdatesServiceRolePolicy** 允許 AWSServiceRoleForElasticBeanstalkManagedUpdates 服務連結角色 Elastic Beanstalk 代表您完成受管更新動作所需的所有許可。若要檢視受管政策內容，請參閱《 *AWS 受管政策參考指南*》中的 [AWSElasticBeanstalkManagedUpdatesServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkManagedUpdatesServiceRolePolicy.html) 頁面。

您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

或者，您可以使用 AWS 受管政策來[提供 Elastic Beanstalk 的完整存取權](AWSHowTo.iam.managed-policies.md)。

## 為 Elastic Beanstalk 建立服務連結角色
<a name="create-service-linked-role-managedupdates"></a>

您不需要手動建立服務連結角色，當您使用 Elastic Beanstalk API 建立 Elastic Beanstalk 環境，啟用受管更新，並指定 `AWSServiceRoleForElasticBeanstalkManagedUpdates` 為 `aws:elasticbeanstalk:managedactions` 命名空間 `ServiceRoleForManagedUpdates` 選項的值時，Elastic Beanstalk 會為您建立服務連結角色。

當您建立環境時，若 Elastic Beanstalk 嘗試為您的帳戶建立 AWSServiceRoleForElasticBeanstalkManagedUpdates 服務連結角色，您必須擁有 `iam:CreateServiceLinkedRole` 許可。如果您沒有此許可，環境建立會失敗，且您會看到一則說明問題的訊息。

或者，具有建立服務連結角色許可的另一個使用者可用 IAM 來預先建立服務連結角色。然後，即使沒有 `iam:CreateServiceLinkedRole` 權限，您也可以建立您的環境。

您 (或其他使用者) 可以使用 IAM 主控台透過 **Elastic Beanstalk Managed Updates (Elastic Beanstalk 受管更新)** 使用案例建立服務連結角色。在 IAM CLI 或 IAM API 中，建立一個使用 `managedupdates.elasticbeanstalk.amazonaws.com` 服務名稱的服務連結角色。如需詳細資訊，請參閱 *IAM 使用者指南*中的[建立服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role)。如果您刪除此服務連結角色，您可以使用此相同的程序以再次建立該角色。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您使用 Elastic Beanstalk API 建立 Elastic Beanstalk 環境，啟用受管更新，並指定 `AWSServiceRoleForElasticBeanstalkManagedUpdates` 為 `aws:elasticbeanstalk:managedactions` 命名空間 `ServiceRoleForManagedUpdates` 選項的值時，Elastic Beanstalk 會再次為您建立服務連結角色。

## 編輯 Elastic Beanstalk 的服務連結角色
<a name="edit-service-linked-role-managedupdates"></a>

Elastic Beanstalk 不允許您編輯 AWSServiceRoleForElasticBeanstalkManagedUpdates 服務連結角色。因為有各種實體可能會參考服務連結角色，所以您無法在建立角色之後變更角色名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 Elastic Beanstalk 的服務連結角色
<a name="delete-service-linked-role-managedupdates"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。然而，在手動刪除服務連結角色之前，您必須先清除資源。

### 清除服務連結角色
<a name="service-linked-role-review-before-delete-managedupdates"></a>

您必須先確保已啟用受管更新的 Elastic Beanstalk 環境皆使用不同的服務角色或已終止，才能使用 IAM 刪除服務連結角色。

**注意**  
當您嘗試終止環境時，如果 Elastic Beanstalk 服務仍在使用該服務連結角色，則終止可能會失敗。若此情況發生，請等待數分鐘後並再次嘗試操作。

**若要終止使用 AWSServiceRoleForElasticBeanstalkManagedUpdates 的 Elastic Beanstalk 環境 (主控台)**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 選擇 **Actions (動作)**，然後選擇 **Terminate Environment (終止環境)**。

1. 使用畫面顯示對話方塊來確認環境終止。

如需使用 EB CLI 終止 Elastic Beanstalk 環境的詳細資訊，請參閱[**eb terminate**](eb3-terminate.md)。

如需使用 API 終止 Elastic Beanstalk 環境的詳細資訊，請參閱 [TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)。

### 手動刪除服務連結角色
<a name="slr-manual-delete-managedupdates"></a>

使用 IAM 主控台、IAM CLI 或 IAM API 刪除 AWSServiceRoleForElasticBeanstalkManagedUpdates 服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Elastic Beanstalk 服務連結角色的支援區域
<a name="slr-regions-managedupdates"></a>

Elastic Beanstalk 在所有提供服務的區域中都支援使用服務連結角色。如需詳細資訊，請參閱 [AWS Elastic Beanstalk 端點和配額](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)。

# 管理 Elastic Beanstalk 使用者政策
<a name="AWSHowTo.iam.managed-policies"></a>

AWS Elastic Beanstalk 提供兩種受管政策，可讓您指派 Elastic Beanstalk 管理之所有資源的完整存取權或唯讀存取權。您可以將政策連接至 AWS Identity and Access Management (IAM) 使用者或群組，或連接至使用者擔任的角色。

**受管使用者政策**
+ **AdministratorAccess-AWSElasticBeanstalk** – 授予使用者完全的管理許可，可建立、修改及刪除 Elastic Beanstalk 應用程式、應用程式版本、組態設定、環境及其基礎資源。若要檢視受管理的政策內容，請參閱*《AWS 受管政策參考指南》*中的 [AdministratorAccess-AWSElasticBeanstalk](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess-AWSElasticBeanstalk.html) 頁面。
+ **AWSElasticBeanstalkReadOnly** – 允許使用者檢視應用程式與環境，但無法對其執行修改操作。它可讓您唯讀存取所有 Elastic Beanstalk 資源，以及 Elastic Beanstalk 主控台擷取的其他 AWS 資源。請注意，唯讀存取不會啟用諸如下載 Elastic Beanstalk 日誌供您讀取等動作。這是因為日誌暫存在 Amazon S3 儲存貯體，其中 Elastic Beanstalk 需要寫入許可。請參閱本主題結尾的範例，了解如何啟用 Elastic Beanstalk 日誌的存取。若要檢視受管理的政策內容，請參閱*AWS 《受管政策參考指南》*中的 [AWSElasticBeanstalkReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkReadOnly.html) 頁面。

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

**已廢除的 受管政策**  
之前，Elastic Beanstalk 支援兩項其他受管使用者政策，即 **AWSElasticBeanstalkFullAccess** 和 **AWSElasticBeanstalkReadOnlyAccess**。我們計劃淘汰這些之前的政策。您可能仍然可以在 IAM 主控台中查看和使用它們。不過，我們建議您轉換為使用新的受管使用者政策，並新增自訂政策來授予自訂資源許可 (若有)。

## 與其他服務整合的政策
<a name="iam-userpolicies-managed-other-services"></a>

如果您偏好使用其他服務，我們也提供更精細的政策，讓您能夠將環境與此類其他服務整合。
+ **AWSElasticBeanstalkRoleCWL** – 允許環境管理 Amazon CloudWatch Logs 日誌群組。
+ **AWSElasticBeanstalkRoleRDS** – 允許環境整合 Amazon RDS 執行個體。
+ **AWSElasticBeanstalkRoleWorkerTier** – 允許工作者環境層建立 Amazon DynamoDB 資料表和 Amazon SQS 佇列。
+ **AWSElasticBeanstalkRoleECS** – 允許多容器 Docker 環境管理 Amazon ECS 叢集。
+ **AWSElasticBeanstalkRoleCore** – 允許 Web 服務環境的核心操作。
+ **AWSElasticBeanstalkRoleSNS** – 允許環境啟用 Amazon SNS 主題整合。

若要查看特定受管政策的 JSON 來源，請參閱 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html)。

## 透過受管政策控制存取
<a name="iam-userpolicies-managed"></a>

您可以使用受管政策，來授予對 Elastic Beanstalk 的完整存取或唯讀存取。當需要其他許可才能存取新功能時，Elastic Beanstalk 會自動更新這些政策。

**若要將受管政策套用至 IAM 使用者或群組**

1. 在 IAM 主控台中開啟 [**Policies (政策)** 頁面](https://console.aws.amazon.com/iam/home#policies)。

1. 在搜尋方塊中，輸入 **AWSElasticBeanstalk** 以篩選政策。

1. 在政策清單中，選取 **AWSElasticBeanstalkReadOnly** 或 **AdministratorAccess-AWSElasticBeanstalk** 旁的核取方塊。

1. 選擇**政策動作**，再選擇**附加**。

1. 選取一或多個使用者和群組以將政策連接到。您可用**篩選**功能表和搜尋方塊來篩選主體實體清單。

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

## 建立自訂使用者政策
<a name="AWSHowTo.iam.policies"></a>

您可以建立自己的 IAM 政策，以允許或拒絕對特定 Elastic Beanstalk 資源上執行特定 Elastic Beanstalk API 動作，並控制對不由 Elastic Beanstalk 管理的自訂資源的存取。如需將政策連接至使用者或群組的相關詳細資訊，請參閱《*IAM 使用者指南*》中的[使用政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。如需有關建立自訂政策的詳細資訊，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

**注意**  
請注意，雖然您可限制使用者與 Elastic Beanstalk API 的互動方式，但目前仍沒有有效的方法，可針對具備建立必要基礎資源許可的使用者，避免其在 Amazon EC2 和其他服務內建立其他資源。  
您可以將這些政策視為分配 Elastic Beanstalk 責任的有效方法，而不是保護所有基礎資源的方法。

**重要**  
如果您將自訂政策指派給 Elastic Beanstalk 服務角色，請務必為其指派適當的啟動範本許可。否則，您可能沒有更新環境或啟動新環境所需的許可。如需詳細資訊，請參閱[啟動範本所需的權限](environments-cfg-autoscaling-launch-templates.md#environments-cfg-autoscaling-launch-templates-permissions)。

IAM 政策內含描述您欲授予之許可的政策陳述式。為 Elastic Beanstalk 建立政策陳述式時，您必須了解如何使用政策陳述式的下列四個部分：
+ **Effect** (效果) 指定欲允許或拒絕陳述式內的動作。
+ **Action** (動作) 指定您欲控制的 [API 操作](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_Operations.html)。例如，使用 `elasticbeanstalk:CreateEnvironment` 來指定 `CreateEnvironment` 操作。特定操作 (如建立環境) 需要其他許可來執行這些動作。如需詳細資訊，請參閱[Elastic Beanstalk 動作的資源與條件](AWSHowTo.iam.policies.actions.md)。
**注意**  
若要使用 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API 操作，請指定下列兩個虛擬動作之一 (或同時)，而非 API 操作名稱：  

`elasticbeanstalk:AddTags`  
控制呼叫 `UpdateTagsForResource` 並傳送欲在 `TagsToAdd` 參數新增之標籤清單的許可。

`elasticbeanstalk:RemoveTags`  
控制呼叫 `UpdateTagsForResource` 並傳送欲在 `TagsToRemove` 參數移除之標籤金鑰清單的許可。
+ **Resource** (資源) 指定您欲控制存取的資源。若要指定 Elastic Beanstalk 資源，請列出各個資源的 [Amazon Resource Name](AWSHowTo.iam.policies.arn.md) (ARN)。
+ (選用) **Condition** (條件) 指定陳述式授予之許可的限制。如需詳細資訊，請參閱[Elastic Beanstalk 動作的資源與條件](AWSHowTo.iam.policies.actions.md)。

以下章節示範幾個案例，其中您可能會考慮自訂使用者政策。

### 啟用有限 Elastic Beanstalk 環境建立
<a name="AWSHowTo.iam.policy.env-creation"></a>

下列範例中的政策可讓使用者呼叫 `CreateEnvironment` 動作來建立名稱開頭為 **Test** 且具備特定應用程式及應用程式版本的環境。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid":"CreateEnvironmentPerm",
      "Action": [
        "elasticbeanstalk:CreateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My First Elastic Beanstalk Application/Test*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My First Elastic Beanstalk Application"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My First Elastic Beanstalk Application/First Release"]
        }
      }
    },
    {
      "Sid":"AllNonResourceCalls",
      "Action":[
        "elasticbeanstalk:CheckDNSAvailability",
        "elasticbeanstalk:CreateStorageLocation"
      ],
      "Effect":"Allow",
      "Resource":[
        "*"
      ]
    }
  ]
}
```

------

上述政策說明如何授予對 Elastic Beanstalk 操作有限制的存取。為了實際啟動環境，使用者必須具有許可，才能建立也支援環境 AWS 的資源。例如，下列政策針對用於 Web 伺服器環境的預設資源組合，授予存取：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "ecs:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "cloudformation:*",
        "sqs:*"
        ],
      "Resource": "*"
    }
  ]
}
```

------

### 啟用存放在 Amazon S3 的 Elastic Beanstalk 日誌的存取
<a name="AWSHowTo.iam.policy.view-s3-logs"></a>

下列範例中的政策可讓使用者提取 Elastic Beanstalk 日誌、將日誌暫存在 Amazon S3 中，以及擷取日誌。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "s3:DeleteObject",
        "s3:GetObjectAcl",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::elasticbeanstalk-*"
    }
  ]
}
```

------

**注意**  
若要僅限制這些日誌路徑的權限，請使用下列資源格式。  

```
"arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/resources/environments/logs/*"
```

### 啟用特定 Elastic Beanstalk 應用程式的管理
<a name="AWSHowTo.iam.policy.manage-app"></a>

以下範例的政策可讓使用者在一個特定 Elastic Beanstalk 應用程式內管理環境和其他資源。此政策拒絕對其他應用程式的資源執行 Elastic Beanstalk 動作，也拒絕建立和刪除 Elastic Beanstalk 應用程式。

**注意**  
此政策不會拒絕存取透過其他服務的任何資源。它示範由不同使用者分配 Elastic Beanstalk 應用程式管理責任的有效方法，而不是做為保護基礎資源的方法。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:DeleteApplication"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplicationVersion",
        "elasticbeanstalk:CreateConfigurationTemplate",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:DeleteApplicationVersion",
        "elasticbeanstalk:DeleteConfigurationTemplate",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:DescribeApplicationVersions",
        "elasticbeanstalk:DescribeConfigurationOptions",
        "elasticbeanstalk:DescribeConfigurationSettings",
        "elasticbeanstalk:DescribeEnvironmentResources",
        "elasticbeanstalk:DescribeEnvironments",
        "elasticbeanstalk:DescribeEvents",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RestartAppServer",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:TerminateEnvironment",
        "elasticbeanstalk:UpdateApplicationVersion",
        "elasticbeanstalk:UpdateConfigurationTemplate",
        "elasticbeanstalk:UpdateEnvironment",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:ValidateConfigurationSettings"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringNotEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/myapplication"
          ]
        }
      }
    }
  ]
}
```

------

# Elastic Beanstalk 的 Amazon Resource Name 格式
<a name="AWSHowTo.iam.policies.arn"></a>

您可以使用資源的 Amazon Resource Name (ARN)，藉此指定 IAM 政策的資源。在 Elastic Beanstalk 中，ARN 採用下列格式。

```
arn:aws:elasticbeanstalk:region:account-id:resource-type/resource-path
```

其中：
+ `region` 為資源所在的區域 (如 **us-west-2**)。
+ `account-id` 是 AWS 帳戶 ID，沒有連字號 （例如 **123456789012**)
+ `resource-type` 識別 Elastic Beanstalk 資源的類型 (如 `environment`)。請參閱下表，取得所有 Elastic Beanstalk 資源類型的清單。
+ `resource-path` 為能夠辨識特定資源的部分。Elastic Beanstalk 資源具備識別該資源的唯一路徑。請參閱下表，取得每個資源類型的資源路徑格式。例如，環境始終會與應用程式建立關聯。應用程式 **myApp** 內環境 **myEnvironment** 的資源路徑如下：

  ```
  myApp/myEnvironment
  ```

Elastic Beanstalk 擁有您可於政策內指定的數種資源類型。下表說明每個資源類型的 ARN 格式和範例。


****  

| Resource Type (資源類型) | ARN 格式 | 
| --- | --- | 
|  `application`  |  `arn:aws:elasticbeanstalk:region:account-id:application/application-name` 範例：**arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App**  | 
|  `applicationversion`  |  `arn:aws:elasticbeanstalk:region:account-id:applicationversion/application-name/version-label` 範例：**arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version**  | 
|  `configurationtemplate`  |  `arn:aws:elasticbeanstalk:region:account-id:configurationtemplate/application-name/template-name` 範例：**arn:aws:elasticbeanstalk:us-east-2:123456789012:configurationtemplate/My App/My Template**  | 
|  `environment`  |  `arn:aws:elasticbeanstalk:region:account-id:environment/application-name/environment-name` 範例：**arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/MyEnvironment**  | 
|  `platform`  |  `arn:aws:elasticbeanstalk:region:account-id:platform/platform-name/platform-version` 範例：**arn:aws:elasticbeanstalk:us-east-2:123456789012:platform/MyPlatform/1.0**  | 
|  `solutionstack`  |  `arn:aws:elasticbeanstalk:region::solutionstack/solutionstack-name` 範例：**arn:aws:elasticbeanstalk:us-east-2::solutionstack/32bit Amazon Linux running Tomcat 7**  | 

特定應用程式內永遠包含環境、應用程式版本和組態範本。您將發現這些資源的資源路徑均包含應用程式名稱，因此這些資源可由唯一的資源名稱和其中的應用程式辨識。雖然 解決方案堆疊由組態範本和環境使用，但解決方案堆疊並非特定於應用程式或 AWS 帳戶，而且在其 ARNs 中沒有應用程式或 AWS 帳戶。

# Elastic Beanstalk 動作的資源與條件
<a name="AWSHowTo.iam.policies.actions"></a>

本章節說明您可於政策陳述式內使用的資源與條件，以授予能夠對特定 Elastic Beanstalk 資源執行特定 Elastic Beanstalk 動作的許可。

條件可讓您指定完成動作所需資源的許可。例如，當您可以呼叫 `CreateEnvironment` 動作，必須也指定欲部署的應用程式版本及內含應用程式名稱的應用程式。當您設定 `CreateEnvironment` 動作的許可，應使用 `InApplication` 和 `FromApplicationVersion` 條件，指定欲執行動作的應用程式及應用程式版本。

此外，您可使用解決方案堆疊 (`FromSolutionStack`) 或組態範本 (`FromConfigurationTemplate`) 來指定環境資訊。下列政策陳述式允許 `CreateEnvironment` 動作，透過搭配 **myenv** 組態 (`Resource`) 的應用程式版本 **My App** (`InApplication`) 的方式，在應用程式 **My Version** (由 `FromApplicationVersion` 條件指定) 內建立名為 **32bit Amazon Linux running Tomcat 7** (由 `FromSolutionStack` 指定) 的環境：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:CreateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version"],
          "elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:us-east-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
        }
      }
    }
  ]
}
```

------

**注意**  
本主題內提及的大多數條件索引鍵都是專屬於 Elastic Beanstalk，其名稱包含 `elasticbeanstalk:` 字首。為了簡潔起見，以下幾節提到這類條件鍵時，會省略名稱中的字首。舉例來說，會使用 `InApplication` 而非其全名 `elasticbeanstalk:InApplication`。  
相反地，我們提到一些跨 AWS 服務使用的條件索引鍵，並包含其`aws:`字首來強調例外狀況。  
政策範例中一律會顯示完整的條件鍵名稱，包括字首。

**Topics**
+ [Elastic Beanstalk 動作的政策資訊](#AWSHowTo.iam.policies.actions.table)
+ [Elastic Beanstalk 動作的條件金鑰](#AWSHowTo.iam.policies.conditions)

## Elastic Beanstalk 動作的政策資訊
<a name="AWSHowTo.iam.policies.actions.table"></a>

下表列出所有 Elastic Beanstalk 動作、每個動作針對的資源，以及可透過條件提供的其他情境資訊。


**Elastic Beanstalk 動作的政策資訊，包括資源、條件、範例和依存項目**  

| 資源 | 條件 | 範例陳述式 | 
| --- | --- | --- | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_AbortEnvironmentUpdate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_AbortEnvironmentUpdate.html) | 
|  `application` `environment`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許使用者在名為 `My App` 的應用程式中的環境內中止環境更新操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CheckDNSAvailability.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CheckDNSAvailability.html) | 
|  `"*"`  |  N/A  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許使用者撰寫屬於名為 `My App` 應用程式的環境。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplication.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplication.html) | 
|  `application`  |  `aws:RequestTag/key-name` (選用) `aws:TagKeys` (選用)  |  此範例允許 `CreateApplication` 動作建立名稱開頭為 **DivA** 的應用程式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplicationVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplicationVersion.html) | 
|  `applicationversion`  |  `InApplication` `aws:RequestTag/key-name` (選用) `aws:TagKeys` (選用)  |  此範例允許 `CreateApplicationVersion` 動作在應用程式 **My App** 中建立任意名稱 (**\$1**) 的應用程式版本： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateConfigurationTemplate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateConfigurationTemplate.html) | 
|  `configurationtemplate`  |  `InApplication` `FromApplication` `FromApplicationVersion` `FromConfigurationTemplate` `FromEnvironment` `FromSolutionStack` `aws:RequestTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `CreateConfigurationTemplate` 動作在應用程式 **My App** 中建立名稱開頭為 **My Template** (`My Template*`) 的組態範本： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html) | 
|  `environment`  |  `InApplication` `FromApplicationVersion` `FromConfigurationTemplate` `FromSolutionStack` `aws:RequestTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `CreateEnvironment` 動作在應用程式 **My App** 中，使用解決方案堆疊 **32bit Amazon Linux running Tomcat 7** 來建立名為 **myenv** 的環境： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreatePlatformVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreatePlatformVersion.html) | 
|  `platform`  |  `aws:RequestTag/key-name` (選用) `aws:TagKeys` (選用)  |  此範例允許 `CreatePlatformVersion` 動作建立以 `us-east-2` 區域為目標的平台版本，其中的名稱開頭為 **us-east-2\$1**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateStorageLocation.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateStorageLocation.html) | 
|  `"*"`  |  N/A  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplication.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplication.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DeleteApplication` 動作刪除應用程式 **My App**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplicationVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplicationVersion.html) | 
|  `applicationversion`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DeleteApplicationVersion` 動作在應用程式 **My App** 中刪除名為 **My Version** 的應用程式版本： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteConfigurationTemplate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteConfigurationTemplate.html) | 
|  `configurationtemplate`  |  `InApplication` (選用) `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DeleteConfigurationTemplate` 動作在應用程式 **My App** 中刪除名為 **My Template** 的組態範本。將應用程式名稱指定為條件為選用。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteEnvironmentConfiguration.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteEnvironmentConfiguration.html) | 
|  `environment`  |  `InApplication` (選用)  |  下列政策允許 `DeleteEnvironmentConfiguration` 動作在應用程式 **My App** 中刪除環境 **myenv** 的草稿組態。將應用程式名稱指定為條件為選用。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeletePlatformVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeletePlatformVersion.html) | 
|  `platform`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  以下政策允許 `DeletePlatformVersion` 動作刪除以 `us-east-2` 區域為目標的平台版本，其中的名稱開頭為 **us-east-2\$1**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplications.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplications.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DescribeApplications` 動作描述應用程式 My App。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplicationVersions.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplicationVersions.html) | 
|  `applicationversion`  |  `InApplication` (選用) `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DescribeApplicationVersions` 動作在應用程式 **My App** 中描述應用程式版本 **My Version**。將應用程式名稱指定為條件為選用。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationOptions.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationOptions.html) | 
|  `environment` `configurationtemplate` `solutionstack`  |  `InApplication` (選用) `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DescribeConfigurationOptions` 動作在應用程式 **My App** 中描述環境 **myenv** 的組態選項。將應用程式名稱指定為條件為選用。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationSettings.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationSettings.html) | 
|  `environment` `configurationtemplate`  |  `InApplication` (選用) `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DescribeConfigurationSettings` 動作在應用程式 **My App** 中描述環境 **myenv** 的組態設定。將應用程式名稱指定為條件為選用。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentHealth.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentHealth.html) | 
|  `environment`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許使用 `DescribeEnvironmentHealth` 來擷取名為 **myenv** 之環境的運作狀態資訊。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentResources.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentResources.html) | 
|  `environment`  |  `InApplication` (選用) `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DescribeEnvironmentResources`動作傳回應用程式 **myenv**中環境 AWS 的資源清單**My App**。將應用程式名稱指定為條件為選用。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html) | 
|  `environment`  |  `InApplication` (選用) `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DescribeEnvironments` 動作在應用程式 **My App** 中描述環境 **myenv** 和 **myotherenv**。將應用程式名稱指定為條件為選用。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEvents.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEvents.html) | 
|  `application` `applicationversion` `configurationtemplate` `environment`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `DescribeEvents` 動作列出應用程式 **My App** 中環境 **myenv** 及應用程式版本 **My Version** 的事件描述。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeInstancesHealth.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeInstancesHealth.html) | 
|  `environment`  |  N/A  |  下列政策允許使用 `DescribeInstancesHealth` 來擷取名為 **myenv** 之環境內的執行個體運作狀態資訊。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribePlatformVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribePlatformVersion.html) | 
|  `platform`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  以下政策允許 `DescribePlatformVersion` 動作描述以 `us-east-2` 區域為目標的平台版本，其中的名稱開頭為 **us-east-2\$1**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListAvailableSolutionStacks.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListAvailableSolutionStacks.html) | 
|  `solutionstack`  |  N/A  |  以下政策僅允許 `ListAvailableSolutionStacks` 動作傳回解決方案堆疊 **32bit Amazon Linux running Tomcat 7**。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListPlatformVersions.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListPlatformVersions.html) | 
|  `platform`  |  `aws:RequestTag/key-name` (選用) `aws:TagKeys` (選用)  |  此範例允許 `CreatePlatformVersion` 動作建立以 `us-east-2` 區域為目標的平台版本，其中的名稱開頭為 **us-east-2\$1**： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListTagsForResource.html) | 
|  `application` `applicationversion` `configurationtemplate` `environment` `platform`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  以下政策僅允許 `ListTagsForResource` 動作列出現有資源的標籤，且僅限具有名為 `stage` 且含有 `test` 此值之標籤的資源： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RebuildEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RebuildEnvironment.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `RebuildEnvironment` 動作在應用程式 **My App** 中重建環境 **myenv**。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `RequestEnvironmentInfo` 動作在應用程式 **My App** 中編譯環境 **myenv** 的資訊。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html) | 
|  `environment`  |  `InApplication`  |  下列政策允許 `RestartAppServer` 動作在應用程式 **My App** 中重新啟動環境 **myenv** 的應用程式容器伺服器。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `RetrieveEnvironmentInfo` 動作在應用程式 **My App** 中擷取環境 **myenv** 的編譯資訊。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_SwapEnvironmentCNAMEs.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_SwapEnvironmentCNAMEs.html) | 
|  `environment`  |  `InApplication` (選用) `FromEnvironment` (選用)  |  下列政策允許 `SwapEnvironmentCNAMEs` 動作交換環境 **mysrcenv** 及 **mydestenv** 的 CNAME。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `TerminateEnvironment` 動作在應用程式 **My App** 中終止環境 **myenv**。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[UpdateApplication](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplication.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `UpdateApplication` 動作更新應用程式 **My App** 的屬性。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[UpdateApplicationResourceLifecycle](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplicationResourceLifecycle.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  以下政策會允許 `UpdateApplicationResourceLifecycle` 動作來更新應用程式 **My App** 的生命週期設定。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplicationVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplicationVersion.html) | 
|  `applicationversion`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `UpdateApplicationVersion` 動作在應用程式 **My App** 中更新應用程式版本 **My Version** 的屬性。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateConfigurationTemplate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateConfigurationTemplate.html) | 
|  `configurationtemplate`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `UpdateConfigurationTemplate` 動作在應用程式 **My App** 中更新組態範本 **My Template** 的屬性或選項。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateEnvironment.html) | 
|  `environment`  |  `InApplication` `FromApplicationVersion` `FromConfigurationTemplate` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `UpdateEnvironment` 動作部署應用程式版本 **My Version**，藉此在應用程式 **My App** 中更新環境 **myenv**。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) - `AddTags` | 
|  `application` `applicationversion` `configurationtemplate` `environment` `platform`  |  `aws:ResourceTag/key-name` (選用) `aws:RequestTag/key-name` (選用) `aws:TagKeys` (選用)  |  `AddTags` 動作是與 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API 相關聯的兩個虛擬動作之一。 以下政策僅允許 `AddTags` 動作修改現有資源的標籤，且僅限具有名為 `stage` 且含有 `test` 此值之標籤的資源： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) - `RemoveTags` | 
|  `application` `applicationversion` `configurationtemplate` `environment` `platform`  |  `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  `RemoveTags` 動作是與 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API 相關聯的兩個虛擬動作之一。 以下政策拒絕 `RemoveTags` 動作請求移除現有環境中名為 `stage` 的標籤： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **動作：**[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ValidateConfigurationSettings.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ValidateConfigurationSettings.html) | 
|  `template` `environment`  |  `InApplication` `aws:ResourceTag/key-name` (選用) `aws:TagKeys` (選用)  |  下列政策允許 `ValidateConfigurationSettings` 動作在應用程式 **My App** 中根據環境 **myenv** 驗證組態設定。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 

## Elastic Beanstalk 動作的條件金鑰
<a name="AWSHowTo.iam.policies.conditions"></a>

金鑰可讓您指定條件以表達依存項目、限制許可或指定動作輸入參數的限制。Elastic Beanstalk 支援下列金鑰。

`InApplication`  
指定內含動作執行針對之資源的應用程式。  
下列範例允許 `UpdateApplicationVersion` 動作更新應用程式版本 **My Version** 的屬性。`InApplication` 條件將 **My App** 指定為 **My Version** 的容器。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:UpdateApplicationVersion"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"]
        }
      }
    }
  ]
}
```

`FromApplicationVersion`  
將應用程式版本指定為依存項目或輸入參數的限制。  
下列範例允許 `UpdateEnvironment` 動作在應用程式 **My App** 中更新環境 **myenv**。`FromApplicationVersion` 條件會限制 `VersionLabel` 參數，僅允許應用程式版本 **My Version** 更新環境。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:UpdateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version"]
        }
      }
    }
  ]
}
```

`FromConfigurationTemplate`  
將組態範本指定為依存項目或輸入參數的限制。  
下列範例允許 `UpdateEnvironment` 動作在應用程式 **My App** 中更新環境 **myenv**。`FromConfigurationTemplate` 條件會限制 `TemplateName` 參數，僅允許組態範本 **My Template** 更新環境。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:UpdateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromConfigurationTemplate": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:configurationtemplate/My App/My Template"]
        }
      }
    }
  ]
}
```

`FromEnvironment`  
將環境指定為依存項目或輸入參數的限制。  
下列範例允許 `SwapEnvironmentCNAMEs` 動作交換所有環境內 **My App** 內名稱開頭為 **mysrcenv** 和 **mydestenv** 之環境的 CNAME，但不適用名稱開頭為 **mysrcenvPROD\$1** 和 **mydestenvPROD\$1** 的環境。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:SwapEnvironmentCNAMEs"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mysrcenv*",
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mydestenv*"
      ],
      "Condition": {
        "ArnNotLike": {
          "elasticbeanstalk:FromEnvironment": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mysrcenvPROD*",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mydestenvPROD*"
          ]
        }
      }
    }
  ]
}
```

`FromSolutionStack`  
將解決方案堆疊指定為依存項目或輸入參數的限制。  
下列政策允許 `CreateConfigurationTemplate` 動作在應用程式 **My App** 中建立名稱開頭為 **My Template** (`My Template*`) 的組態範本。`FromSolutionStack` 條件會限制 `solutionstack` 參數，該參數僅能以解決方案堆疊 **32bit Amazon Linux running Tomcat 7** 做為輸入值。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:CreateConfigurationTemplate"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:configurationtemplate/My App/My Template*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:us-east-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
        }
      }
    }
  ]
}
```

`aws:ResourceTag/key-name``aws:RequestTag/key-name``aws:TagKeys`  
指定標記型條件。如需詳細資訊，請參閱[使用標籤來控制對 Elastic Beanstalk 資源的存取政策中的標籤條件範例](AWSHowTo.iam.policies.access-tags.md)。

# 使用標籤來控制對 Elastic Beanstalk 資源的存取
<a name="AWSHowTo.iam.policies.access-tags"></a>

本主題說明標籤型存取控制如何協助您建立和管理 IAM 政策。

我們可以使用 IAM 使用者政策陳述式中的條件來設定 Elastic Beanstalk 存取 資源的許可。若要進一步了解政策陳述式條件，請參閱 [Elastic Beanstalk 動作的資源與條件](AWSHowTo.iam.policies.actions.md)。在條件中使用標記是控制資源和請求的存取權限的方式之一。如需標記 Elastic Beanstalk 資源的相關資訊，請參閱[標記 Elastic Beanstalk 應用程式資源](applications-tagging-resources.md)。

設計 IAM 政策時，您可能會透過授予對特定資源的存取來設定精細許可。隨著您管理的資源數量增加，此任務變得越來越困難。標記資源並在政策陳述式條件中使用標籤，可讓此任務更輕鬆。您可以對具有特定標籤的任何資源大量授予存取。然後，您會在建立期間或之後，對相關資源重複套用此標籤。

可以將標記連接到資源或在請求中將標記傳遞至支援標記的服務。在 Elastic Beanstalk 中，資源可以擁有標籤，也有一些動作會包含標籤。建立 IAM 政策時，您可以使用標籤條件索引鍵來控制下列條件：
+ 可在環境上執行動作的使用者 (以環境擁有的標記為準)。
+ 可在動作請求中傳遞的標記。
+ 請求中是否可使用特定的標籤鍵。

關於標籤條件索引鍵的完整語法和語義，請參閱 *IAM 使用者指南*中的[使用標籤控制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。

## 政策中的標籤條件範例
<a name="AWSHowTo.iam.policies.access-tags.examples"></a>

以下範例示範如何指定 Elastic Beanstalk 使用者政策中的標籤條件。

**Example 1：根據請求中的標籤限制動作**  <a name="example_policy_tags.deny_by_request_tag"></a>
Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。  
以下政策會限制此能力，並拒絕未授權的使用者許可，禁止其建立 Elastic Beanstalk 生產環境。為了達到此種效果，如果該請求指定了名為 `stage` 的標記，含有 `gamma` 或 `prod` 的其中一值，其會拒絕 `CreateEnvironment` 動作。此外，該政策不允許標籤修改動作，因此無法加入相同的標籤值，也無法完全移除 `stage` 標籤，以此方式來防止未授權的使用者竄改生產環境的階段。除了受管使用者政策之外，客戶的管理員必須將此 IAM 政策連接到未授權的 IAM 使用者。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:AddTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/stage": ["gamma", "prod"]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:RemoveTags"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

**Example 2：根據資源標籤限制動作**  <a name="example_policy_tags.deny_by_resource_tag"></a>
Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。  
以下政策會限制此能力，並拒絕未授權的使用者許可，禁止其在 Elastic Beanstalk 生產環境上執行動作。為了達到此種效果，如果該環境擁有名為 `stage` 的標記，含有 `gamma` 或 `prod` 的其中一值，其會拒絕特定動作。除了受管使用者政策之外，客戶的管理員必須將此 IAM 政策連接到未授權的 IAM 使用者。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:AddTags",
        "elasticbeanstalk:RemoveTags",
        "elasticbeanstalk:DescribeEnvironments",
        "elasticbeanstalk:TerminateEnvironment",
        "elasticbeanstalk:UpdateEnvironment",
        "elasticbeanstalk:ListTagsForResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/stage": ["gamma", "prod"]
        }
      }
    }
  ]
}
```

**Example 3：根據請求中的標籤允許動作**  <a name="example_policy_tags.allow_by_request_tag"></a>
下列政策會授予使用者許可來建立 Elastic Beanstalk 開發應用程式。  
若要這樣做，它會在請求指定名為 `stage` 且值為 `development` 的標籤時允許 `CreateApplication` 和 `AddTags` 動作。`aws:TagKeys` 條件可確保使用者無法新增其他標籤鍵。尤其是，其可確保 `stage` 標籤鍵區分大小寫。請注意，此政策對於未連接 Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策的 IAM 使用者來說很實用。此受管政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:AddTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/stage": "development"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

**Example 4：根據資源標籤允許動作**  <a name="example_policy_tags.allow_by_resource_tag"></a>
下列政策會授予使用者對 Elastic Beanstalk 開發應用程式執行動作和取得相關資訊的許可。  
若要這樣做，它會在應用程式有名為 `stage` 且值為 `development` 的標籤時允許特定動作。`aws:TagKeys` 條件可確保使用者無法新增其他標籤鍵。尤其是，其可確保 `stage` 標籤鍵區分大小寫。請注意，此政策對於未連接 Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策的 IAM 使用者來說很實用。此受管政策可提供使用者不受限制的許可，以在任何 Elastic Beanstalk 受管資源上執行任何 Elastic Beanstalk 動作。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:UpdateApplication",
        "elasticbeanstalk:DeleteApplication",
        "elasticbeanstalk:DescribeApplications"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/stage": "development"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

# 以受管政策為基礎的範例政策
<a name="ExamplePolicies_AEB"></a>

本節示範如何控制使用者對 的存取， AWS Elastic Beanstalk 並包含提供常見案例所需存取的範例政策。這些政策衍生自 Elastic Beanstalk 受管政策。如需有關將受管政策連結至使用者和群組的資訊，請參閱 [管理 Elastic Beanstalk 使用者政策](AWSHowTo.iam.managed-policies.md)。

在此案例中，軟體公司 Example Corp. 擁有三個負責公司網站的團隊：管理基礎設施的管理員、建置網站軟體的開發人員，以及測試網站的 QA 團隊。為了協助管理 Elastic Beanstalk 資源的許可，Example Corp. 建立三個群組，其中各團隊的成員分屬以下各群組：管理員、開發人員和測試人員。Example Corp. 希望管理員群組擁有所有應用程式、環境及其基礎資源的完整存取能力，讓他們能夠建立、故障診斷或刪除所有 Elastic Beanstalk 的資產。開發人員需要的許可，則包含檢視 Elastic Beanstalk 資產的許可，以及建立並部署應用程式版本的許可。開發人員不應具有建立新應用程式或環境、或終止執行環境的許可。測試人員必須檢視所有 Elastic Beanstalk 資源，以監控並測試應用程式。測試人員不應具有變更任何 Elastic Beanstalk 資源的許可。

下列範例政策提供各個群組所需的許可。

## 範例 1：管理員群組 - 所有 Elastic Beanstalk 及相關服務 API
<a name="ExamplePolicies_AEB.admin"></a>

下列政策提供使用者使用 Elastic Beanstalk 所需的所有動作之許可。這項政策也允許 Elastic Beanstalk 代表您在以下服務中佈建和管理資源。Elastic Beanstalk 就是靠著這些額外服務在建立環境時佈建基礎資源。
+ Amazon Elastic Compute Cloud
+ Elastic Load Balancing
+ Auto Scaling
+ Amazon CloudWatch
+ Amazon Simple Storage Service
+ Amazon Simple Notification Service
+ Amazon Relational Database Service
+ CloudFormation

請注意，本政策為範例。它對於 Elastic Beanstalk 用於管理應用程式和環境的 AWS 服務，提供廣泛的許可。例如， `ec2:*` 允許 AWS Identity and Access Management (IAM) 使用者對 AWS 帳戶中的任何 Amazon EC2 資源執行任何動作。這些許可不限於您搭配 Elastic Beanstalk 使用的資源。以最佳實務而言，您應僅授予個人執行其職責所需的許可。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "elasticbeanstalk:*",
        "ec2:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "rds:*",
        "cloudformation:*"
      ],
      "Resource" : "*"
    }
  ]
}
```

------

## 範例 2：開發人員群組 - 所有操作，但具有高度特殊權限者除外
<a name="ExamplePolicies_AEB.dev"></a>

下列政策拒絕建立應用程式和環境的許可，但允許所有其他 Elastic Beanstalk 動作。

請注意，本政策為範例。其針對 Elastic Beanstalk 管理應用程式和環境所用的 AWS 產品，提供廣泛的許可。例如，`ec2:*` 可讓 IAM 使用者對 AWS 帳戶中的任何 Amazon EC2 資源執行任何動作。這些許可不限於您搭配 Elastic Beanstalk 使用的資源。以最佳實務而言，您應僅授予個人執行其職責所需的許可。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Action" : [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:DeleteApplication",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:TerminateEnvironment"],
      "Effect" : "Deny",
      "Resource" : "*"
    },
    {
      "Action" : [
        "elasticbeanstalk:*",
        "ec2:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "rds:*",
        "cloudformation:*"],
      "Effect" : "Allow",
      "Resource" : "*"
    }
  ]
}
```

------



## 範例 3：測試人員 - 僅限檢視
<a name="ExamplePolicies_AEB.tester"></a>

下列政策允許所有應用程式、應用程式版本、事件和環境的唯讀存取。其不允許執行任何動作。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "elasticbeanstalk:Check*",
        "elasticbeanstalk:Describe*",
        "elasticbeanstalk:List*",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "ec2:Describe*",
        "elasticloadbalancing:Describe*",
        "autoscaling:Describe*",
        "cloudwatch:Describe*",
        "cloudwatch:List*",
        "cloudwatch:Get*",
        "s3:Get*",
        "s3:List*",
        "sns:Get*",
        "sns:List*",
        "rds:Describe*",
        "cloudformation:Describe*",
        "cloudformation:Get*",
        "cloudformation:List*",
        "cloudformation:Validate*",
        "cloudformation:Estimate*"
      ],
      "Resource" : "*"
    }
  ]
}
```

------

# 根據資源許可的範例政策
<a name="AWSHowTo.iam.example.resource"></a>

本節將逐步介紹一個使用案例，此案例針對存取特定 Elastic Beanstalk 資源的 Elastic Beanstalk 動作，控制使用者的許可。我們將逐步介紹支援該使用案例的範例政策。如需 Elastic Beanstalk 資源政策的詳細資訊，請參閱[建立自訂使用者政策](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)。如需將政策連接到使用者和群組的相關資訊，請參閱《使用 AWS Identity and Access Management》**中的[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

在我們的使用案例中，Example Corp. (範例公司) 是一家小型的顧問公司，針對兩種不同的客戶開發應用程式。John 是開發經理，負責監督兩種 Elastic Beanstalk 應用程式 (應用程式 1 和應用程式 2) 的開發。John 負責開發和針對兩種應用程式進行一些測試，而且只有他可以更新兩個應用程式的正式生產環境。下列是他所需的應用程式 1 和應用程式 2 的許可：
+ 檢視應用程式、應用程式版本、環境和組態範本
+ 建立應用程式版本，並將這些版本部署到預備環境
+ 更新正式生產環境
+ 建立和終止環境

Jill 是一位測試人員，需要存取許可來檢視下列資源，以監控和測試兩種應用程式：應用程式、應用程式版本、環境和組態範本。但是，她不應具有變更任何 Elastic Beanstalk 資源的許可。

Jack 是應用程式 1 的開發人員，需要存取許可來檢視應用程式 1 的所有資源，也需要建立應用程式 1 的應用程式版本，並將這些版本部署到預備環境。

Judy 是 Example Corp. AWS 帳戶的管理員。 她為 John、Jill 和 Jack 建立了 IAM 使用者，並將下列政策連接到這些使用者，以授予適當的許可給應用程式 1 和應用程式 2。

## 範例 1：John - 應用程式 1、應用程式 2 的開發經理
<a name="AWSHowTo.iam.policies.john"></a>

我們已將 John 的政策細分為三項不同的政策，讓這些政策更易於閱讀和管理。這些政策共同授予了 John 所需的許可，使其能對這兩個應用程式執行開發、測試和部署動作。

第一個政策指定 Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS 和 CloudFormation的動作。Elastic Beanstalk 就是靠著這些額外服務在建立環境時佈建基礎資源。

請注意，本政策為範例。它為 Elastic Beanstalk 用來管理應用程式和環境 AWS 的產品提供廣泛的許可。例如， `ec2:*` 允許 IAM 使用者對 AWS 帳戶中的任何 Amazon EC2 資源執行任何動作。這些許可不限於您搭配 Elastic Beanstalk 使用的資源。以最佳實務而言，您應僅授予個人執行其職責所需的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
   "Effect": "Allow",
   "Action": [
   "ec2:*",
   "ecs:*",
   "ecr:*",
   "elasticloadbalancing:*",
   "autoscaling:*",
   "cloudwatch:*",
   "s3:*",
   "sns:*",
   "cloudformation:*",
   "dynamodb:*",
   "rds:*",
   "sqs:*",
   "logs:*",
   "iam:GetPolicyVersion",
   "iam:GetRole",
   "iam:ListRolePolicies",
   "iam:ListAttachedRolePolicies",
   "iam:ListInstanceProfiles",
   "iam:ListRoles",
   "iam:ListServerCertificates",
   "acm:DescribeCertificate",
   "acm:ListCertificates",
   "codebuild:CreateProject",
   "codebuild:DeleteProject",
   "codebuild:BatchGetBuilds",
   "codebuild:StartBuild"
   ],
   "Resource": "*"
   },
   {
   "Effect": "Allow",
   "Action": [
   "iam:PassRole"
   ],
   "Resource": "arn:aws:iam::111122223333:role/MyRole"
   }
   ]
   }
```

------

第二個政策指定針對應用程式 1 和應用程式 2 的資源，John 能夠執行的 Elastic Beanstalk 動作。`AllCallsInApplications` 陳述式針對應用程式 1 和應用程式 2 內的所有資源 (例如 `elasticbeanstalk:CreateEnvironment`)，允許所有能夠執行的 Elastic Beanstalk 動作 (`"elasticbeanstalk:*"`)。`AllCallsOnApplications` 陳述式針對應用程式 1 和應用程式 2 的資源 (例如 `elasticbeanstalk:DescribeApplications`、`elasticbeanstalk:UpdateApplication` 等)，允許所有能夠執行的 Elastic Beanstalk 動作 (`"elasticbeanstalk:*"`)。`AllCallsOnSolutionStacks` 陳述式針對解決方案堆疊的資源 (例如 `elasticbeanstalk:ListAvailableSolutionStacks`)，允許所有能夠執行的 Elastic Beanstalk 動作 (`"elasticbeanstalk:*"`)。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllCallsInApplications",
         "Action":[
            "elasticbeanstalk:*"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
               ]
            }
         }
      },
      {
         "Sid":"AllCallsOnApplications",
         "Action":[
            "elasticbeanstalk:*"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
         ]
      },
      {
         "Sid":"AllCallsOnSolutionStacks",
         "Action":[
            "elasticbeanstalk:*"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
         ]
      }
   ]
}
```

------

第三個政策指定第二個政策需要許可才能完成的 Elastic Beanstalk 動作。`AllNonResourceCalls` 陳述式允許了 `elasticbeanstalk:CheckDNSAvailability` 動作的執行，這項動作是呼叫 `elasticbeanstalk:CreateEnvironment` 和其他動作所必需。此陳述式也允許了 `elasticbeanstalk:CreateStorageLocation` 動作的執行，這項動作是 `elasticbeanstalk:CreateApplication`、`elasticbeanstalk:CreateEnvironment` 和其他動作所必需。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability",
            "elasticbeanstalk:CreateStorageLocation"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

## 範例 2：Jill - 應用程式 1、應用程式 2 的測試人員
<a name="AWSHowTo.iam.policies.jill"></a>

我們已將 Jill 的政策細分為三項不同的政策，讓這些政策更易於閱讀和管理。這些政策共同授予了 Jill 所需的許可，使其能對兩種應用程式執行測試和監控動作。

第一個政策會指定 Auto Scaling、Amazon S3`Describe*``List*`、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS 和 CloudFormation （適用於非舊版容器類型） `Get*`上的 、 和 動作，以便 Elastic Beanstalk 動作能夠擷取應用程式 1 和應用程式 2 基礎資源的相關資訊。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ec2:Describe*",
            "elasticloadbalancing:Describe*",
            "autoscaling:Describe*",
            "cloudwatch:Describe*",
            "cloudwatch:List*",
            "cloudwatch:Get*",
            "s3:Get*",
            "s3:List*",
            "sns:Get*",
            "sns:List*",
            "rds:Describe*",
            "cloudformation:Describe*",
        	"cloudformation:Get*",
        	"cloudformation:List*",
        	"cloudformation:Validate*",
        	"cloudformation:Estimate*"
         ],
         "Resource":"*"
      }
   ]
}
```

------

第二個政策指定針對應用程式 1 與應用程式 2 的資源，Jill 能夠執行的 Elastic Beanstalk 動作。`AllReadCallsInApplications` 陳述式允許 Jill 呼叫 `Describe*` 動作和環境資訊動作。`AllReadCallsOnApplications` 陳述式允許 Jill 針對應用程式 1 與應用程式 2 的應用程式資源，呼叫 `DescribeApplications` 與 `DescribeEvents` 動作。`AllReadCallsOnSolutionStacks` 允許針對解決方案堆疊資源 (`ListAvailableSolutionStacks`、`DescribeConfigurationOptions` 和 `ValidateConfigurationSettings`)，執行相關的檢視動作。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllReadCallsInApplications",
         "Action":[
            "elasticbeanstalk:Describe*",
            "elasticbeanstalk:RequestEnvironmentInfo",
            "elasticbeanstalk:RetrieveEnvironmentInfo"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
               ]
            }
         }
      },
      {
         "Sid":"AllReadCallsOnApplications",
         "Action":[
            "elasticbeanstalk:DescribeApplications",
            "elasticbeanstalk:DescribeEvents"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
         ]
      },
      {
         "Sid":"AllReadCallsOnSolutionStacks",
         "Action":[
            "elasticbeanstalk:ListAvailableSolutionStacks",
            "elasticbeanstalk:DescribeConfigurationOptions",
            "elasticbeanstalk:ValidateConfigurationSettings"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
         ]
      }
   ]
}
```

------

第三個政策指定第二個政策需要許可才能完成的 Elastic Beanstalk 動作。`AllNonResourceCalls` 陳述式允許了 `elasticbeanstalk:CheckDNSAvailability` 動作的執行，這項動作是呼叫某些檢視動作所必需。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

## 範例 3：Jack - 應用程式 1 的開發人員
<a name="AWSHowTo.iam.policies.jack"></a>

我們已將 Jack 的政策細分為三項不同的政策，讓這些政策更易於閱讀和管理。這些政策共同授予了 Jack 所需的許可，使其能對 應用程式 1 資源執行開發、測試和部署動作。

第一個政策指定 Auto Scaling、Amazon S3、Amazon EC2、CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS 和 CloudFormation （適用於非舊版容器類型） 上的動作，以便 Elastic Beanstalk 動作能夠檢視和使用應用程式 1 的基礎資源。如需支援的非舊式容器類型的清單，請參閱 [為何部分平台版本標記為舊版？](using-features.migration.md#using-features.migration.why)

請注意，本政策為範例。它為 Elastic Beanstalk 用來管理應用程式和環境 AWS 的產品提供廣泛的許可。例如， `ec2:*` 允許 IAM 使用者對 AWS 帳戶中的任何 Amazon EC2 資源執行任何動作。這些許可不限於您搭配 Elastic Beanstalk 使用的資源。以最佳實務而言，您應僅授予個人執行其職責所需的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ec2:*",
            "elasticloadbalancing:*",
            "autoscaling:*",
            "cloudwatch:*",
            "s3:*",
            "sns:*",
            "rds:*",
            "cloudformation:*"
         ],
         "Resource":"*"
      }
   ]
}
```

------

第二個政策指定針對應用程式 1 的資源，Jack 能夠執行的 Elastic Beanstalk 動作。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllReadCallsAndAllVersionCallsInApplications",
         "Action":[
            "elasticbeanstalk:Describe*",
            "elasticbeanstalk:RequestEnvironmentInfo",
            "elasticbeanstalk:RetrieveEnvironmentInfo",
            "elasticbeanstalk:CreateApplicationVersion",
            "elasticbeanstalk:DeleteApplicationVersion",
            "elasticbeanstalk:UpdateApplicationVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
               ]
            }
         }
      },
      {
         "Sid":"AllReadCallsOnApplications",
         "Action":[
            "elasticbeanstalk:DescribeApplications",
            "elasticbeanstalk:DescribeEvents"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
         ]
      },
      {
         "Sid":"UpdateEnvironmentInApplications",
         "Action":[
            "elasticbeanstalk:UpdateEnvironment"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
               ]
            },
            "ArnLike":{
               "elasticbeanstalk:FromApplicationVersion":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*"
               ]
            }
         }
      },
      {
         "Sid":"AllReadCallsOnSolutionStacks",
         "Action":[
            "elasticbeanstalk:ListAvailableSolutionStacks",
            "elasticbeanstalk:DescribeConfigurationOptions",
            "elasticbeanstalk:ValidateConfigurationSettings"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
         ]
      }
   ]
}
```

------

第三個政策指定第二個政策需要許可才能完成的 Elastic Beanstalk 動作。`AllNonResourceCalls` 陳述式允許了 `elasticbeanstalk:CheckDNSAvailability` 動作的執行，這項動作是呼叫 `elasticbeanstalk:CreateEnvironment` 和其他動作所必需。此陳述式也允許了 `elasticbeanstalk:CreateStorageLocation` 動作的執行，這項動作是 `elasticbeanstalk:CreateEnvironment` 和其他動作所必需。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability",
            "elasticbeanstalk:CreateStorageLocation"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

# 防止跨環境 Amazon S3 儲存貯體存取
<a name="AWSHowTo.iam.cross-env-s3-access"></a>

本主題說明 受管政策如何允許跨環境 S3 儲存貯體存取，以及如何建立自訂政策來管理此類存取。

Elastic Beanstalk 提供受管政策來處理您 AWS 帳戶中 Elastic Beanstalk 環境所需的 AWS 資源。根據預設，您 AWS 帳戶中一個應用程式提供的許可可以存取屬於相同 AWS 帳戶中其他應用程式的 S3 資源。

如果 AWS 您的帳戶執行多個 Beanstalk 應用程式，您可以建立自己的[自訂政策](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)，以連接至每個環境的自有[服務角色](iam-servicerole.md#iam-servicerole-create)或[執行個體描述檔](iam-instanceprofile.md#iam-instanceprofile-create)，藉此縮小政策的安全性範圍。然後，您可以將自訂政策中的 S3 許可限制在特定環境中。

**注意**  
請注意，您需負責維護自訂政策。如果自訂政策所依據的 Elastic Beanstalk 受管政策變更，您將需要使用基本政策的個別變更來修改自訂政策。如需 Elastic Beanstalk 受管政策的變更歷史記錄，請參閱 [AWS 受管政策的 Elastic Beanstalk 更新](security-iam-awsmanpol.md#security-iam-awsmanpol-updates)。

## 縮小範圍許可的範例
<a name="AWSHowTo.iam.cross-env-s3-access.example-env-ID"></a>

下列範例以 [AWSElasticBeanstalkWebTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWebTier.html) 受管政策為基礎。

預設政策包含下列 S3 儲存貯體的許可行。此預設政策不會將 S3 儲存貯體動作限制在特定環境或應用程式。

```
{
   "Sid" : "BucketAccess", 
   "Action" : [ 
      "s3:Get*",
      "s3:List*", 
      "s3:PutObject"
     ], 
   "Effect" : "Allow",
   "Resource" : [ 
      "arn:aws:s3:::elasticbeanstalk-*", 
      "arn:aws:s3:::elasticbeanstalk-*/*" 
     ] 
}
```

您可以將特定資源限定為指定為 的服務角色，以縮小存取範圍`Principal`。下列範例提供自訂服務角色`aws-elasticbeanstalk-ec2-role-my-example-env`許可給 環境中 ID 為 的 S3 儲存貯體`my-example-env-ID`。

**Example 僅將許可授予特定環境的 S3 儲存貯體**  

```
{
   "Sid": "BucketAccess",
   "Action": [
      "s3:Get*",
      "s3:List*",
      "s3:PutObject"
    ],
   "Effect": "Allow",
   "Principal": {
      "AWS": "arn:aws:iam::...:role/aws-elasticbeanstalk-ec2-role-my-example-env"
     },
   "Resource": [
      "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345",
      "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345/resources/environments/my-example-env-ID/*"
    ]
}
```

**注意**  
資源 ARN 必須包含 Elastic Beanstalk 環境 ID （而非環境名稱）。您可以從環境[概觀頁面上的 Elastic Beanstalk 主控台取得環境](environments-dashboard.md) ID。您也可以使用 AWS CLI [ describe-environments](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html) 命令來取得此資訊。

如需可協助您更新 Elastic Beanstalk 環境 S3 儲存貯體許可的詳細資訊，請參閱下列資源：
+ 本指南中的 [將 Elastic Beanstalk 與 Amazon S3 搭配使用](AWSHowTo.S3.md)
+ *《服務授權參考*》指南》中的 [Amazon S3 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-resources-for-iam-policies) 
+ *IAM 使用者指南*中的 [ARN 格式](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 