本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
指定在 EC2 執行個體上執行之應用程式的許可
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post
如果在堆疊的 Amazon EC2 執行個體上執行的應用程式需要存取其他 AWS 資源 (例如 Amazon S3 儲存貯體),則它們必須具有適當的許可。若要授予那些許可,您可以使用執行個體描述檔。您可以在建立 AWS OpsWorks Stack 堆疊時為每個執行個體指定執行個體設定檔。
您也可以透過編輯 layer 組態,來指定 layer 執行個體的描述檔。
執行個體描述檔指定 IAM 角色。在執行個體上執行的應用程式可取得該角色來存取 AWS 資源,並受角色政策授予的許可約束。如需應用程式取得角色之方式的詳細資訊,請參閱使用 API 呼叫取得角色。
您可以透過下列任何一種方式建立執行個體描述檔:
-
使用 IAM 主控台或 API 建立設定檔。
如需詳細資訊,請參閱角色 (委派及聯合)。
-
使用 AWS CloudFormation 範本建立設定檔。
如需如何在範本中包含 IAM 資源的一些範例,請參閱 Identity 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 主控台中的 Create Role (建立角色)
精靈,請在精靈第二頁的 AWS Service Roles (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 主控台區域
和文檔示例存儲桶替換為適合您的配置的值。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:
region
::DOC-EXAMPLE-BUCKET/*" } ] }
如需如何建立和使用執行個體描述檔的範例,請參閱使用 Amazon S3 儲存貯體。
如果您的應用程式使用執行個體設定檔從 EC2 執行個體呼叫 AWS OpsWorks Stacks API,則除了針對 St AWS OpsWorks acks 和其他 AWS 服務執行適當的iam:PassRole
動作外,該政策還必須允許該動作。iam:PassRole
許可允許 AWS OpsWorks Stacks 代您取得服務角色。如需 AWS OpsWorks 堆疊 API 的詳細資訊,請參閱 AWS OpsWorks API 參考。
以下是 IAM 政策範例,可讓您從 EC2 執行個體呼叫任何 AWS OpsWorks 堆疊動作,以及任何 Amazon EC2 或 Amazon S3 動作。
{ "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 堆疊」動作的嘗試都會失敗,並顯示如下錯誤:
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 資源。