AWS SDK for PHP バージョン 3 での Amazon S3 の署名付き POST - AWS SDK for PHP

AWS SDK for PHP バージョン 3 での Amazon S3 の署名付き POST

署名付き URL と同様に、署名付き POST を使用すると、AWS 認証情報を付与しないでユーザーに書き込みアクセスを与えることができます。AwsS3PostObjectV4 のインスタンスを使用して、署名付き POST フォームを作成できます。

以下の例では、次の方法を示しています。

  • PostObjectV4 を使用して、S3 オブジェクトの POST アップロード形式のデータを取得します。

AWS SDK for PHP バージョン 3 用のすべてのサンプルコードは GitHub で入手できます。

認証情報

サンプルコードを実行する前に、「AWS SDK for PHP バージョン 3 の認証情報」の説明に従って AWS 認証情報を設定します。次に、「AWS SDK for PHP バージョン 3 の基本的な使用パターン」の説明に従って AWS SDK for PHP をインポートします。

PostObjectV4 の作成

PostObjectV4 のインスタンスを作成するには、次を提供する必要があります。

  • Aws\S3\S3Client のインスタンス

  • bucket

  • フォーム入力フィールドの連想配列

  • ポリシー条件の配列 (『Amazon S3 Developer Guide』の「ポリシーの作成」を参照)

  • ポリシーの有効期限文字列 (省略可能、デフォルトは 1 時間)。

インポート

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;

サンプルコード

$client = new S3Client([ 'profile' => 'default', 'version' => 'latest', 'region' => 'us-west-2', ]); $bucket = 'mybucket'; // Set some defaults for form input fields $formInputs = ['acl' => 'public-read']; // Construct an array of conditions for policy $options = [ ['acl' => 'public-read'], ['bucket' => $bucket], ['starts-with', '$key', 'user/eric/'], ]; // Optional: configure expiration time string $expires = '+2 hours'; $postObject = new \Aws\S3\PostObjectV4( $client, $bucket, $formInputs, $options, $expires ); // Get attributes to set on an HTML form, e.g., action, method, enctype $formAttributes = $postObject->getFormAttributes(); // Get form input fields. This will include anything set as a form input in // the constructor, the provided JSON policy, your AWS access key ID, and an // auth signature. $formInputs = $postObject->getFormInputs();