明日も楽をするために

めんどくさがりなITエンジニアが書くメモ帳

S3で一定時間オブジェクトにアクセス可能なURLの生成

プライベート制限しているバケットのオブジェクトをいつもはGetObjectでデータを取得してbase64エンコードに加工して~
みたいな事をやっていたのですが、どうやら一定時間だけアクセスを許可した署名付きURLが発行できる仕組みがあったので共有します

<?php
//Sample Code
$s3 = S3Client::factory([
    'credentials' => [
        'key' => $accessKey,
        'secret' => $secretKey,
    ],
    'version' => 'latest',
    'region'  => 'ap-northeast-1',
]);

$cmd = $s3->getCommand('GetObject', [
    'Bucket' => 'my-bucket',
    'Key' => 'testKey'
]);

$request = $s3->createPresignedRequest($cmd, '+20 minutes');
echo $presignedUrl = (string)$request->getUri();

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