LoginSignup
6

More than 5 years have passed since last update.

Aws::S3::Clientでリージョンをまたぐコピーをするときは、コピー先のリージョンを明示してやる。

Last updated at Posted at 2015-08-21

たとえばダウンロード販売のコンテンツを置く場合など

  • 長期間ホストするファイルの容量が大きい
  • 頻繁なリージョン間転送(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')

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6