指定在執行EC2個體上執行的應用程式 - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

指定在執行EC2個體上執行的應用程式

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

如果在堆疊的 Amazon EC2 執行個體上執行的應用程式需要存取其他AWS資源 (例如 Amazon S3 儲存貯體),則它們必須具有適當的許可。若要授予那些許可,您可以使用執行個體描述檔。您可以在建立 AWS OpsWorks Stack 堆疊時為每個執行個體指定執行個體設定檔。

Add Stack (新增堆疊) 頁面中的 Advanced (進階) 選項。

您也可以透過編輯 layer 組態,來指定 layer 執行個體的描述檔。

執行個體設定檔會指定IAM角色。在執行個體上執行的應用程式可以假設該角色存取AWS資源,但需視角色政策所授與的權限而定。如需應用程式如何擔任角色的詳細資訊,請參閱使用API呼叫假設角色

您可以透過下列任何一種方式建立執行個體描述檔:

執行個體設定檔必須具有信任關係,以及授與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主控台或將適當的原則附加API至設定檔的角色。例如,下列政策授予對 Amazon S3 儲存貯體中名為 amzn-s3-示範儲存貯體的所有物件的完整存取權。Replace (取代) 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資源