跳至内容

如何在 DataSync 任务执行成功或失败时收到通知?

3 分钟阅读
0

我想在 AWS DataSync 任务执行成功或失败时收到通知。

解决方法

配置 Amazon Simple Notification Service (Amazon SNS) 和 Amazon EventBridge,使其在 DataSync 任务执行状态更改为 SUCCESS(成功)或 ERROR(错误)时向您发送电子邮件通知。

**先决条件:**必须创建 DataSync 任务

创建 Amazon SNS 主题并通过电子邮件订阅该主题

完成以下步骤:

  1. 打开 Amazon SNS 控制台
  2. 在导航窗格中,选择 Topics(主题)。
  3. 选择 Create topic(创建主题)。
  4. 对于 Name(名称),输入此主题的名称。
  5. 选择 Create topic(创建主题)。
  6. 在主题页面上,选择 Subscriptions(订阅)选项卡。
  7. 选择 Create subscription(创建订阅)。
  8. Create subscription(创建订阅)页面上,执行以下操作:
    对于 Protocol(协议),选择 Email(电子邮件)。
    对于 Endpoint(端点),输入您想要用来接收通知的电子邮件地址。
  9. 选择 Create subscription(创建订阅)。
  10. 在您收到的订阅确认消息中,选择 Confirm subscription(确认订阅)链接。

为 DataSync 创建 EventBridge 规则并将 SNS 主题设置为目标

完成以下步骤:

  1. 打开 EventBridge 控制台
  2. 在导航窗格中,选择 Rules(规则)。
  3. 选择 Create rule(创建规则)。
  4. 输入规则的 Name(名称)和描述。
  5. 对于 Build event pattern(构建事件模式),在 Events(事件)部分下选择 AWS events or EventBridge partner events(AWS 事件或 EventBridge 合作伙伴事件)。
  6. Event pattern(事件模式)下,选择 Use Pattern form(使用模式表单)。
  7. 对于 Event source(事件源),选择 AWS services(AWS 服务)。
  8. 对于 AWS service(AWS 服务),选择 DataSync
  9. 对于 Event type(事件类型),选择 DataSync Task Execution State Change(DataSync 任务执行状态更改)。
  10. Event pattern(事件模式)下,输入以下 JSON 以获取所有处于 SUCCESS(成功)或 ERROR(错误)状态的任务执行的通知:
{  
  "source": [  
    "aws.datasync"  
  ],  
  "detail-type": [  
    "DataSync Task Execution State Change"  
  ],  
  "detail": {  
    "State": [  
      "SUCCESS",  
      "ERROR"  
    ]  
  }  
}
  1. Select Targets(选择目标)下,执行以下操作:
    对于 Target(目标),选择 SNS topic(SNS 主题)。
    对于 Topic(主题),选择您创建的主题。
  2. 选择 Create(创建)。

启动 DataSync 任务以测试电子邮件通知

要测试 DataSync 任务执行状态的电子邮件通知,请先创建任务,然后启动任务

启动任务后,您将收到有关 DataSync 任务执行状态的电子邮件通知。对于成功的执行任务,您将收到一条类似于以下内容的 SUCCESS(成功)通知消息:

{  
    "version": "0",  
    "id": "example0-c014-d9e9-d7ac-44f00d5d1200",  
    "detail-type": "DataSync Task Execution State Change",  
    "source": "aws.datasync",  
    "account": "111122223333",  
    "time": "2019-01-23T12:35:26Z",  
    "region": "us-west-2",  
    "resources": ["arn:aws:sync:us-west-2:9111122223333:task/task-example23d67d5be5/execution/exec-example316440271f"],  
    "detail": {  
        "State": "SUCCESS"  
    }  
}

仅接收一项 DataSync 任务的通知

要仅接收一项 DataSync 任务的通知,请使用 EventBridge 比较运算符搜索该任务 ARN 的部分匹配项。

例如,在以下 JSON 中将任务的 ARN 指定为 prefix 参数的值:

{  
  "detail-type": ["DataSync Task Execution State Change"],  
  "source": ["aws.datasync"],  
  "resources": [{  
    "prefix": "arn:aws:datasync:REGION:ACCOUNT-ID:task/TASK-ID/execution/exec-"  
  }],  
  "detail": {  
    "State": ["SUCCESS", "ERROR"]  
  }  
}

接收多个 DataSync 任务的通知

使用 prefix 参数

要获取多个任务的通知,您可以为每个任务添加一个 prefix 参数。例如,以下 JSON 会激活两个任务的通知:

{  
  "source": ["aws.datasync"],  
  "detail-type": ["DataSync Task Execution State Change"],  
  "resources": [{  
    "prefix": "arn:aws:datasync:REGION:ACCOUNT-ID:task/TASK1-ID/execution/exec-"  
  }, {  
    "prefix": "arn:aws:datasync:REGION:ACCOUNT-ID:task/TASK2-ID/execution/exec-"  
  }],  
  "detail": {  
    "State": ["SUCCESS", "ERROR"]  
  }  
}

**注意:**将 REGION 替换为您的 AWS 区域,将 ACCOUNT-ID 替换为您的 AWS 账户 ID。另外,将 TASK1-IDTASK2-ID 替换为您的任务 ID。

使用通配符参数

您还可以使用通配符参数来获取特定任务的通知。例如,以下 JSON 会激活在 * 字符前带有指定 ARN 前缀的所有任务的通知:

{  
  "detail-type": ["DataSync Task Execution State Change"],  
  "source": ["aws.datasync"],  
  "resources": [{  
    "wildcard": "arn:aws:datasync:REGION:ACCOUNT-ID:task/TASK-ID/execution/exec-*"  
  }],  
  "detail": {  
    "State": ["SUCCESS", "ERROR"]  
  }  
}

**注意:**将 REGION 替换为您的区域,将 ACCOUNT-ID 替换为您的账户 ID,将 TASK-ID 替换为您的任务 ID。

要仅获取几个任务的通知,请使用以下 JSON:

{  
  "detail-type": ["DataSync Task Execution State Change"],  
  "source": ["aws.datasync"],  
  "resources": [{  
    "wildcard": "*/TASK1-ID/execution/exec-*"  
  }, {  
    "wildcard": "*/TASK2-ID/execution/exec-*"  
  }],  
  "detail": {  
    "State": ["SUCCESS", "ERROR"]  
  }  
}

**注意:**将 TASK1-IDTASK2-ID 替换为您的任务 ID。

相关信息

使用 Amazon EventBridge 监控事件

在 Amazon EventBridge 中创建对事件做出响应的规则

AWS 官方已更新 1 年前