質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1030閲覧

Laravel5  外部サーバーからAPIで取得した(AWS S3)画像を自分のサーバーに置きたいのです

退会済みユーザー

退会済みユーザー

総合スコア0

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/02/01 08:38

外部サーバーからAPIで取得した(AWS S3)画像を自分のサーバーに置きたいのですが下記のエラーでできないです、
教えてくださいませ!!

外部:AWS S3
自分:AWS Linux
言語:Laravel5

エラー:

(1/1) ErrorException file_get_contents(<?xml version="1.0" encoding="UTF-8"?> <Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>xxxxxxxxxxxxx</AWSAccessKeyId><StringToSign>GET Thu, 01 Feb 2018 08:24:10 +0000 /xxxxxxxxxx-bucket/</StringToSign><SignatureProvided>RwCVSdQpjZixoSICSgNGfMAxHHA=</SignatureProvided><StringToSignBytes>47 45 54 0a 0a 0a 54 68 75 2c 20 30 31 20 46 65 62 20 32 30 31 38 20 30 38 3a 32 34 3a 31 30 20 2b 30 30 30 30 0a 2f 6e 65 6f 2d 63 61 72 65 65 72 2d 73 74 61 67 69 6e 67 2d 62 75 63 6b 65 74 2f</StringToSignBytes><RequestId>194FCB18F00D2897</RequestId><HostId>7b9r8HF2HNqoX0ef9l6uaYQDR6w+m+1PCaSHqA9mX8Z3OogVsjXDVkXnJ6RXc8tNM9WXj0bZFgw=</HostId></Error>): failed to open stream: No such file or directory

ソースコード:

<?php // ----- Signature ----- // HTTP-Verb $httpVerb = 'GET' . "\n"; // Content-MD5 $contentMd5 = "\n"; // Content-Type $contentType = "image/jpeg \n"; // Date $datetime = new DateTime('now', new DateTimeZone('UTC')); $date = $datetime->format(DateTime::RFC1123) . "\n"; echo $date; // CanonicalizedAmzHeaders $canonicalizedAmzHeaders = ''; // CanonicalizedResource $canonicalizedResource = '/'; // StringToSign $stringToSign = $httpVerb . $contentMd5 . $contentType . $date . $canonicalizedAmzHeaders . $canonicalizedResource; // Signature $accessKeyId='xxxxxxxxxxxx'; $secretAccessKey=''; $hash = hash_hmac('sha1', $stringToSign, $secretAccessKey, true); $signature = base64_encode($hash); $authorization = 'AWS' . ' ' . $accessKeyId . ':' . $signature; $ch = curl_init('https://xxxxxxx-bucket.s3-ap-northeast-1.amazonaws.com'); $headers = array( 'Authorization: AWS '.$accessKeyId.':'.$signature, 'Date: ' . $date, ); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $body = curl_exec($ch); curl_close($ch); var_dump($body); ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

そもそもLaravel使っててなんでこんな無駄なことを…。
Storage使えばS3から取得してローカルに保存もすぐにできる。
https://readouble.com/laravel/5.5/ja/filesystem.html

投稿2018/02/01 10:38

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

"The request signature we calculated does not match the signature you provided. Check your key and signing method."
シグネチャがマッチしない。あなたのkeyとsigning methodを確認しろって出てますね。

投稿2018/02/01 09:20

unz.hori

総合スコア1057

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/01 09:48

keyは確かにあっていますので、signing methodの問題ですか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問