Questions tagged «amazon-s3»

Amazon S3(简单存储服务)是Amazon Web Services的在线对象存储服务。问题必须与编程有关。有关常规S3支持,功能,配置等的问题不在主题范围内。


14
从boto3检索S3存储桶中的子文件夹名称
使用boto3,我可以访问我的AWS S3存储桶: s3 = boto3.resource('s3') bucket = s3.Bucket('my-bucket-name') 现在,存储桶包含文件夹first-level,例如,文件夹本身包含几个带有时间戳的子文件夹1456753904534。我需要知道这些子文件夹的名称来执行我的另一项工作,我想知道是否可以让boto3为我检索这些子文件夹。 所以我尝试了: objs = bucket.meta.client.list_objects(Bucket='my-bucket-name') 它提供了一个字典,其键“目录”为我提供了所有第三级文件,而不是第二级时间戳目录,实际上,我得到了一个包含以下内容的列表: {u'ETag':'“ etag”',u'Key':一级/ 1456753904534 / part-00014',u'LastModified':datetime.datetime(2016,2,29,13,52,24,tzinfo = tzutc()), u'所有者':{u'DisplayName':'所有者',u'ID':'id'}, u'Size':大小,u'StorageClass':'storageclass'} 您可以看到在这种情况下part-00014已检索到特定文件,而我想单独获取目录的名称。原则上,我可以从所有路径中删除目录名称,但是在第三级检索所有内容以得到第二级是很丑陋且昂贵的! 我也尝试过这里的报道: for o in bucket.objects.filter(Delimiter='/'): print(o.key) 但是我没有得到所需级别的文件夹。 有办法解决吗?

14
Boto3从S3存储桶下载所有文件
我正在使用boto3从s3存储桶获取文件。我需要类似的功能aws s3 sync 我当前的代码是 #!/usr/bin/python import boto3 s3=boto3.client('s3') list=s3.list_objects(Bucket='my_bucket_name')['Contents'] for key in list: s3.download_file('my_bucket_name', key['Key'], key['Key']) 只要存储桶中只有文件,就可以正常工作。如果存储桶中存在文件夹,则抛出错误 Traceback (most recent call last): File "./test", line 6, in <module> s3.download_file('my_bucket_name', key['Key'], key['Key']) File "/usr/local/lib/python2.7/dist-packages/boto3/s3/inject.py", line 58, in download_file extra_args=ExtraArgs, callback=Callback) File "/usr/local/lib/python2.7/dist-packages/boto3/s3/transfer.py", line 651, in download_file extra_args, callback) File "/usr/local/lib/python2.7/dist-packages/boto3/s3/transfer.py", line …

8
具有InputStream长度示例的AmazonS3 putObject
我正在使用Java将文件上传到S3-到目前为止,这是我得到的: AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials("XX","YY")); List<Bucket> buckets = s3.listBuckets(); s3.putObject(new PutObjectRequest(buckets.get(0).getName(), fileName, stream, new ObjectMetadata())); 文件正在上传,但是未设置内容长度时会发出警告: com.amazonaws.services.s3.AmazonS3Client putObject: No content length specified for stream > data. Stream contents will be buffered in memory and could result in out of memory errors. 这是我上传文件和stream变量是InputStream,从中我可以得到字节数组是这样的:IOUtils.toByteArray(stream)。 因此,当我尝试像这样设置内容长度和MD5(从此处获取)时: // get MD5 base64 hash …


9
内联AWS S3显示文件而不是强制下载
由于某些原因,我的S3存储桶中的文件被强制下载而不是在线显示,因此,如果我复制图像链接并将其粘贴到地址栏中,然后导航至该链接,它将促使我的浏览器进行下载。相反,我实际上必须单击打开的图像才能转到URL。 从S3更改文件提供方式的任何方法

6
S3-前缀到底是什么?什么速率限制适用?
我想知道是否有人知道s3前缀到底是什么以及它如何与亚马逊发布的s3速率限制相互作用: Amazon S3会自动扩展到高请求率。例如,您的应用程序每个存储桶中的每个前缀每秒至少可以实现3500个PUT / POST / DELETE和5500个GET请求。存储桶中的前缀数量没有限制。 虽然这很明显,但我不确定前缀是什么? 前缀是否需要定界符? 如果我们有一个存储桶,可以将所有文件存储在“根”级别(完全平坦,没有任何前缀/分叉符),是否可以算作单个“前缀”,是否受上述汇率限制的约束? 我解释亚马逊文档的方式向我暗示了这种情况,并且扁平结构将被视为单个“前缀”。(即受上面公布的费率限制) 假设您的存储桶(由管理员创建)具有四个带有以下对象键的对象: 开发/项目1.xls 财务/声明1.pdf 私人/taxdocument.pdf s3-dg.pdf s3-dg.pdf密钥没有前缀,因此其对象直接出现在存储桶的根级别。如果打开Development /文件夹,则会在其中看到Projects.xlsx对象。 在上面的示例中,s3-dg.pdf是否会受到与其他每个前缀(开发/财务/私人)不同的速率限制(5500 GET请求/秒)? 更令人困惑的是,我读过一些有关使用前N个字节作为分区键的亚马逊博客,并鼓励使用高基数前缀,但我不确定该如何与具有“平面文件结构”的存储桶进行交互。

5
从S3 CLI获取最后修改的对象
我有一个用例,其中我以编程方式启动一个EC2实例,从S3复制和可执行文件,运行它并关闭该实例(在用户数据中完成)。我只需要从S3获取最后添加的文件。有没有办法使用CLI从S3存储桶中获取最后修改的文件/对象?

11
使用节点fs从AWS S3存储桶读取文件
我正在尝试使用以下命令读取aws s3存储桶中的文件 fs.readFile(file, function (err, contents) { var myLines = contents.Body.toString().split('\n') }) 我已经能够使用节点aws-sdk下载和上传文件,但是我对如何简单地读取文件和解析内容感到困惑。 这是我从s3中读取文件的示例: var s3 = new AWS.S3(); var params = {Bucket: 'myBucket', Key: 'myKey.csv'} var s3file = s3.getObject(params)

6
Amazon S3:静态网站:自定义域或子域
Amazon.com刚刚宣布可以在S3存储桶中托管静态网站。我去了他们的设置页面http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?WebsiteHosting.html并为我的静态网站创建了一个存储桶,它运行良好。我的网址格式为http:// [我的存储桶名称] .s3-website-us-east-1.amazonaws.com /。 但是,我想将我拥有的一个子域(例如static.mydomain.com)指向我在Amazon S3上的静态网站。有人知道该怎么做吗? 感谢您能给我的任何帮助。

9
Amazon S3异常:“指定的密钥不存在”
我在Android应用程序中使用AmazonS3Client,使用getObject请求从我的Amazon S3存储桶下载图像。 目前,我收到此异常: com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; 即使我能够在S3存储桶中看到具有指定键的对象。

9
Amazon S3和Cloudfront缓存,如何清除缓存或同步其缓存
我有一个cron作业,每10分钟运行一次,并更新content-type和x-amz-meta。但是从昨天开始,看起来像是在执行cron作业之后,亚马逊就没有拿起所做的更改(刷新缓存)。 我什至去手动进行更改,但没有更改... 上传视频后,视频具有application/x-mp4内容类型,并且cron作业将其更改为video/mp4。 尽管S3具有正确的内容类型,video/mp4但是cloudfront显示application/x-mp4(旧的内容类型)...。 Cron作业已经过去6个月没有问题了。 亚马逊缓存有什么问题?我该如何同步缓存?

5
正确的S3 + Cloudfront CORS配置?
我的应用程序将图像存储在S3上,然后通过Cloudfront对其进行代理。我很高兴使用新的S3 CORS支持,以便可以使用HTML5 canvas方法(具有跨域策略),但似乎无法正确配置S3和Cloudfront。当我尝试将图像转换为画布元素时,仍然遇到“未捕获的错误:SECURITY_ERR:DOM异常18”。 这是我到目前为止的内容: S3 <CORSConfiguration> <CORSRule> <AllowedOrigin>MY_WEBSITE_URL</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>MY_CLOUDFRONT_URL</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration> 云前 起源 Origin Protocol Policy: Match Viewer HTTP Port: 80 HTTPS Port: 443 行为举止 Origin: MY_WEBSITE_URL Object Caching: Use Origin Cache Headers Forward Cookies: None Forward Query Strings: Yes 我在这里想念什么吗? 更新:刚刚尝试将标题更改为 <AllowedHeader>Content-*</AllowedHeader> …


11
是否可以使用s3cmd将所有文件从一个S3存储桶复制到另一个存储桶?
我对s3cmd感到非常满意,但是有一个问题:如何将所有文件从一个S3存储桶复制到另一个?可能吗? 编辑:我发现了一种使用带boto的Python在存储桶之间复制文件的方法: from boto.s3.connection import S3Connection def copyBucket(srcBucketName, dstBucketName, maxKeys = 100): conn = S3Connection(awsAccessKey, awsSecretKey) srcBucket = conn.get_bucket(srcBucketName); dstBucket = conn.get_bucket(dstBucketName); resultMarker = '' while True: keys = srcBucket.get_all_keys(max_keys = maxKeys, marker = resultMarker) for k in keys: print 'Copying ' + k.key + ' from ' + srcBucketName …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.