Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
58
Help us understand the problem. What is going on with this article?
@nobu0717

Rails, Laravel(画像アップロード)向けAWS(IAM:ユーザ, S3:バケット)の設定

Rails、Laravel画像アップロード向けのAWSの設定です。
具体的には、IAMのユーザ作成とS3のバケットの作成手順になります。
※Rails、Laravel以外での環境での動作確認は未確認です。

RailsでAWSへアップロードはこちら
LaravelでAWSへアップロードはこちら

前提

AWSのアカウント作成済み

ユーザの作成

「サービス」->「IAM」をクリックし、IAMのトップページへ移動します。

0.png

「個々のIAMユーザの作成」->「ユーザの管理」を順にクリックしてください。

01.png

「ユーザを追加」をクリックしてください。

02.png

「ユーザ名」を入力し、「プログラムによるアクセス」にチェックを入れてください。
「次のステップ:アクセス権限」をクリックしてください。

03.png

「既存のポリシーを直接アタッチ」を選択し「AmazonS3FullAcces」にチェックを入れてください。
「次のステップ:タグ」をクリックしてください。

04.png

「次のステップ:確認」をクリックしてください。

05.png

設定した情報が表示されていることを確認し、「ユーザの作成」をクリックしてください。

06.png

必ず「csvのダウンロード」をクリックし、認証情報を保存してください。

07.png

ユーザのパスワードの設定

IAMのトップページから「ユーザ」->「作成したユーザ名」をクリックしてください。

08.png

「認証情報」->「管理」をクリックしてください。

09.png

コンソールへのアクセスを「有効化」、パスワードの設定を「自動生成パスワード」にチェックを入れ「適用」をクリックしてください。

10.png

認証情報と同様に、必ず「csvのダウンロード」をクリックし、アカウント情報を保存してください。

11.png

ログインの確認

IAMのトップページからIAMユーザのサインインリンクをコピーし、ブラウザのアドレスに貼り付けてください。

12.png

ログイン画面が表示されたら、アカウント情報を入力してサインインをクリックしてください。

ログインできれば成功です。

二段階認証(推奨)

IAMのトップページから「ユーザー」->「対象のユーザー」->「認証情報」->「MFAデバイスの割り当て:管理」をクリックしてください。

13.png

「仮想MFAデバイス」->「続行」をクリックしてください。

14.png

その後の手順は以下の記事を参考にしてください。
AWSアカウントを2段階認証にしてみた(MFA&Google Authenticator)

バケットの作成

上部のメニューから「サービス」->「S3」をクリックしてください。

15.png

「バケットを作成する」をクリックしてください。

16.png

バケット名に任意の名前を入力、リージョンは「アジアパシフィック(東京)」を選択し「次へ」をクリックしてください。

17.png

何も変更せずに「次へ」をクリックしてください。

18.png

以下の操作をし、「次へ」をクリックしてください。
・「パブリックアクセスをすべてブロック」のチェックを外す
・「新規のパブリックバケットポリシーまたはアクセスポイントポリシーを介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする」にチェックを入れる
・「任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介したバケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする」にチェックを入れる

s3.png

「バケットを作成」をクリックしてください。

20.png

以上でバケットの作成は完了です。

バケットポリシーの追加

上部の「サービス」->「IAM」->「ユーザー」->「作成したユーザー」をクリックします。

21.png

「ユーザのARN」の右側のアイコンをクリックしてユーザのARNをコピーします。

22.png

上部の「サービス」->「S3」->「作成したバケット」をクリックします。

23.png

「バケットポリシーエディタ ARN:」の右側の文字列をコピーします(バケットのARN
「アクセス権限」->「バケットポリシー」->「ポリシージェネレーター」をクリックします。

24.png

別ウィンドウでポリシージェネレーターが開かれるので、以下を設定して「Add Statement」をクリックしてください。

  • 「Select Type of Policy」: S3 Bucket Policy
  • 「Effect」: Allow
  • 「Principal」: コピーしたユーザのARN
  • 「AWS Service」: Amazon S3
  • 「Actions」:All Actions('*')
  • 「Amazon Resource Name(ARN)」:コピーしたバケットのARN

25.png

「Generate Policy」をクリックします。

26.png

生成されたPolicyを全選択し、コピーしてください。

27.png

コピーしたPolicyをバケットポリシーエディタへ貼り付け、「保存」をクリックします。

28.png

これでバケットポリシーの設定は完了です。

最後に

以上でAWSの設定は完了です。
作成した認証情報を使用して、下記のように必要に応じて環境変数等に設定して下さい。

AWS_ACCESS_KEY_ID= csvの認証情報に記載されているAccess key ID
AWS_SECRET_ACCESS_KEY= csvの認証情報に記載されているSecret access key
AWS_DEFAULT_REGION=ap-northeast-1 (リージョンをアジアパシフィック東京で作成したため)
AWS_BUCKET= 作成したバケット名
参考

AWSアカウントを2段階認証にしてみた(MFA&Google Authenticator)

58
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
nobu0717

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
58
Help us understand the problem. What is going on with this article?