如何使用Amazon S3的boto
库在存储桶下创建文件夹?亚马逊S3博托 - 如何创建一个文件夹?
我遵循手册,并创建了具有权限,元数据等的密钥,但没有在博托的文档中介绍如何创建文件夹下的文件夹,或创建文件夹下的文件夹。
如何使用Amazon S3的boto
库在存储桶下创建文件夹?亚马逊S3博托 - 如何创建一个文件夹?
我遵循手册,并创建了具有权限,元数据等的密钥,但没有在博托的文档中介绍如何创建文件夹下的文件夹,或创建文件夹下的文件夹。
S3中没有文件夹或目录的概念。您可以创建像"abc/xys/uvw/123.jpg"
这样的文件名,许多S3访问工具(如S3Fox
)显示为一个目录结构,但它实际上只是一个存储桶中的单个文件。
谢谢你的答案,所以我想如果我想看到一个特定文件夹的内容,我将需要遍历许多其他不必要的文件? – 2010-01-27 23:50:43
S3 API允许您为存储桶查询具有给定前缀的键。所以你应该能够构造一个只返回逻辑文件夹中的对象的请求。请参阅:http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?ListingKeysHierarchy.html – 2010-07-22 19:58:31
有非常明确的文件夹概念。答案是不正确的..请参阅下面的elranu答案。 – 2014-03-28 09:49:33
追加“_ $文件夹$”到您的文件夹名称和调用put。
String extension = "_$folder$";
s3.putObject("MyBucket", "MyFolder"+ extension, new ByteArrayInputStream(new byte[0]), null);
这种创建文件夹的方式不再有效。您应该尝试@TomNg – radalin 2016-06-16 14:33:00
有了AWS SDK净完美的作品,只要加入 “/” 的文件夹名称字符串的结尾:
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控制台,你会看到文件夹
S3没有文件夹结构,但有一些称为键。
我们可以创建/2013/11/xyz.xls
,并在控制台中显示为文件夹。但S3的存储部分将把它作为文件名。
即使在检索时,我们仍然可以使用ListObjects
方法和Prefix
参数查看特定文件夹(或多个键)中的文件。
假设你想创建Abc文件夹/ 123 /在你的水桶,这是一块蛋糕与博托
k = bucket.new_key('abc/123/')
k.set_contents_from_string('')
或者使用console
这是正确的答案。这可能与博托,这是你如何做到这一点。其实''new_key()'是你所需要的。发送给函数的字符串可以是'abc/123 /'或'abc/123/newfile.txt'。无论你喜欢什么。在我尝试获得我希望的结果后,我喜欢在if语句中包装它:'key = bucket.get_key(upgrade_path) 如果key为None: key = bucket.new_key(upgrade_path)'基本上,if它不在那里,创造它! – 2015-01-16 02:25:26
使用最新的api,bucket.key('abc/123 /')也会达到相同的结果。 – light94 2015-05-15 10:03:47
指定一个目录密钥也适用于上传**分段上传文件**'''mp = self._bucket。initiate_multipart_upload(bucket_key)''' – 2016-08-09 17:57:16
显然,你可以在S3现在创建文件夹。我不知道从何时开始,但我在“标准”区域有一个存储桶,并且可以选择从操作下拉菜单中创建文件夹。
创建文件夹非常简单。其实它只是创造钥匙。
你可以看到我的下面的代码,我正在创建一个名为utc_time的文件夹。
清楚地记得结束与'/'像下面的关键,这表明它是一个关键:
重点= '文件夹1 /' + 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
虽然您可以通过将“/”附加到您的folder_name来创建一个文件夹。在引擎盖下,S3不像普通的NFS那样保持平坦的结构。
var params = { Bucket : bucketName, Key : folderName + "/" }; s3.putObject(params, function (err, data) {});
使用此:
import boto3
s3 = boto3.client('s3')
bucket_name = "YOUR-BUCKET-NAME"
directory_name = "DIRECTORY/THAT/YOU/WANT/TO/CREATE" #it's name of your folders
s3.put_object(Bucket=bucket_name, Key=(directory_name+'/'))
感谢您的帮助,我得到了以下错误。你能帮我吗.botocore.exceptions.NoCredentialsError:无法找到凭证 – Anvesh 2017-12-18 07:19:14
你能分享你的代码吗? – 2017-12-18 07:59:03
似乎Amazon S3上没有文件夹的概念,一些建议建立包含“文件夹/ test.txt的”名关键要解决它,我尝试使用firefox s3插件来创建文件夹,并列出所有键在博托,它输出文件夹我刚创建为“<键:vitoshares,everyone_ $文件夹$>],所以如何查看/添加/修改内容到/从这个文件夹? – 2009-12-21 12:29:15
注意:用于创建“文件夹”的AWS S3管理界面选项与S3FS不兼容,即使用界面创建“文件夹”并尝试通过S3FS挂载点获取所述文件夹的列表。 – jldupont 2013-02-17 12:49:58
注2:通过S3FS创建“文件夹”与AWS S3管理界面兼容。 – jldupont 2013-02-17 12:52:52