

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# `AWSSupport-CollectEKSInstanceLogs`
<a name="automation-awssupport-collecteksinstancelogs"></a>

 **描述** 

 `AWSSupport-CollectEKSInstanceLogs` 运行手册从 Amazon Elastic Compute Cloud (Amazon EC2) 实例收集操作系统和 Amazon Elastic Kubernetes Service (Amazon EKS) 相关日志文件，以帮助解决常见问题。在此自动化收集关联的日志文件时，会对文件系统结构进行更改，包括创建临时目录、将日志文件复制到临时目录以及将日志文件压缩到档案中。此活动可能会导致 Amazon EC2 实例上的 `CPUUtilization` 增加。有关更多信息`CPUUtilization`，请参阅 *Amazon CloudWatch 用户指南*中的[实例指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics)。

 如果您为 `LogDestination` 参数指定一个值，此自动化会评估您指定的 Amazon Simple Storage Service (Amazon S3) 存储桶的策略状态。为了帮助保护从 Amazon EC2 实例收集的日志的安全，如果策略状态 `isPublic` 设置为 `true`，或者如果访问控制列表（ACL）向 `All Users` Amazon S3 预定义组授予 `READ|WRITE` 权限，日志将不会上传。有关 Amazon S3 预定义组的更多信息，请参阅*《Amazon Simple Storage Service 用户指南》*中的 [Amazon S3 预定义组](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#specifying-grantee-predefined-groups)。

**注意**  
这种自动化需要连接到您的亚马逊 EC2 实例的亚马逊弹性块存储 (Amazon EBS) 根卷上至少 10% 的可用磁盘空间。如果根卷上没有足够的可用磁盘空间，此自动化将停止。

 [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-CollectEKSInstanceLogs) 

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux

**参数**
+ AutomationAssumeRole

  类型：字符串

  描述：（可选）允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称（ARN）。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
+ EKSInstance我是

  类型：字符串

  描述：（必填）您要从中收集日志的 Amazon EKS Amazon EC2 实例的 ID。
+ LogDestination

  类型：字符串

  描述：（可选）您账户中用于上传存档日志的亚马逊简单存储服务 (Amazon S3) 存储桶。

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `ssm:SendCommand`

 **亚马逊 EC2 实例配置文件所需的 IAM 权限** 

使用的实例配置文件`EKSInstanceId`必须附有 **Amazon SSMManaged InstanceCore Ama** zon 托管策略。

 它还必须能够访问 `LogDestination` Amazon S3 存储桶，这样它才能上传收集的日志。以下是可以附加到该实例配置文件的 IAM 策略的示例：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetBucketPolicyStatus",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::LogDestination/*",
        "arn:aws:s3:::LogDestination"
      ]
    }
  ]
}
```

如果`LogDestination`使用 AWS KMS 加密，则必须在 IAM 策略中添加一条额外的声明，授予对加密中使用的 AWS KMS 密钥的访问权限：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetBucketPolicyStatus",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::LogDestination/*",
        "arn:aws:s3:::LogDestination"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "arn:aws:kms:REGION:ACCOUNT:key/KMS-KEY-ID"
    }
  ]
}
```

 **文档步骤** 
+  `aws:assertAwsResourceProperty` - 确认您在 `EKSInstanceId` 参数中指定的值的操作系统为 Linux。
+  `aws:runCommand` - 收集操作系统和 Amazon EKS 相关日志文件，从而将其压缩到 `/var/log` 目录中的档案中。
+  `aws:branch` - 确认是否为 `LogDestination` 参数指定了一个值。
+  `aws:runCommand`-将日志档案上传到您在`LogDestination`参数中指定的 Amazon S3 存储桶。