

# Amazon ECS 操作日志入门
<a name="action-logs-getting-started"></a>

Amazon ECS 操作日志使用 Amazon CloudWatch Logs 已出售日志传输机制，将服务操作的详细记录发布到您偏好的目标。启用操作日志后，您可以看到 Amazon ECS 在部署和进程守护程序操作期间执行的每一个步骤，包括基础设施预置、资源注册和故障详细信息。这种可见性有助您在不联系 Amazon Support 的情况下排查问题，并缩短确定根本原因所需的时间。可以使用 Amazon ECS 控制台或 CloudWatch Logs API 为集群启用操作日志。

## 先决条件
<a name="action-logs-getting-started-prerequisites"></a>

在启用操作日志之前，请验证您的 IAM 身份是否具有所需的权限。

### 所需的 IAM 权限
<a name="action-logs-iam-permissions"></a>

您的 IAM 身份必须具有以下权限才能启用和管理操作日志：

```
{
    "Effect": "Allow",
    "Action": [
        "logs:PutDeliverySource",
        "logs:PutDeliveryDestination",
        "logs:CreateDelivery",
        "logs:GetDelivery",
        "ecs:AllowVendedLogDeliveryForResource"
    ],
    "Resource": "*"
}
```

### 目标资源策略
<a name="action-logs-destination-policy"></a>

目标 CloudWatch Logs 日志组必须具有允许 `delivery.logs.amazonaws.com` 服务写入日志的资源策略。请将以下语句添加到该日志组资源策略中：

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
    ],
    "Resource": "arn:aws:logs:{{region}}:{{account-id}}:log-group:{{log-group-name}}:log-stream:*"
}
```

## 使用 Amazon ECS 控制台启用操作日志
<a name="action-logs-enable-console"></a>

可以直接从 Amazon ECS 控制台中的集群详细信息页面启用操作日志。

**使用控制台启用操作日志**

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.amazonaws.cn/ecs/v2) 打开控制台。

1. 在导航窗格中，选择**集群**，然后选择相应的集群。

1. 选择**配置**选项卡。

1. 在**操作日志**部分，选择**添加**。

1. 对于**目标**，请选择下列选项之一：
   + **CloudWatch Logs**（默认）
   + **Amazon S3**
   + **Amazon Data Firehose**

   对于 CloudWatch Logs，Amazon ECS 会创建一个名为 `/aws/vendedlogs/ecs/action-logs/{{cluster-name}}` 的默认日志组，保留期为 7 天。

1. 选择**保存**。

## 使用 CloudWatch Logs API 启用操作日志
<a name="action-logs-enable-api"></a>

可以使用 CloudWatch Logs 已出售日志传输 API 以编程方式启用操作日志。此方法需要完成三个步骤：注册传输源、配置目标以及创建传输。

**使用 Amazon CLI 启用操作日志**

1. 通过运行以下命令注册传输源：

   ```
   aws logs put-delivery-source \
       --name {{my-ecs-action-logs}} \
       --resource-arn arn:aws:ecs:{{region}}:{{account-id}}:cluster/{{cluster-name}} \
       --log-type EcsActionLogs
   ```

1. 通过运行以下命令配置传输目标：

   ```
   aws logs put-delivery-destination \
       --name {{my-ecs-logs-destination}} \
       --output-format json \
       --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:{{region}}:{{account-id}}:log-group:/aws/vendedlogs/ecs/action-logs/{{cluster-name}}"}'
   ```

1. 通过运行以下命令创建传输，以将源链接到目标：

   ```
   aws logs create-delivery \
       --delivery-source-name {{my-ecs-action-logs}} \
       --delivery-destination-arn arn:aws:logs:{{region}}:{{account-id}}:delivery-destination:{{my-ecs-logs-destination}}
   ```

## 验证日志传输
<a name="action-logs-verify-delivery"></a>

启用操作日志后，请验证日志是否会传输到目标。

**验证日志传输**

1. 在集群中触发一个操作。例如，创建或更新进程守护程序服务。

1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

1. 在导航窗格中，选择 **Log groups（日志组）**。

1. 选择您的 Action Logs 日志组，然后验证是否出现该新日志流。

## 删除操作日志
<a name="action-logs-delete"></a>

可以使用 Amazon CLI 或 Amazon ECS 控制台删除操作日志。

要删除操作日志，您的 IAM 身份必须具有以下附加权限：

```
{
    "Effect": "Allow",
    "Action": [
        "logs:DeleteDelivery",
        "logs:DeleteDeliverySource",
        "logs:DeleteDeliveryDestination"
    ],
    "Resource": "*"
}
```

**使用 Amazon CLI 删除操作日志**

1. 通过运行以下命令删除传输：

   ```
   aws logs delete-delivery \
       --delivery-id {{delivery-id}}
   ```

1. 通过运行以下命令删除传输源：

   ```
   aws logs delete-delivery-source \
       --name {{my-ecs-action-logs}}
   ```

1. 通过运行以下命令删除传输目标：

   ```
   aws logs delete-delivery-destination \
       --name {{my-ecs-logs-destination}}
   ```

要使用控制台删除操作日志，请导航到集群详细信息页面，选择**配置**选项卡，然后在**操作日志**部分选择**删除**。

## 后续步骤
<a name="action-logs-next-steps"></a>

启用操作日志后，请使用以下资源进行 Amazon ECS 集群监控和问题排查：
+ [使用 Amazon ECS Action Logs 进行问题排查](action-logs-troubleshooting.md)