背景
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
のパラメータはこちらに記載あり
ファイル転送要件に注意
実装についてざっくり
①オプショングループの追加することで、対象のストアドプロシージャが使えるようになる
②RDSがS3を触れるようなIAM権限設定も必要
その他気になったこと
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
菅谷 歩 (記事一覧)