RDS for OracleのAmazon S3 統合について調べたことまとめ

記事タイトルとURLをコピーする

背景

Amazon S3 統合を検討するタイミングあったので、備忘録としてまとめます!

Oracle DBの経験ないよ~って人が、S3統合の全体像をつかむのにお役に立てば幸いです

免責事項

机上で集めた情報を中心に記載しているため、あくまで参考情報として扱ってください。

必要に応じて、検証やAWSサポートへの問い合わせをお願いします。

Amazon S3 統合とは?

RDS for Oracle と S3 間でファイルを転送する機能。

あくまで転送なので、ダウンロードしたファイルの中身をテーブルにロードしてくれる機能ではない(私はテーブルへのロードまでしてくれる機能だと勘違いしてました...)

参考: https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/oracle-s3-integration.html

ユースケ―スとして、S3が持つオブジェクトをDBテーブルに最終的にロードしたいときに使えそうな機能だと思いました。

構成イメージ

  • SQL実行や定期スケジュールでトリガー
  • RDS専用の管理用プロシージャ―がS3からファイルを取得し、DB内に保存する
  • 必要に応じて、ファイルをテーブルへロードする。※ただし、この処理はS3統合内で提供されていないので、別途SQLで作りこむ必要がある※

サンプルクエリ

例えば S3: my-s3-bucket/imports/ 以下の全ファイルを Oracle 内の DATA_PUMP_DIR に転送したければ以下のクエリになる。

rdsadmin.rdsadmin_s3_tasks.download_from_s3(
  p_bucket_name => 'my-s3-bucket',
  p_s3_prefix => 'imports/',
  p_directory_name => 'DATA_PUMP_DIR',
);

rdsadmin.rdsadmin_s3_tasks.download_from_s3 のパラメータはこちらに記載あり

ファイル転送要件に注意

実装についてざっくり

その他気になったこと

S3への通信にVPCエンドポイントが必須か?

VPCエンドポイントは不要。

以下より、プライベートサブネットにいる RDS for OracleをS3統合させたい場合でも、VPCエンドポイントの設置は不要。(AWS内部のNWを利用していると推測される)

DB インスタンスで使用される Amazon VPC は Amazon S3 エンドポイントへのアクセスを提供する必要はありません。 https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/oracle-s3-integration.preparing.html

菅谷 歩 (記事一覧)