Tôi muốn thêm Thư mục vào thùng sazon amazon của tôi bằng cách sử dụng mã hóa. Bạn có thể đề nghị tôi làm thế nào để đạt được điều này?Thêm thư mục vào thùng Amazon s3
Trả lời
Không có thư mục nào trong Amazon S3. Nó chỉ là hầu hết các công cụ trình duyệt S3 có sẵn hiển thị một phần của tên khóa được phân tách bằng dấu gạch chéo làm thư mục.
Nếu bạn thực sự cần rằng bạn có thể tạo một đối tượng trống với dấu gạch chéo ở cuối. ví dụ. "folder /" Nó trông giống như một thư mục nếu bạn mở nó bằng một công cụ GUI và AWS Console.
Dường như có thư mục cho tôi? – Nate
Xem http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html – lucasddaniel
Với AWS SDK Net hoạt động hoàn hảo, chỉ cần thêm "/" ở cuối tên thư mục:
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);
Sau đó làm mới giao diện điều khiển AWS của bạn, và bạn sẽ thấy thư mục
Các AWS:S3 ray đá quý thực hiện điều này bằng cách riêng của mình:
AWS::S3::S3Object.store("teaser/images/troll.png", file, AWS_BUCKET)
sẽ tự động tạo ra các teaser
và images
"thư mục" nếu họ làm chưa hiện hữu.
Java với AWS SDK:
Không có thư mục trong s3, chỉ có cặp/giá trị then chốt. Chìa khóa có thể chứa các dấu gạch chéo (
/
) và điều đó sẽ làm cho nó xuất hiện dưới dạng một thư mục trong bảng điều khiển quản lý, nhưng theo chương trình, nó không phải là một thư mục mà nó là một giá trị String.Nếu bạn đang cố gắng cấu trúc xô s3 của mình, thì quy ước đặt tên của bạn (các khóa bạn cung cấp tệp) có thể thực hiện theo các mẫu thư mục thông thường, tức là
folder/subfolder/file.txt
.Khi tìm kiếm (tùy thuộc vào ngôn ngữ bạn đang sử dụng), bạn có thể tìm kiếm qua tiền tố bằng dấu phân tách. Trong Java, nó sẽ là một cuộc gọi phương thức
listObjects(String storageBucket, String prefix, String delimiter)
.storageBucket
là tên của nhóm,prefix
là khóa bạn muốn tìm kiếm vàdelimiter
được sử dụng để lọc tìm kiếm của bạn dựa trên sốprefix
.
Như mọi người đã nói với bạn, trong AWS S3 không có bất kỳ "thư mục" nào, bạn đang nghĩ đến chúng không chính xác. AWS S3 có "đối tượng", các đối tượng này có thể trông giống như các thư mục nhưng chúng không thực sự là thư mục theo nghĩa đầy đủ nhất của từ. Nếu bạn tìm kiếm việc tạo thư mục trên Amazon AWS S3, bạn sẽ không tìm thấy nhiều kết quả tốt.
Có một cách để tạo "thư mục" theo nghĩa là bạn có thể tạo cấu trúc thư mục mô phỏng trên S3, nhưng một lần nữa, quấn đầu quanh thực tế là bạn đang tạo đối tượng trong S3 chứ không phải thư mục. Cùng với đó, bạn sẽ cần lệnh "put-object" để tạo cấu trúc thư mục mô phỏng này. Bây giờ, để sử dụng lệnh này, bạn cần cài đặt các công cụ AWS CLI, hãy truy cập vào đây AWS CLI Installation để được hướng dẫn cài đặt chúng.
Lệnh là thế này:
aws s3api put-object --bucket your-bucket-name --key path/to/file/yourfile.txt --body yourfile.txt
Bây giờ, phần thú vị về lệnh này là, bạn không cần phải có tất cả các "thư mục" (đối tượng) tạo ra trước khi bạn chạy lệnh này.Điều này có nghĩa là bạn có thể có một "thư mục" (đối tượng) để chứa mọi thứ, nhưng sau đó bạn có thể sử dụng lệnh này để tạo cấu trúc thư mục mô phỏng trong "thư mục" (đối tượng) như tôi đã thảo luận trước đó. Ví dụ, tôi có một "thư mục" (đối tượng) có tên là "nhà nhập khẩu" trong thùng S3 của tôi, cho phép nói rằng tôi muốn chèn sample.txt trong một cấu trúc "thư mục" (đối tượng) của năm, tháng và sau đó là một mẫu " thư mục "(đối tượng) trong tất cả điều đó.
Nếu tôi chỉ có đối tượng "nhà nhập khẩu" trong nhóm của mình, tôi không cần phải đi trước để tạo năm, tháng và đối tượng mẫu ("thư mục") trước khi chạy lệnh này. Tôi có thể chạy lệnh này như vậy:
aws s3api put-object --bucket my-bucket-here --key importer/2016/01/sample/sample.txt --body sample.txt
Lệnh put-object sau đó sẽ đi vào và tạo đường dẫn mà tôi đã chỉ định trong cờ --key. Dưới đây là một chút ngọc: ngay cả khi bạn không có tệp để tải lên S3, bạn vẫn có thể tạo đối tượng ("thư mục") trong nhóm S3, ví dụ, tôi đã tạo tập lệnh shell để "tạo thư mục" bên trong thùng, bằng cách bỏ cờ --body và không chỉ định tên tệp và để dấu gạch chéo ở cuối đường dẫn được cung cấp trong cờ --key, hệ thống sẽ tạo cấu trúc thư mục mô phỏng mong muốn trong nhóm S3 mà không chèn một tập tin trong tiến trình.
Hy vọng điều này sẽ giúp bạn hiểu hệ thống tốt hơn một chút. Lưu ý: khi đã tạo cấu trúc "thư mục", bạn có thể sử dụng lệnh "đồng bộ" của S3 để đồng bộ hóa thư mục con "" với một thư mục trên máy cục bộ của bạn, hoặc thậm chí với một thùng S3 khác.
Tôi nhận thấy câu hỏi này đã chết một thời gian, nhưng tôi chưa bao giờ tìm thấy câu trả lời thỏa đáng cho chính câu hỏi này, tôi chỉ đã xảy ra để đi qua các thuật ngữ đúng và tôi chơi với một số kịch bản shell đến điểm mà tôi đã tìm ra cách để làm điều này. Vì vậy, tôi muốn đưa ra câu trả lời thực sự cho bất cứ ai cần biết cách thực hiện điều này. – Jravict
liên quan (đối với những người tự hỏi về các s3 s3 khác nhau có sẵn, ví dụ, '' s'' vs 's3api'): https://stackoverflow.com/a/26396150/127971 Sử dụng 'aws s3' có thể dễ dàng hơn mặc dù để cài đặt và sử dụng cho nhiều tác vụ, ví dụ: để sao chép tất cả các tệp trong pwd cục bộ sang từ xa: đồng bộ hóa 'aws s3. s3: // my-bucket ' – michael
Ví dụ CLI của việc thêm dấu gạch chéo, và rời khỏi cơ thể:' aws s3api put-object --bucket my-bucket --key folder/' –
Bạn có thể chọn ngôn ngữ bạn chọn từ có sẵn AWS SDK
Hoặc bạn có thể thử các thư viện client minio sẵn trong Python, Go, .Net, Java, Javascript cho môi trường phát triển ứng dụng của bạn, nó có ví dụ thư mục với tất cả các thao tác cơ bản liệt kê.
Disclaimer: Tôi làm việc cho Minio
thật đáng buồn, ví dụ của bạn không bao gồm một ví dụ về việc tạo một thư mục như là một phần của việc đặt một đối tượng ... –
Trong iOS (Objective-C), tôi đã đi theo con đường
Bạn có thể thêm mã dưới đây để tạo ra một thư mục bên trong amazon s3 xô lập trình. Đây là đoạn mã hoạt động. Bất kỳ đề nghị Chào mừng.
-(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");
}
}];
}
Một số giải thích ngoài mã sẽ làm cho câu trả lời này hữu ích hơn. –
@yogesh Dalavi mã này hoạt động. –
Đối với Swift tôi đã tạo phương thức mà bạn chuyển vào một tên thư mục String
.
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
})
}
Sau đó, chỉ cần gọi
Trong nhanh chóng 2.2 bạn có thể tạo thư mục bằng
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
})
}
Dưới đây tạo một thư mục trống được gọi là "mydir1".
Dưới đây là mã nodejs, nó phải giống với các ngôn ngữ khác.
Bí quyết là có dấu gạch chéo (/) ở cuối tên đối tượng, như trong "mydir1 /", nếu không một tệp có tên "mydir1" sẽ được tạo.
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"
}
*/
} });
Nguồn: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
- 1. Thêm tệp vào thùng trên Amazon S3 bằng C#
- 2. Đồng bộ hóa thư mục S3/thùng
- 3. Amazon S3 boto - cách xóa thư mục?
- 4. cách xóa tệp khỏi thùng amazon s3?
- 5. Gửi dữ liệu biểu mẫu tới thùng Amazon S3
- 6. Làm thế nào để viết một chuỗi vào thùng S3 của Amazon?
- 7. aws-sdk cho thư mục truy cập Ruby trong thùng
- 8. Chuyển vùng Amazon S3?
- 9. Cách tải thư mục với thư mục con lên amazon s3?
- 10. Truy cập Ruby Amazon S3 bị từ chối khi liệt kê các thùng
- 11. Cách tải tệp lên thư mục trong thùng S3 bằng boto
- 12. Di chuyển tệp vào Amazon S3 Trong khi giữ URL
- 13. Làm thế nào để liệt kê các đối tượng _all_ trong thùng chứa S3 của Amazon?
- 14. Làm thế nào để bạn đổi tên một thư mục trong một thùng trên S3?
- 15. Thư viện .NET hoặc ứng dụng asp.net cho Amazon S3
- 16. Tôi có thể chuyển tệp vào 'thư mục' bên trong một thùng S3 bằng lệnh m3 s3cmd không?
- 17. Liệt kê các đối tượng trong một thư mục cụ thể trên Amazon S3
- 18. Triển khai Cloudfront của Amazon S3
- 19. Xóa đối tượng hoặc nhóm trong Amazon S3?
- 20. DistCp từ Local Hadoop đến Amazon S3
- 21. Thêm Headers bổ sung để Carrierwave cho Amazon s3 Encryption
- 22. SignatureDoesNotMatch - Amazon S3 API
- 23. git và Amazon s3
- 24. Amazon S3 & Checksum
- 25. Kiến trúc Amazon S3
- 26. zcat trên amazon s3
- 27. Làm thế nào để tạo liên kết tải xuống cho đối tượng thùng của Amazon S3?
- 28. Làm thế nào để sao chép hiệu quả tất cả các tệp từ một thư mục này sang thư mục khác trong thùng chứa aazon S3 bằng boto?
- 29. Thêm thư mục NuGet vào thư mục giải pháp?
- 30. Truy cập mạnh vào Amazon S3 bằng C#
Nó sẽ giúp xác định trong đó là ngôn ngữ được bạn "mã hóa". – samvermette