翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SDK for PHP バージョン 3 を使用した Amazon S3 の署名付き URL
Authorization HTTP ヘッダーを使用する代わりに、必要な情報をクエリ文字列パラメーターとして渡すことで、特定の種類のリクエストを認証できます。これは、サードパーティーのブラウザで、リクエストのプロキシを行わずにプライベートの Amazon S3 データに直接アクセスさせる場合に便利です。これを行うには、「署名付き」のリクエストを作成し、エンドユーザーのブラウザが取得できる URL としてエンコードします。さらに、署名付きのリクエストは、有効期限を指定することで制限できます。
以下の例では、次の方法を示しています。
-
を使用して S3 オブジェクトを取得するための署名付き URL を作成しますcreatePresignedRequest。
のすべてのサンプルコード AWS SDK for PHP は、 で GitHub
認証情報
サンプルコードを実行する前に、「」の説明に従って AWS 認証情報を設定します認証情報。次に AWS SDK for PHP、「」の説明に従って をインポートします基本的な使用法。
署名付きリクエストの作成
Aws\S3\S3Client::createPresignedRequest()
メソッドを使用して Amazon S3 オブジェクトへの署名付き URL を取得できます。このメソッドでは、Aws\CommandInterface
オブジェクトと期限切れタイムスタンプを受け付け、署名付き Psr\Http\Message\RequestInterface
オブジェクトを返します。リクエストの getUri()
メソッドを使用して、オブジェクトの署名付き URL を取得できます。
最も一般的なシナリオは、オブジェクトを GET するために、署名付き URL を作成します。
インポート
use Aws\Exception\AwsException; use AwsUtilities\PrintableLineBreak; use AwsUtilities\TestableReadline; use DateTime; require 'vendor/autoload.php';
サンプルコード
$command = $s3Service->getClient()->getCommand('GetObject', [ 'Bucket' => $bucket, 'Key' => $key, ]);
署名付き URL の作成
任意の Amazon S3 オペレーションに対する署名付き URL を作成できます。コマンドオブジェクトを作成するために getCommand
メソッドを使用して、そのコマンドを使用して createPresignedRequest()
メソッドを呼び出します。最終的にリクエストを送信するときは、返すリクエストと同じメソッドと同じヘッダーを必ず使用します。
サンプルコード
try { $preSignedUrl = $s3Service->preSignedUrl($command, $expiration); echo "Your preSignedUrl is \n$preSignedUrl\nand will be good for the next 20 minutes.\n"; echo $linebreak; echo "Thanks for trying the Amazon S3 presigned URL demo.\n"; } catch (AwsException $exception) { echo $linebreak; echo "Something went wrong: $exception"; die(); }
オブジェクトの URL の取得
Amazon S3 バケットに保存されたオブジェクトへのパブリック URL のみが必要な場合は、Aws\S3\S3Client::getObjectUrl()
メソッドを使用できます。このメソッドは、指定されたバケットとキーの署名なしの URL を返します。
サンプルコード
$preSignedUrl = $s3Service->preSignedUrl($command, $expiration);
重要
このメソッドから返された URL はバケットまたはキーが必ず存在することを検証しません。またこのメソッドではオブジェクトが認証されていないアクセスを許可することも保証されません。