Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails `获取';:找不到密钥:";S3“桶名”;(按键错误)_Ruby On Rails_Heroku_Amazon S3_Paperclip_Spree - Fatal编程技术网

Ruby on rails `获取';:找不到密钥:";S3“桶名”;(按键错误)

Ruby on rails `获取';:找不到密钥:";S3“桶名”;(按键错误),ruby-on-rails,heroku,amazon-s3,paperclip,spree,Ruby On Rails,Heroku,Amazon S3,Paperclip,Spree,我正在使用Spree 3.1。要使用Heroku,我需要AWS S3 tp商店图片。 在本地和Heroku上花了这么多时间 我想在这里分享一下: 在AWS S3文档中,为ID和访问密钥ID和机密访问密钥创建IAM用户。为了让它工作,我需要创建配置文件并设置管理员权限 仅将其粘贴到需要的环境中,例如:config/environments/production.rb和development.rb config.paperclip_defaults = { storage: :s3,

我正在使用Spree 3.1。要使用Heroku,我需要AWS S3 tp商店图片。
在本地和Heroku上花了这么多时间

我想在这里分享一下:

  • 在AWS S3文档中,为ID和访问密钥ID和机密访问密钥创建IAM用户。为了让它工作,我需要创建配置文件并设置管理员权限

  • 仅将其粘贴到需要的环境中,例如:config/environments/production.rb和development.rb

     config.paperclip_defaults = {
       storage: :s3,
       s3_credentials: {
       bucket: ENV.fetch('S3_BUCKET_NAME'),
       access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
       secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
       s3_region: ENV.fetch('AWS_REGION'),
       }
      }
    
    不要替换该值。相反 对于Heroku:

    heroku config:set S3_BUCKET_NAME=your-bucket-name AWS_ACCESS_KEY_ID=your-access-key-id AWS_SECRET_ACCESS_KEY=your-secret-access-key AWS_REGION=your-region
    
  • 至于本地: 我们在.env中添加值

        $ cat .env
         S3_BUCKET_NAME=your-bucket-name-development
         AWS_ACCESS_KEY_ID=your-access-key-id
         AWS_SECRET_ACCESS_KEY=your-secret-access-key
    
    不要“引用”那些必须替换的值

    config.paperclip_defaults = {
        storage: :s3,
        s3_credentials: {
            bucket: ENV.fetch('S3_BUCKET_NAME'),
            access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
            secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
            s3_region: ENV.fetch('AWS_REGION'),
        }
    }
    


    请将此部分合并到您的问题中。此.env文件位于何处?此.env文件位于项目的根目录中(Gemfile所在的位置)。我没有将此部分合并到问题中的原因是按照指南回答我自己的问题。
    config.paperclip_defaults = {
        storage: :s3,
            s3_credentials: {
            bucket: ENV['S3_BUCKET_NAME'],
            access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'],
            secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'],
            s3_region: ENV.fetch'AWS_REGION'],
        }
    }