Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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 Rails-Docker-AWS机密管理器_Ruby On Rails_Amazon Web Services - Fatal编程技术网

Ruby on rails Rails-Docker-AWS机密管理器

Ruby on rails Rails-Docker-AWS机密管理器,ruby-on-rails,amazon-web-services,Ruby On Rails,Amazon Web Services,我们有一个停靠的ROR 4.2应用程序 我正在使用AWS secrets manager存储邮件用户名和密码 第一次尝试,如果我使用以下。 环境/staging.rb/environments/production.rb config.action_mailer.smtp_settings = { :user_name => 'apikey', :password => ENV['apikey'], :domain => "xxxx", :a

我们有一个停靠的ROR 4.2应用程序

我正在使用AWS secrets manager存储邮件用户名和密码

第一次尝试,如果我使用以下。 环境/staging.rb/environments/production.rb

config.action_mailer.smtp_settings = {
  :user_name => 'apikey',
  :password => ENV['apikey'],
  :domain => "xxxx",
  :address => 'xxxx',
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true
}
我获取
451身份验证失败:在我尝试发送电子邮件时无法进行身份验证。我可以清楚地访问docker容器中的ENV['apikey']

所以我试着跟着

module Aws
   class Config
     require 'aws-sdk-secretsmanager'
     require 'base64'

      def initialize(config_name)
       @secret_name = Rails.env.production? ? "aaaa" : "bbbbb"
       @region_name = "ap-southeast-2"
       @config_name = config_name
     end

      def config

        client = Aws::SecretsManager::Client.new(region: @region_name)


       begin
         get_secret_value_response = client.get_secret_value(secret_id: @secret_name)
       rescue Aws::SecretsManager::Errors::DecryptionFailure => e

         raise
       rescue Aws::SecretsManager::Errors::InternalServiceError => e

         raise
       rescue Aws::SecretsManager::Errors::InvalidParameterException => e

         raise
       rescue Aws::SecretsManager::Errors::InvalidRequestException => e

         raise
       rescue Aws::SecretsManager::Errors::ResourceNotFoundException => e

         raise
       else


         if get_secret_value_response.secret_string
           secret = get_secret_value_response.secret_string
         else
           decoded_binary_secret = Base64.decode64(get_secret_value_response.secret_binary)
         end

          conf = {}
         if secret
           secret = JSON.parse(secret)
           conf = { @config_name.to_sym => secret["#{@config_name}"]}
         end
         conf
       end
     end
   end
 end
:password => Aws::Config.new('apices').config[:apikey]
有以下几点

module Aws
   class Config
     require 'aws-sdk-secretsmanager'
     require 'base64'

      def initialize(config_name)
       @secret_name = Rails.env.production? ? "aaaa" : "bbbbb"
       @region_name = "ap-southeast-2"
       @config_name = config_name
     end

      def config

        client = Aws::SecretsManager::Client.new(region: @region_name)


       begin
         get_secret_value_response = client.get_secret_value(secret_id: @secret_name)
       rescue Aws::SecretsManager::Errors::DecryptionFailure => e

         raise
       rescue Aws::SecretsManager::Errors::InternalServiceError => e

         raise
       rescue Aws::SecretsManager::Errors::InvalidParameterException => e

         raise
       rescue Aws::SecretsManager::Errors::InvalidRequestException => e

         raise
       rescue Aws::SecretsManager::Errors::ResourceNotFoundException => e

         raise
       else


         if get_secret_value_response.secret_string
           secret = get_secret_value_response.secret_string
         else
           decoded_binary_secret = Base64.decode64(get_secret_value_response.secret_binary)
         end

          conf = {}
         if secret
           secret = JSON.parse(secret)
           conf = { @config_name.to_sym => secret["#{@config_name}"]}
         end
         conf
       end
     end
   end
 end
:password => Aws::Config.new('apices').config[:apikey]
这是在部署时产生的。当我访问AWS密钥时,在开发环境中工作良好

Step 22/32 : RUN su - app -c 'cd /home/app/myapp && RAILS_ENV=production bundle exec rake assets:precompile'

[91mrake aborted!
Aws::Errors::MissingCredentialsError: unable to sign request without credentials set
有人能解释一下吗

谢谢