使用 CloudWatch Logs 記錄自動化動作輸出 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 CloudWatch Logs 記錄自動化動作輸出

自動化 (AWS Systems Manager 的功能) 與 Amazon CloudWatch Logs 整合。您可以將您 Runbook 中的 aws:executeScript 動作輸出傳送到您指定的日誌群組。Systems Manager 不會建立日誌群組,或者任何文件的日誌串流不會使用 aws:executeScript 動作。如果文件確實使用 aws:executeScript,則傳送至 CloudWatch Logs 的輸出僅與這些動作有關。您可以使用存放在您 CloudWatch Logs 日誌群組中的 aws:executeScript 動作輸出,以進行偵錯和故障診斷。如果您選擇已加密的記錄群組,aws:executeScript 動作輸出也會加密。aws:executeScript 動作的日誌記錄輸出是帳戶層級的設定。

若要將動作輸出傳送到 CloudWatch Logs,用於 Amazon 擁有的執行手冊,執行自動化的使用者或角色必須具有以下操作許可:

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogGroups

  • logs:DescribeLogStreams

  • logs:PutLogEvents

對於您擁有的執行手冊,必須將相同的許可新增至您用來執行執行手冊的 IAM 服務角色 (或 AssumeRole)。

若要將動作輸出傳送至 CloudWatch Logs (主控台)
  1. 開啟位於 https://console.aws.amazon.com/systems-manager/ 的 AWS Systems Manager 主控台。

  2. 在導覽窗格中,選擇 Automation (自動化)。

  3. 選擇 Preferences (偏好) 標籤,然後選擇 Edit (編輯)

  4. 選取 Send output to CloudWatch Logs (將輸出傳送至 CloudWatch Logs) 旁的核取方塊。

  5. (建議) 選取 Encrypt log data (加密日誌資料) 旁的核取方塊。開啟此選項後,系統會使用為該日誌群組指定的伺服器端加密金鑰來加密日誌資料。如果您不想加密要傳送到 CloudWatch Logs 中的日誌資料,清除核取方塊。如果日誌群組不允許加密,清除核取方塊。

  6. 對於 CloudWatch Logs log group (CloudWatch Logs 群組),若要指定您要將動作輸出傳送至的 AWS 帳戶 的現有 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. 執行以下命令,檢視目前 AWS 帳戶 和 AWS 區域 中的自動化動作記錄的目前服務設定。

    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"
        }
    }