如果我想让我的开发和生产应用程序访问具有不同密钥 ID 和秘密的不同存储桶,这可能吗?还是我需要创建另一个 AWS 账户?
我环顾四周,但找不到任何有用的东西。理想情况下,如果我可以在一个 AWS 账户中拥有多个存储桶,并且这些存储桶访问具有不同的密钥 ID 和秘密,那就太好了。
如果我想让我的开发和生产应用程序访问具有不同密钥 ID 和秘密的不同存储桶,这可能吗?还是我需要创建另一个 AWS 账户?
我环顾四周,但找不到任何有用的东西。理想情况下,如果我可以在一个 AWS 账户中拥有多个存储桶,并且这些存储桶访问具有不同的密钥 ID 和秘密,那就太好了。
就将凭据获取到您的应用程序而言,您可以将单独的 YAML 文件复制到服务器上,或者(在 heroku 上)使用环境变量,正如 John 所说。
但是,您不需要多个 AWS 账户。您可以使用iam在您的帐户中创建额外的用户,使用他们自己的访问密钥/秘密密钥,然后授予他们适当的权限。例如,您可以创建一个只能访问 S3 存储桶但不能执行任何其他操作的帐户。如果您要在实例上保存密钥,我强烈建议您走这条路线,而不是为您的账户使用“主”访问密钥(它允许不受限制地访问您的 AWS 账户)
您可以通过 IAM api 创建/配置这些用户,也可以在亚马逊控制台使用 GUI
在你的配置目录中创建一个名为 s3.yml 的文件,里面放:
development:
bucket: development_bucket_name
access_key_id: development_amazon_key
secret_access_key: development_secret_key
为生产创建一个类似的文件 (s3.yml)。
production: bucket: production_bucket_name access_key_id: production_amazon_key secret_access_key: production_secret_key
不要将文件签入源代码管理。 而是将生产版本放在服务器上的配置目录中进行开发,只需将其留在本地配置中即可。
在 environment/development.rb 和 production.rb
S3_CONFIG = YAML.load_file Rails.root.join("config/s3.yml")
无论您在哪里明确调用 bucket_name、amazon_key、secret_key 代替使用
S3_CONFIG[Rails.env]["bucket"], etc