Как реализовать Amazon V4 Signature для S3 через Laravel? - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь реализовать подпись Amazon V4 для S3 через Laravel, я просмотрел множество документов, но ни одна из них не работает или я делаю неправильно, поэтому я попытался добавить зависимость для создания подписей V4

        $filename       = request()->file('file')->getClientOriginalName();
        $acl            = 'private';
        $algorithm      = 'AWS4-HMAC-SHA256';
        $time           = time();
        $longdate       = gmdate('Ymd\THis\Z', $time);
        $successStatus  = "201";
        $expires        = "86400";

        $accesKeyId     = env('AWS_ACCESS_KEY_ID');
        $secret         = env('AWS_SECRET_ACCESS_KEY'); 


                $credential = join('/', [
                    $accesKeyId, # Your AWS access key ID
                    gmdate('Ymd', $time),
                    'region',
                    's3',
                    'aws4_request',
                ]);
                # Example policy
                $policy = [
                    'expiration' => gmdate('Y-m-d\TH:i:s\Z', strtotime('+2 hours', $time)),
                    'conditions' => [
                        ['acl' => $acl],
                        ['bucket' => 'sample-bucket'],
                        ['starts-with', '$key', ''],
                        ['x-amz-credential' => $credential],
                        ['x-amz-algorithm' => $algorithm],
                        ['x-amz-date' => $longdate],
                    ],
                ];

                $sigGen = new SignatureV4(
                    $secret, 
                    $policy
                );


               $signature = $sigGen->generateSignature();

Он создает только подпись для V4, я точно не знаю, как отправить его с помощью запроса на загрузку laravel на S3, это код, который я пытался загрузить,

Storage::disk('s3')->put(
                $filename,
                file_get_contents(request()->file('file'))
              );

А также япрошел учебник ,

Этот учебник загружает только файлы с подписями V4, что мне нужно,

  • Можно ли скачать, загрузить, удалитьи перечислять файлы с помощью подписей V4 в laravel?
  • Является ли вышеупомянутое руководство единственным способом реализации подписей V4 или любым другим способом?
  • Могу ли я реализовать V4 с предоставленным выше кодом?

Я не знаю, что я делаю здесь неправильно, пожалуйста, помогите мне заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...