亚马逊S3博托 – 如何创build一个文件夹?

我怎样才能创build一个文件夹下使用boto库amazon s3的桶?

我遵循手册,并创build了权限,元数据等密钥,但没有在博托的文档中介绍了如何创build一个桶下的文件夹,或者创build一个文件夹在桶下的文件夹。

S3中没有文件夹或目录的概念。 您可以创build像"abc/xys/uvw/123.jpg"这样的文件名,许多S3访问工具(如S3Fox显示为一个目录结构,但实际上只是一个文件夹中的一个文件。

假设你想在你的桶里创build文件夹abc / 123 /,这是Boto的小菜一碟

 k = bucket.new_key('abc/123/') k.set_contents_from_string('') 

或者使用控制台

使用AWS SDK .Net完美工作,只需在文件夹名称string的末尾添加“/”即可:

 var folderKey = folderName + "/"; //end the folder name with "/" AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWSAccessKey, AWSSecretKey); var request = new PutObjectRequest(); request.WithBucketName(AWSBucket); request.WithKey(folderKey); request.WithContentBody(string.Empty); S3Response response = client.PutObject(request); 

然后刷新您的AWS控制台,您将看到该文件夹

追加“_ $文件夹$”到您的文件夹名称和调用put。

  String extension = "_$folder$"; s3.putObject("MyBucket", "MyFolder"+ extension, new ByteArrayInputStream(new byte[0]), null); 

请参阅: http : //www.snowgiraffe.com/tech/147/creating-folders-programmatically-with-amazon-s3s-api-putting-babies-in-buckets/

S3没有文件夹结构,但有一些称为键。

我们可以创build/2013/11/xyz.xls并在控制台中显示为文件夹。 但S3的存储部分将把它作为文件名。

即使在检索时,我们也可以通过使用ListObjects方法和Prefix参数来查看特定文件夹(或键)中的文件。

创build文件夹非常简单。 其实它只是创造钥匙。

你可以看到我的下面的代码,我正在创build一个名称为utc_time的文件夹。

记得用下面的“/”结尾,这表明这是一个关键:

Key ='folder1 /'+ utc_time + '/'

 client = boto3.client('s3') utc_timestamp = time.time() def lambda_handler(event, context): UTC_FORMAT = '%Y%m%d' utc_time = datetime.datetime.utcfromtimestamp(utc_timestamp) utc_time = utc_time.strftime(UTC_FORMAT) print 'start to create folder for => ' + utc_time putResponse = client.put_object(Bucket='mybucketName', Key='folder1/' + utc_time + '/') print putResponse 

显然你现在可以在S3中创build文件夹。 我不知道从什么时候开始,但是我在“标准”区域有一个存储桶,并且可以select从操作下拉菜单中创build文件夹。

尽pipe可以通过将“/”附加到文件夹名称来创build文件夹。 在引擎盖下,S3不像普通的NFS那样保持平坦的结构。

 var params = {
            存储桶:bucketName,
            密钥:folderName +“/”
         };
 s3.putObject(params,function(err,data){});