xehirotyan
@xehirotyan (皓生 喜代田)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

aws s3エンドポイントの変更方法

前提環境

・dockerを使用しています。
・Ruby 2.5.1
・Ruby on Rails 5.2.1
・aws-sdk ~> 2.3

以下の内容に関しては、config/environment/production.rbに環境変数として設定済み

config/environment/production.rb
config.paperclip_defaults = {
    storage: :s3,
    preserve_files: true,
    s3_host_name: ENV['S3_HOST_NAME'],
    s3_credentials: {
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
      s3_region: ENV['S3_REGION']
    },
    bucket: ENV['BUCKET']
  }

解決したいこと

表題の通り、aws s3のエンドポイントをtypoしてしまったみたいで、変更をしたいです。
以下、内容になります。

発生している問題・エラー

aws s3エンドポイントの内容

https://[ユーザーネーム].s3.ap-notheast-1.amazonaws.com
("ap-northeast-1"となるはずが、"ap-notheast-1"となってしまった)

自分で試したこと

原因を調べたら、s3_regionが"ap-notheast-1"となっていたので、変更したのですが、
エンドポイントは依然変わらず、という状況です。

amazonの公式ドキュメントも色々みましたが、なかなか解決にたどり着けず、途方に暮れてしまっている状態です。
どなたかヒントいただけますでしょうか。。。

0

1Answer

設定が

    s3_credentials: {
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
      s3_region: ENV['S3_REGION']
    },

になっていますが、 s3_regions3_credentials の中ではなく同じ階層に書きます。正しくは

    s3_credentials: {
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
    },
    s3_region: ENV['S3_REGION'],

です。このように直した上で環境変数 S3_REGION を正しく設定してください。


ちなみに、 typo が直っていないのは以下のように修正したからではないでしょうか。

    s3_credentials: {
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
      s3_region: 'ap-northeast-1' # ここを直した
    },

この設定は無視され、 typo を含むユーザーデフォルトのリージョン設定が引き続き使われていると思われます。ユーザーデフォルトの値は設定ファイル ~/.aws/config, ~/.aws/credentials または環境変数 AWS_REGION, AWS_DEFAULT_REGION のどれかが使われます。

0Like

Comments

  1. @xehirotyan

    Questioner

    @uasi様

    迅速なご回答、又わかりやすいご説明誠にありがとうございます!
    承知いたしました。
    内容の切り出しと理解、実践してみます!
    取り急ぎご返信させて頂きました!

Your answer might help someone💌