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

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

ただいまの
回答率

88.80%

LaravelでAmazonS3に画像をアップロードしようとするとCredentialsExceptionとなる

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,185

_kenta_watanab

score 12

前提・実現したいこと

Laravel5を使用しAmazonS3に画像をアップロードしたいです。
参考にしたサイト:https://qiita.com/tiwu_official/items/ecb115a92ebfebf6a92f#s3%E7%94%A8%E3%81%AEiam%E3%82%92%E4%BD%9C%E6%88%90

発生している問題・エラーメッセージ

Aws \ Exception \ CredentialsException 
Error retrieving credentials from the instance profile metadata server. (cURL error 28: Connection timed out after 1000 milliseconds (see http://curl.haxx.se/libcurl/c/libcurl-errors.html))

該当のソースコード

.envファイル

AWS_ACCESS_KEY_ID={アクセスキー}
AWS_SECRET_ACCESS_KEY={シークレットアクセスキー}
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET={BUCKET名}

filesystems.php

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default filesystem disk that should be used
    | by the framework. The "local" disk, as well as a variety of cloud
    | based disks are available to your application. Just store away!
    |
    */

    'default' => env('FILESYSTEM_DRIVER', 'local'),

    /*
    |--------------------------------------------------------------------------
    | Default Cloud Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Many applications store files both locally and in the cloud. For this
    | reason, you may specify a default "cloud" driver here. This driver
    | will be bound as the Cloud disk implementation in the container.
    |
    */

    'cloud' => env('FILESYSTEM_CLOUD', 's3'),

    /*
    |--------------------------------------------------------------------------
    | Filesystem Disks
    |--------------------------------------------------------------------------
    |
    | Here you may configure as many filesystem "disks" as you wish, and you
    | may even configure multiple disks of the same driver. Defaults have
    | been setup for each driver as an example of the required options.
    |
    | Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace"
    |
    */

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
        ],

    ],

];

コントローラー

public function insertInfo(Request $request){

   $file = $request->file('file');

   $path = Storage::disk('s3')->putFile('/', $file, 'public');

   return redirect('/torokuGamen')->with('message', $name);
 }

原因が分かる方ご教授頂けますと幸いです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/06/02 06:33

    細かいですけどLarabel→Laravel
    名前が決まっているものはコピペが基本です。

    キャンセル

  • _kenta_watanab

    2019/06/02 07:09

    失礼しました。ご指摘ありがとうございます。修正しました。

    キャンセル

  • tail12

    2019/06/02 20:06

    Credentialsのエラーなので、アクセスキーか、シークレットアクセスキーが間違っている可能性があるのですが、そちらは問題なさそうでしょうか。

    キャンセル

  • _kenta_watanab

    2019/06/02 22:00

    ありがとうございます。ご指摘頂き再度見直してみたところ、誤って2箇所に定義しておりました。先に書いてある定義は中身が空なのでそちらが優先されておりました。

    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    AWS_DEFAULT_REGION=us-northeast-1
    AWS_BUCKET=

    PUSHER_APP_ID=
    PUSHER_APP_KEY=
    PUSHER_APP_SECRET=
    PUSHER_APP_CLUSTER=mt1

    MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
    MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

    AWS_ACCESS_KEY_ID={アクセスキー}
    AWS_SECRET_ACCESS_KEY={シークレットアクセスキー}
    AWS_DEFAULT_REGION=ap-northeast-1
    AWS_BUCKET={BUCKET名}

    キャンセル

回答 1

check解決した方法

0

誤って2箇所にAWSの定義をしておりました。
先に書いてある定義は中身が空なのでそちらが優先されておりました。

.envファイル

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-northeast-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

AWS_ACCESS_KEY_ID=AKIAYD3GMVHUL7B33QUM
AWS_SECRET_ACCESS_KEY=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
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=memorypicture


AWS_ACCESS_KEY_ID={アクセスキー}
AWS_SECRET_ACCESS_KEY={シークレットアクセスキー}
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET={BUCKET名}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/06/02 22:09

    解決してよかったです!

    キャンセル

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

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る