AWS SDK for PHP を使って、S3に保存されているファイルにアクセスするための署名付きURLを生成する方法を説明します。
前提条件
- AWS アカウントを持っていること
- AWS SDK for PHP がインストール済みであること
手順
1. AWS SDK for PHP を使用する準備
まず、AWS SDK for PHPをプロジェクトにインストールします。
“`bash
composer require aws/aws-sdk-php
2. S3Client インスタンスを作成する
次に、S3Client インスタンスを作成します。aws_access_key_id
と aws_secret_access_key
を設定してください。
<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'us-west-2',
'credentials' => [
'key' => 'aws_access_key_id',
'secret' => 'aws_secret_access_key',
],
]);
3. 署名付きURLを生成する
S3Clientの createPresignedRequest()
と createUrl()
メソッドを使用して、署名付きURLを生成します。以下のコードを参考にしてください。
<?php
// S3バケット名とオブジェクトキーを指定します
$bucket = 'your-bucket-name';
$key = 'your-object-key';
// 署名付きURLの有効期限を設定します (例: 1時間)
$expires = '+1 hour';
// 署名付きリクエストを作成します
$command = $s3Client->getCommand('GetObject', [
'Bucket' => $bucket,
'Key' => $key
]);
// 署名付きURLを生成します
$presignedRequest = $s3Client->createPresignedRequest($command, $expires);
$presignedUrl = (string)$presignedRequest->getUri();
echo "署名付きURL: {$presignedUrl}";
これで、生成された署名付きURLを使って、S3に保存されたファイルに一定期間アクセスできるようになります。
参考リンク
- 注意点
- 署名付きURLは、設定した有効期限が過ぎると自動的に無効になります。そのため、長期間有効なURLを作成する場合は、適切な有効期限を設定してください。
- 署名付きURLを生成する際、AWSアクセスキーとシークレットキーが必要です。これらの情報は秘密情報であり、第三者に漏れると不正アクセスのリスクがあります。そのため、セキュリティ対策を十分に行ってください。
- バケットポリシーを使ってバケット全体へのアクセス制限を設定できます。必要に応じて、バケットポリシーを設定してください。
まとめ
この記事では、PHPを使用して、AWS S3に保存されているファイルにアクセスするための署名付きURLを生成する方法を紹介しました。AWS SDK for PHPを使用すれば、簡単に署名付きURLを生成できるため、様々なアプリケーションで活用できます。
コメント