指定在 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 主控台中的 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 主控台或 API 將適當的政策附加到設定檔的角色。例如,下列政策授與 Amazon S3 儲存貯體中名為 DOC/EXAMPLE-貯體的所有物件的完整存取權。將區域和文檔示例存儲桶替換為適合您的配置的值。

{ "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 資源