【问题标题】:Data migration from S3 to RDS从 S3 到 RDS 的数据迁移
【发布时间】:2020-06-10 20:04:26
【问题描述】:

我正在处理一个需求,我正在将 csv 文件从本地服务器分段上传到 S3 存储桶。

为了使用 AWS Lambda 实现这一点,我创建了一个预签名的 url,并使用这个 url 上传 csv 文件。现在,一旦我在 AWS S3 中拥有该文件,我希望将其移动到 AWS RDS Oracle DB。最初我打算为此使用 AWS Lambda。

因此,一旦我在 S3 中拥有该文件,它就会触发 lambda(s3 事件),并且 lambda 会将这个文件推送到 RDS。但是这个问题在于文件大小(600 MB)。

我正在寻找其他方式,只要有文件上传到 S3,它就会触发任何 AWS 服务,并且该服务会将这个 csv 文件推送到 RDS。我已经通过 AWS DMS/Data Pipeline,但无法找到任何方法来自动化此迁移

我需要在每次 s3 上传时自动执行此迁移,这也很划算。

【问题讨论】:

  • 是部分数据还是全部数据?
  • @mokugo-devops 在 S3 中?是的完整数据..意味着当我在 S3 中拥有完整数据时,我希望它被迁移。但数据超过 500 MB。
  • 那么进程需要更换数据库吗?
  • 在数据库中没有我需要在现有数据库中创建一个条目。

标签: amazon-web-services amazon-s3 aws-lambda aws-dms aws-data-pipeline


【解决方案1】:

设置 S3 集成并构建 SPROCS 以帮助自动加载。详情找到here

更新:

看起来您甚至不需要创建 SPROC。您可以只使用here 中概述的 RDS 过程。然后,您只需创建一个事件驱动的 lambda 函数,该函数在给定的 S3 事件上触发——例如在对象 PUT()、POST()、COPY 等上——它传递了访问事件对象所需的 S3 元数据。 Here 是一个简单的 Python 示例,展示了 Lambda 和配置的外观。然后,您将使用触发事件上传递的元数据(如 Python 示例中所述)来动态创建过程调用,然后执行该过程。您还可以添加满足您要求的后续工作流逻辑 - 即TASK_ID 获取和操作处理、监控等...-到相同的 lambda 函数或通过添加额外的 lambda 来分离这些问题。希望这会有所帮助!

【讨论】:

  • 我可以在其中添加 s3 事件以在每次上传时触发迁移。
  • 我应该把 SPROCS 放在哪里来自动化这个。
  • 谢谢@benfarr。我试过这个,它奏效了。但我仍然需要手动调用存储的 Proc 来迁移数据。
  • 没问题,@Nimmo。我刚刚更新了应该可以帮助您完成其余工作的响应。如果您需要添加自定义 SPROC 来完成额外的工作,您也可以从 lambda 函数触发自定义 SPROC。
  • 谢谢@benfarr。它的工作。在运行“SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(p_bucket_name =>'destintion', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL”查询时,我得到了任务 ID 作为响应。我可以将这些数据转储到 rds 表中吗?我也看不到sql中的数据。只是我得到了任务 ID。
猜你喜欢
  • 2019-12-25
  • 2021-10-19
  • 2022-11-25
  • 1970-01-01
  • 2010-12-12
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多