質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.09%

MissingCredentialsError で投稿ができない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 322

score 34

記事投稿アプリを作成中です。投稿ページの入力フォームから画像を投稿しようとすると、

Aws::Sigv4::Errors::MissingCredentialsError in MicropostsController#create

Cannot load `Rails.config.active_storage.service`: missing credentials, 
provide credentials with one of the followingoptions: - :access_key_id and :secret_access_key - :credentials - :credentials_provider


と出てしまい、失敗します。
active_strageはインストールずみで、
アクセスキーとシークレットアクセスキーは渡せているはずなのですが、AWSのS3 と紐付けできていないようです。

config/environments/development.rb

  # 中略
  # Store uploaded files on the local file system (see config/storage.yml for options)
  config.active_storage.service = :amazon
config/storage.yml

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
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:XXX-bucket


(キーはRails Credentialsで渡しています)

エラーが出るときのログ

Started POST "/microposts" for ::1 at 2019-12-18 13:16:51 +0900
Processing by MicropostsController#create as HTML
  Parameters: {"authenticity_token"=>"rVpTQA9KYUjCWcq//d4EvRSSmZkWcQdY9G+12lZIoDMZoIU05qWSZtU0zm+xv90nzCJkJFYlwkj3gtU4B0lIaw==",
 "micropost"=>{"memo"=>"", "picture"=>#<ActionDispatch::Http::UploadedFile:0x00007fcb10660ae8 
@tempfile=#<Tempfile:/var/folders/jn/s2wp92fd1bnfcjkt6hk6zjr40000gn/T/RackMultipart20191218-99657-14neqtw.png>, 
@original_filename="camera.png", @content_type="image/png",
 @headers="Content-Disposition: form-data; name=\"micropost[picture]\"; filename=\"camera.png\"\r\nContent-Type: image/png\r\n">}, "commit"=>"記録する"}
  User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
  ↳ app/helpers/sessions_helper.rb:16:in `current_user'
Creating scope :unattached. Overwriting existing method ActiveStorage::Blob.unattached.
Completed 500 Internal Server Error in 1012ms (ActiveRecord: 0.2ms | Allocations: 6999)



Aws::Sigv4::Errors::MissingCredentialsError (Cannot load `Rails.config.active_storage.service`:
missing credentials, provide credentials with one of the following options:
  - :access_key_id and :secret_access_key
  - :credentials
  - :credentials_provider):

app/models/micropost.rb:16:in `only_user_id'
app/controllers/microposts_controller.rb:11:in `create'


バケット と テーブルは存在しているのになぜ紐付けができていないのでしょうか。。。

active_storageのミグレーションファイル

# This migration comes from active_storage (originally 20170806125915)
class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
  def change
    create_table :active_storage_blobs do |t|
      t.string   :key,        null: false
      t.string   :filename,   null: false
      t.string   :content_type
      t.text     :metadata
      t.bigint   :byte_size,  null: false
      t.string   :checksum,   null: false
      t.datetime :created_at, null: false

      t.index [ :key ], unique: true
    end

    create_table :active_storage_attachments do |t|
      t.string     :name,     null: false
      t.references :record,   null: false, polymorphic: true, index: false
      t.references :blob,     null: false

      t.datetime :created_at, null: false

      t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
      t.foreign_key :active_storage_blobs, column: :blob_id
    end
  end
end


もしくはdbの形式がおかしいのでしょうか。。。

どなたか原因が分かる方はいらっしゃいませんか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

Credentialが必要なところで取得できていないように見えます。

Aws::Sigv4::Errors::MissingCredentialsError で検索すると様々な過去の例が出てくるので、その中から自分の状況に当てはまるものがないか確認してみてください。

これは一例です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る