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