Ruby on Rails - AWS-SDK配置文件

mar*_*iec 3 ruby-on-rails amazon-web-services aws-sdk

我在我的Rails项目中使用AWS-SDK gem,我想要一种初始化文件直接连接到我的repo并直接在Rails控制台中进行更改,如下所示:

    # At config/initializers/aws.rb

    Aws::S3::Client.new(
      :access_key_id => 'ACCESS_KEY_ID',
      :secret_access_key => 'SECRET_ACCESS_KEY'
    )
Run Code Online (Sandbox Code Playgroud)

我已经找了文档或教程,但对我来说并不清楚.我该怎么做?谢谢!

dja*_*ngo 7

我想你可以这样试试

把它放在aws.rb中

AWS.config(
   :access_key_id => ENV['ACCESS_KEY_ID'],
   :secret_access_key => ENV['SECRET_ACCESS_KEY']
)
Run Code Online (Sandbox Code Playgroud)

当您在任何需要的地方初始化对象时,将调用配置

s3 = AWS::S3.new
Run Code Online (Sandbox Code Playgroud)


Tre*_*owe 7

要在Rails应用程序中的AWS服务客户端之间共享配置,请从配置初始化程序配置AWS SDK for Ruby.

# config/initializers/aws-sdk.rb
Aws.config.update(
  credentials: Aws::Credentials.new('access-key-id', 'secret-access-key'),
  region: 'us-east-1',
)
Run Code Online (Sandbox Code Playgroud)

现在,您可以从任何服务构造客户端对象,而无需任何选项:

s3 = Aws::S3::Client.new
ec2 = Aws::EC2::Client.new
Run Code Online (Sandbox Code Playgroud)

请注意,您应该避免将凭据硬编码到您的应用程序中.如果访问源代码并且难以轮换凭据,则可能存在安全风险.

我建议通过ENV['AWS_ACCESS_KEY_ID']ENV['AWS_SECRET_ACCESS_KEY']/或EC2实例配置文件使用手动配置.


mar*_*iec 4

最后,我找到了解决方案:

  1. aws.rb在您的文件夹中创建该文件/config/initializers
  2. aws.rb写:

    S3Client = Aws::S3::Client.new(
        access_key_id: 'ACCESS_KEY_ID',
        secret_access_key: 'SECRET_ACCESS_KEY',
        region: 'REGION'
    ) 
    
    Run Code Online (Sandbox Code Playgroud)

就是这样。谢谢大家的答案!