(1)AWSにログインし、サービスのIAMをクリックします
(2)「個々のIAMユーザの作成」「ユーザの管理」を順にクリックします
(3)ユーザの追加をクリックします
(4)ユーザ名を入力し、「プログラムによるアクセス」にチェックを入れ、「次のステップ:アクセス権限」をクリックします。
(5)「既存のポリシーを直接アタッチ」後「AmazonS3FullAcces」にチェックを入れ、「次のステップ:タグ」をクリックします。
(6)「次のステップ:確認」をクリックします
(7)「ユーザの作成」をクリックします
(8)「csvのダウンロード」をクリックし、認証情報の記述されたcsvを保存します。
※後の処理で必要なので、必ず処理を行ってください
(1)IAMのトップページから「ユーザ」->「作成したユーザ名」をクリックします
(2)「認証情報」->「管理」をクリックします
(3)コンソールへのアクセスを「有効化」、パスワードの設定を「自動生成パスワード」にチェックを入れ「適用」をクリックします
(4)認証情報と同様に、必ず「csvのダウンロード」をクリックし、アカウント情報を保存してください
(1)「サービス」->「S3」をクリックし、s3のページを表示します
(2)「パケットの作成」をクリックします
(3)バケット名に任意の名前を入力、リージョンは「アジアパシフィック(東京)」を選択し「次へ」をクリックします
(4)パブリックアクセスをすべてブロックのチェックを外し(※要確認)し、パケットを作成をクリックします
(1)「IAM」->「ユーザー」->「作成したユーザー」をクリックします
(2)「ユーザのARN」の右側のアイコンをクリックしてユーザのARNをコピーします。
(3)「S3」->「作成したバケット」をクリックします。
(4)「バケットポリシーエディタ ARN:」の右側の文字列をコピーします(バケットのARN) 「アクセス権限」->「バケットポリシー」->「ポリシージェネレーター」をクリックします。
(5)別ウィンドウでポリシージェネレーターが開かれるので、以下の値を設定し「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
(6)「Generate Policy」をクリックします。
(7)生成されたPolicyを全選択し、コピーします
(8)コピーしたPolicyをバケットポリシーエディタへ貼り付け、「保存」をクリックします
(1)GEMFILEにfog-awsを追加し、bundle installコマンドでGEMを取り込みます
gem 'fog-aws'
(2)app/uploaders/XXXX_uploader.rb(carrierwaveで作成)を以下の通り修正します
【修正前】
storage :file
【修正後】
storage :fog
または環境毎に設定
if Rails.env.production?
storage :fog
else
storage :file
end
(3)config/initializersにcarrierwave.rbを以下の内容で作成します
require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'
CarrierWave.configure do |config|
config.storage :fog
config.fog_provider = 'fog/aws'
config.fog_directory = '<作成したパケット名>'
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: '<上記処理で保存したcsvのaccess_key_idを記述>',
aws_secret_access_key: '<上記処理で保存したcsvのsecret_access_keyを記述>',
region: 'ap-northeast-1',
path_style: true
}
end