我有一个在ubuntu服务器上运行的应用程序。我有生产模式和登台模式。
问题是,在生产站点上执行的与从S3存储桶中上传和检索图像有关的操作正在与我的登台操作相同的存储桶中进行。当我有不同的配置时。
production.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生产吗?
此外,我的日志正在记录从生产到登台的情况。
答案 0 :(得分:1)
我想问的是生产服务器/登台服务器(Ubuntu)是否在AWS中运行。如果是,则必须在服务器上附加IAM ROLE,并且必须对哪个环境应用程序可以访问哪个S3存储桶进行细粒度的设置。最好不要同时存储access_key_id和秘密访问密钥ID。 IAM角色可以解决这一问题。另外,如果服务器位于私有子网中,则我想添加一下,您需要浏览NAT网关或使用VPC S3端点访问存储桶。
还尝试以生产模式打印S3连接的日志,以了解如何获取访问桶的凭据。您可能使用某些ENV变量或IAM角色来授予访问权限。最好的查看方法是使用
在S3连接之前和之后的printenv
,以查看变量以及提供了哪些存储区访问。
谢谢 灰烬