

# Amazon ECS 控制台所需的权限
<a name="console-permissions"></a>

遵循授予最低权限的最佳实践，您可以使用 `AmazonECS_FullAccess` 托管策略作为创建您自己的自定义策略的模板。这样，您就可以根据您的特定要求取消或添加托管策略的权限。有关更多信息，请参阅《Amazon Managed Policy Reference》**中的 [AmazonECS\$1FullAccess](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AmazonECS_FullAccess.html)。

## 创建 IAM 角色的权限
<a name="console-create-roles"></a>

以下操作需要额外的权限才能完成操作：
+ 注册外部实例：有关更多信息，请参阅 [Amazon ECS Anywhere IAM 角色](iam-role-ecsanywhere.md) 
+ 注册任务定义：有关更多信息，请参阅 [Amazon ECS 任务执行 IAM 角色](task_execution_IAM_role.md)
+ 创建用于计划任务的 EventBridge 规则：有关更多信息，请参阅 [Amazon ECS EventBridge IAM 角色](CWE_IAM_role.md)

您可以通过先在 IAM 中创建角色来添加这些权限，然后再在 Amazon ECS 控制台中使用这些权限。如果您没有创建角色，Amazon ECS 控制台将代表您创建角色。

## 将外部实例注册到集群所需的权限
<a name="register-external-instance"></a>

在向集群注册外部实例并想要创建新的外部实例（`ecsExternalInstanceRole`）角色时，您需要额外的权限。

需要以下额外权限：
+ `iam` – 允许主体创建并列出 IAM 角色及其附加的策略。
  + iam:AttachRolePolicy
  + iam:CreateRole
  + am:CreateInstanceProfile
  + iam:AddRoleToInstanceProfile
  + iam:ListInstanceProfilesForRole
  + iam:GetRole
+ `ssm` – 允许主体向 Systems Manager 注册外部实例。

**注意**  
要选择现有的 `ecsExternalInstanceRole`，您必须拥有 `iam:GetRole` 和 `iam:PassRole` 权限。

以下策略包含所需的权限，并将操作限制到 `ecsExternalInstanceRole` 角色。

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

****  

```
{
"Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "iam:AttachRolePolicy",
              "iam:CreateRole",
              "iam:CreateInstanceProfile",
              "iam:AddRoleToInstanceProfile",
              "iam:ListInstanceProfilesForRole",
              "iam:GetRole"
          ],
          "Resource": "arn:aws:iam::*:role/ecsExternalInstanceRole"
      },
      {
          "Effect": "Allow",
          "Action": ["iam:PassRole","ssm:CreateActivation"],
          "Resource": "arn:aws:iam::*:role/ecsExternalInstanceRole"
      }
    ]
}
```

------

## 注册任务定义所需的权限
<a name="register-task-def"></a>

注册任务定义并想要创建新的任务执行（`ecsTaskExecutionRole`）角色时，您需要额外的权限。

需要以下额外权限：
+ `iam` – 允许主体创建并列出 IAM 角色及其附加的策略。
  + iam:AttachRolePolicy
  + iam:CreateRole
  + iam:GetRole

**注意**  
要选择现有的 `ecsTaskExecutionRole`，您必须拥有 `iam:GetRole` 权限。

以下策略包含所需的权限，并将操作限制到 `ecsTaskExecutionRole` 角色。

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

****  

```
{
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iam:AttachRolePolicy",
            "iam:CreateRole",
            "iam:GetRole"
        ],
        "Resource": "arn:aws:iam::*:role/ecsTaskExecutionRole"
        }
    ]
}
```

------

## 使用 Amazon Q 开发者版在控制台中提供建议所需的权限
<a name="amazon-q-permission"></a>

 要让 Amazon Q 开发者版在 Amazon ECS 控制台中提供建议，您必须为您的 IAM 用户或角色启用正确的 IAM 权限。您必须添加 `codewhisperer:GenerateRecommendations` 权限。

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

****  

```
{
"Statement": [
      {
            "Sid": "AmazonQDeveloperPermissions",
            "Effect": "Allow",
            "Action": ["codewhisperer:GenerateRecommendations"],
            "Resource": "*"
        }
    ]
}
```

------

 要在 Amazon ECS 控制台中使用内联聊天，您必须为您的 IAM 用户或角色启用正确的 IAM 权限。您必须添加 `q:SendMessage` 权限。

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

****  

```
{
"Statement": [
    {
        "Sid": "AmazonQDeveloperInlineChatPermissions",
        "Effect": "Allow",
        "Action": ["q:SendMessage"],
        "Resource": "*"
    }
  ]
}
```

------

## 为计划任务创建 EventBridge 规则所需的权限
<a name="schedule-task"></a>

在计划任务并想要创建新的 CloudWatch Events 角色（`ecsEventsRole`）角色时，您需要额外的权限。

需要以下额外权限：
+ `iam`– 允许主体创建和列出 IAM 角色及其附加策略，并允许 Amazon ECS 将角色传递给其他服务以代入该角色。

**注意**  
要选择现有的 `ecsEventsRole`，您必须拥有 `iam:GetRole` 和 `iam:PassRole` 权限。

以下策略包含所需的权限，并将操作限制到 `ecsEventsRole` 角色。

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

****  

```
{
 "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iam:AttachRolePolicy",
            "iam:CreateRole",
            "iam:GetRole",
            "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::*:role/ecsEventsRole"
        }
    ]
}
```

------

## 查看服务部署所需的权限
<a name="service-deployments"></a>

 当您遵循授予最低权限的最佳实践时，需要添加额外的权限，才能在控制台中查看服务部署。

您需要执行以下操作的权限：
+ ListServiceDeployments
+ DescribeServiceDeployments
+ DescribeServiceRevisions

您需要访问以下资源的权限：
+ 服务
+ 服务部署
+ 服务修订

以下示例策略包含所需的权限，并将操作限制到特定服务。

将 `account`、`cluster-name` 和 `service-name` 替换为您的值。

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

****  

```
{
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ecs:ListServiceDeployments",
            "ecs:DescribeServiceDeployments",
            "ecs:DescribeServiceRevisions"
        ],
        "Resource": [
            "arn:aws:ecs:us-east-1:123456789012:service/cluster-name/service-name",
            "arn:aws:ecs:us-east-1:123456789012:service-deployment/cluster-name/service-name/*",
            "arn:aws:ecs:us-east-1:123456789012:service-revision/cluster-name/service-name/*"
            ]
        }
   ]
}
```

------

## 在 Container Insights 中查看 Amazon ECS 生命周期事件所需的权限
<a name="required-permissions-view"></a>

查看生命周期事件需要以下权限。将以下权限作为内联策略添加到该角色。有关更多信息，请参阅[添加和删除 IAM 策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)
+ events:DescribeRule
+ events:ListTargetsByRule
+ logs:DescribeLogGroups

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "events:DescribeRule",
        "events:ListTargetsByRule",
        "logs:DescribeLogGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 在 Container Insights 中启用 Amazon ECS 生命周期事件所需的权限
<a name="required-permissions-configure"></a>

配置生命周期事件需要以下权限：
+ events:PutRule
+ events:PutTargets
+ logs:CreateLogGroup

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "events:PutRule",
        "events:PutTargets",
        "logs:CreateLogGroup"
      ],
      "Resource": "*"
    }
  ]
}
```

------