メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for PHP を使用したサーバー側の暗号化の指定

このトピックでは、AWS SDK for PHP のクラスを使用して、Amazon S3 にアップロードするオブジェクトにサーバー側の暗号化を追加する手順を示します。

注記

このトピックでは、既に AWS SDK for PHP の使用と PHP サンプルの実行 の説明が実行されていて、AWS SDK for PHP が正しくインストールされていることを前提としています。

オブジェクトを Amazon S3 にアップロードする際には、 Aws\S3\S3Client::putObject() メソッドを使用できます。 オブジェクトのアップロード方法を示す作業サンプルについては、「AWS SDK for PHP を使用したオブジェクトのアップロード」を参照してください。

アップロードリクエストにそのリクエストの x-amz-server-side-encryption ヘッダー(「REST API を使用したサーバー側の暗号化の指定」を参照)を追加する場合は、次の PHP コード例に示すように、値 AES256 を使用して array パラメーターの ServerSideEncryption キーを指定します。

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // $filepath should be absolute path to a file on disk $filepath = '*** Your File Path ***'; // Instantiate the client. $s3 = S3Client::factory(); // Upload a file with server-side encryption. $result = $s3->putObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'SourceFile' => $filepath, 'ServerSideEncryption' => 'AES256', ));

レスポンスでは、x-amz-server-side-encryption ヘッダーが返されます。このヘッダーには、オブジェクトデータの暗号化に使用された暗号化アルゴリズムの値が設定されています。

マルチパートアップロード API を使用して大容量のオブジェクトをアップロードするときに、アップロード中のオブジェクトに対してサーバー側の暗号化を指定できます。

使用された暗号化アルゴリズムの確認

次の PHP コード例に示すように、Aws\S3\S3Client::headObject() メソッドを呼び出し、オブジェクトメタデータを取得して、既存のオブジェクトの暗号化状態を確認できます。

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Check which server-side encryption algorithm is used. $result = $s3->headObject(array( 'Bucket' => $bucket, 'Key' => $keyname, )); echo $result['ServerSideEncryption'];

既存のオブジェクトのサーバー側暗号化の変更(コピーオペレーション)

Aws\S3\S3Client::copyObject() メソッドを使用してオブジェクトのコピーを作成し、コピー元のオブジェクトを削除することで、既存のオブジェクトの暗号化状態を変更できます。デフォルトでは、コピー先は copyObject() によって暗号化されません。ただし、値 AES256 を指定して array パラメーターの ServerSideEncryption キーを使用し、コピー先オブジェクトのサーバー側の暗号化を明示的にリクエストする場合は異なります。以下の PHP コード例では、オブジェクトのコピーを作成し、コピー先のオブジェクトにサーバー側の暗号化を追加しています。

Copy
use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Copy an object and add server-side encryption. $result = $s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => $targetKeyname, 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", 'ServerSideEncryption' => 'AES256', ));

オブジェクトのコピー方法を示す作業サンプルについては、「AWS SDK for PHP を使用したオブジェクトのコピー」を参照してください。

関連リソース