使用 lambda 函数备份 documentdb

documentdb backup using lambda function

我正在尝试使用 Lambda 备份 documentDB。我可以使用以下代码将 S3 存储桶中的备份作为 json 文件,但我很少担心需要专家建议的地方。

  1. 使用 AWS Lambda 备份许多集合可能需要很长时间,所以我想接近它触发一些代码并上传到 S3 存储桶,一旦上传成功,它会向我发送更新作为集合中的状态。
  2. 如何将备份作为 bson 格式并上传到 S3 存储桶中。

我正在使用以下代码并能够成功上传 json 作为 s3 上的备份。

def lambda_handler(event, context):
    
    bucket_folder = 'XXXXXXX'
    bucket_name = 'XXXXXXXXX'
    database=get_database_from_connection_string()

    json_options = JSONOptions(datetime_representation=DatetimeRepresentation.ISO8601)
    for collection_name in database.list_collection_names():
        print(f"Collection: {collection_name}")
        with open(temp_filepath, "w") as f:
            for doc in database.get_collection(collection_name).find():
                f.write(dumps(doc, json_options=json_options) + "\n")

        s3.Bucket(bucket_name).upload_file(
            temp_filepath, "{}/{}.json".format(bucket_folder, collection_name)
        )

另一种方法是以编程方式使用 mongodump:https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html