本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
指定在執行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主控台
中使用「建立角色」精靈,請在精靈的第二頁的「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-演示桶與適合您的配置的值。
{ "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參閱參考。
以下是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資源。