環境
rails 5.0.7
ruby 2.5.1
AWS
S3
carrierwave
capistrano
unicorn
エラー
ローカル環境ではS3に画像を保存することができますが、本番環境では下記のエラーが出てしまいます。
######ブラウザ
Excon::Error::Forbidden <Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message>
コード
id,keyはsecrets.ymlから環境変数を参照しております。
ruby
1#carrierwave.rb 2require 'carrierwave/storage/abstract' 3require 'carrierwave/storage/file' 4require 'carrierwave/storage/fog' 5 6CarrierWave.configure do |config| 7 config.storage = :fog 8 config.fog_provider = 'fog/aws' 9 config.fog_credentials = { 10 provider: 'AWS', 11 aws_access_key_id: Rails.application.secrets.aws_access_key_id, 12 aws_secret_access_key: Rails.application.secrets.aws_secret_access_key, 13 region: 'ap-northeast-1' 14 } 15 16 config.fog_directory = 'app' 17 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/app' 18end
#secrets.yml production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %> aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
ruby
1lock '3.11.2' 2 3set :application, 'book-cafe-review-app' 4 5set :repo_url, 'git@github.com:usename/app.git' 6 7set :branch, 'master' 8 9set :deploy_to, '/var/www/projects/app' 10 11set :linked_files, %w{ config/secrets.yml } 12 13set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads') 14 15set :keep_releases, 5 16 17set :rbenv_ruby, '2.5.1' 18 19set :log_level, :debug 20 21namespace :deploy do 22 desc 'Restart application' 23 task :restart do 24 invoke 'unicorn:restart' 25 end 26 27 desc 'Create database' 28 task :db_create do 29 on roles(:db) do |host| 30 with rails_env: fetch(:rails_env) do 31 within current_path do 32 execute :bundle, :exec, :rake, 'db:create' 33 end 34 end 35 end 36 end 37 38 desc 'Run seed' 39 task :seed do 40 on roles(:app) do 41 with rails_env: fetch(:rails_env) do 42 within current_path do 43 execute :bundle, :exec, :rake, 'db:seed' 44 end 45 end 46 end 47 end 48 49 after :publishing, :restart 50 51 after :restart, :clear_cache do 52 on roles(:web), in: :groups, limit: 3, wait: 10 do 53 end 54 end 55 56 desc 'upload secrets.yml' 57 task :upload do 58 on roles(:app) do |host| 59 if test "[ ! -d #{shared_path}/config ]" 60 execute "mkdir -p #{shared_path}/config" 61 end 62 upload!('config/secrets.yml', "#{shared_path}/config/secrets.yml") 63 end 64 end 65 before :starting, 'deploy:upload' 66 after :finishing, 'deploy:cleanup'
ec2サーバーでaws configureコマンドやenv | grep AWSのコマンドを実行してもkeyは正常に設置されているようです。
しかしaws s3 lsコマンドでは
An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.
と表示されます。
IAMuserにはs3fullaccsessを与えています。
ローカルでは正常に保存されていることから、keyの値が間違えていることは無いと思うので、s3の設定か環境変数の問題だと思うのですが、ここからどうすればいいか分かりません。><
ご存知の方いらっしゃいましたらぜひ教えて下さい。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。