2

S3 amazon バケット内にフォルダーを作成しようとしていますが、何が必要かを適切に説明する適切なドキュメントを見つけるのが難しいと感じています。フォルダーを作成するための次のコード/擬似コードがあります。コード内に配置する必要がある引数のサンプルを説明または提供できますか

use vendor\aws\S3\S3Client;

$bucket_url = 'https://***.amazonaws.com/***/';
$folder_name = $username . '/';

$s3Client = new vendor\aws\S3\S3Client([
        'version' => AWS_VERSION,
        'region' => AWS_REGION,
        'credentials' => [
            'key' => AWS_KEY,
            'secret' =>AWS_SECRET,
        ],
    ]);

    $s3Client->putObject(array(
        'Bucket' => AWS_BUCKET, // Defines name of Bucket
        'Key' => AWS_PATH . $folder_name, //Defines Folder name
        'Body' => "",
    ));
4

4 に答える 4

6

Amazon S3 にはフォルダの概念がありません。S3 の場合、すべてのオブジェクトは単にデータを含むキー名です。

フォルダーは、「/」文字を使用してフォルダーを区切る人間の概念です。しかし、S3 は気にしません。

多くのサードパーティ ツール (さらには AWS マネジメント コンソール) を使用する場合、ツールは多くの場合、プレフィックスの下のオブジェクト キーを調べ、その中に「/」がある場合、それをフォルダーとして解釈します。

しかし、「フォルダを作成する」方法はありません。

PutObject目的のフル パス (たとえば、「my/desired/folder/structure/file.txt」) を持つキーを持つオブジェクトを単純に作成すると、Amazon S3 はそれをそこに置きます。ファイルを作成する前にフォルダーが存在しなければならない多くのファイルシステムとは異なります。

「フォルダーの作成」に最も近い方法は、キーの末尾に「/」を付けて 0 バイトのオブジェクトを作成することです。たとえば、「my/desired/folder/structure/」です。しかし、それはバケット内の別のオブジェクトになります。バケットまたはバケット内の他のオブジェクトの作成または操作には影響しません。

于 2016-08-16T01:36:05.167 に答える
5

S3 にはバケット以外のフォルダーはありませんが、オブジェクト (ファイル) の名前に /s (スラッシュ) を含めることができ、ディレクトリ リストをエミュレートできるプレフィックスに基づいて取得する方法があります。ただし、これは、空のフォルダーを作成できないことを意味します。

そのため、回避策として空の txt ファイルを配置し、病棟後に削除しますが、フォルダー構造は維持されます。

/* function to upload empty test.txt file to subfolders /folder/ on S3 bucketname */
$s3->putObjectFile(‘test.txt’, ‘bucketname’, ‘/folder/test.txt’, S3::ACL_PUBLIC_READ);

/* function to delete empty test.txt file to subfolders /folder/ on S3 bucketname */
$s3->deleteObject(‘bucketname’, ‘/folder/test.txt’);
于 2016-08-16T01:29:20.670 に答える
4

Amazon S3 には実際にはディレクトリがありません:

Amazon S3 では、バケットとオブジェクトが主要なリソースであり、オブジェクトはバケットに格納されます。Amazon S3 は、一般的なファイル システムに見られるような階層のないフラットな構造をしています。ただし、組織を簡素化するために、Amazon S3 コンソールは、オブジェクトをグループ化する手段としてフォルダの概念をサポートしています。Amazon S3 は、オブジェクトのキー名プレフィックスを使用してこれを行います。

代わりに、オブジェクトのキーの名前に基づいて偽装します。のようなキーを使用してオブジェクトをアップロードするだけで、AWS コンソールの S3 インターフェイスを含む多くのツールが、 というディレクトリで呼び出されたsome/directory/file.txtオブジェクトを持っているかのように動作します。file.txtdirectorysome

Amazon S3 boto - フォルダーの作成方法も参照してください。

于 2016-08-16T01:25:16.070 に答える