AWS 已经有相当类似的文章:https://aws.amazon.com/blogs/apn/using-amazon-appflow-to-achieve-bi-directional-sync-between-salesforce-and-amazon-rds-for-postgresql/
虽然,我下面的架构是无服务器的,因为我很便宜而且不关心 EC2 成本。
无论你在做什么,我都推荐一种真实的来源。我个人会使用您打算为每个对象使用的所有字段/值进行集中式 DynamoDB。然后,您可以使用事件驱动的 lambda 将数据推送到 S3 CSV。然后这些 CSV 更新会通过 AppFlow 为您推送。
您应该在所有这些中都有一个 DynamoDB 表。或者每个对象都有一个单独的表,但我没有看到倍数的优势。您只需要一个 S3 存储桶。只需要多个文件夹。
您的数据库结构如下所示:
{
"ID" : randomly generated GUID,
"SF_ID": "Salesforce ID",
"DEST_SF_ID" : "SF ID when created in the other org",
"SOURCE_ORG": "SOURCE_ORG_ID",
"record_details" : {
*ALL THE SF FIELDS*
}
}
S3 文件夹结构:
root/
SF_ORG_1 /
Inbound
Outbound
SF_ORG_2 /
Inbound
Outbound
您需要一个 Lambda 来使用 DynamoDB 触发事件并知道要推送到哪个 S3 存储桶文件夹。
您需要另一个 Lambda 来使用 S3 存储桶的事件。您可以在一个 lambda 中进行简单分支,以了解 S3_Bucket_Folder_1 是否来自 Org_1 和 S3_Bucket_Folder_2 是否来自 Org_2。这将同步 DynamoDB 并知道将 CSV 推送到另一个存储桶文件夹。
为确保您在 Lambda 上没有周期性调用,请确保您有用于入站和出站推送的目录。 Flows 允许您设置 Bucket 前缀。
然后您只需监听创建、更新和删除事件。我个人还没有处理 AppFlow 中的删除事件,但最坏的情况是,您只需制作一个连接的应用程序并使用 Salesforce REST API 调用删除。