

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

# Elastic Beanstalk 服务角色、实例配置文件和用户策略
<a name="concepts-roles"></a>

角色是您使用 AWS Identity and Access Management (IAM) 创建的用于应用权限的实体。您的 Elastic Beanstalk 环境需要一些角色才能正常运行。您还可以选择创建自己的自定义策略和角色，并将其分配给用户或组。

## Elastic Beanstalk 环境所需的角色
<a name="concepts-roles-required"></a>

 创建环境时， AWS Elastic Beanstalk 会提示您提供以下 AWS Identity and Access Management (IAM) 角色：
+  [服务角色](concepts-roles-service.md)：Elastic Beanstalk 扮演服务角色代表你使用其他角色。 AWS 服务 
+  [实例配置文件](concepts-roles-instance.md) Elastic Beanstalk 将实例配置文件应用于您环境中的 Amazon EC2 实例。此操作允许他们执行所需的任务，例如从 Amazon Simple Storage Service（Amazon S3）检索信息并将日志上传到 S3。

**创建服务角色和 EC2 实例配置文件**  
如果您的 AWS 账户没有 EC2 实例配置文件或服务角色，则必须使用 IAM 服务分别创建一个。然后，您可以将 EC2 实例配置文件和服务角色分配到您创建的新环境。**创建环境**向导为您提供有关 IAM 服务的指引，以便您可以创建具有必要权限的这些角色。

## 用于管理 Elastic Beanstalk 环境的可选策略和角色
<a name="concepts-roles-additional"></a>

您可以选择创建[用户策略](concepts-roles-user.md)并将其应用于您账户中的 IAM 用户和组。这样做允许用户创建和管理 Elastic Beanstalk 应用程序和环境。您还可以分配 Elastic Beanstalk [托管式策略](AWSHowTo.iam.managed-policies.md)，以便为用户或组提供完全访问权限和只读访问权限。有关这些策略的更多信息，请参阅 [管理 Elastic Beanstalk 用户策略](AWSHowTo.iam.managed-policies.md)。

您可为高级方案自行创建实例配置文件和用户策略。如果实例需要访问原定设置策略中未包含的服务，您可以创建新策略或者为原定设置策略添加额外的策略。如果托管式策略对于您的需求而言过于宽松，则也可创建更严格的用户策略。有关 AWS 权限的更多信息，请参阅 []()。

# Elastic Beanstalk 服务角色
<a name="concepts-roles-service"></a>

服务角色是 Elastic Beanstalk 在代表您调用其他服务时代入的 IAM 角色。例如，Elastic Beanstalk 在调用亚马逊弹性计算云 (Amazon EC2)、Elastic Load Balancing 和 Amazon EC2 Auto Scaling 时使用服务角色来收集信息。 APIs Elastic Beanstalk 使用的服务角色是您在创建 Elastic Beanstalk 环境时指定的角色。

有两个托管策略附加到服务角色。这些策略提供的权限允许 Elastic Beanstalk 访问创建和管理 AWS 您的环境所需的资源。一个托管策略提供[增强的运行状况监控](health-enhanced.md)和工作线程层 Amazon SQS 支持的权限，另一个策略提供[托管平台更新](environment-platform-update-managed.md)所需的其他权限。



## `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 

您可以使用以下任一方法创建 Elastic Beanstalk 环境。每个部分都描述了该方法如何处理服务角色。

**Elastic Beanstalk 控制台**  
使用 Elastic Beanstalk 控制台创建环境时，Elastic Beanstalk 将提示您创建一个名为 `aws-elasticbeanstalk-service-role` 的服务角色。当通过 Elastic Beanstalk 创建时，此角色包括一个信任策略，允许 Elastic Beanstalk 代入服务角色。本主题前面描述的两个托管策略也会附加到该角色。

**Elastic Beanstalk 命令行界面 (EB CLI)**  
您可以使用 Elastic Beanstalk 命令行界面（EB CLI）的 [**eb create**](eb3-create.md) 命令创建环境。如果您未通过 `--service-role` 选项指定服务角色。Elastic Beanstalk 将创建相同的默认服务角色 `aws-elasticbeanstalk-service-role`。如果默认服务角色已存在，Elastic Beanstalk 会将其用于新环境。当通过 Elastic Beanstalk 创建时，此角色包括一个信任策略，允许 Elastic Beanstalk 代入服务角色。本主题前面描述的两个托管策略也会附加到该角色。

**Elastic Beanstalk API**  
您可以使用 Elastic Beanstalk API 的 `CreateEnvironment` 操作创建环境。如果您未指定服务角色，Elastic Beanstalk 将创建一个监控服务相关角色。这是一种独特的服务角色类型，由 Elastic Beanstalk 预定义，包括该服务代表您呼叫他人所需的所有权限。 AWS 服务 服务相关角色与您的账户关联。Elastic Beanstalk 仅会创建此角色一次，然后在创建其他环境时重复使用此角色。您也可以使用 IAM 提前为账户创建此监控服务相关角色。在您的账户具有监控服务相关角色时，您可以通过 Elastic Beanstalk 控制台、Elastic Beanstalk API 或 EB CLI 使用该角色创建环境。有关如何将服务相关角色与 Elastic Beanstalk 环境结合使用的说明，请参阅[将服务相关角色用于 Elastic Beanstalk](using-service-linked-roles.md)。

有关服务角色的更多信息，请参阅 [管理 Elastic Beanstalk 服务角色](iam-servicerole.md)。

# Elastic Beanstalk 实例配置文件
<a name="concepts-roles-instance"></a>

实例配置文件是一种 IAM 角色，将应用到在您的 Elastic Beanstalk 环境中启动的 Amazon EC2 实例。在创建 Elastic Beanstalk 环境时，您可以指定 EC2 实例执行下列操作时将使用的实例配置文件：
+ 从 Amazon Simple Storage Service (Amazon S3) 检索 [应用程序版本](concepts.md#concepts-version)
+ 将日志写入 Amazon S3
+ 在 [AWS X-Ray 集成环境](environment-configuration-debugging.md)中，向 X-Ray 上传调试数据
+ 在 Amazon ECS 托管式 Docker 环境中，使用 Amazon Elastic Container Service（Amazon ECS）协调容器部署
+ 在工作线程环境中，从 Amazon Simple Queue Service (Amazon SQS) 队列读取
+ 在工作线程环境下：使用 Amazon DynamoDB 进行领导选择
+ 在工作线程环境中，将实例运行状况指标发布到 Amazon CloudWatch

## 托管策略
<a name="concepts-roles-instance.managed-policies"></a>

Elastic Beanstalk 提供了一组托管式策略，以便您环境中的 EC2 实例执行所需的操作。基本使用场景所需的托管式样策略如下。
+ `AWSElasticBeanstalkWebTier`
+ `AWSElasticBeanstalkWorkerTier`
+ `AWSElasticBeanstalkMulticontainerDocker`

如果您的 Web 应用程序需要访问其他应用程序 AWS 服务，请在实例配置文件中添加允许访问这些服务的声明或托管策略。有关更多信息，请参阅 [向默认实例配置文件添加权限](iam-instanceprofile.md#iam-instanceprofile-addperms)。

## 创建 EC2 实例配置文件
<a name="concepts-roles-instance.create-instance-profile"></a>

 如果您的 AWS 账户没有 EC2 实例配置文件，则必须使用 IAM 服务创建一个。然后，您可以将此 EC2 实例配置文件分配到您创建的新环境。Elastic Beanstalk 控制台中的**创建环境**步骤为您提供访问 IAM 控制台的权限，以便您可以创建具有必要权限的 EC2 实例配置文件。

您也可以直接访问 IAM 控制台来创建 EC2 实例配置文件，而无需通过 Elastic Beanstalk 控制台来创建。有关在 IAM 控制台中创建 Elastic Beanstalk EC2 实例配置文件的详细步骤，请参阅[创建实例配置文件](iam-instanceprofile.md#iam-instanceprofile-create)。

# Elastic Beanstalk 用户策略
<a name="concepts-roles-user"></a>

为使用 Elastic Beanstalk 的每个用户创建 IAM 用户，以避免使用根账户或者共享凭证。作为一项安全性最佳实践，请只向这些用户授予访问所需服务和功能的权限。

Elastic Beanstalk 不仅需要其自身的 API 操作的权限，还需要多个其他 AWS 服务的权限。Elastic Beanstalk 使用用户权限在环境中启动资源。这些资源包括若干 EC2 实例、一个 Elastic Load Balancing 负载均衡器和一个 Auto Scaling 组。Elastic Beanstalk 还使用用户权限将日志和模板保存到亚马逊简单存储服务 (Amazon S3)、向亚马逊 SNS 发送通知、分配实例配置文件以及向发布指标。 CloudWatchElastic CloudFormation Beanstalk 需要权限才能协调资源部署和更新。它还需要 Amazon RDS 权限以根据需要创建数据库，需要 Amazon SQS 权限为工作线程环境创建队列。

有关用户策略的详细信息，请参阅[管理 Elastic Beanstalk 用户策略](AWSHowTo.iam.managed-policies.md)。