我想绘制 Amazon S3 存储桶的大小(以字节为单位和项目数),并且正在寻找一种获取数据的有效方法。
该s3cmd工具提供一种方式来获得使用总文件大小s3cmd du s3://bucket_name,但我担心它的能力,规模,因为它看起来像它获取每个文件的数据,并计算其自身的总和。由于亚马逊以 GB 月为单位向用户收费,因此他们不直接公开此值似乎很奇怪。
尽管Amazon 的 REST API 会返回存储桶中的项目数,但s3cmd似乎并未公开它。我可以做,s3cmd ls -r s3://bucket_name | wc -l但这似乎是一个黑客。
Ruby AWS::S3库看起来很有前途,但只提供了存储桶项目的数量,而不是总存储桶大小。
有没有人知道提供获取这些数据的方法的任何其他命令行工具或库(首选 Perl、PHP、Python 或 Ruby)?
disk-space-utilization amazon-s3 amazon-web-services aws-cli
我们正在尝试通过 Cloudfront 分发 S3 存储桶,但由于某种原因,唯一的响应是一个 AccessDenied XML 文档,如下所示:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>89F25EB47DDA64D5</RequestId>
<HostId>Z2xAduhEswbdBqTB/cgCggm/jVG24dPZjy1GScs9ak0w95rF4I0SnDnJrUKHHQC</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
这是我们正在使用的设置:

这是存储桶的策略
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity *********"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::x***-logos/*"
}
]
}
Run Code Online (Sandbox Code Playgroud) 标题非常有说明性,但我刚刚删除了一个 s3 存储桶,因为它位于错误的区域中,并且我想在正确的区域中重新创建它,并使用与刚刚删除的相同的名称。
是否有任何有关此或用户体验的文档?
“我们强烈建议您永远不要授予对 S3 存储桶的任何类型的公共访问权限。”
我为我用来托管网站的一个存储桶设置了非常精细的公共策略 (s3:GetObject)。为此,Route53 明确支持为存储桶设置别名。这个警告是多余的,还是我做错了什么?
我真的在 AWS 中挣扎,试图找出我在这里遗漏了什么。我想这样做,以便 IAM 用户可以从 S3 存储桶下载文件 - 而不仅仅是将文件完全公开 - 但我的访问被拒绝。如果有人能发现发生了什么,我会被激怒。
到目前为止我所做的:
aws s3 cp --profile my-user s3://my-bucket/thing.zip .桶策略:
{
"Id": "Policy1384791162970",
"Statement": [
{
"Sid": "Stmt1384791151633",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/my-user"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
结果是A client error (AccessDenied) occurred: Access Denied虽然我可以使用相同的命令和默认(root 帐户?)访问密钥下载。
我也尝试添加用户策略。虽然我不知道为什么有必要,但我认为它不会受到伤害,所以我将它附加到了我的用户。
{
"Statement": [
{
"Sid": "Stmt1384889624746",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
} …Run Code Online (Sandbox Code Playgroud) 我想使用 AWS S3 cli 将完整的目录结构复制到 S3 存储桶。
到目前为止,我尝试过的所有操作都将文件复制到存储桶中,但目录结构已折叠。(换种说法,每个文件都复制到bucket根目录下)
我使用的命令是:
aws s3 cp --recursive ./logdata/ s3://bucketname/
Run Code Online (Sandbox Code Playgroud)
我也试过在我的源代码(即参数的副本)上去掉尾部斜杠。我还使用通配符来指定所有文件……我尝试的每件事都只是将日志文件复制到存储桶的根目录中。
有没有办法从意外删除 Amazon S3 存储桶中恢复?
我们的存储桶中有关键信息,我需要降低意外或恶意删除存储桶本身的风险。
我知道我可以在本地同步整个存储桶,但是如果我的存储桶大小为 100GB,这不太实用。
关于备份策略的任何想法?
我在 Amazon S3 存储桶中有数百万个文件,我希望尽可能以最低成本或免费将这些文件移动到其他存储桶和文件夹。所有存储桶都在同一区域中。
我怎么能做到?
我了解 rsync 如何在高层次上工作,但有两个方面。对于 S3,没有守护进程可言——好吧,但它基本上只是 HTTP。
看起来有几种方法。
s3rsync(但这只是将 rsync 绑定到 s3)。直截了当。不确定我想依赖第三方的东西。我希望 s3 只支持 rsync。
也有一些 rsync '克隆',如双重性,声称支持 s3 而不说螺栓连接。但它怎么能做到这一点呢?他们是否在本地保存索引文件?我不确定这如何有效。
我显然想使用 s3,因为它既便宜又可靠,但 rsync 是一些工具,比如备份一个巨大的图像目录。
这里有哪些选择?使用 duplicity + s3 而不是 rsync + s3rsync + s3 我会失去什么?
我有一个网页 ( https://smartystreets.com/contact ),它使用 jQuery 通过 CloudFront CDN 从 S3 加载一些 SVG 文件。
在 Chrome 中,我将打开一个隐身窗口以及控制台。然后我将加载页面。当页面加载时,我通常会在控制台中收到 6 到 8 条类似于以下内容的消息:
XMLHttpRequest cannot load
https://d79i1fxsrar4t.cloudfront.net/assets/img/feature-icons/documentation.08e71af6.svg.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://smartystreets.com' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
如果我对页面进行标准重新加载,甚至多次,我仍然会遇到相同的错误。如果我这样做,Command+Shift+R那么大多数,有时是全部图像将在没有XMLHttpRequest错误。
有时即使在图像加载后,我也会刷新并且一个或多个图像不会加载并XMLHttpRequest再次返回该错误。
我已经检查、更改并重新检查了 S3 和 Cloudfront 上的设置。在 S3 中,我的 CORS 配置如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
(注意:最初只有<AllowedOrigin>*</AllowedOrigin>,同样的问题。)
在 CloudFront 中,分配行为设置为允许 HTTP Methods: GET, …