翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon S3 の署名付き URLAWS SDK for PHPバージョン 3
Authorization HTTP ヘッダーを使用する代わりに、必要な情報をクエリ文字列パラメーターとして渡すことで、特定の種類のリクエストを認証できます。これは、サードパーティーのブラウザで、リクエストのプロキシを行わずにプライベートの Amazon S3 データに直接アクセスできるようにするときに便利です。これを行うには、「署名付き」のリクエストを作成し、エンドユーザーのブラウザが取得できる URL としてエンコードします。さらに、署名付きのリクエストは、有効期限を指定することで制限できます。
以下の例では、次の方法を示しています。
-
署名付き URL を作成し、createPresignedRequest を使用して S3 オブジェクトを取得します。
AWS SDK for PHP 用のすべてのサンプルコードは GitHub
認証情報
サンプルコードを実行する前に、AWSそれに関しては、「」で説明されています。 認証情報の設定。次にをインポートしますAWS SDK for PHPについては、で説明しています。基本的な使用法。
署名付きリクエストの作成
Amazon S3 オブジェクトへの署名付き URL を取得するには、Aws\S3\S3Client::createPresignedRequest()
方法。このメソッドでは、Aws\CommandInterface
オブジェクトと期限切れタイムスタンプを受け付け、署名付き Psr\Http\Message\RequestInterface
オブジェクトを返します。リクエストの getUri()
メソッドを使用して、オブジェクトの署名付き URL を取得できます。
最も一般的なシナリオは、オブジェクトを GET するために、署名付き URL を作成します。
インポート
require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;
サンプルコード
$s3Client = new Aws\S3\S3Client([ 'profile' => 'default', 'region' => 'us-east-2', 'version' => '2006-03-01', ]); $cmd = $s3Client->getCommand('GetObject', [ 'Bucket' => 'my-bucket', 'Key' => 'testKey' ]); $request = $s3Client->createPresignedRequest($cmd, '+20 minutes');
署名付き URL の作成
Amazon S3 オペレーションの署名付き URL は、getCommand
コマンドオブジェクトを作成し、createPresignedRequest()
メソッドをコマンドで指定します。最終的にリクエストを送信するときは、返すリクエストと同じメソッドと同じヘッダーを必ず使用します。
サンプルコード
//Creating a presigned URL $cmd = $s3Client->getCommand('GetObject', [ 'Bucket' => 'my-bucket', 'Key' => 'testKey' ]); $request = $s3Client->createPresignedRequest($cmd, '+20 minutes'); // Get the actual presigned-url $presignedUrl = (string)$request->getUri();
オブジェクトの URL の取得
Amazon S3 バケットに保存されたオブジェクトへのパブリック URL のみが必要な場合は、Aws\S3\S3Client::getObjectUrl()
方法。このメソッドは、指定されたバケットとキーの署名なしの URL を返します。
サンプルコード
//Getting the URL to an object $url = $s3Client->getObjectUrl('my-bucket', 'my-key');
このメソッドから返された URL はバケットまたはキーが必ず存在することを検証しません。またこのメソッドではオブジェクトが認証されていないアクセスを許可することも保証されません。