Amazon提供了向匿名用户授予权限的示例,如下所示(请参阅Amazon S3存储桶策略的示例案例):
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在我的政策中,我已将"arn:aws:s3 ::: bucket /"中的"bucket"更改为"my-bucket".
但是,一旦我尝试访问该存储桶的文件夹中的图像,我就会收到以下访问被拒绝错误:
此XML文件似乎没有与之关联的任何样式信息.文档树如下所示.
(如果我明确地将该图像的属性更改为public,则重新加载其url,图像加载完美)
我究竟做错了什么?
更新#1:显然它与我可以访问的第三方网站有关.虽然它具有作为主用户(me)的所有权限,并且其对象位于同一文件夹中,具有完全相同的权限,但仍然不允许我将它们公开显示.不知道为什么.
更新#2:存储桶策略不适用于其他人"拥有"的对象,即使它们在您的存储桶中,请参阅我的答案以获取详细信息.
我能够使用此链接在亚马逊S3中创建一个桶.
我使用以下代码创建一个存储桶:
resource "aws_s3_bucket" "b" {
bucket = "my_tf_test_bucket"
acl = "private"
}
Run Code Online (Sandbox Code Playgroud)
现在我想在桶内创建文件夹,比方说Folder1
.
我找到了创建S3对象的链接.但这有一个强制性参数source
.我不确定这个值有什么,因为我的意图是在S3存储桶中创建一个文件夹.
我在我的桶上通过console.aws.amazon.com尝试这些策略:
{ "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::itnighq", "Condition": {} }, { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectAclVersion" ], "Resource": "arn:aws:s3:::itnighq/*", "Condition": {} }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*", "Condition": {} } ] }
但我收到此错误消息: 策略有无效操作 - s3:ListAllMyBuckets 它似乎不喜欢"资源":"*",我也尝试使用**arn:aws:s3 :::****,但它也不起作用.
有人有任何线索吗?
我正在尝试将文件从 A 帐户中的存储桶复制到 B 帐户中的另一个存储桶。当我尝试使用命令同步文件时
aws s3 sync s3://BUCKET_A s3://BUCKET_B
它返回以下输出:
copy failed: s3://BUCKET_A to s3://BUCKET_B An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied
Run Code Online (Sandbox Code Playgroud)
这是附加到在 B 帐户中创建的用户的策略(将从存储桶 A 中复制文件):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::BUCKET_A",
"arn:aws:s3::: BUCKET_A/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::BUCKET_B",
"arn:aws:s3:::BUCKET_B/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
也许我缺少一些许可?CopyObject
我在我的用户/存储桶策略中找不到添加权限
我的存储桶上设置了以下存储桶策略:
{
"Version": "2008-10-17",
"Id": "My access policy",
"Statement": [
{
"Sid": "Allow only requests from our site",
"Effect": "Allow",
"Principal": { "AWS": "*"},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [" http://mydomain.com/*"," http://www.mydomain.com/*"]
}
}
},
{
"Sid": "Dont allow direct acces to files when no referer is present",
"Effect": "Deny",
"Principal": {"AWS": "*" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"Null": {"aws:Referer": true }
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我还配置了查询字符串身份验证,但看起来我不能同时拥有它们.如果我将我的存储桶策略设置为拒绝任何不是源自mydomain的请求,则使用查询字符串身份验证的临时URL也将无法提供.所以我的问题是,我怎么能同时拥有这两个?有没有办法检查url参数,看看它是否有一个名为"Signature"的参数,在这种情况下不应用引用策略?
我一直在寻找,我找不到是或否答案.我可以将S3中的存储桶限制为特定大小吗?
如果是这样,请你指点我这样做的正确方向?谢谢.
我想在S3上主持静态网站,即.. abcd.com.它需要一个与"abcd.com"相同的存储桶名称
然后我发现abcd.com已被其他人占用.
所以这是我的问题,为什么存储桶名称必须与网站名称相同.因为有53号路由将网站映射到桶端点,所以没有必要进行此限制.
这有什么理由吗?
我想只检索存储桶的名称(相册).例如相机,下载等,但不是所有照片中的相机,下载等列表,那么如何为每个存储桶名称检索一行?
我的意思是在Gallery Application中,你首先有专辑,例如Camera.当您单击它时,它会显示相机的所有照片.
我可以使用查询的Where子句查询Camera Roll中的照片.但是,如果我只想要每个专辑名称的名称而不是照片,那么可以查询吗?如果我查询所有照片并且每组照片只拍一行,那么这将非常耗时.
请帮忙
我有一堆数字,例如 - 1到4,5到15,16到21,22到34 ......我有大约600,000个这样的桶.每个桶中的数字范围各不相同.我需要将这些存储桶存储在合适的数据结构中,以便尽可能快地查找数字.
所以我的问题是什么是适合这类问题的数据结构和排序机制.
提前致谢
我创造了一个名为"照片"的新亚马逊水桶.存储桶网址如下:
www.amazons3.salcaiser.com/photos
Run Code Online (Sandbox Code Playgroud)
现在我将包含文件的子文件夹上传到该存储桶中
www.amazons3.salcaiser.com/photos/thumbs/file.jpg
Run Code Online (Sandbox Code Playgroud)
我的问题是,thumbs/
假设是一个新桶还是一个对象?
然后,如果我想删除整个thumbs/
目录需要我先删除其中的所有文件,还是可以一次删除所有文件?