翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ディレクトリオペレーション
S3 Transfer Manager はディレクトリ転送全体を処理できます。
ディレクトリをアップロードする
S3 Transfer Manager は、ディレクトリ全体を S3 バケットにアップロードできます。<キー値はアップロード時にファイル名になりますか?>
<?php use Aws\S3\S3Transfer\Models\UploadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $uploadDirPromise = $transferManager->uploadDirectory( new UploadDirectoryRequest( '/path/to/local/directory', 'amzn-s3-demo-bucket', [ // Additional `putObject` parameters that apply to all files. 'ACL' => 'public-read', 'CacheControl' => 'max-age=3600', ], [ // Configuration options. 'recursive' => true, 'follow_symbolic_links' => false, 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($file) { // Upload only .jpg files. return pathinfo($file, PATHINFO_EXTENSION) === 'jpg'; }, 'upload_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ContentType'] = 'image/jpeg'; }, ] ) ); // Wait for the upload process to complete. $result = $uploadDirPromise->wait(); $uploaded = $result->getObjectsUploaded(); $failed = $result->getObjectsFailed(); echo "Uploaded {$uploaded} files. Failed: {$failed}\n";
uploadDirectory メソッドのパラメータ
uploadDirectory メソッドは <UploadDirectoryRequestadd link> のインスタンスを引数として受け入れます。
UploadDirectoryRequest 個のパラメータ
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
|
|
文字列 |
あり |
アップロードするローカルディレクトリのパス。 |
|
|
string |
あり |
送信先 S3 バケット名。 |
|
|
配列 |
不可 |
すべてのファイルに対する追加のアップロードオブジェクトリクエストパラメータ。 |
|
|
配列 |
不可 |
ディレクトリのアップロードの設定オプション。設定オプションの詳細については、次のセクションを参照してください。 |
|
|
配列 |
不可 |
|
|
|
ブール |
-1 「ランタイムデフォルト」 |
再帰ファイルの最大深度を 3 ウォークで示します。 |
|
|
|
不可 |
すべてのアップロードの進行状況トラッカー。 |
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
|
|
ブール |
|
サブディレクトリを再帰的にアップロードするかどうか。 |
|
|
ブール |
|
シンボリックリンクに従うかどうか。 |
|
|
string |
'' |
すべてのオブジェクトキーに追加するプレフィックス。 |
|
|
string |
'/' |
S3 オブジェクトキーで使用する区切り文字。 |
track_progress |
ブール | false |
進行状況を追跡するかどうか。 |
|
|
int | 100 | 同時アップロードの最大数。 |
|
|
呼び出し可能 |
null |
アップロードするファイルをフィルタリングする関数。 |
|
|
呼び出し可能 |
null |
各アップロードリクエストをカスタマイズする関数。 |
|
|
呼び出し可能 |
null |
アップロードの失敗を処理する関数。 |
呼び出し可能な$configオプションのタイプ
| オプション名 | パラメータ名 | パラメータタイプ | パラメータ情報 |
|---|---|---|---|
filter |
$file |
SplFileInfo|文字列 |
文字列にキャストする場合、ファイルパスです。それ以外の場合は、 のインスタンスです |
upload_object_request_modifier |
$requestArgs |
配列 | 個々のアップロードリクエストのリクエスト引数。配列オプションの詳細については、putObject メソッドのパラメータ構文セクションを参照してください。 |
failure_policy |
$uploadRequestArgs |
配列 | 個々のアップロードリクエストのリクエスト引数。配列オプションの詳細については、配列オプションの putObject メソッドのパラメータ構文セクションを参照してください。 |
$uploadDirectoryArgs |
配列 | アップロードディレクトリオペレーションのソースディレクトリとターゲットバケットを持つ配列。 | |
$reason |
Throwable|文字列 |
失敗の原因に関する情報を含む例外所有者。 |
|
$uploadDirectoryResult |
UploadDirectoryResult |
アップロードに成功したオブジェクトの数と失敗したオブジェクトの数を含むオブジェクト。 |
uploadDirectory メソッドが正常に実行されると、UploadDirectoryResult<add link> が返されます。
ディレクトリのダウンロード
ディレクトリは S3 バケットからダウンロードできます。<ダウンロード時にファイル名はキー値ですか? キーに拡張子がない場合、ファイルにも拡張子はありませんか?>
<?php use Aws\S3\S3Transfer\Models\DownloadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $downloadDirPromise = $transferManager->downloadDirectory( new DownloadDirectoryRequest( 'amzn-s3-demo-bucket', '/path/to/local/directory', [ // Additional `getObject` parameters that apply to all files. ], [ // Configuration options. 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($key) { // Download only .jpg files. return pathinfo($key, PATHINFO_EXTENSION) === 'jpg'; }, 'download_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ResponseContentType'] = 'image/jpeg'; }, 'list_objects_v2_args' => [ 'MaxKeys' => 1000, 'Prefix' => 'uploads/2023/', ], 'fails_when_destination_exists' => true, ] ) ); // Wait for the download process to complete. $result = $downloadDirPromise->wait(); $downloaded = $result->getObjectsDownloaded(); $failed = $result->getObjectsFailed(); echo "Downloaded {$downloaded} files. Failed: {$failed}\n";
downloadDirectory メソッドのパラメータ
downloadDirectory メソッドは <DownloadDirectoryRequestadd link> のインスタンスを引数として受け入れます。
DownloadDirectoryRequest 個のパラメータ
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
|
|
文字列 |
あり |
オブジェクトのダウンロード元のソース S3 バケット名。 |
|
|
string |
あり |
ファイルをダウンロードするローカルディレクトリ。 |
|
|
配列 |
不可 |
すべてのファイルの追加のダウンロードオブジェクトリクエストパラメータ。 |
|
|
配列 |
不可 |
ディレクトリのダウンロードの設定オプション。設定オプションの詳細については、次のセクションを参照してください。 |
|
|
配列 |
不可 |
|
|
|
|
不可 |
すべてのダウンロードの進行状況トラッカー。 |
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
|
|
string |
'' |
フィルタリングのプレフィックス ( にない場合 |
|
|
ブール |
|
進行状況を追跡するかどうか。 |
|
|
呼び出し可能 |
|
ダウンロードする S3 オブジェクトをフィルタリングする関数。 |
|
|
呼び出し可能 |
|
各ダウンロードリクエストをカスタマイズする関数。 |
|
|
配列 |
[] |
|
|
|
ブール |
false |
オブジェクトの送信先ファイルパスが既に存在する場合に失敗するかどうか。 |
|
|
呼び出し可能 |
null |
ダウンロードの失敗を処理する関数。 |
|
|
int |
100 |
同時ダウンロードの最大数。 |
|
|
int |
可変 |
マルチパートダウンロードタイプの範囲が設定されている場合のマルチパートダウンロードのパートサイズ。 |
呼び出し可能な$configオプションのタイプ
| オプション名 | パラメータ名 | パラメータタイプ | パラメータ情報 |
|---|---|---|---|
filter |
$objectKey |
string |
バケットのオブジェクトキー名。 |
download_object_request_modifier |
$requestArgs |
配列 | 個々のダウンロードリクエストのリクエスト引数。配列オプションの詳細については、getObject メソッドのパラメータ構文セクションを参照してください。 |
failure_policy |
$downloadObjectRequestArgs |
配列 |
個々のダウンロードリクエストのリクエスト引数。配列オプションの詳細については、getObject メソッドのパラメータ構文セクションを参照してください。 |
$downloadDirectoryRequest |
配列 |
ダウンロードディレクトリオペレーションのソースバケットとターゲットディレクトリを持つ配列。 |
|
$reason |
Throwable |
失敗の原因に関する情報を含む例外所有者。 |
|
$downloadDirectoryResult |
DownloadDirectoryResult <リンクの追加> |
ダウンロードに成功したオブジェクトの数と失敗したオブジェクトの数を含むオブジェクト。 |
ディレクトリオペレーションの仕組み
このセクションでは、S3 Transfer Manager がディレクトリオペレーション中にファイルパスとオブジェクトキーを処理する方法について説明します。
アップロードパスの処理
ディレクトリをアップロードすると、SDK はファイルパスから S3 オブジェクトキーを構築します。
-
ソースディレクトリに対する各ファイルのパスを計算します
-
指定した場合
s3_prefix、値を付加します (末尾にスラッシュを自動的に追加します) -
OS ディレクトリ区切り文字を に置き換えます
s3_delimiter(デフォルトは/)
recursive オプションは、サブディレクトリを含めるかどうかを制御します。false (デフォルト) の場合、最上位ファイルのみがアップロードされます。の場合true、サブディレクトリ内のすべてのファイルがアップロードされ、オブジェクトキーのディレクトリ構造が保持されます。
注記
アップロードされた各ファイルの S3 のキーは、指定された s3 プレフィックスになります。デフォルトでは null と、指定されたソースディレクトリから始まるファイルの相対パスが続きます。また、解決されたキー名のディレクトリ区切り文字を指定された s3 区切り文字に置き換えます。デフォルトでは / になります。
例 1
$sourceDirectory = "/opt/my-upload-directory"; $s3Prefix = "important/"; $s3Delimiter = "/"; // Default value
ディレクトリ構造
/opt/my-upload-directory/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
各ファイルのキーは次のとおりです。
$s3Prefix + $fileRelativePath;
- important/my-file1.txt - important/my-file-2.txt - important/sub-dir/my-another-file1.txt - important/sub-dir/my-another-file2.txt
例 2
$sourceDirectory = "/opt/my-docs"; $s3Prefix = ''; // No provided and it will defaulted to empty string $s3Delimiter = "/"; // Default value
ディレクトリ構造
/opt/my-docs/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
各ファイルのキーは次のとおりです。
$s3Prefix + $fileRelativePath;
- my-file1.txt - my-file-2.txt - sub-dir/my-another-file1.txt - sub-dir/my-another-file2.txt
例 ディレクトリパスのアップロード処理
<?php // Source directory: /home/user/photos/ // fla/beach.jpg // fla/sunset.jpg // fla/pool/party.jpg // With s3_prefix: '2023' and recursive: true // Results: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg
ダウンロードパスの処理
ディレクトリをダウンロードすると、SDK は S3 オブジェクトキーからローカルファイルパスを構築します。
-
指定した場合、 オブジェクトキー
s3_prefixから を削除します。 -
S3 区切り文字 (
/) を OS ディレクトリ区切り文字に置き換えます -
結果を宛先ディレクトリに追加します。
ダウンロードは常に再帰的です。SDK は、指定されたプレフィックスのすべてのオブジェクトを取得し、必要に応じてサブディレクトリを作成します。セキュリティのためにパスが送信先ディレクトリの外部で解決されないことを検証します。
例 ディレクトリパス処理をダウンロードする
<?php // S3 objects: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg // With s3_prefix: '2023' and destination: /home/user/downloads // Results: // /home/user/downloads/fla/beach.jpg // /home/user/downloads/fla/sunset.jpg // /home/user/downloads/fla/pool/party.jpg
注記
ダウンロードしたオブジェクトのファイルパスは次のように解決されます。
-
s3 プレフィックスを指定すると、オブジェクトキーから削除されます。
-
s3Delimiter が OS ディレクトリ区切り文字と異なる場合、s3 区切り文字は OS ディレクトリ区切り文字に置き換えられます。
例 1
$s3Prefix = "my-prefix"; $s3Objects = [ "my-prefix/file-1.txt", "my-prefix/file-2.txt", "my-prefix/subdir/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";
これらのオブジェクトがダウンロードされると、次のように配置されます。
/opt/bucket/downloads/ -- file-1.txt -- file-2.txt -- subdir/ ---- file-1.txt
ご覧のとおり、プレフィックスはオブジェクトの最終ファイルパスから削除されました。
例 2 - s3 プレフィックスなし
$s3Prefix = ""; // No provided $s3Objects = [ "README.md", "my-docs/file-1.txt", "my-docs/file-2.txt", "my-docs/statements/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";
これらのオブジェクトがダウンロードされると、次のように配置されます。
/opt/bucket/downloads/ -- README.md -- my-docs/ ---- file-1.txt ---- file-2.txt ---- statements/ ------ file-1.txt