在 AWS DMS 迁移任务中使用以下示例代码来解决此问题:
import json def lambda_handler(event, context): output = [] for record in event['Records']: payload = json.loads(record['body']) payload['id'] = str(payload['_id']) output.append({ 'id': payload['id'], 'index': { '_index': 'my-index', '_type': '_doc', '_id': payload['id'], } }) return {'records': output}
保存 Lambda 函数并在 AWS DMS 迁移任务中添加一个触发器来调用此 Lambda 函数。
在目标端的 ElasticSearch 中创建一个索引,并确保索引的主键与源端 DocumentDB 中的主键相同。
执行 AWS DMS 迁移任务,此时添加的触发器将会使用 Lambda 函数中的代码来获取正确格式的主键,从而避免该错误的发生。