143

botoAmazon s3 のライブラリを 使用してバケットの下にフォルダを作成するにはどうすればよいですか?

私はマニュアルに従い、アクセス許可、メタデータなどを使用してキーを作成しましたが、バケットの下にフォルダーを作成する方法、またはバケット内のフォルダーの下にフォルダーを作成する方法について説明している boto のドキュメントのどこにもありません。

4

11 に答える 11

153

S3 にはフォルダやディレクトリの概念はありません。のようなファイル名を作成できます"abc/xys/uvw/123.jpg"。多くの S3 アクセス ツールS3Foxではディレクトリ構造のように表示されますが、実際にはバケット内の 1 つのファイルにすぎません。

于 2010-01-26T18:03:09.420 に答える
55

バケツにフォルダー abc/123/ を作成したいとします。Boto を使えば簡単です。

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

またはコンソールを使用する

于 2014-07-30T09:30:50.230 に答える
22

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 コンソールを更新すると、フォルダが表示されます

于 2011-09-16T19:48:30.877 に答える
7

フォルダー名に「_$folder$」を追加して、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/

于 2011-05-24T12:27:24.593 に答える
4

2019 年の更新。パスbucket_name/folder1/folder2 でフォルダーを作成する場合は、次のコードを使用できます。

from boto3 import client, resource

class S3Helper:

  def __init__(self):
      self.client = client("s3")
      self.s3 = resource('s3')

  def create_folder(self, path):
      path_arr = path.rstrip("/").split("/")
      if len(path_arr) == 1:
          return self.client.create_bucket(Bucket=path_arr[0])
      parent = path_arr[0]
      bucket = self.s3.Bucket(parent)
      status = bucket.put_object(Key="/".join(path_arr[1:]) + "/")
      return status

s3 = S3Helper()
s3.create_folder("bucket_name/folder1/folder2)
于 2019-03-21T04:02:25.193 に答える
2

folder_name に「/」を追加することでフォルダーを作成できますが。内部では、S3 は通常の NFS とは異なり、フラットな構造を維持します。

変数パラメータ = {
            バケット: バケット名,
            キー: フォルダ名 + "/"
        };
s3.putObject(params, function (err, data) {});
于 2017-08-20T16:39:07.100 に答える
0

どうやら、S3 でフォルダーを作成できるようになりました。いつからかはわかりませんが、「標準」ゾーンにバケットがあり、[アクション] ドロップダウンから [フォルダーの作成] を選択できます。

于 2015-10-21T09:44:04.850 に答える
0

S3にはフォルダ構造はありませんが、キーと呼ばれるものがあります。

作成でき/2013/11/xyz.xls、コンソールにフォルダとして表示されます。ただし、S3 のストレージ部分はそれをファイル名として使用します。

ListObjects取得する場合でも、メソッドとパラメーターを使用して、特定のフォルダー (またはキー) 内のファイルを表示できることがわかりますPrefix

于 2013-11-15T23:06:39.473 に答える