如何自動化 AWS DMS 錯誤日誌刪除流程,以便避免複寫執行個體出現儲存體已滿狀態?

2 分的閱讀內容
0

我想要自動化 AWS Database Migration Service (AWS DMS) 錯誤日誌刪除流程,以便更頻繁地刪除。

簡短說明

如果您的 AWS DMS 錯誤日誌佔用 DMS 複寫執行個體中的大量空間,則複寫執行個體可能會進入儲存體已滿狀態。若要解決此問題,請刪除 DMS 工作的 DMS 工作錯誤記錄檔。

若要刪除 AWS DMS 任務的錯誤日誌,請使用下列其中一種方法:

  • AWS DMS 主控台
  • AWS Command Line Interface (AWS CLI)
  • API
  • Lambda 排程器

注意:有幾個原因可能導致發生儲存已滿狀態。如需詳細資訊,請參閱為什麼 AWS DMS 複寫資料庫執行個體處於儲存空間已滿的狀態?

解決方法

**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請參閱 AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

使用 AWS DMS 主控台

若要手動刪除 DMS 工作錯誤日誌,請參閱如何開啟、存取或刪除 AWS DMS 的 CloudWatch 日誌?

使用 AWS CLI

若要使用 AWS CLI 修改工作設定並刪除 DMS 工作日誌,請執行 modify-replication-task 命令:

aws dms modify-replication-task --replication-task-arn <DMS task ARN> --replication-task-settings '{"Logging": { "DeleteTaskLogs": true}}'

此命令會變更 "DeleteTaskLogs": true 參數來修改工作。使用此參數新增工作設定後,工作的所有日誌都會從複寫執行個體中刪除。刪除日誌之後,工作設定即會移除 "DeleteTaskLogs": true 參數。執行此命令之後,請確認已從複寫執行個體刪除日誌。

若要定期刪除日誌,請使用 "DeleteTaskLogs": true 參數來修改工作設定。您可以使用 cron 作業排程 modify-replication-task 定期執行。

使用 API

若要自動刪除 AWS DMS 工作日誌,請建立指令碼以每天執行,或以您想要的頻率執行。下列範例使用 AWS Lambda 和 Python 程式碼對提供的工作 ARN 自動執行工作錯誤日誌刪除。

設定 Lambda 函數

若要設定 Lambda 函數,請完成下列步驟:

1.    開啟 Lambda 主控台,然後選擇包含 DMS 資源的 AWS 區域。

2.    從函數面板中選擇建立函數

3.    輸入函數名稱

4.    對於執行期,選擇 python 3.8

5.    對於變更預設執行角色,選擇使用基本 Lambda 權限建立新角色。記下 Lambda 建立的 AWS Identity and Access Management (IAM) 角色名稱。

6.    選擇建立函數

7.    開啟 AWS IAM 主控台,然後開啟 Lambda 函數所建立的 IAM 角色。

8.    若要建立 IAM 政策,請使用下列 JSON。用您的工作 ARN 取代範例工作 ARN:

{    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "dms:ModifyReplicationTask"
            ],
            "Resource": "arn:aws:dms:us-east-1:1234567890:task:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
        }
    ]
}

9.    附加政策到 Lambda 函數建立的角色。

10.    開啟 Lambda 主控台,然後選擇您建立的 Lambda 函數。

11.    對於函數程式碼,輸入下列程式碼,然後選擇部署

import boto3import json
client = boto3.client('dms')
def lambda_handler(event, context):
    # specific task ARN
    taskarn = 'arn:aws:dms:us-east-1:1234567890:task:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
    # modify the DMS task
    response = client.modify_replication_task(
        ReplicationTaskArn=taskarn,
        ReplicationTaskSettings='{"Logging": { "DeleteTaskLogs": true}}'
    )

12.    選擇測試,然後使用預設範本輸入事件名稱

13.    選擇建立,然後再次選擇測試

DMS 工作狀態會變更為修改中。同時,複寫執行個體下的 DMS 工作錯誤日誌被刪除。

使用 Lambda 排程器

若要使用 Lambda 排程器自動化 DMS 工作錯誤日誌,請完成下列步驟:

  1. 開啟 Lambda 主控台,然後選擇您建立的 Lambda 函數。
  2. 對於設計器,選擇新增觸發器
  3. 從下拉式選單中選擇 EventBridge (Cloudwatch Events)
  4. 對於規則,選擇建立新規則
  5. 輸入規則名稱規則說明
  6. 對於排程運算式,輸入速率運算式。如需詳細資訊,請參閱使用速率或 cron 排程運算式
  7. 選擇新增

**注意:**您可以變更和最佳化此程式碼。也可以使用 cron 作業或 Lambda 排程器排程此指令碼定期執行。

AWS 官方
AWS 官方已更新 5 個月前