

Active_Storageを使用して写真をアップロードする機能を実装しました。  
デプロイ後、写真をあげる際にS3を使用してデータベースに保存・からの取得を試みています。

S3に開発環境からアップロードした画像のオブジェクトURLは"https://<バケット名>.s3-ap-
northeast-1.amazonaws.com/<キー>"となってしまい本番環境では読み込めません。（ちなみに本番環境では画像のアップロード時にエラーとなってしまいます。）  
RailsのViewファイルでurl_for(hoge.hoge)と指定しても、検証で表示されるアドレスは、異なるアドレスを示してしまします。

なので、appllication.rbで"config.active_storage.routes_prefix =
'https://<バケット名>.s3-ap-
northeast-1.amazonaws.com/'"と指定して画像の表示や投稿を試みるのですが、どうしても上記のキーの指定ができない状態です。

Production.rb

[code]

      config.active_storage.service = :amazon
    
[/code]

storage.yml

[code]

    amazon:
      service: S3
      access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
      secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
      region: ap-northeast-1
      bucket: バケット名
    
    
[/code]

credentials:edit

[code]

    aws:
      access_key_id: id
      secret_access_key: アクセスキー
    
[/code]

ポリシーも設定ずみです。  
開発環境では上記コードでアップロードできているので記載に誤りはないと思っています。

もし何かご存知の方がおられましたらご教示いただけますと幸いです。


CC BY-SA 4.0
2020-08-30T03:51:40.387
69979
2020-09-02T14:39:49.113
2020-09-02T13:01:29.653
32986
41608
question
ruby-on-rails aws amazon-s3
Active_Storageで投稿した画像をAWS S3にアップロード及びAWS S3から取得した画像を表示


こちら自己解決できました。

変更点

ビュー

[code]

    <%= f.file_field :thumbnail, direct_upload: true, accept: "thumbnail/png, thumbnail/jpeg, thumbnail/gif, thumbnail/jpg" %> 
    
[/code]

バケットポリシーに以下追加

[code]

     "Resource": [ "arn:aws:s3:::bucketname", "arn:aws:s3:::bucketname/*" ]
    
[/code]

EC2インスタンスで`aws configure`を実行し、`region`を直接入力


CC BY-SA 4.0
2020-09-02T14:39:49.113
70087
2020-09-02T14:39:49.113
41608
69979
answer