【发布时间】:2020-10-22 20:31:17
【问题描述】:
想知道是否有人可以帮助我。 我目前有一个使用回形针的 ruby on rails 应用程序。
我想将图像上传到 S3 存储。
我已经设法让它在公共环境中工作,但后来我将它设为私有,它却不行。
我做了什么。 创建了 s3 存储桶 创建的用户 分配的 s3fullaccess 策略 分配了自定义策略
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket-name"
},
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket-name/*"
}
]
}
然后我分配了 iam 策略。 使用用户访问权限和密钥配置应用程序
然而,每当尝试上传某些东西时,我都会收到错误
Excon::Error::Forbidden (预期(200) 实际(403 Forbidden) excon.error.response
我在网上寻找解决方案,但一无所获。
这是针对电子商务商店的,如果我要公开,可能会出现什么问题?
希望有人可以提供帮助 谢谢你:)
更新: 只需添加凭据文件及其使用方式 Secrets.yml 文件
development:
aws_access_key_id: ‘XXXXXXX'
aws_secret_access_key: 'XXXXX'
s3_bucket_name: ‘XXXXXXX'
s3_region_name: ‘XXXXXX’
production:
aws_access_key_id: ‘XXXXXXX'
aws_secret_access_key: 'XXXXX'
s3_bucket_name: ‘XXXXXXX'
s3_region_name: ‘XXXXXX’
test:
aws_access_key_id: ‘XXXXXXX'
aws_secret_access_key: 'XXXXX'
s3_bucket_name: ‘XXXXXXX'
s3_region_name: ‘XXXXXX’
回形针.rb
if Rails.application.secrets.aws_access_key_id
Paperclip::Attachment.default_options.merge!(
storage: :fog,
fog_credentials: {
provider: 'AWS',
aws_access_key_id: Rails.application.secrets.aws_access_key_id,
aws_secret_access_key: Rails.application.secrets.aws_secret_access_key,
region: Rails.application.secrets.s3_region_name,
},
fog_directory: Rails.application.secrets.s3_bucket_name
)
Spree::Image.attachment_definitions[:attachment].delete(:url)
Spree::Image.attachment_definitions[:attachment].delete(:path)
end
【问题讨论】:
标签: ruby-on-rails ruby amazon-web-services amazon-s3 amazon-iam