たとえばダウンロード販売のコンテンツを置く場合など
- 長期間ホストするファイルの容量が大きい
- 頻繁なリージョン間転送(EC2など)は発生せず、インターネットへの転送がメイン
- そこまでダウンロード速度を要求しない
こんなとき、S3バケットを価格の安いリージョンに作るのがよいです。
今回、東京リージョンのS3にアップロードされたオブジェクトの一部をシンガポールリージョンにコピーする必要があったのでそのメモです。
サンプルコード
確認環境
- aws-sdk-core (2.1.11)
リージョンをまたがないとき
s3 = Aws::S3::Client.new
resp = s3.copy_object(
copy_source: ['src-bucket', 'path/to/src'].join('/'),
bucket: 'dst-bucket',
key: 'path/to/dest')
リージョンをまたぐとき
Aws::S3::Client.newのコンストラクタで、コピー先のリージョンを明示してやらないとAWS::S3::Errors::PermanentRedirect
が発生します。
コピー元のリージョンではだめです。
s3 = Aws::S3::Client.new('ap-southeast-1') # シンガポールリージョン
resp = s3.copy_object(
copy_source: ['src-bucket', 'path/to/src'].join('/'),
bucket: 'dst-bucket',
key: 'path/to/dest')