【问题标题】:Production Server Uploading to Staging S3生产服务器上传到暂存 S3
【发布时间】:2020-06-06 00:02:38
【问题描述】:

我有一个在 ubuntu 服务器上运行的应用程序。我有生产模式和暂存模式。

问题是在生产站点上执行的与从 S3 存储桶上传和检索图像相关的操作正在与我的登台相同的存储桶中执行。当我的配置设置不同时。

生产.rb

config.s3_bucket = 'bucket-production'
config.s3_path = 'https://bucket-production.s3.us-east-2.amazonaws.com/'

staging.rb && development.rb

config.s3_bucket = 'bucket-staging'
config.s3_path = 'https://bucket-staging.s3.us-east-2.amazonaws.com/'

storage.yml

    amazon:
      service: S3
      access_key_id:  <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
      secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
      region: us-east-2
      bucket: bucket-staging
      endpoint: http://bucket-staging.us-east-2.amazonaws.com

我认为它可能与 storage.yml 相关,但我删除了整个文件并重新启动了 localhost 服务器,但它并没有改变任何东西。 storage.yml 只能生产吗?

另外,我的日志正在从生产记录到登台。

【问题讨论】:

    标签: ruby-on-rails amazon-s3


    【解决方案1】:

    我想问一下在 AWS 中运行的 prod 服务器/登台服务器(Ubuntu)。如果是,您必须将 IAM ROLE 附加到服务器,该服务器必须细粒度到哪个 env 应用程序应该访问 S3 的哪个存储桶。此外,不应将存储 access_key_id 和秘密访问密钥 ID 用作最佳实践。 IAM 角色可以解决这个问题。另外,我想补充一下,如果服务器位于私有子网中,您需要探索 NAT 网关或使用 VPC S3 Endpoint 访问存储桶。

    还可以尝试在 prod 模式下打印 S3 连接的日志,它是如何获取访问存储桶的凭据的。您可能正在使用某些 ENV 变量或 IAM 角色授予访问权限。最好的查看方式是使用

    打印环境

    在 S3 连接之前和之后查看变量以及提供了哪些存储桶访问。

    谢谢 阿什什

    【讨论】:

    • 我的错,是的,它在 AWS 中运行。
    猜你喜欢
    • 2011-10-06
    • 2011-06-01
    • 1970-01-01
    • 2020-08-17
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    相关资源
    最近更新 更多