当我尝试删除文件时出现错误您提供的 AWS 访问密钥 ID 在我们的记录中不存在

Getting error The AWS Access Key Id you provided does not exist in our records when I try to delete a file

宝石文件:

gem 'aws-sdk', '< 2.0'

我在初始化文件夹中创建了一个文件aws.rb,代码如下

AWS.config(access_key_id: '...key id...', secret_access_key: '...secret_key...')

S3_BUCKET = AWS::S3.new.buckets['my_bucket']

我在路径中有一个文件:

my_backet/uploads/391cd178-a64a-4fda-83b6-210430c34a0c/file.png

当我尝试删除文件时

def delete_file

      key = '391cd178-a64a-4fda-83b6-210430c34a0c/file.png'

      S3_BUCKET.objects[key].delete

end

我收到错误

AWS::S3::Errors::InvalidAccessKeyId in ImagesController#delete_file  
The AWS Access Key Id you provided does not exist in our records.

仔细检查凭据初始化语法和格式。可能您没有正确指定它们。

下面的参考表明了与您正在使用的语法不同的语法。

AWS.config(:access_key_id => 'KEY', :secret_access_key => 'SECRET')

请看:

https://ruby.awsblog.com/blog/tag/config http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/Core/Configuration.html http://www.rubydoc.info/gems/aws_sdk/3.1.5/AWS/Core/Configuration

我能够通过提供一个 s3_endpoint 作为我的 AWS.config 的参数来解决这个问题:

AWS.config(
            :s3_endpoint => '...',
            :access_key_id => '....',
            :secret_access_key => '....'
           )

对我有帮助的来源:https://ruby.awsblog.com/post/TxVOTODBPHAEP9/Working-with-Regions