我正在使用rails 5.2,我正在尝试使用Amazon S3设置Active Storage。我的应用程序具有对S3的完全访问权限,并且我可以将avatar
图像附加到user
。但是当我尝试删除头像时,我遇到了以下问题:
> user.avatar.attached? #true`
> user.avatar.purge
S3 Storage (697.9ms) Deleted file from key: Ns1KBRzdgxLNnY31sH72vT5t
S3 Storage (227.0ms) Deleted files by key prefix: variants/Ns1KBRzdgxLNnY31sH72vT5t/
Aws::S3::Errors::AccessDenied: Access Denied
然后,当我检查存储桶时,文件实际上已被删除,但查看数据库时,Blob
和Attachment
记录仍然存在。
为什么会发生这种情况?
修改 我根据接受的答案的建议,对我的IAM权限进行了一些更新。这些是我更新的项目:
最后我的政策json看起来像这样:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/*",
"arn:aws:s3:::my-bucket"
]
}
]
}
答案 0 :(得分:3)
您用于Active Storage的S3帐户必须拥有整个存储区的s3:DeleteObject
权限。 (如Active Storage guide中所述,它还必须具有s3:ListBucket
,s3:PutObject
和s3:GetObject
权限。)