AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

管理 Elastic Beanstalk 实例配置文件

实例配置文件是 AWS Identity and Access Management (IAM) 角色的容器,可用来在实例启动时将角色信息传递给 Amazon EC2 实例。在 AWS Elastic Beanstalk 环境管理控制台中启动环境时,该控制台将创建一个名为 aws-elasticbeanstalk-ec2-role 的默认实例配置文件,并将具有默认权限的托管策略分配给该配置文件。

Elastic Beanstalk 提供了三种托管策略:一个托管策略用于 Web 服务器层;一个托管策略用于工作程序层;一个托管策略具有多容器 Docker 环境所需的附加权限。控制台将所有这些策略都分配给附加至默认实例配置文件的角色。遵循这些策略。

托管实例配置文件策略

  • AWSElasticBeanstalkWebTier – 授予应用程序将日志上传到 Amazon S3 以及将调试信息上传到 AWS X-Ray 的权限。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "BucketAccess", "Action": [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws-cn:s3:::elasticbeanstalk-*", "arn:aws-cn:s3:::elasticbeanstalk-*/*" ] }, { "Sid": "XRayAccess", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "CloudWatchLogsAccess", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:DescribeLogGroups" ], "Effect": "Allow", "Resource": [ "arn:aws-cn:logs:*:*:log-group:/aws/elasticbeanstalk*" ] } ] }
  • AWSElasticBeanstalkWorkerTier – 授予日志上传、调试、指标发布和工作线程实例任务(包括队列管理、领导选择和定期任务)的权限。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MetricsAccess", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "XRayAccess", "Action":[ "xray:PutTraceSegments", "xray:PutTelemetryRecords" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "QueueAccess", "Action": [ "sqs:ChangeMessageVisibility", "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "BucketAccess", "Action": [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws-cn:s3:::elasticbeanstalk-*", "arn:aws-cn:s3:::elasticbeanstalk-*/*" ] }, { "Sid": "DynamoPeriodicTasks", "Action": [ "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Effect": "Allow", "Resource": [ "arn:aws-cn:dynamodb:*:*:table/*-stack-AWSEBWorkerCronLeaderRegistry*" ] }, { "Sid": "CloudWatchLogsAccess", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Effect": "Allow", "Resource": [ "arn:aws-cn:logs:*:*:log-group:/aws/elasticbeanstalk*" ] } ] }
  • AWSElasticBeanstalkMulticontainerDocker – 向 Amazon Elastic Container Service 授予协调集群任务的权限。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ECSAccess", "Effect": "Allow", "Action": [ "ecs:Poll", "ecs:StartTask", "ecs:StopTask", "ecs:DiscoverPollEndpoint", "ecs:StartTelemetrySession", "ecs:RegisterContainerInstance", "ecs:DeregisterContainerInstance", "ecs:DescribeContainerInstances", "ecs:Submit*" ], "Resource": "*" } ] }

为了允许环境中的 EC2 实例代入 aws-elasticbeanstalk-ec2-role 角色,实例配置文件将 Amazon EC2 指定为信任关系策略中的可信实体,如下所示。

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

要自定义权限,您可以向附加到默认实例配置文件的角色添加策略,或者创建具有一组受限权限的实例配置文件。

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

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

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

  1. 在 IAM 控制台中,打开角色页面

  2. 选择 aws-elasticbeanstalk-ec2-role

  3. 权限选项卡中,审核附加到角色的策略列表。

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

更新过期的默认实例配置文件

如果默认实例配置文件缺少必需的权限,您可以通过在 Elastic Beanstalk 环境管理控制台中创建新环境来更新它。

或者,可以向附加到默认实例配置文件的角色手动添加托管策略。

向附加到默认实例配置文件的角色添加托管策略

  1. 在 IAM 控制台中,打开角色页面

  2. 选择 aws-elasticbeanstalk-ec2-role

  3. 权限选项卡上,选择 Attach policies (附加策略)

  4. 键入 AWSElasticBeanstalk 以筛选策略。

  5. 选择下列策略,然后选择附加策略

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

向默认实例配置文件添加权限

如果您的应用程序访问在默认实例配置文件中未授予其权限的 AWS API 或资源,请在 IAM 控制台中添加授予这些权限的策略。

向附加到默认实例配置文件的角色添加策略

  1. 打开 IAM 控制台中的“角色”页面

  2. 选择 aws-elasticbeanstalk-ec2-role

  3. 权限选项卡上,选择 Attach policies (附加策略)

  4. 选择适用于应用程序使用的附加服务的托管策略。例如,AmazonS3FullAccessAmazonDynamoDBFullAccess

  5. 选择 Attach policy

创建实例配置文件

实例配置文件是一个面向标准 IAM 角色的包装程序,它允许 EC2 实例代入该角色。您可以创建附加实例配置文件来自定义不同应用程序的权限,也可以创建一个不为工作线程层或多容器 Docker 环境授予权限的实例配置文件 (如果您不使用这些功能)。

创建实例配置文件

  1. 在 IAM 控制台中,打开角色页面

  2. 选择 Create role (创建角色)

  3. AWS 服务下面,选择 EC2

  4. 选择 Next: Permissions (下一步: 权限)

  5. 附加由 Elastic Beanstalk 提供的适当托管策略以及提供应用程序所需的权限的任何其他策略。

  6. 选择下一步: 标签

  7. (可选)将标签添加到角色。

  8. 选择 Next: Review

  9. 输入角色的名称。

  10. 选择 Create role (创建角色)