

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

# 指定在 EC2 執行個體上執行之應用程式的許可
<a name="opsworks-security-appsrole"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

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

![\[Add Stack (新增堆疊) 頁面中的 Advanced (進階) 選項。\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/add-stack-instanceproflie.png)


您也可以透過[編輯 layer 組態](workinglayers-basics-edit.md)，來指定 layer 執行個體的描述檔。

執行個體描述檔指定 IAM 角色。在執行個體上執行的應用程式可取得該角色來存取 AWS 資源，並受角色政策授予的許可約束。如需應用程式取得角色之方式的詳細資訊，請參閱[使用 API 呼叫取得角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-assume-role.html)。

您可以透過下列任何一種方式建立執行個體描述檔：
+ 使用 IAM 主控台或 API 來建立設定檔。

  如需詳細資訊，請參閱[角色 (委派及聯合)](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html)。
+ 使用 CloudFormation 範本建立設定檔。

  如需如何在範本中包含 IAM 資源的一些範例，請參閱 [Identity and Access Management (IAM) 範本程式碼片段](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html)。

執行個體描述檔必須具備信任關聯及授予存取 AWS 資源許可的連接政策。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

執行個體描述檔必須具有此信任關係， Stacks OpsWorks 才能代表您採取行動。若您使用預設服務角色，請不要修改信任關聯。若您建立自訂服務角色，請指定信任關聯如下：
+ 若您使用 **IAM 主控台**中的 [Create Role (建立角色)](https://console.aws.amazon.com/iam/home#roles) 精靈，請在精靈第二頁的 **AWS Service Roles (AWS 服務角色)** 下方輸入 **Amazon EC2** 角色。
+ 如果您使用的是 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 主控台](https://console.aws.amazon.com/iam/)或 API 將適當的政策連接到設定檔的角色。例如，下列政策會授予 Amazon S3 儲存貯體中名為 amzn-s3-demo-bucket 的所有物件的完整存取權。將 *region* 和 amzn-s3-demo-bucket 取代為您的組態適用的值。

如需如何建立和使用執行個體描述檔的範例，請參閱[使用 Amazon S3 儲存貯體](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted.walkthrough.photoapp.html)。

如果您的應用程式使用執行個體描述檔從 EC2 執行個體呼叫 OpsWorks Stacks API，則除了 Stacks 和其他 AWS OpsWorks 服務的適當`iam:PassRole`動作之外，政策還必須允許 動作。`iam:PassRole` 許可允許 OpsWorks Stacks 代您取得服務角色。如需 OpsWorks Stacks API 的詳細資訊，請參閱 [AWS OpsWorks API 參考](https://docs.aws.amazon.com/opsworks/latest/APIReference/Welcome.html)。

以下是 IAM 政策的範例，可讓您從 EC2 執行個體呼叫任何 OpsWorks Stacks 動作，以及任何 Amazon EC2 或 Amazon S3 動作。

**注意**  
如果您不允許 `iam:PassRole`，任何呼叫 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 執行個體上使用角色的詳細資訊，請參閱《[ 使用者指南》](https://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html)*中的AWS Identity and Access Management 授予在 Amazon EC2 執行個體上執行的應用程式存取 AWS 資源*。