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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

3608閲覧

1つのWeb(PHP/Laravel)から2つのAWSのIAMユーザでアクセスしたい

tomy_

総合スコア13

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

AWS(Amazon Web Services)

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

1グッド

2クリップ

投稿2018/10/19 07:00

前提・実現したいこと

PHP/Laravel5.6を利用しています。

1つWebサーバから
あるシステムでAWS契約(A)のS3バケットと
別のシステムでAWS契約(B)のS3バケットとの両方を参照したいです。

/config/filesystems.phpには、(A)のIAMユーザのアクセスキーなどを設定しており、
(A)のS3バケットポリシー設定でこのIAMユーザにてアクセスできます。

(B)からは別のIAMユーザを払い出されており、それによって(B)のS3バケット
へアクセスするという要件があります。

AWS S3ストレージでfilesystems.phpにアクセスキーなど指定するところで
動的に異なるIAMユーザのアクセスキーに変更して操作したいと思ってます。

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

filesystems.phpに設定した、envから取得する値1つしか動作できません。

filesystems.phpの中の配列を分岐するにもフレームワーク上で管理されているようなので
どのタイミングで、どのパラメータを使って切りかえたよいものか、
また、それができるのかどうかがわかりません。

該当のソースコード

'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'),``` ### 試したこと AWS S3ストレージでfilesystems.phpにアクセスキーなど指定すると S3に対してアップロード、ダウンロードできることは確認できています。 .envファイルのS3アクセスキー2回修正して、 それぞれのIAMユーザでの動作S3バケットポリシーで アクセスできる、できないなど異なる動作がされていることは確認しました。 ### 補足情報(FW/ツールのバージョンなど) (A)のIAMユーザで(B)のS3バケットが見れるように (B)側に設定してもらうしかないでしょうか?
Toritaus👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

Laravelのファイルストレージは同じドライバに対して複数のディスクを持てるので、(B)の方の設定をconfig/filesystem.phpに対して適当な名前で追加してやればいけると思います。(必要な環境変数も.envに追加してください)

php

1 's3_b' => [ 2 'driver' => 's3', 3 'key' => env('AWS_ACCESS_KEY_ID_B'), 4 'secret' => env('AWS_SECRET_ACCESS_KEY_B'), 5 'region' => env('AWS_DEFAULT_REGION_B'), 6 'bucket' => env('AWS_BUCKET_B'), 7 'url' => env('AWS_URL_B'), 8 ...

あとは使用するときにdisk()メソッドでディスク名を指定してください。

php

1$contents = Storage::disk('s3_b')->get('file.jpg');

投稿2018/10/29 00:40

crhg

総合スコア1175

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

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

tomy_

2018/11/05 04:43

ありがとうございます。まだ初心者でLaravel内の使い方がわからずで、切り替え前提でS3でのStorageの使い方がわかりづらかったので、S3自体をAWSCLIを使うようにしていました。ご回答いただいた内容で試してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問