簡體   English   中英

Aws::S3::Errors::InvalidAccessKeyId(您提供的 AWS 訪問密鑰 ID 在我們的記錄中不存在。)

[英]Aws::S3::Errors::InvalidAccessKeyId (The AWS Access Key Id you provided does not exist in our records.)

在 Rails 6 應用程序上,我將 aws-sdk-s3 與 ActiveStorage 一起使用,並且我想上傳圖像。

腳步:

  • 我使用 S3FullAccess 在 AWS 上創建了一個 IAM 用戶
  • 我配置了 storage.yml (見下文)
  • 我使用以下內容創建了一個 config/aws.rb 文件

這是我的配置

# Gemfile
gem 'aws-sdk-s3', '~> 1', require: false

# storage.yml
amazon:
  service: S3
  access_key_id: ENV['AWS_ACCESS_KEY_ID']
  secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
  region: eu-west-1
  bucket: mybucketname

# config/aws.rb
require 'aws-sdk-core'

Aws.config.update(
  region:      'eu-west-1',
  credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
)

我有一個簡單的 model :

has_one_attached :picture, dependent: :destroy

在開發中一切正常,但在生產中卻不行。

例如..

> model_object.picture.attach(io: File.open(Rails.root.join('testfile.png')), filename: 'testfile.png')
> Aws::S3::Errors::InvalidAccessKeyId (The AWS Access Key Id you provided does not exist in our records.)

從控制台可以正確看到環境變量,所以我認為這不是配置問題......

ENV['AWS_ACCESS_KEY_ID']
ENV['AWS_SECRET_ACCESS_KEY']

我能做什么?


為了確保我有正確的 AWS 訪問策略,我直接從控制台使用 API 上傳了一個圖像,如下所示:

require 'aws-sdk-core'

Aws.config.update(
  region: 'eu-west-1',
  credentials: Aws::Credentials.new(myakid, mysecret_key)
)

s3 = Aws::S3::Client.new
resp = s3.list_buckets
resp.buckets.map(&:name) # He gave me the list of my buckets

resp = s3.list_objects(bucket: 'MYBUCKET', max_keys: 2)
resp.contents.each do |object|
  puts "#{object.key} => #{object.etag}"
end

# upload
resource = Aws::S3::Resource.new
object = resource.bucket(MYBUCKET).object("completed.png")
object.upload_file(Rails.root.join('app/assets/images/completed.png'))

並且文件已正確上傳。

所以,我不明白為什么 ActiveStorage 不起作用......

我發現,不知何故,Aws.config 返回了一個空的 object。 我不得不重新啟動服務器,現在..

Aws.config
=> {:region=>"eu-west-1", :credentials=>#<Aws::Credentials access_key_id="XYZ">}

圖片正在上傳中!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM