我遇到了有关创建预先签名URL的非常奇怪的问题。beasntalk中的代码创建了预先签名的URL,该URL很好,代码没有问题。但是,当我对Beanstalk的实例配置文件进行以下访问时,我无法生成长URL,无法点击图像。:
{
"Action": [
"s3:*",
"s3:List*",
"s3:PutObject",
"s3:Delete*"
],
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
],
"Effect": "Allow"
}
和mybucket是我在那里的图像的存储桶,我从那里创建了预先签名的URL。有趣的是,当我尝试一下时:
{
"Action": [
"s3:*",
"s3:List*",
"s3:PutObject",
"s3:Delete*"
],
"Resource": [
"arn:aws:s3:::*",
"arn:aws:s3:::mybucket/*"
],
"Effect": "Allow"
}
它开始工作。但是我不想给 *访问,这根本没有意义。我只是在使用mybucket,为什么当我提供访问 *而不是访问mybucket时它可以起作用。任何想法?我错过了什么吗?
Update
更具体地说,如果我想能够查看我的预先签名URL(有效的链接),我需要在我的IAM策略中具有以下部分:
{
"Action": [
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::*"
],
"Effect": "Allow"
}
如果您需要在IAM角色中添加getObject权限,则预先签名的URL无法正确创建。您不需要在策略中获得http get的预设URL的getObject。
注意:以下是不良政策。您将在第一行中授予所有权限,然后在接下来的三行中指定其他权限,这无助。
"s3:*",
"s3:List*",
"s3:PutObject",
"s3:Delete*"