

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

遵循授予最低权限的最佳实践，您可以使用 `AmazonECS_FullAccess` 托管策略作为创建您自己的自定义策略的模板。这样，您就可以根据您的特定要求取消或添加托管策略的权限。有关更多信息，请参阅《AWS Managed Policy Reference》**中的 [AmazonECS\$1FullAccess](https://docs.aws.amazon.com/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.aws.amazon.com/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": "*"
    }
  ]
}
```

------

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

在使用AWS 管理控制台创建资源之前，您需要确保拥有正确的 IAM 权限。要首先了解如何为 Amazon ECS 控制台设置权限，请参阅 [Amazon ECS 控制台所需的权限](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/console-permissions.html)。

在以下情况下，Amazon ECS 控制台由 AWS CloudFormation 提供支持，并且需要额外的 IAM 权限：
+ 创建集群
+ 创建服务
+ 创建容量提供程序

您可以为其他权限创建策略，然后将其附加到用于访问控制台的 IAM 角色。有关更多信息，请参阅《IAM 用户指南》**中的[创建 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。

## 创建集群所需的权限
<a name="create-cluster"></a>

在控制台中创建集群时，您需要额外的权限来授予您管理 CloudFormation 堆栈的权限。

 需要以下额外权限：
+ `cloudformation`— 允许委托人创建和管理 CloudFormation 堆栈。这是使用 AWS 管理控制台 创建 Amazon ECS 集群和后续管理这些集群时所必需的。
+ `ssm` – 允许 CloudFormation 引用最新的 Amazon ECS 优化型 AMI。这在使用 AWS 管理控制台 创建 Amazon ECS 集群时为必需。

以下策略包含所需的 CloudFormation 权限，并将操作限制为在 Amazon ECS 控制台中创建的资源。

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

****  

```
{
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStack*",
                "cloudformation:UpdateStack"
             ],
            "Resource": [
                "arn:*:cloudformation:*:*:stack/Infra-ECS-Cluster-*"
            ]
      },
      {
          "Effect": "Allow",
          "Action": "ssm:GetParameters",
          "Resource": [
            "arn:aws:ssm:*:*:parameter/aws/service/ecs/optimized-ami/amazon-linux-2*/*",
            "arn:aws:ssm:*:*:parameter/aws/service/ecs/optimized-ami/amazon-linux-2023*/*"
          ]
      }
   ]
}
```

------

如果您尚未创建 Amazon ECS 容器实例角色（`ecsInstanceRole`），并且正在创建使用 Amazon EC2 实例的集群，则控制台将代表您创建该角色。

此外，如果您使用自动扩缩组，则需要额外的权限，以便控制台在使用集群自动扩缩功能时可以向自动扩缩组添加标签。

需要以下额外权限：
+ `autoscaling` – 允许控制台标记 Amazon EC2 Auto Scaling 组。使用集群自动扩缩功能时，在管理 Amazon EC2 Auto Scaling 组时需要此项。该标签是 ECS 管理的标签，控制台自动将其添加到组中，以表示它是在控制台中创建的。
+ `iam`— 允许委托人列出 IAM 角色及其附加的策略。委托人还可以列出 Amazon EC2 实例可用的实例配置文件。

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

自动扩缩权限不受限制。

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

****  

```
{
  "Statement": [
      {
          "Effect": "Allow",
            "Action": [
              "iam:AttachRolePolicy",
              "iam:CreateRole",
              "iam:CreateInstanceProfile",
              "iam:AddRoleToInstanceProfile",
              "iam:ListInstanceProfilesForRole",
              "iam:GetRole"
            ],
            "Resource": "arn:aws:iam::*:role/ecsInstanceRole"
        },
        {
            "Effect": "Allow",
            "Action": "autoscaling:CreateOrUpdateTags",
            "Resource": "*"
        }
    ]
}
```

------

## 创建服务所需的权限
<a name="create-service-permissions"></a>

在控制台中创建服务时，您需要额外的权限来授予您管理 CloudFormation 堆栈的权限。需要以下额外权限：
+ `cloudformation`— 允许委托人创建和管理 CloudFormation 堆栈。这是使用 AWS 管理控制台 创建 Amazon ECS 服务和后续管理这些服务时所必需的。

以下策略包含所需的权限，并将操作限制为在 Amazon ECS 控制台中创建的资源。

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

****  

```
{
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStack*",
                "cloudformation:UpdateStack"
             ],
            "Resource": [
                "arn:*:cloudformation:*:*:stack/ECS-Console-V2-Service-*"
            ]
      }
   ]
}
```

------