本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 AWS Database Migration Service 中使用 Amazon SNS 事件和通知
从 AWS DMS 版本 3.4.5 及更高版本开始,我们建议您使用 Amazon EventBridge,在 AWS DMS 事件发生时提供通知。有关将 AWS DMS 与 EventBridge 事件结合使用的更多信息,请参阅在 AWS Database Migration Service 中使用 Amazon EventBridge 事件和通知。
将事件订阅移至 Amazon EventBridge
您可以使用以下 AWS CLI 命令,将活跃的事件订阅从 DMS 迁移到 Amazon EventBridge,一次最多可迁移 10 个订阅。
update-subscriptions-to-event-bridge [--force-move | --no-force-move]
默认情况下,只有当您的复制实例当前版本为 AWS DMS 3.4.5 及更高版本时,AWS DMS 才会迁移活跃的事件订阅。要覆盖此默认行为,请使用 --force-move
选项。但是,如果您的复制实例未升级,则使用 Amazon EventBridge 时某些类型的事件可能不可用。
要运行 update-subscriptions-to-event-bridge
CLI 命令,AWS Identity and Access Management (IAM) 用户必须具有以下策略权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "SNS:GetTopicAttributes", "SNS:SetTopicAttributes", "events:PutTargets", "events:EnableRule", "events:PutRule" ], "Resource": "*" } ] }
有关将订阅移至 EventBridge 的更多信息,请参阅《AWS Database Migration Service API 参考》中的 UpdateSubscriptionsToEventBridge。
使用 Amazon SNS 事件和通知
AWS DMS 版本 3.4.5 及更早版本支持使用事件和通知,如下所述。
AWS Database Migration Service (AWS DMS) 可以使用 Amazon Simple Notification Service (Amazon SNS),在发生 AWS DMS 事件(例如创建或删除复制实例)时提供通知。您可以通过 AWS 区域的 Amazon SNS 支持的任何形式使用这些通知,如电子邮件、短信或者调用 HTTP 端点。
AWS DMS 将这些事件分组为您可以订阅的类别,以便您在出现该类事件时收到通知。例如,如果您订阅了指定复制实例的“创建”类别,则只要发生了与创建相关的事件影响到您的复制实例,您就会收到通知。如果您订阅了复制实例的“配置更改”类别,则您将在复制实例的配置更改时收到通知。您还将在事件通知订阅更改时收到通知。有关 AWS DMS 提供的事件类别的列表,请参阅后文中的 AWS DMS 事件类别和 SNS 通知的事件消息。
AWS DMS 将事件通知发送到您在创建事件订阅时提供的地址。您可能希望创建多个不同的订阅,如使用一个订阅接收所有事件通知,并使用另一个订阅接收仅针对生产 DMS 资源的关键事件。您可以在 AWS DMS 控制台中取消选择已启用选项,或者使用 AWS DMS API 将 Enabled
参数设置为 false,轻松地禁用通知而不删除订阅。
注意
目前,在支持 Amazon SNS 的所有 AWS 区域中,使用 SMS 文本消息的 AWS 事件通知可用于 AWS DMS 资源。有关 Amazon SNS 支持 SMS 消息的 AWS 区域和国家/地区列表,请参阅支持的区域和国家/地区。
有关在 SNS 上使用文本消息的更多信息,请参阅使用 Amazon SNS 发送和接收 SMS 通知。
AWS DMS 事件通知不同于 CloudWatch 或 EventBridge 中的 CloudTrail 事件。任何 API 调用都可以生成 CloudTrail 事件通知。只有在发生了 DMS 事件时,DMS 才会发送通知。
AWS DMS 使用订阅标识符来标识各个订阅。您可以将多个 AWS DMS 事件订阅发布到同一个 Amazon SNS 主题。在您使用事件通知时,将会收取 Amazon SNS 费用;有关 Amazon SNS 计费的更多信息,请参阅 Amazon SNS 定价
要订阅 Amazon SNS 上的 AWS DMS 事件,您可以使用以下过程:
-
创建 Amazon SNS 主题。在主题中,指定您要接收的通知类型,以及要将通知发送到的地址或号码。
-
使用 AWS Management Console、AWS CLI 或 AWS DMS API 创建 AWS DMS 事件通知订阅。
-
AWS DMS 将批准电子邮件或者 SMS 消息发送到您在订阅时提交的地址。要确认订阅,请单击批准电子邮件或 SMS 消息中的链接。
-
确认订阅后,订阅状态即会在 AWS DMS 控制台的事件订阅部分中更新。
-
您将开始接收事件通知。
有关您可以接收通知的类型和事件的列表,请参阅下面的章节。有关订阅和使用 AWS DMS 事件通知的更多详情,请参阅使用 SNS 订阅 AWS DMS 事件通知。
主题
AWS DMS 事件类别和 SNS 通知的事件消息
重要
从 AWS DMS 版本 3.4.5 及更高版本开始,我们建议您使用 Amazon EventBridge,在 AWS DMS 事件发生时提供通知。有关将 AWS DMS 与 EventBridge 事件结合使用的更多信息,请参阅在 AWS Database Migration Service 中使用 Amazon EventBridge 事件和通知。
AWS DMS 会生成各种类别的大量事件,您可以使用 AWS DMS 控制台或者 AWS DMS API 对它们进行订阅。每个类别应用于一种源类型;当前 AWS DMS 支持复制实例和复制任务源类型。
下表显示了复制实例源类型可能的类别和事件。
类别 |
DMS 事件 ID |
描述 |
---|---|---|
配置更改 | DMS-EVENT-0012 |
正在更改此复制实例的复制实例类。 |
配置更改 | DMS-EVENT-0014 |
此复制实例的复制实例类已更改。 |
配置更改 | DMS-EVENT-0018 |
正在增加复制实例的存储。 |
配置更改 | DMS-EVENT-0017 |
复制实例的存储已增加。 |
配置更改 | DMS-EVENT-0024 |
复制实例正在过渡到多可用区配置。 |
配置更改 | DMS-EVENT-0025 |
复制实例已完成过渡到多可用区配置。 |
配置更改 | DMS-EVENT-0030 |
复制实例正在过渡到单可用区配置。 |
配置更改 | DMS-EVENT-0029 |
复制实例已过渡到单可用区配置。 |
创建 | DMS-EVENT-0067 |
正在创建复制实例。 |
创建 | DMS-EVENT-0005 |
复制实例已创建。 |
删除 | DMS-EVENT-0066 |
正在删除复制实例。 |
删除 | DMS-EVENT-0003 |
复制实例已删除。 |
维护 | DMS-EVENT-0047 | 复制实例上的管理软件已更新。 |
维护 | DMS-EVENT-0026 | 复制实例正在进行脱机维护。复制实例当前不可用。 |
维护 | DMS-EVENT-0027 | 复制实例的脱机维护已完成。现在可以使用复制实例。 |
维护 | DMS-EVENT-0068 | 复制实例处于无法升级的状态。 |
LowStorage | DMS-EVENT-0007 | 复制实例已使用其分配的存储空间的 90% 以上。您可以使用可用存储空间指标监控复制实例的存储空间。 |
失效转移 | DMS-EVENT-0013 | 为多可用区复制实例启用了失效转移。 |
失效转移 | DMS-EVENT-0049 | 多可用区复制实例的失效转移已完成。 |
失效转移 | DMS-EVENT-0015 | 多可用区失效转移到备用状态已完成。 |
失效转移 | DMS-EVENT-0050 | 多可用区激活已开始。 |
失效转移 | DMS-EVENT-0051 | 多可用区激活已完成。 |
失效转移 | DMS-EVENT-0034 | 如果过于频繁地请求失效转移,则会发生此事件而不是常规失效转移事件。 |
失败 | DMS-EVENT-0031 | 复制实例遇到了存储故障。 |
失败 | DMS-EVENT-0036 | 由于不兼容的网络,复制实例失败。 |
失败 | DMS-EVENT-0037 | 服务无法访问用于加密数据卷的 AWS KMS 密钥。 |
下表显示了复制任务源类型可能的类别和事件。
类别 |
DMS 事件 ID |
描述 |
---|---|---|
状态更改 | DMS-EVENT-0069 |
复制任务已开始。 |
状态更改 | DMS-EVENT-0081 |
已请求重新加载表详细信息。 |
状态更改 | DMS-EVENT-0079 |
复制任务已停止。 |
状态更改 | DMS-EVENT-0091 | 读取暂停,已达到交换文件限制。 |
状态更改 | DMS-EVENT-0092 | 读取暂停,已达到磁盘使用量限制。 |
状态更改 | DMS-EVENT-0093 | 读取已恢复。 |
失败 | DMS-EVENT-0078 |
复制任务已失败。 |
失败 | DMS-EVENT-0082 |
删除任务的调用未能清理任务数据。 |
配置更改 | DMS-EVENT-0080 | 复制任务已修改。 |
删除 | DMS-EVENT-0073 |
复制任务已删除。 |
创建 | DMS-EVENT-0074 | 复制任务已创建。 |
以下示例显示了具有“状态更改”类别的 AWS DMS 事件订阅。
Resources: DMSEvent: Type: AWS::DMS::EventSubscription Properties: Enabled: true EventCategories: State Change SnsTopicArn: arn:aws:sns:us-east-1:123456789:testSNS SourceIds: [] SourceType: replication-task
使用 SNS 订阅 AWS DMS 事件通知
重要
从 AWS DMS 版本 3.4.5 及更高版本开始,我们建议您使用 Amazon EventBridge,在 AWS DMS 事件发生时提供通知。有关将 AWS DMS 与 EventBridge 事件结合使用的更多信息,请参阅在 AWS Database Migration Service 中使用 Amazon EventBridge 事件和通知。
您可以创建 AWS DMS 事件通知订阅,这样就能在发生 AWS DMS 事件时收到通知。创建订阅最简单的方式是使用 AWS DMS 控制台。在通知订阅中,您可以选择发送通知的方式和位置。您可以指定希望收到其通知的源类型;当前 AWS DMS 支持复制实例和复制任务源类型。并且,根据选择的源类型,您需要选择希望接收其事件通知的事件类别并标识源。
使用 AWS Management Console
重要
从 AWS DMS 版本 3.4.5 及更高版本开始,我们建议您使用 Amazon EventBridge,在 AWS DMS 事件发生时提供通知。有关将 AWS DMS 与 EventBridge 事件结合使用的更多信息,请参阅在 AWS Database Migration Service 中使用 Amazon EventBridge 事件和通知。
使用控制台订阅 Amazon SNS 上的 AWS DMS 事件通知
-
登录到 AWS Management Console,然后通过以下网址打开 AWS DMS 控制台:https://console.aws.amazon.com/dms/v2/
。 如果以 IAM 用户身份登录,请确保具有适当的 AWS DMS 访问权限。
-
在导航窗格中,选择事件订阅。
-
在事件订阅页面中,选择创建事件订阅。
-
在创建事件订阅页面中,执行以下操作:
-
在详细信息下,对于名称,输入事件通知订阅的名称。
-
选择已启用以启用订阅。如果您希望创建订阅但尚不发送通知,可选择已启用。
-
在目标下,选择现有主题、创建新电子邮件主题或新建 SMS 主题以发送通知。请确保您有可以发送通知的现有 Amazon SNS 主题,否则必须创建主题。如果您创建主题,则可以输入将通知发送到的电子邮件地址。
-
在事件源下,对于源类型,请选择一种源类型。仅有的选项是复制实例和复制任务。
-
根据选定源类型的情况,选择您希望接收其事件通知的事件类别和源。
-
选择创建事件订阅。
-
AWS DMS 控制台会表明正在创建订阅。
注意
您也可以使用 AWS DMS API 和 CLI 创建 Amazon SNS 事件通知订阅。有关更多信息,请参阅《AWS DMS API 参考》中的 CreateEventSubscription 和《AWS DMS CLI 参考》文档中的 create-event-subscription。
验证您的 SNS 主题的访问策略
您的 SNS 访问策略需要允许 AWS DMS 将事件发布到 SNS 主题的权限。您可以按照以下过程中的说明验证和更新您的访问策略。
验证访问策略
-
打开 Amazon SNS 控制台。
-
在导航面板中,选择主题,然后选择您要接收 DMS 通知的主题。
-
选择访问策略选项卡。
如果您的 SNS 访问策略不允许 AWS DMS 向 SNS 主题发布事件,则可以更新策略。
更新访问策略
-
在主题页面的详细信息部分,选择编辑。
-
展开访问策略部分,然后将以下策略附加到 JSON 编辑器中。
{ "Sid": "dms-allow-publish", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sns:Publish", "Resource": "
your-SNS-topic-ARN
" }我们建议您通过指定
aws:SourceArn
条件来进一步限制对您 SNS 主题的访问权限,即发布事件到主题的 DMS EventSubscription ARN。... "Resource": "
your-SNS-topic-ARN
" "Condition": { "StringEquals": { "aws:SourceArn": "arn:partition
:dms:your-AWS-region
:your-AWS-account-ID
:es:your-dms-es-arn or *
" } -
选择保存更改。