Amazon s3 在AmazonS3 bucket中添加文件夹
我想使用编码将文件夹添加到我的AmazonS3存储桶中。Amazon s3 在AmazonS3 bucket中添加文件夹,amazon-s3,Amazon S3,我想使用编码将文件夹添加到我的AmazonS3存储桶中。 你能告诉我如何实现这一点吗?Amazon S3中没有文件夹。只是大多数可用的S3浏览器工具都会将部分键名以斜杠分隔显示为文件夹 如果确实需要,可以创建一个结尾带有斜杠的空对象。e、 g.“folder/”如果您使用GUI工具和AWS控制台打开它,它看起来就像一个文件夹 使用AWS SDK.Net,只需在名称文件夹末尾添加“/”: var folderKey = folderName + "/"; //end the folder nam
你能告诉我如何实现这一点吗?Amazon S3中没有文件夹。只是大多数可用的S3浏览器工具都会将部分键名以斜杠分隔显示为文件夹
如果确实需要,可以创建一个结尾带有斜杠的空对象。e、 g.“folder/”如果您使用GUI工具和AWS控制台打开它,它看起来就像一个文件夹 使用AWS SDK.Net,只需在名称文件夹末尾添加“/”:
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控制台,您将看到rails gem自己执行此操作的文件夹:
AWS::S3::S3Object.store("teaser/images/troll.png", file, AWS_BUCKET)
将自动创建摘要
和图像
“文件夹”(如果它们不存在)。Java with AWS SDK:
/
),这将使它在管理控制台中显示为文件夹,但从编程角度看,它不是文件夹,而是字符串值文件夹/subfolder/file.txt
搜索时(取决于您使用的语言),可以通过带分隔符的前缀进行搜索。在Java中,它将是一个listObjects(String-storageBucket、String-prefix、String-delimiter)
方法调用
storageBucket
是存储桶的名称,前缀
是要搜索的键,分隔符
用于根据前缀过滤搜索
每个人都告诉过你,在AWSS3中没有任何“文件夹”,你对它们的想法是错误的。AWS S3有“对象”,这些对象可以看起来像文件夹,但它们并不是真正意义上的文件夹。如果你想在AmazonAWSS3上创建文件夹,你不会发现很多好的结果 有一种方法可以创建“文件夹”,即您可以在S3上创建一个模拟的文件夹结构,但是再次强调,您是在S3中创建对象,而不是文件夹。同时,您需要使用命令“put object”来创建这个模拟文件夹结构。现在,要使用此命令,需要安装AWS CLI工具,请转到此处获取安装说明 命令如下:
aws s3api put-object --bucket your-bucket-name --key path/to/file/yourfile.txt --body yourfile.txt
现在,这个命令的有趣之处在于,在运行这个命令之前,不需要创建所有的“文件夹”(对象)。这意味着你可以有一个“文件夹”(对象)来包含东西,但是你可以使用这个命令在这个“文件夹”(对象)中创建一个模拟的文件夹结构,就像我前面讨论的那样。例如,我的S3存储桶中有一个名为“importer”的“folder”(对象),假设我想在年、月的“folder”(对象)结构中插入sample.txt,然后在所有这些结构中插入一个示例“folder”(对象)
如果我的bucket中只有“importer”对象,那么在运行此命令之前,我不需要事先创建年、月和示例对象(“文件夹”)。我可以这样运行此命令:
aws s3api put-object --bucket my-bucket-here --key importer/2016/01/sample/sample.txt --body sample.txt
然后,put object命令将进入并创建我在--key标志中指定的路径。这里有一点值得注意:即使您没有要上传到S3的文件,您仍然可以在S3 bucket中创建对象(“文件夹”),例如,我创建了一个shell脚本来在bucket中“创建文件夹”,方法是去掉--body标志,不指定文件名,并在--key标志中提供的路径末尾留下斜线,系统在S3 bucket中创建所需的模拟文件夹结构,而无需在此过程中插入文件
希望这能帮助您更好地理解系统
注意:创建“文件夹”结构后,可以使用S3的“sync”命令将子代“文件夹”与本地计算机上的文件夹同步,甚至与另一个S3存储桶同步。您可以从可用的 或者,您也可以尝试在、中提供的minio客户端库。对于您的应用程序开发环境,它具有列出所有基本操作的示例目录 免责声明:我在iOS(Objective-C)中为工作,我按照以下方式工作 您可以添加以下代码,以编程方式在AmazonS3存储桶中创建文件夹。这是有效的代码片段。欢迎任何建议
-(void)createFolder{
AWSS3PutObjectRequest *awsS3PutObjectRequest = [AWSS3PutObjectRequest new];
awsS3PutObjectRequest.key = [NSString stringWithFormat:@"%@/", @"FolderName"];
awsS3PutObjectRequest.bucket = @"Bucket_Name";
AWSS3 *awsS3 = [AWSS3 defaultS3];
[awsS3 putObject:awsS3PutObjectRequest completionHandler:^(AWSS3PutObjectOutput * _Nullable response, NSError * _Nullable error) {
if (error) {
NSLog(@"error Creating folder");
}else{
NSLog(@"Folder Creating Sucessful");
}
}];
}
对于Swift,我创建了一个方法,您可以在其中为文件夹名传入一个
字符串
Swift 3:
import AWSS3
func createFolderWith(Name: String!) {
let folderRequest: AWSS3PutObjectRequest = AWSS3PutObjectRequest()
folderRequest.key = Name + "/"
folderRequest.bucket = bucket
AWSS3.default().putObject(folderRequest).continue({ (task) -> Any? in
if task.error != nil {
assertionFailure("* * * error: \(task.error?.localizedDescription)")
} else {
print("created \(Name) folder")
}
return nil
})
}
那就打电话吧
createFolderWith(Name:"newFolder")
在swift 2.2中,您可以使用
func createFolderWith(Name: String!) {
let folderRequest: AWSS3PutObjectRequest = AWSS3PutObjectRequest()
folderRequest.key = Name + "/"
folderRequest.bucket = "Your Bucket Name"
AWSS3.defaultS3().putObject(folderRequest).continueWithBlock({ (task) -> AnyObject? in
if task.error != nil {
assertionFailure("* * * error: \(task.error?.localizedDescription)")
} else {
print("created \(Name) folder")
}
return nil
})
}
使用,可以将整个文件夹复制到存储桶中
aws s3 cp /path/to/folder s3://bucket/path/to/folder --recursive
还可以选择同步使用下面的aws s3 sync
创建名为“mydir1”的空目录的文件夹
下面是nodejs代码,它应该类似于其他语言
诀窍是在对象名称的末尾使用斜杠(/),如“mydir1/”,否则将创建名为“mydir1”的文件
let AWS = require('aws-sdk');
AWS.config.loadFromPath(__dirname + '\\my-aws-config.json');
let s3 = new AWS.S3();
var params = {
Bucket: "mybucket1",
Key: "mydir1/",
ServerSideEncryption: "AES256" };
s3.putObject(params, function (err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
return;
} else {
console.log(data); // successful response
return;
/*
data = {
ETag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
ServerSideEncryption: "AES256",
VersionId: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt"
}
*/
} });
来源:为了在s3 bucket中创建一个目录并复制其中的内容,这非常简单
可以使用S3命令:
aws s3 cp abc/def.txt s3://mybucket/abc/
注意:创建目录时必须使用:/s,否则它将成为s3中的文件。以下是实现所需内容的方法(通过代码/cli):
--创建/选择要移动到文件夹中的文件(本地):
~/Desktop>触摸文件以移动
--通过执行以下操作将文件移动到s3文件夹:
~/Desktop>aws s3 cp文件到移动s3:////
一个新的文件夹将在你的s3存储桶上创建,你现在可以执行cp、mv、rm。。。语句,即按常规管理文件夹
如果不需要上面创建的新文件,只需删除即可
--create/select the file (locally) which you want to move to the folder:
~/Desktop> touch file_to_move
--move the file to s3 folder by executing:
~/Desktop> aws s3 cp file_to_move s3://<path_to_your_bucket>/<new_folder_name>/
aws s3 cp test.xml s3://mybucket/myfolder/test.xml