AWS S3 署名付きURLを生成する方法 (PHP)

aws

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_idaws_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を生成できるため、様々なアプリケーションで活用できます。

コメント

タイトルとURLをコピーしました