Amazon S3の署名バージョンの廃止に伴う改修について

0

お世話になっております。

下記の通り、Amazon S3で署名バージョン2が2019年6月23日に使用できなくなる件の改修方法について
質問させていただきます。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-sig2-deprecation

現在業務では、AWSPHPSDKv2 を使用しており、バージョンアップは難しいため、
PHP SDK v2 用の Amazon S3 サービスクライアントを構築する場合は、signature パラメータを v4 に設定する設定を取り入れようとしております。

ただ、サーバ側からではなく、クライアント側から直接下記のようにS3へファイルをアップロードする処理があります。
1.画面から対象のZIPファイルを選択し、選択されたZIPファイルの情報をサーバに送る
2.サーバがクライアントの認証及びS3へアクセスするためのトークンを発行する
3.サーバからもらったポリシーとシグニチャと一緒に選択されたZIPファイルをS3に送る

上記の処理のうち、2でS3へアクセスするためのトークンを発行しているのですが、
署名バージョンを指定する設定が既存の処理に既に組み込まれており、署名バージョン4を明記する
ためにどこを改修を行えばよいかがわかりません。
下記にトークン作成処理を記述します。

$expiration = gmdate ( "Y-m-d\TH:i:s\Z", strtotime ( 20 ) ); // Policy Limit
$acl = 'private'; // set acl (private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control)
$status = '200'; // return this status code when upload success.
$maxSize = 1024;

    $policy = <<<EOS  
{  
    "expiration": "$expiration",  
    "conditions": \[  
        {"bucket": "接続先バケット名"},  
        \["starts-with", "\$key", "$imageDir/"],  
        {"acl": "$acl"},  
        {"success_action_status": "$status"},  
        \["starts-with", "\$Content-Type", ""],  
        \["content-length-range", 0, $maxSize]  
    ]  
}  

EOS;

$signature = hash_hmac ( "sha1", base64_encode ( $policy ), AWSセレクトキー, true );←ここで署名を作成している

    $resultArray =  array(  
            'url' => 'https://' . 接続先バケット名 . '.s3.amazonaws.com/',  
            'form' => array (  
                    'key' => ファイルディレクトリパス,  
                    'AWSAccessKeyId' => AWSキー,  
                    'acl' => $acl,  
                    'success_action_status' => $status,  
                    'policy' => base64_encode ( $policy ),  
                    'signature' => base64_encode ( $signature ),  
                    'Content-Type' => 'application/zip'  
            )  

   );  

署名バージョン4を使用するように明記するにはどのように設定すればよいのか、アドバイスの程お願いいたします。

参考URL:https://qiita.com/supertaihei02/items/a4f663d837e51f2f72b0

ncd-aws
質問済み 5年前256ビュー
2回答
0

直接の回答にはなりませんが、具体的な実装例は以下が参考になると思います。

https://docs.aws.amazon.com/ja_jp/general/latest/gr/signature-v4-examples.html

semnil
回答済み 5年前
0

ご回答いただきまして、ありがとうございました。
こちらを参考にして、解決致しました。

ncd-aws
回答済み 5年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン