本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为在EC2实例上运行的应用程序指定权限
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
如果在您的堆栈的 Amazon EC2 实例上运行的应用程序需要访问其他AWS资源,例如 Amazon S3 存储桶,则它们必须具有相应的权限。要授予这些权限,您可使用实例配置文件。在创建 Stac AWS OpsWorks ks 堆栈时,您可以为每个实例指定实例配置文件。
您还可以通过编辑层配置来为层的实例指定配置文件。
实例配置文件指定了IAM角色。在实例上运行的应用程序可以代入该角色来访问AWS资源,但须遵守该角色的策略授予的权限。有关应用程序如何扮演角色的更多信息,请参阅使用API调用代入角色。
您可以采用以下任一方式创建实例配置文件:
-
使用IAM控制台或API创建配置文件。
有关更多信息,请参阅角色(委托和联合)。
-
使用 AWS CloudFormation 模板创建个人资料。
有关如何在模板中包含IAM资源的一些示例,请参阅 Ident ity and Access Management (IAM) 模板片段。
实例配置文件必须具有信任关系和授予AWS资源访问权限的附加策略。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
实例配置文件必须具有这种信任关系, AWS OpsWorks Stacks 才能代表您采取行动。如果您使用默认服务角色,请勿修改信任关系。如果您正在创建自定义服务角色,请指定信任关系,如下所示:
-
如果您在IAM控制台
中使用创建角色向导,请在向导第二页的 “AWS服务角色” 下指定 Amazon EC2 角色类型。 -
如果您使用的是 AWS CloudFormation 模板,则可以在模板的 “资源” 部分中添加类似以下内容的内容。
"Resources": { "OpsWorksEC2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksEC2Role" } ] } } }
当您创建您的实例配置文件时,您可将适当的策略附加到该配置文件的角色。创建堆栈后,必须使用IAM控制台region
以及 amzn-s3-demo-bucket,其值与您的配置相符。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:
region
::amzn-s3-demo-bucket/*" } ] }
有关如何创建和使用实例配置文件的示例,请参阅使用 Amazon S3 存储桶。
如果您的应用程序使用实例配置文件API从EC2实例调用 AWS OpsWorks 堆栈,则除了对 AWS OpsWorks 堆栈和其他AWS服务iam:PassRole
执行适当的操作外,该策略还必须允许该操作。iam:PassRole
权限允许 AWS OpsWorks Stacks 代表您担任该服务角色。有关 AWS OpsWorks 堆栈的更多信息API,请参阅AWS OpsWorks API参考。
以下是允许您从EC2实例调用任何 AWS OpsWorks Stacks 操作以及任何 Amazon EC2 或 Amazon S3 操作的IAM策略示例。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "s3:*", "opsworks:*", "iam:PassRole" ], "Resource": "arn:aws:ec2:
region
:account_id:
instance/*", "Condition": { "StringEquals": { "iam:PassedToService": "opsworks.amazonaws.com" } } } ] }
注意
如果您不允许iam:PassRole
,则任何调用 AWS OpsWorks Stacks 操作的尝试都会失败,并出现如下错误:
User: arn:aws:sts::123456789012:federated-user/Bob is not authorized to perform: iam:PassRole on resource: arn:aws:sts::123456789012:role/OpsWorksStackIamRole
有关在EC2实例上使用角色获取权限的更多信息,请参阅AWS Identity and Access Management 用户指南中的授予在 Amazon EC2 实例上运行的应用程序访问AWS资源的权限。