Railsの開発環境でAWSサービスを使うとminioの設定とAws.configの競合が発生する
まとめ
ローカルの開発環境でminioを使いながらAWSのcredentialを同時に扱うことは難しそう
なので、各サービスのクライアント生成時にcredential情報を渡すことになるかも
config/initializers/aws.rb
creds = Aws::Credentials.new(
Rails.application.credentials[:aws][:access_key_id],
Rails.application.credentials[:aws][:secret_access_key]
)
region = Rails.application.credentials[:aws][:region]
Aws.config.update(
region: region,
credentials: creds
)
と宣言しておき
def client
conf = Aws.config
access_key_id_sym = Rails.env.development? ? :cog_access_key_id : :access_key_id
secret_access_key_sym = Rails.env.development? ? :cog_secret_access_key : :secret_access_key
@cognito_client ||= Aws::CognitoIdentityProvider::Client.new(
access_key_id: Rails.application.credentials[:aws][access_key_id_sym],
secret_access_key: Rails.application.credentials[:aws][secret_access_key_sym],
region: conf[:region],
http_wire_trace: Rails.env.development?
)
end
こんな感じ?
credentials.yml.enc
とかで、 cog_access_key_id
などを宣言しておき、それを直接クライアント生成時に突っ込むと言う流れ
もっといい方法があるかもしれない
何が起きた?
storage.yml
で設定していた minioを利用するための設定、特にcredentials部分がうまく動作しなかった。
minio:
service: S3
access_key_id: minio
secret_access_key: minio123
endpoint: "http://minio:9000"
region: ap-northeast-1
bucket: test
force_path_style: true
access_key_idを直接設定していたはずなのに、なぜか Rails.application.credentials[:aws][:access_key_id]
を参照して、minioに接続ができない。
docker-compose.yml
でminioのcredentialsを設定しているので、そちらを変更することも考えたが、キーを平文で入れることになるため断念。
仕方なく、それぞれのAWSクライアント側で開発環境は対応することとした。
これしか思いつかなかったなぁ
minioのクライアント生成部分に手を加える方法があるなら、それが一番簡単かもしれないのだけどね。
Author And Source
この問題について(Railsの開発環境でAWSサービスを使うとminioの設定とAws.configの競合が発生する), 我々は、より多くの情報をここで見つけました https://qiita.com/aokabin/items/e5ab6db1e858c039754a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .