

# 通过账户设置访问 Amazon ECS 功能
<a name="ecs-account-settings"></a>

您可以进入 Amazon ECS 账户设置以选择使用或选择不使用特定功能。对于每个 Amazon Web Services 区域，您可以在账户级别或为特定用户或角色选择使用或选择不使用每个账户设置。

如果以下任何一项与您相关，您可能希望选择使用或选择不使用特定功能：
+ 用户或角色可以为其个人账户选择使用或选择不使用特定账户设置。
+ 用户或角色可以为账户上的所有用户设置默认选择使用或选择不使用设置。
+ 根用户或具有管理员权限的用户可以选择使用或选择不使用账户上的任何特定角色或用户。如果根用户的账户设置发生更改，则会为未选择个人账户设置的所有用户和角色设置默认值。

**注意**  
联合用户采用根用户的账户设置，并且不能单独为他们设置显式账户设置。

可供使用的账户设置如下：您必须单独选择使用还是不使用每个账户设置。


| 资源名称 | 了解详情 | 
| --- | --- | 
| containerInsights | [Container Insights](#container-insights-setting) | 
| serviceLongArnFormat`taskLongArnFormat`<br />`containerInstanceLongArnFormat` | [Amazon 资源名称（ARN）和 ID](#ecs-resource-ids) | 
| tagResourceAuthorization | [标记授权](#tag-resources-setting) | 
| fargateFIPSMode | [Amazon Fargate 美国联邦信息处理标准（FIPS-140）合规性](#fips-setting) | 
| fargateTaskRetirementWaitPeriod | [Amazon Fargate 任务停用等待时间](#fargate-retirement-wait-time) | 
| fargateEventWindows | [使用 EC2 事件窗口进行 Amazon Fargate 任务停用](#fargate-event-windows) | 
| guardDutyActivate | [运行时监控（Amazon GuardDuty 集成）](#guard-duty-integration) | 
| dualStackIPv6 | [双栈 IPv6 VPC](#dual-stack-setting) | 
| awsvpcTrunking | [增加 Linux 容器实例网络接口](#vpc-trunking-setting) | 
| defaultLogDriverMode | [默认日志驱动程序模式](#default-log-driver-mode) | 

## Amazon 资源名称（ARN）和 ID
<a name="ecs-resource-ids"></a>

在创建 Amazon ECS 资源时，将为每个资源分配一个唯一的 Amazon 资源名称（ARN）和资源标识符（ID）。如果通过命令行工具或 Amazon ECS API 使用 Amazon ECS，则某些命令需要资源 ARN 或 ID。例如，如果使用 [stop-task](https://docs.amazonaws.cn/cli/latest/reference/ecs/stop-task.html) Amazon CLI 命令来停止任务，则必须在该命令中指定任务 ARN 或 ID。

Amazon ECS 引入了针对 Amazon ECS 服务、任务和容器实例的 Amazon 资源名称（ARN）和资源 ID 的新格式。每种资源类型的选择使用状态决定资源使用的 Amazon 资源名称（ARN）格式。您必须选择使用新的 ARN 格式，以对该资源类型使用资源标记等功能。

您可以按区域选择使用和选择不使用新的 Amazon 资源名称（ARN）和资源 ID 格式。目前，预设情况下，所有创建的新账户都选择使用。

您可以随时选择使用或选择不使用新的 Amazon 资源名称（ARN）和资源 ID 格式。在选择加入后，您创建的任何新资源都将使用新格式。

**注意**  
资源 ID 在创建后不会更改。因此，选择使用或选择不使用新格式不会影响现有的资源 ID。

以下各部分介绍 ARN 和资源 ID 格式如何变化。有关转换为新格式的详细信息，请参阅 [Amazon Elastic Container Service 常见问题](https://www.amazonaws.cn/ecs/faqs/)。

**Amazon 资源名称（ARN）格式**  
一些资源具有用户友好的名称，例如名为 `production` 的服务。在其他情况下，您必须使用 Amazon 资源名称（ARN）格式指定资源。Amazon ECS 任务、服务和容器实例的新 ARN 格式包括集群名称。有关选择使用新 ARN 格式的信息，请参阅 [修改 Amazon ECS 账户设置](ecs-modifying-longer-id-settings.md)。

下表显示了每个资源类型的当前格式和新格式。


|  资源类型  |  ARN  | 
| --- | --- | 
|  容器实例  | 当前：`arn:aws:ecs:{{region}}:{{aws_account_id}}:container-instance/{{container-instance-id}}`<br />新：`arn:aws:ecs:{{region}}:{{aws_account_id}}:container-instance/{{cluster-name}}/{{container-instance-id}}` | 
|  Amazon ECS 服务  | 当前：`arn:aws:ecs:{{region}}:{{aws_account_id}}:service/{{service-name}}`<br />新：`arn:aws:ecs:{{region}}:{{aws_account_id}}:service/{{cluster-name}}/{{service-name}}` | 
|  Amazon ECS 任务  | 当前：`arn:aws:ecs:{{region}}:{{aws_account_id}}:task/{{task-id}}`<br />新：`arn:aws:ecs:{{region}}:{{aws_account_id}}:task/{{cluster-name}}/{{task-id}}` | 

**资源 ID 长度**  
资源 ID 采用字母和数字的唯一组合形式。新资源 ID 格式包括 Amazon ECS 任务和容器实例的更短 ID。当前资源 ID 格式的长度为 36 个字符。新 ID 采用 32 个字符的格式，不包含任何连字符。有关选择使用新资源 ID 格式的信息，请参阅 [修改 Amazon ECS 账户设置](ecs-modifying-longer-id-settings.md)。

默认值为 `enabled`。

只有在选择进入后启动的资源才能接收新的 ARN 和资源 ID 格式。所有现有资源均不受影响。要使 Amazon ECS 服务和任务转换为新的 ARN 和资源 ID 格式，必须重新创建该服务或任务。要将容器实例转换为新 ARN 和资源 ID 格式，必须耗尽该容器实例，然后启动并向集群注册一个新的容器实例。

**注意**  
对于 Amazon ECS 服务启动的任务，仅在该服务是在 2018 年 11 月 16 日或之后创建的，并且创建该服务的用户为任务选择使用新格式时，才能采用新 ARN 和资源 ID 格式。

## ARN 和资源 ID 格式时间表
<a name="ecs-resource-arn-timeline"></a>

Amazon ECS 资源的新 Amazon 资源名称（ARN）和资源 ID 格式的选择使用和选择不使用周期的时间表于 2021 年 4 月 1 日结束。默认情况下，所有账户都选择使用新格式。所有新创建的资源都会采用新格式，您无法再选择不使用。

## Container Insights
<a name="container-insights-setting"></a>

2024 年 12 月 2 日，Amazon 发布了针对 Amazon ECS 增强了可观测性的 Container Insights。此版本支持针对使用 Fargate、Amazon ECS 托管实例和 EC2 的 Amazon ECS 集群增强可观测性。在 Amazon ECS 上配置具有增强型可观测性的 Container Insights 后，Container Insights 会自动收集环境中从集群级别到容器级别的详细基础设施遥测数据，并控制面板中显示数据。这些控制面板会显示各种指标和维度。然后，您可以在 Container Insights 控制台上使用这些开箱即用型控制面板，更好地了解容器的运行状况和性能，并通过识别异常来更快缓解问题。

我们建议您使用具有增强型可观测性的 Container Insights，而不是 Container Insights，因为前者可让您详细了解您的容器环境，从而缩短解决问题平均需要的时间。有关更多信息，请参阅《Amazon CloudWatch 用户指南》中的[具有增强型可观测性的 Amazon ECS Container Insights](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Container-Insights-enhanced-observability-metrics-ECS.html)**。

`containerInsights` 账户设置的默认值为 `disabled`。

### 具有增强型可观测性的 Container Insights
<a name="container-insights-setting-enhanced"></a>

使用以下命令启用具有增强型可观测性的 Container Insights。

 将 `containerInsights` 账户设置设置为 `enhanced`。

```
aws ecs put-account-setting --name containerInsights --value enhanced
```

 输出示例

```
{
    "setting": {
        "name": "containerInsights",
        "value": "enhanced",
        "principalArn": "arn:aws:iam::123456789012:johndoe",
         "type": user
    }
}
```

设置此账户设置后，所有新集群都会自动使用具有增强型可观测性的 Container Insights。使用 `update-cluster-settings` 命令为现有集群添加具有增强型可观测性的 Container Insights，或将集群从 Container Insights 升级为具有增强型可观测性的 Container Insights。

```
aws ecs update-cluster-settings --cluster {{cluster-name}} --settings name=containerInsights,value=enhanced
```

您还可以使用控制台来配置具有增强型可观测性的 Container Insights。有关更多信息，请参阅 [修改 Amazon ECS 账户设置](ecs-modifying-longer-id-settings.md)。

### Container Insights
<a name="container-insights-setting-set"></a>

将 `containerInsights` 账户设置设为 `enabled` 时，默认情况下，所有新集群都会启用 Container Insights。您可以使用 `update-cluster-settings` 修改现有集群。

要使用 Container Insights，请将 `containerInsights` 账户设置设置为 `enabled`。使用以下命令启用 Container Insights。

```
aws ecs put-account-setting --name containerInsights --value enabled
```

 输出示例

```
{
    "setting": {
        "name": "containerInsights",
        "value": "enabled",
        "principalArn": "arn:aws:iam::123456789012:johndoe",
         "type": user
    }
}
```

将 `containerInsights` 账户设置设为 `enabled` 时，默认情况下，所有新集群都会启用 Container Insights。使用 `update-cluster-settings` 命令将 Container Insights 添加到现有集群。

```
aws ecs update-cluster-settings --cluster {{cluster-name}} --settings name=containerInsights,value=enabled
```

您还可以使用控制台来配置 Container Insights。有关更多信息，请参阅 [修改 Amazon ECS 账户设置](ecs-modifying-longer-id-settings.md)。

## Amazon Fargate 美国联邦信息处理标准（FIPS-140）合规性
<a name="fips-setting"></a>

Fargate 支持美国联邦信息处理标准（FIPS-140），其中规定了对保护敏感信息的加密模块的安全要求。它是美国和加拿大政府的现行标准，适用于需要符合《联邦信息安全管理法》（FISMA）或联邦风险和授权管理计划（FedRAMP）的系统。

资源名称为 `fargateFIPSMode`。

默认值为 `disabled`。

您必须在 Fargate 上开启美国联邦信息处理标准（FIPS-140）合规性。有关更多信息，请参阅 [Amazon Fargate 美国联邦信息处理标准（FIPS-140）](ecs-fips-compliance.md)。

**重要**  
`fargateFIPSMode` 账户设置只能使用 Amazon ECS API 或 Amazon CLI 进行更改。有关更多信息，请参阅 [修改 Amazon ECS 账户设置](ecs-modifying-longer-id-settings.md)。

 在 `fargateFIPSMode` 选项设置为 `enabled` 的情况下运行 `put-account-setting-default`。有关更多信息，请参阅 *Amazon Elastic Container Service API 参考*中的 [put-account-setting-default](https://docs.amazonaws.cn/cli/latest/reference/ecs/put-account-setting-default.html)。
+ 您可以使用以下命令开启 FIPS-140 合规性。

  ```
  aws ecs put-account-setting-default --name fargateFIPSMode --value enabled
  ```

   输出示例

  ```
  {
      "setting": {
          "name": "fargateFIPSMode",
          "value": "enabled",
          "principalArn": "arn:aws:iam::123456789012:root",
           "type": user
      }
  }
  ```

您可以运行 `list-account-settings` 以查看当前的 FIPS-140 合规性状态。使用 `effective-settings` 选项以查看账户级别设置。

```
aws ecs list-account-settings --effective-settings
```

## 标记授权
<a name="tag-resources-setting"></a>

Amazon ECS 正在为资源创建引入标记授权。用户必须具有创建资源的操作的标记权限，例如 `ecsCreateCluster`。当您创建资源并为该资源指定标签时，Amazon 会执行额外授权以验证是否有创建标签的权限。因此，您必须授予使用 `ecs:TagResource` 操作的显式权限。有关更多信息，请参阅 [在创建时授予标记资源的权限](supported-iam-actions-tagging.md)。

 要选择加入标记授权，请在 `tagResourceAuthorization` 选项设置为 `on` 的情况下运行 `put-account-setting-default`。有关更多信息，请参阅 *Amazon Elastic Container Service API 参考*中的 [put-account-setting-default](https://docs.amazonaws.cn/cli/latest/reference/ecs/put-account-setting-default.html)。您可以运行 `list-account-settings` 以查看当前的标记授权状态。
+ 您可以使用以下命令启用标记授权。

  ```
  aws ecs put-account-setting-default --name tagResourceAuthorization --value on --region {{region}}
  ```

   输出示例

  ```
  {
      "setting": {
          "name": "tagResourceAuthorization",
          "value": "on",
          "principalArn": "arn:aws:iam::123456789012:root",
          "type": user
      }
  }
  ```

启用标记授权后，您必须配置相应的权限，以允许用户在资源创建时标记资源。有关更多信息，请参阅 [在创建时授予标记资源的权限](supported-iam-actions-tagging.md)。

您可以运行 `list-account-settings` 以查看当前的标记授权状态。使用 `effective-settings` 选项以查看账户级别设置。

```
aws ecs list-account-settings --effective-settings
```

## 标记授权时间表
<a name="tag-resources-timeline"></a>

您可以通过运行 `list-account-settings` 以查看 `tagResourceAuthorization` 值来确认标记授权是否处于活动状态。当值为 `on` 时，意味着标记授权在使用中。有关更多信息，请参阅 *Amazon Elastic Container Service API 参考*中的 [list-account-settings](https://docs.amazonaws.cn/cli/latest/reference/ecs/list-account-settings.html)。

以下是与标记授权相关的重要日期。
+ 2023 年 4 月 18 日 – 引入标记授权。所有新账户和现有账户都必须选择使用该功能。您可以选择开始使用标记授权。选择加入后，您必须授予相应的权限。
+  2024 年 2 月 9 日 到 2024 年 3 月 6 日 – 默认情况下，所有新账户和未受影响的现有账户均已启用标记授权。您可以启用或禁用 `tagResourceAuthorization` 账户设置来验证您的 IAM 策略。

  Amazon 已通知受影响的账户。

  要禁用该功能，请在 `tagResourceAuthorization` 选项设置为 `off` 的情况下运行 `put-account-setting-default`。
+ 2024 年 3 月 7 日 – 如果您启用了标记授权，则无法再禁用该账户设置。

  建议您在此日期之前完成 IAM 策略测试。
+  2024 年 3 月 29 日 – 所有账户均使用标记授权。Amazon ECS 控制台或 Amazon CLI 中将不再提供账户级别设置。

## Amazon Fargate 任务停用等待时间
<a name="fargate-retirement-wait-time"></a>

当您在标记为停用的平台版本修订版上运行 Fargate 任务时，Amazon 会发出通知。有关更多信息，请参阅 [Amazon ECS 上的 Amazon Fargate 的任务停用和维护](task-maintenance.md)。

Amazon 负责修补和维护 Amazon Fargate 的底层基础设施。当 Amazon 确定 Fargate 上托管的 Amazon ECS 任务需要进行安全或基础设施更新时，需要停止这些任务并启动新任务来替换它们。您可以对停用任务进行修补之前的等待时间进行配置。您可以选择立即停用该任务、等待 7 个日历日或等待 14 个日历日。

此设置于账户级别进行。

您可以对 Fargate 开始停用任务的时间进行配置。默认等待期为 7 天。对于需要立即应用更新的工作负载，请选择即时设置（`0`）。如果需要更多时间，请配置 `7` 或 `14` 天选项。

建议您选择较短的等待时间，以便更快获得较新的平台版本修订版。

通过以根用户或管理员用户身份运行 `put-account-setting-default` 或 `put-account-setting` 配置等待期。将 `fargateTaskRetirementWaitPeriod` 选项用于设置为以下值之一的 `name` 和 `value` 选项：
+ `0`：Amazon 发送通知，并立即开始停用受影响的任务。
+ `7`：Amazon 发送通知，等待 7 个日历日后才开始停用受影响的任务。这是默认值。
+ `14`：Amazon 发送通知，等待 14 个日历日后才开始停用受影响的任务。

有关更多信息，请参阅《Amazon Elastic Container Service API 参考》**中的 [put-account-setting-default](https://docs.amazonaws.cn/cli/latest/reference/ecs/put-account-setting-default.html) 和 [put-account-setting](https://docs.amazonaws.cn/cli/latest/reference/ecs/put-account-setting.html)。

您可运行以下命令将等待期设置为 14 天。

```
aws ecs put-account-setting-default --name fargateTaskRetirementWaitPeriod --value 14
```

 输出示例

```
{
    "setting": {
        "name": "fargateTaskRetirementWaitPeriod",
        "value": "14",
        "principalArn": "arn:aws:iam::123456789012:root",
        "type: user"
    }
}
```

您可以运行 `list-account-settings` 以查看当前 Fargate 任务停用等待时间。使用 `effective-settings` 选项。

```
aws ecs list-account-settings --effective-settings
```

## 使用 EC2 事件窗口进行 Amazon Fargate 任务停用
<a name="fargate-event-windows"></a>

Amazon 负责修补和维护 Amazon Fargate 的底层基础设施。当 Amazon 确定 Fargate 上托管的 Amazon ECS 任务需要进行安全或基础设施更新时，需要停止这些任务并启动新任务来替换它们。启用此账户设置后，Amazon Fargate 将使用 EC2 事件窗口来确定任务的停用时间和日期。请注意，这是账户的一次性启用操作。

要启用对 Fargate 任务停用使用 EC2 事件窗口，您可以使用下面的 CLI 命令：

```
aws ecs put-account-setting-default --name fargateEventWindows --value enabled
```

这是一个账户级别设置。您可以使用下面的实例标签在账户、集群和服务级别将 EC2 事件窗口与 Fargate 任务相关联：
+ `aws:ecs:serviceArn`：适用于服务任务
+ `aws:ecs:clusterArn`：适用于属于集群的任务
+ `aws:ecs:fargateTask`：设置为 true 以针对账户中的所有 Fargate 任务

要详细了解 [Amazon EC2 事件窗口](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/event-windows.html)如何处理在 Fargate 上运行的 Amazon ECS 任务，请参阅[步骤 1：设置任务等待时间或使用 Amazon EC2 事件窗口](prepare-task-retirement.md#prepare-task-retirement-set-time) 

## 增加 Linux 容器实例网络接口
<a name="vpc-trunking-setting"></a>

每个使用 `awsvpc` 网络模式的 Amazon ECS 任务都会接收到自己的弹性网络接口（ENI），该网络接口附加到托管它的容器实例。可以附加到 Amazon EC2 实例的网络接口的数量有原定设置限制，并且主网络接口计为一个。例如，默认情况下，最多可将三个 ENI 附加到一个 `c5.large` 实例。实例的主网络接口计为一个，因此您可以向该实例再附加 2 个 ENI。由于每个使用 `awsvpc` 网络模式的任务都需一个 ENI，因此，您通常只能在该实例类型上运行两个此类任务。

Amazon ECS 支持使用受支持的 Amazon EC2 实例类型启动已增加 ENI 密度的容器实例。当您使用这些实例类型并开启 `awsvpcTrunking` 账户设置时，其他 ENI 将在新启动的容器实例上可用。此配置允许您在每个容器实例上放置更多任务。

例如，具有 `awsvpcTrunking` 的 `c5.large` 实例增加了十二个的 ENI 限制。容器实例将具有主网络接口，而 Amazon ECS 将创建一个“中继”网络接口并将此接口附加到容器实例。因此，此配置允许您在容器实例上启动 10 个任务，而不是当前的两个任务。

## 运行时监控（Amazon GuardDuty 集成）
<a name="guard-duty-integration"></a>

运行时监控是一项智能威胁检测服务，它通过持续监控 Amazon 日志和联网活动来识别恶意或未经授权的行为，从而保护在 Fargate 和 EC2 容器实例上运行的工作负载。

`guardDutyActivate` 参数在 Amazon ECS 中是只读的，指示安全管理员在您的 Amazon ECS 账户中开启还是关闭运行时监控。GuardDuty 代表您控制此账户设置。有关更多信息，请参阅[使用运行时监控保护 Amazon ECS 工作负载](https://docs.amazonaws.cn/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html)。

您可以运行 `list-account-settings` 以查看当前 GuardDuty 集成设置。

```
aws ecs list-account-settings 
```

 输出示例

```
{
    "setting": {
        "name": "guardDutyActivate",
        "value": "on",
        "principalArn": "arn:aws:iam::123456789012:doej",
        "type": aws-managed"
    }
}
```

## 双栈 IPv6 VPC
<a name="dual-stack-setting"></a>

Amazon ECS 支持使用 IPv4 地址以外的 IPv6 地址提供任务。

要接收 IPv6 地址的任务，任务必须使用 `awsvpc` 网络模式，必须在配置为双堆栈模式的 VPC 中启动，`dualStackIPv6` 账户设置必须已启用。有关其他要求的更多信息，请参阅 [在双堆栈模式下使用 VPC](task-networking-awsvpc.md#task-networking-vpc-dual-stack)（对于 EC2 容量）、[在双堆栈模式下使用 VPC](managed-instances-awsvpc-mode.md#managed-instance-networking-vpc-dual-stack)（对于 Amazon ECS 托管实例容量）和 [在双堆栈模式下使用 VPC](fargate-task-networking.md#fargate-task-networking-vpc-dual-stack)（对于 Fargate 容量）。

**重要**  
`dualStackIPv6` 账户设置只能使用 Amazon ECS API 或 Amazon CLI 进行更改。有关更多信息，请参阅 [修改 Amazon ECS 账户设置](ecs-modifying-longer-id-settings.md)。

如果您在 2020 年 10 月 1 日至 2020 年 11 月 2 日期间在启用 IPv6 的子网中使用 `awsvpc` 网络模式运行任务，则运行该任务的区域中的默认 `dualStackIPv6` 账户设置为 `disabled`。如果不满足该条件，则区域中的默认 `dualStackIPv6` 设置为 `enabled`。

默认值为 `disabled`。

## 默认日志驱动程序模式
<a name="default-log-driver-mode"></a>

Amazon ECS 支持设置从容器到所选日志驱动程序的默认日志消息交付模式。当从容器到日志驱动程序的日志流发生中断时，交付模式会影响应用程序的稳定性。

`defaultLogDriverMode` 设置支持两个值：`blocking` 和 `non-blocking`。有关这些交付模式的更多信息，请参阅《Amazon Elastic Container Service API 参考》中的 [LogConfiguration](https://docs.amazonaws.cn/AmazonECS/latest/APIReference/API_LogConfiguration.html)**。

如果未在容器定义的 `logConfiguration` 中指定交付模式，则默认将使用您利用此账户设置指定的模式。

默认交付模式为 `non-blocking`。

**注意**  
2025 年 6 月 25 日，Amazon ECS 的默认日志驱动程序模式从 `blocking` 更改为 `non-blocking`，以优先考虑任务可用性而不是日志记录。要在此更改后继续使用 `blocking` 模式，请执行以下操作之一：  
将容器定义 `logConfiguration` 中的 `mode` 选项设置为 `blocking`。
将 `defaultLogDriverMode` 账户设置设置为 `blocking`。

要将默认日志驱动程序模式设置为 `blocking`，您可以运行以下命令。

```
aws ecs put-account-setting-default --name defaultLogDriverMode --value "blocking"
```