微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS AppFlow Salesforce 到 Lambda 不完整事件

如何解决AWS AppFlow Salesforce 到 Lambda 不完整事件

我有一个 AWS AppFlow 流设置,目的是接收 Salesforce 更改事件并在 Redshift 表上进行处理,以便在 Salesforce 全天发生更改时使 Redshift 表保持最新。

仅使用 AppFlow 并将源映射到 Redshift 中的目标字段似乎并没有达到我想要的效果,因为它似乎只是将更改附加到目标 Redshift 表 - 没有更新、删除等。

我想解决这个问题的方法是将 AppFlow 的目标更改为 Amazon EventBridge,设置规则来侦听更改,以 Lambda 函数为目标,并根据事件详细信息对适当的表执行 Redshift 操作。

但是,在 Lambda 中进行这些更改和测试后,我遇到了事件问题。根据 Salesforce 的说法,Change Event Message 应如下所示:

{
  "data": {
    "schema": "<schema_ID>","payload": {
      "ChangeEventHeader": {
         "entityName" : "...","recordIds" : "...","changeType" : "...","changedFields": [...],"changeOrigin" : "...","transactionKey" : "...","sequenceNumber" : "...","commitTimestamp" : "...","commitUser" : "...","commitNumber" : "..."
      },"field1":"...","field2":"...",. . .
    },"event": {
      "replayId": <replayID>
    }
  },"channel": "/data/<channel>"
}

当我进入 Salesforce 并更新记录时,发送到 Lambda 的事件如下所示:

{
    'account': '111111111111','detail': {'my_custom_field__c': 'my updated text'},'detail-type': 'AccountChangeEvent','id': '7b205b55-879a-1wt2-br8d-227da614b205','region': 'my-region','resources': [],'source': 'aws.partner/appflow/salesforce.com/111111111111/aws.partner/appflow/salesforce.com/222222222222','time': '2021-07-09T15:29:21Z','version': '0',}

唯一与 Salesforce 相关的信息位于 detail 键中,这些信息只是没有任何 ChangeEventHeader 信息的字段。只是字段本身没有用,我需要 ID 才能知道要在 Redshift 中更新哪一行。

字段是否在某处被过滤掉了?关于在哪里获取整个事件有效负载的任何想法?我期待整个有效载荷,而不仅仅是部分。

-update- 我将流程的目标更改为 S3 并检查了 JSON 输出,结果完全符合我的需要。所以问题似乎是从 EventBridge 接收事件时:

{
    'ChangeEventHeader': {
        'changeOrigin': 'com/salesforce/api/soap/52.0;client=SfdcInternalAPI/','changeType': 'UPDATE','changedFields': ['LastModifiedDate','my_custom_field__c'],'commitNumber': 34143472625437,'commitTimestamp': 1655870833010,'commitUser': '0044r00000a5VaPcdv','entityName': 'Account','recordIds': ['0034t00003bOPtuSJs'],'sequenceNumber': 1,'transactionKey': '02030d57-6dd7-82f8-482r-7pou3bb58769',},'my_custom_field__c': 'my updated text','LastModifiedDate': '2021-07-09T17:02:13.000Z',}

解决方法

在 AppFlow 的源到目标字段映射部分中,此处列出了事件的键。我检查了 ChangeEventHeader 以包含在流中,现在我已将完整事件传递给 EventBridge 和 Lambda。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。