使用 CloudWatch Logs 记录自动化操作输出 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 CloudWatch Logs 记录自动化操作输出

Amazon Systems Manager 的功能自动化与 Amazon CloudWatch Logs 集成在一起。您可以将运行手册中 aws:executeScript 操作的输出发送到您指定的日志组。Systems Manager 不会为不使用 aws:executeScript 操作的文档创建日志组或任何日志流。如果文档使用 aws:executeScript,则发送到 CloudWatch Logs 的输出仅与这些操作有关。您可以将存储在 CloudWatch Logs 日志组中的 aws:executeScript 操作输出用于调试和故障排除目的。如果您选择已加密的日志组,则 aws:executeScript 操作输出也会被加密。记录 aws:executeScript 操作的输出是一项账户级别的设置。

要向 CloudWatch Logs for Amazon 拥有的运行手册发送操作输出,运行自动化的用户或角色必须拥有执行以下操作的权限:

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogGroups

  • logs:DescribeLogStreams

  • logs:PutLogEvents

对于您拥有的运行手册,必须将相同权限添加到您用于运行运行手册的 IAM 服务角色(或 AssumeRole)。

将操作输出发送到 CloudWatch Logs(控制台)
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择 自动化

  3. 选择 Preferences (首选项) 选项卡,然后选择 Edit (编辑)

  4. 选中 Send output to CloudWatch Logs (将输出发送到 CloudWatch Logs) 旁边的复选框。

  5. (推荐)选中 Encrypt log data (对日志数据加密) 旁边的复选框。在打开此选项的情况下,将使用为日志组指定的服务器端加密密钥对日志数据加密。如果不需要加密发送到 CloudWatch Logs 的日志数据,请清除该复选框。如果日志组不允许加密,请清除该复选框。

  6. 对于 CloudWatch Logs 日志组,要指定您要向其发送操作输出的 Amazon Web Services 账户中的现有 CloudWatch Logs 日志组,请选择以下选项之一:

    • Send output to the default log group (将输出发送到默认日志组) – 如果默认日志组不存在 (/aws/ssm/automation/executeScript),自动化将为您创建它。

    • Choose from a list of log groups (从日志组列表中选择) - 选择已在您的账户中创建的日志组来存储操作输出。

    • Enter a log group name (输入日志组名称) - 在文本框中输入已在您的账户中创建的用于存储操作输出的日志组的名称。

  7. 选择 Save (保存)

将操作输出发送到 CloudWatch Logs(命令行)
  1. 打开首选命令行工具并运行以下命令,以更新操作输出目标。

    Linux & macOS
    aws ssm update-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-destination \ --setting-value CloudWatch
    Windows
    aws ssm update-service-setting ^ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-destination ^ --setting-value CloudWatch
    PowerShell
    Update-SSMServiceSetting ` -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-destination" ` -SettingValue "CloudWatch"

    如果此命令成功,则无任何输出。

  2. 运行以下命令,以指定要向其发送操作输出的日志组。

    Linux & macOS
    aws ssm update-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-group-name \ --setting-value my-log-group
    Windows
    aws ssm update-service-setting ^ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-group-name ^ --setting-value my-log-group
    PowerShell
    Update-SSMServiceSetting ` -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-group-name" ` -SettingValue "my-log-group"

    如果此命令成功,则无任何输出。

  3. 运行以下命令,以查看当前 Amazon Web Services 账户 和 Amazon Web Services 区域 中自动化操作日志记录首选项的当前服务设置。

    Linux & macOS
    aws ssm get-service-setting \ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-destination
    Windows
    aws ssm get-service-setting ^ --setting-id arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-destination
    PowerShell
    Get-SSMServiceSetting ` -SettingId "arn:aws:ssm:region:account-id:servicesetting/ssm/automation/customer-script-log-destination"

    此命令会返回如下信息。

    {
        "ServiceSetting": {
            "Status": "Customized",
            "LastModifiedDate": 1613758617.036,
            "SettingId": "/ssm/automation/customer-script-log-destination",
            "LastModifiedUser": "arn:aws:sts::123456789012:assumed-role/Administrator/User_1",
            "SettingValue": "CloudWatch",
            "ARN": "arn:aws:ssm:us-east-2:123456789012:servicesetting/ssm/automation/customer-script-log-destination"
        }
    }