

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 Elastic Beanstalk 与 AWS Identity and Access Management
<a name="AWSHowTo.iam"></a>

AWS Identity and Access Management (IAM) 可帮助您安全地控制对 AWS 资源的访问权限。本部分包含了有关使用 IAM 策略、实例配置文件和服务角色的参考材料。

有关权限的概述，请参阅[Elastic Beanstalk 服务角色、实例配置文件和用户策略](concepts-roles.md)。对于大多数环境，在您启动第一个环境时 Elastic Beanstalk 控制台提示您创建的服务角色和实例配置文件具有所需的所有权限。同样，Elastic Beanstalk 提供的用于完全访问和只读访问的[托管式策略](AWSHowTo.iam.managed-policies.md)包含日常使用所需的所有用户权限。

I [AM 用户指南对 AWS 权限进行了深入介绍](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMGettingStarted.html)。

**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 资源名称格式](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 创建了一个默认 EC2 实例`aws-elasticbeanstalk-ec2-role`配置文件，该配置文件名为账户首次创建环境 AWS 时命名。该实例配置文件包含默认的托管式策略。如果您的账户已经有该实例配置文件，则可继续将其分配到您的环境。  
但是，最近的 AWS 安全准则不允许 AWS 服务自动创建具有对其他 AWS 服务（在本例中为 EC2）的信任策略的角色。根据这些安全准则，Elastic Beanstalk 将不再创建默认的 `aws-elasticbeanstalk-ec2-role` 实例配置文件。



**托管策略**  
Elastic Beanstalk 提供多种托管式策略，以确保您的环境能够满足不同的使用场景需求。要满足环境的默认使用场景需要，必须将这些策略附加到 EC2 实例配置文件对应的角色。
+ **AWSElasticBeanstalkWebTier**— 授予应用程序将日志上传到 Amazon S3 并将调试信息上传到的权限 AWS X-Ray。要查看托管策略的内容，请参阅[AWSElasticBeanstalkWebTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWebTier.html)《*AWS 托管策略参考指南》*。
+ **AWSElasticBeanstalkWorkerTier**— 授予日志上传、调试、指标发布和工作器实例任务（包括队列管理、领导者选举和定期任务）的权限。要查看托管策略的内容，请参阅[AWSElasticBeanstalkWorkerTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWorkerTier.html)《*AWS 托管策略参考指南》*。
+ **AWSElasticBeanstalkMulticontainerDocker**— 向 Amazon 弹性容器服务授予权限，以协调 Docker 环境的集群任务。要查看托管策略的内容，请参阅[AWSElasticBeanstalkMulticontainerDocker](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkMulticontainerDocker.html)《*AWS 托管策略参考指南》*。



**重要**  
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``bedrock:ListFoundationModels``elasticbeanstalk:DescribeEvents`、、和`elasticbeanstalk:DescribeEnvironmentHealth`权限。这些权限允许 Elastic Beanstalk 使用 Amazon Bedrock 并访问用于分析日志、事件和实例运行状况的环境数据。

**Topics**
+ [创建实例配置文件](#iam-instanceprofile-create)
+ [向默认实例配置文件添加权限](#iam-instanceprofile-addperms)
+ [验证分配给实例配置文件的权限](#iam-instanceprofile-verify)
+ [更新 out-of-date默认实例配置文件](#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. 请选择 **Create role**（创建角色）。

1. 在**可信实体类型**中选择 **AWS 服务**。

1. 对于**服务或使用案例**，请选择 **Elastic Beanstalk**。

1. 对于**使用案例**，选择 **Elastic Beanstalk – 计算**。

1. 选择**下一步**。

1. 输入**角色名称**。

   您可以输入 Elastic Beanstalk 控制台建议的默认角色的名称：`aws-elasticbeanstalk-ec2-role`。

1. 确认**权限策略**包括以下内容，然后选择**下一步**：
   + `AWSElasticBeanstalkWebTier`
   + `AWSElasticBeanstalkWorkerTier`
   + `AWSElasticBeanstalkMulticontainerDocker`

1. 选择**创建角色**。

**创建具有您所选特定托管策略的实例配置文件**

1. 在 IAM 控制台中，打开 [**Roles**（角色）页面](https://console.aws.amazon.com/iam/home#roles)。

1. 请选择 **Create role**（创建角色）。

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. 选择 **Attach policy**（附加策略）。

## 验证分配给实例配置文件的权限
<a name="iam-instanceprofile-verify"></a>

分配给您的默认实例配置文件的权限不是固定的，具体取决于其创建时间、您上次启动环境的时间和您使用的客户端。您可以在 IAM 控制台中验证默认实例配置文件的权限。

**验证默认实例配置文件的权限**

1. 在 IAM 控制台中，打开 [**Roles**（角色）页面](https://console.aws.amazon.com/iam/home#roles)。

1. 选择分配为 EC2 实例配置文件的角色。

1. 在 **Permissions**（权限）选项卡中，审核附加到角色的策略列表。

1. 要查看策略授予的权限，请选择相应的策略。

## 更新 out-of-date默认实例配置文件
<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）。 APIs
+ *`AllowPassRoleToElasticBeanstalkAndDownstreamServices`* – 这一组权限允许将任何角色传递给 Elastic Beanstalk 及其他下游服务，例如 CloudFormation。
+ *`ReadOnlyPermissions`* – 这一组权限用于收集有关运行环境的信息。
+ *`*OperationPermissions`* – 采用此命名模式的组用于调用执行平台更新必需的操作。
+ *`*BroadOperationPermissions`* – 采用此命名模式的组用于调用执行平台更新必需的操作。它们还包括支持旧环境的广泛权限。
+ *`*TagResource`*— 使用这种命名模式的群组适用于使用在 Elastic Beanstalk 环境中创建的资源上附加标签的调用。 tag-on-create APIs 

要查看托管式策略的内容，您还可以使用 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 控制台中查看和使用较早的策略。

要查看托管策略的内容，请参阅[AWSElasticBeanstalkService](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkService.html)《*AWS 托管策略参考指南》*。

但是，我们建议您过渡到使用新的托管策略 (**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/ .config managed-platform-update**  

```
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**。

1. 在 **Permissions**（权限）选项卡中，审核附加到角色的策略列表。

1. 要查看策略授予的权限，请选择相应的策略。

## 更新 out-of-date默认服务角色
<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**。

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**。

1. 在 **Permissions**（权限）选项卡上，选择 **Attach policies**（附加策略）。

1. 选择适用于应用程序使用的附加服务的托管策略。例如，`AmazonAPIGatewayAdministrator` 或 `AmazonElasticFileSystemFullAccess`。

1. 选择 **Attach policy**（附加策略）。

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

如果您无法使用默认服务角色，请创建一个服务角色。

**创建服务角色**

1. 在 IAM 控制台中，打开 [**Roles**（角色）页面](https://console.aws.amazon.com/iam/home#roles)。

1. 选择**创建角色**。

1. 在 **AWS service**（亚马逊云科技服务）下，选择 **AWS Elastic Beanstalk**，然后选择您的使用案例。

1. 选择**下一步: 权限**。

1. 附加 `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy` 和 `AWSElasticBeanstalkEnhancedHealth` 托管式策略以及提供应用程序所需权限的任何其他策略。

1. 选择 **Next: Tags**（下一步: 标签）。

1. （可选）将标签添加到角色。

1. 选择 **Next: Review**（下一步: 审核）。

1. 输入角色的名称。

1. 选择 **Create role**（创建角色）。

在使用[环境创建向导](environments-create-wizard.md)或通过 `eb create` 命令中的 `--service-role` 选项创建环境时应用您的自定义服务角色。

# 将服务相关角色用于 Elastic Beanstalk
<a name="using-service-linked-roles"></a>

AWS Elastic Beanstalk 使用 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 使用 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**（是）的服务。选择 **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 日开始 AWSServiceRoleForElasticBeanstalk 支持服务相关角色之前使用过 Elastic Beanstalk 服务，而您的账户需要该服务，那么 Elastic Beanstalk 会在您的账户中创建该角色。 AWSService RoleForElasticBeanstalk 要了解更多信息，请参阅[我的 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 不允许你编辑服务相关角色。 AWSService RoleForElasticBeanstalk 创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 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 服务在使用服务相关角色，终止操作可能会失败。如果发生这种情况，请等待几分钟后重试。

**终止使用（控制台）的 Elastic Beanstalk 环境 AWSService RoleForElasticBeanstalk**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 选择 **Actions**（操作），然后选择 **Terminate environment**（终止环境）。

1. 使用屏幕上的对话框确认环境终止。

有关使用 EB CLI 终止 Elastic Beanstalk 环境的详细信息，请参阅[**eb terminate**](eb3-terminate.md)。

有关[TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)使用 API 终止 Elastic Beanstalk 环境的详细信息，请参阅。

### 手动删除服务相关角色
<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 使用 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**（是）的服务。选择 **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 会在您的账户中创建该角色。 AWSService RoleForElasticBeanstalkMaintenance 要了解更多信息，请参阅[我的 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 不允许你编辑服务相关角色。 AWSService RoleForElasticBeanstalkMaintenance 创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 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>

在使用 IAM 删除服务相关角色之前，必须先终止使用此服务相关角色的任何 Elastic Beanstalk 环境。

**注意**  
在您尝试终止环境时，如果 Elastic Beanstalk 服务在使用服务相关角色，终止操作可能会失败。如果发生这种情况，请等待几分钟后重试。

**终止使用（控制台）的 Elastic Beanstalk 环境 AWSService RoleForElasticBeanstalkMaintenance**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 选择 **Actions**（操作），然后选择 **Terminate environment**（终止环境）。

1. 使用屏幕上的对话框确认环境终止。

有关使用 EB CLI 终止 Elastic Beanstalk 环境的详细信息，请参阅[**eb terminate**](eb3-terminate.md)。

有关[TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)使用 API 终止 Elastic Beanstalk 环境的详细信息，请参阅。

### 手动删除服务相关角色
<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 使用 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**（是）的服务。选择 **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 托管更新**使用案例创建服务相关角色。在 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 不允许你编辑服务相关角色。 AWSService RoleForElasticBeanstalkManagedUpdates 创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 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 服务在使用服务相关角色，终止操作可能会失败。如果发生这种情况，请等待几分钟后重试。

**终止使用（控制台）的 Elastic Beanstalk 环境 AWSService RoleForElasticBeanstalkManagedUpdates**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 选择 **Actions**（操作），然后选择 **Terminate Environment**（终止环境）。

1. 使用屏幕上的对话框确认环境终止。

有关使用 EB CLI 终止 Elastic Beanstalk 环境的详细信息，请参阅[**eb terminate**](eb3-terminate.md)。

有关[TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)使用 API 终止 Elastic Beanstalk 环境的详细信息，请参阅。

### 手动删除服务相关角色
<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-AWSElastic Beanstalk** — 向用户授予创建、修改和删除 Elastic Beanstalk 应用程序、应用程序版本、配置设置、环境及其底层资源的完全管理权限。要查看托管策略的内容，请参阅《托*AWS 管策略*参考指南》中的 [AdministratorAccess-AWSElastic Beanstalk](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 日志组。
+ **AWSElasticBeanstalkRoleRDS** — 允许环境集成 Amazon RDS 实例。
+ **AWSElasticBeanstalkRoleWorkerTier**— 允许工作环境层创建 Amazon DynamoDB 表和亚马逊 SQS 队列。
+ **AWSElasticBeanstalkRoleECS** — 允许多容器 Docker 环境管理亚马逊 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-AWSElastic Bean** stalk 旁边的复选框。

1. 选择 **Policy actions**（策略操作），然后选择 **Attach**（附加）。

1. 选择一个或多个要将策略附加到的用户和组。您可以使用 **Filter**（筛选条件）菜单和搜索框来筛选委托人实体列表。

1. 选择**附加策略**。

## 创建自定义用户策略
<a name="AWSHowTo.iam.policies"></a>

您可以创建自己的 IAM policy，以允许或拒绝针对特定 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 policy 包含策略语句，这些语句描述了您要授予的权限。为 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）。
+ （可选）**条件**指定对语句中授予的权限的限制。有关更多信息，请参阅 [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 资源名称格式
<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 格式及示例。


****  

| 资源类型 | 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 帐户，也没有应用程序或 AWS 帐户。 ARNs

# 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 操作的策略信息，包括资源、条件、示例和依赖项**  

| 资源 | Conditions | 示例语句 | 
| --- | --- | --- | 
| **操作：**[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_cn/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) | 
|  `"*"`  |  不适用  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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` 操作在应用程序 **\$1** 中创建使用任一名称（**My App**）的应用程序版本： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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 Template** 中创建名称以 `My Template*`（**My App**）开头的配置模板： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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) | 
|  `"*"`  |  不适用  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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`  |  不适用  |  以下策略允许使用 `DescribeInstancesHealth` 检索名为 **myenv** 的环境中的实例的运行状况信息。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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`  |  不适用  |  以下策略允许 `ListAvailableSolutionStacks` 操作仅返回解决方案堆栈 **32bit Amazon Linux running Tomcat 7**。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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`（可选）  |  以下策略仅在现有资源具有名为 `stage` 的带有值 `test` 的标签时允许 `ListTagsForResource` 操作列出现有资源的标签。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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_cn/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_cn/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**。 CNAMEs  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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_cn/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 关联的两个虚拟操作之一。 以下策略仅在现有资源具有名为 `stage` 的带有值 `test` 的标签时允许 `AddTags` 操作修改现有资源的标签。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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 关联的两个虚拟操作之一。 以下策略拒绝请求从现有资源中删除名为 `stage` 的标签的 `RemoveTags` 操作： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/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_cn/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`操作交换名称以和开头的所有环境，**mydestenv**但不能交换名称以**mysrcenv**和开头的**mysrcenvPROD\$1**环境**mydestenvPROD\$1**。 CNAMEs **My App**    
****  

```
{
  "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 Template** 中创建名称以 `My Template*`（**My App**）开头的配置模板。`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 Bean **AdministratorAccessstalk-AWSElastic Beanstalk** 托管用户策略为用户提供了对任何 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 Bean **AdministratorAccessstalk-AWSElastic Beanstalk** 托管用户策略为用户提供了对任何 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-B **AWSElasticeanstalk AdministratorAccess** 托管用户策略的 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-B **AWSElasticeanstalk AdministratorAccess** 托管用户策略的 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 及相关服务 APIs
<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

请注意，此策略是一个示例。它为 AWS 服务提供了宽泛的权限，Elastic Beanstalk 可使用这些权限管理应用程序和环境。例如，`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 操作。

请注意，此策略是一个示例。它为 AWS 产品提供了宽泛的权限，Elastic Beanstalk 可使用这些权限管理应用程序和环境。例如，`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 是开发经理，负责监管 app1 和 app2 这两种 Elastic Beanstalk 应用程序的开发。John 会对这两种应用程序执行一些开发和测试工作，且只有他能为这两种应用程序更新生产环境。对于 app1 和 app2，他需要拥有以下权限：
+ 查看应用程序、应用程序版本、环境和配置模板
+ 创建应用程序版本并将它们部署到过渡环境
+ 更新生产环境
+ 创建和终止环境

Jill 是一名测试人员，为监控和测试这两种应用程序，她需要拥有以下资源的查看权限：应用程序、应用程序版本、环境和配置模板。但是，她不应具有更改任何 Elastic Beanstalk 资源的权限。

Jack 是 app1 的开发人员，需要拥有查看所有 app1 资源的权限，且还需要为 app1 创建应用程序版本并将应用程序版本部署到过渡环境。

Judy 是 Example Corp. AWS 账户的管理员。她为 John、Jill 和 Jack 创建了 IAM 用户，并向这些用户附加了以下策略，以授予对 app1 和 app2 应用程序的相应权限。

## 示例 1：John – app1、app2 的开发经理
<a name="AWSHowTo.iam.policies.john"></a>

我们已将 John 的策略细分成三项独立策略，以便易于读取和管理它们。通过结合这些示例，可授予 John 对这两个应用程序执行开发、测试和部署操作所需的权限。

第一项策略指定了 Auto Scaling、Amazon S3、Amazon EC2、Amazon SNS CloudWatch、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"
   }
   ]
   }
```

------

第二项策略指定了 John 可以对 app1 和 app2 资源执行的 Elastic Beanstalk 操作。`AllCallsInApplications` 语句允许对 app1 和 app2 内的所有资源执行任何 Elastic Beanstalk 操作（`"elasticbeanstalk:*"`）（例如，`elasticbeanstalk:CreateEnvironment`）。`AllCallsOnApplications` 语句允许对 app1 和 app2 应用程序资源执行任何 Elastic Beanstalk 操作（`"elasticbeanstalk:*"`）（例如，`elasticbeanstalk:DescribeApplications`、`elasticbeanstalk:UpdateApplication` 等）。`AllCallsOnSolutionStacks` 语句允许对解决方案堆栈资源执行任何 Elastic Beanstalk 操作（`"elasticbeanstalk:*"`）（例如，`elasticbeanstalk:ListAvailableSolutionStacks`）。

------
#### [ 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 操作权限才能完成的那些 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 – app1、app2 的测试人员
<a name="AWSHowTo.iam.policies.jill"></a>

我们已将 Jill 的策略细分成三项独立策略，以便易于读取和管理它们。通过结合这些示例，可授予 Jill 对这两种应用程序执行测试和监控操作所需的权限。

第一`Get*`项策略指定了 Auto Scaling `Describe*` `List*`、Amazon S3、Amazon EC2、Amazon SNS CloudWatch、Elastic Load Balancing、Amazon RDS 和 CloudFormation （对于非传统容器类型）和操作，这样 Elastic Beanstalk 操作就可以检索有关应用程序 1 和 app2 应用程序底层资源的相关信息。

------
#### [ 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":"*"
      }
   ]
}
```

------

第二项策略指定了 Jill 可以对 app1 和 app2 资源执行的 Elastic Beanstalk 操作。`AllReadCallsInApplications` 语句允许 Jill 调用 `Describe*` 操作和环境信息操作。`AllReadCallsOnApplications` 语句允许 Jill 对 app1 和 app2 应用程序资源调用 `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 操作权限才能完成的那些 Elastic Beanstalk 操作。`AllNonResourceCalls` 语句允许执行 `elasticbeanstalk:CheckDNSAvailability` 操作，这是一些查看操作所需要的操作。

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

****  

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

------

## 示例 3：Jack – app1 的开发人员
<a name="AWSHowTo.iam.policies.jack"></a>

我们已将 Jack 的策略细分成三项独立策略，以便易于读取和管理它们。通过结合这些示例，可授予 Jack 对 app1 资源执行测试、监控和部署操作所需的权限。

第一项策略指定了 Auto Scaling、Amazon S3、Amazon EC2 CloudWatch、Amazon SNS、Elastic Load Balancing、Amazon RDS 和 CloudFormation （对于非传统容器类型）上的操作，这样 Elastic Beanstalk 操作就可以查看和使用 app1 的底层资源。有关支持的非早期容器类型的列表，请参阅[为什么某些平台版本标记为传统版本？](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":"*"
      }
   ]
}
```

------

第二项策略指定了 Jack 可以对 app1 资源执行的 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 操作权限才能完成的那些 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 应用程序，则可以创建自己的[自定义策略，将其附加到您自己的[服务角色](iam-servicerole.md#iam-servicerole-create)或每个环境的[实例配置文件](iam-instanceprofile.md#iam-instanceprofile-create)，从而缩小策略](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)的安全范围。然后，您可以将自定义策略中的 S3 权限限制到特定环境。

**注意**  
请注意，您有责任维护您的自定义策略。如果您的自定义策略所基于的 Elastic Beanstalk 托管式策略发生更改，则您需要根据基本策略的相应更改来修改自定义策略。有关 Elastic Beanstalk 托管式策略的变更历史记录，请参阅 [Elastic Bean AWS stalk 更新了托管策略](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` 的服务角色来缩小访问范围。以下示例为 id 为 `my-example-env-ID` 的环境中的 S3 存储桶提供自定义服务角色 `aws-elasticbeanstalk-ec2-role-my-example-env` 权限。

**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。您也可以使用 desc AWS CLI [ribe-environments](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html) 命令来获取此信息。

有关帮助您更新 Elastic Beanstalk 环境的 S3 存储桶权限的更多信息，请参阅下面的资源：
+ 本指南中的[将 Elastic Beanstalk 和 Amazon S3 结合使用](AWSHowTo.S3.md)
+ *服务授权参考*指南中的 [Resource types defined by 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)