AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon 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. 要查看策略授予的权限,请选择策略旁边的 Show Policy (显示策略)

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

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

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

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

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

  2. 选择 aws-elasticbeanstalk-ec2-role

  3. Permissions 选项卡上的 Managed Policies 下,选择 Attach Policy

  4. 键入 AWSElasticBeanstalk 以筛选策略。

  5. 选择下列策略,然后选择 Attach Policies (附加策略)

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

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

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

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

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

  2. 选择 aws-elasticbeanstalk-ec2-role

  3. Permissions 选项卡上的 Managed Policies 下,选择 Attach Policy

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

  5. 选择附加策略

创建实例配置文件

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

创建实例配置文件

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

  2. 选择 Create New Role

  3. 键入名称,然后选择 Next Step

  4. AWS Service Roles 下,选择 Amazon EC2

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

  6. 选择 Next Step

  7. 选择 Create Role