Pet*_*erV 82 amazon-s3 amazon-web-services
我有一个包含10,000个文件的文件夹.似乎没有办法上传它们并立即公开.所以我把它们全部上传,它们都是私密的,我需要将它们全部公开.
我已经尝试过aws控制台,它只是出错(对于文件较少的文件夹工作正常).
我尝试在Firefox中使用S3组织,同样的事情.
是否有一些软件或一些脚本我可以运行以使所有这些公开?
Raj*_*jiv 110
您可以生成存储桶策略(请参阅下面的示例),该策略可以访问存储桶中的所有文件.可以通过AWS控制台将存储桶策略添加到存储桶.
{
"Id": "...",
"Statement": [ {
"Sid": "...",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket/*",
"Principal": {
"AWS": [ "*" ]
}
} ]
}
Run Code Online (Sandbox Code Playgroud)
另请参阅Amazon提供的以下策略生成器工具.
http://awspolicygen.s3.amazonaws.com/policygen.html
Dav*_*sel 57
如果您是第一次上传,可以在命令行上将文件设置为上载:
aws s3 sync . s3://my-bucket/path --acl public-read
Run Code Online (Sandbox Code Playgroud)
不幸的是,它仅在上载文件时应用ACL.它(在我的测试中)没有将ACL应用于已经上传的文件.
如果您确实想要更新现有对象,您曾经能够将存储桶同步到自身,但这似乎已停止工作.
[不再工作]这可以从命令行完成:
aws s3 sync s3://my-bucket/path s3://my-bucket/path --acl public-read
Run Code Online (Sandbox Code Playgroud)
(所以这不再回答这个问题,而是留下答案,以供参考.)
Dan*_*nge 33
我不得不改变几十万件物品.我启动了一个EC2实例来运行它,这使得它变得更快.你aws-sdk首先要安装gem.
这是代码:
require 'rubygems'
require 'aws-sdk'
# Change this stuff.
AWS.config({
:access_key_id => 'YOURS_HERE',
:secret_access_key => 'YOURS_HERE',
})
bucket_name = 'YOUR_BUCKET_NAME'
s3 = AWS::S3.new()
bucket = s3.buckets[bucket_name]
bucket.objects.each do |object|
puts object.key
object.acl = :public_read
end
Run Code Online (Sandbox Code Playgroud)
ksa*_*nas 22
我有同样的问题,@DanielVonFange的解决方案已经过时,因为SDK的新版本已经过时了.
使用AWS Ruby SDK添加适合我的代码片段:
require 'aws-sdk'
Aws.config.update({
region: 'REGION_CODE_HERE',
credentials: Aws::Credentials.new(
'ACCESS_KEY_ID_HERE',
'SECRET_ACCESS_KEY_HERE'
)
})
bucket_name = 'BUCKET_NAME_HERE'
s3 = Aws::S3::Resource.new
s3.bucket(bucket_name).objects.each do |object|
puts object.key
object.acl.put({ acl: 'public-read' })
end
Run Code Online (Sandbox Code Playgroud)
Sel*_*cuk 14
只想添加新的S3控制台,您可以选择文件夹并选择Make public将文件夹中的所有文件公开.它作为后台任务,因此它应该处理任意数量的文件.
使用cli:
aws s3 ls s3://bucket-name --recursive > all_files.txt && grep .jpg all_files.txt > files.txt && cat files.txt | awk '{cmd="aws s3api put-object-acl --acl public-read --bucket bucket-name --key "$4;system(cmd)}'
| 归档时间: |
|
| 查看次数: |
49071 次 |
| 最近记录: |