管理 Elastic Beanstalk 实例配置文件 - AWS Elastic Beanstalk

管理 Elastic Beanstalk 实例配置文件

实例配置文件是 AWS Identity and Access Management(IAM)角色的容器,可用来在实例启动时将角色信息传递给 Amazon EC2 实例。在使用 Elastic Beanstalk 控制台或 EB CLI 启动环境时,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:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*" ] }, { "Sid": "XRayAccess", "Action":[ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "CloudWatchLogsAccess", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:DescribeLogGroups" ], "Effect": "Allow", "Resource": [ "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*" ] }, { "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] } ] }
  • AWSElasticBeanstalkWorkerTier – 授予日志上传、调试、指标发布和工作程序实例任务(包括队列管理、领导选择和定期任务)的权限。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MetricsAccess", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "XRayAccess", "Action":[ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries" ], "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:s3:::elasticbeanstalk-*", "arn:aws: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:dynamodb:*:*:table/*-stack-AWSEBWorkerCronLeaderRegistry*" ] }, { "Sid": "CloudWatchLogsAccess", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Effect": "Allow", "Resource": [ "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*" ] }, { "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] } ] }
  • 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" }, "Action": "sts:AssumeRole" } ] }

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

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

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

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

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

  2. 选择 aws-elasticbeanstalk-ec2-role

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

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

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

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

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

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

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

  2. 选择 aws-elasticbeanstalk-ec2-role

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

  4. 键入 AWSElasticBeanstalk 以筛选策略。

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

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

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

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

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

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

  2. 选择 aws-elasticbeanstalk-ec2-role

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

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

  5. 选择 Attach policy(附加策略)。

创建实例配置文件

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

创建实例配置文件

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

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

  3. AWS service(亚马逊云科技服务)下,选择 EC2

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

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

  6. 选择 Next: Tags(下一步: 标签)。

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

  8. 选择 Next: Review(下一步: 审核)。

  9. 输入角色的名称。

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

Amazon Linux 2 平台的实例配置文件

Amazon Linux 2 平台需要实例配置文件才能正常运行。例如,所有 Amazon Linux 2 平台版本都会在环境创建期间默认启用增强型运行状况。实例需要正确权限来收集和报告增强型运行状况信息。