回答
你也可以做。这取决于您如何设置与用户(或组)相关的策略。我会为每个环境推荐一组不同的密钥,以防一个环境受到危害,并防止意外覆盖。
这里有一个用户名相匹配的水桶名政策:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource":"arn:aws:s3:::${aws:username}"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject",
"s3:DeleteObjectAcl"
],
"Resource":"arn:aws:s3:::${aws:username}/*"
}
]
}
然后,您可以生成开发,分期和生产IAM用户。给他们与桶相同的名字。每个人都将获得不同的钥匙+秘密。当您的应用尝试访问存储桶时,它会确认该密钥和秘密对于环境特定存储桶是否正确。
您当然可以使用一组AWS证书来管理多个S3存储桶。
或者,您可以进行设置,以便每个存储桶需要不同的AWS凭证。
或者,您可以配置访问权限,以便您可以从我们的实例的EC2实例使用IAM实例角色,而无需创建和管理各个密钥。
或者,您可以授予其他AWS账户中用户的访问权限,以承担管理您账户中S3存储桶的角色。
或者,您可以使用Amazon Cognito,以便个人用户可以在亚马逊,Facebook,Google或任何OpenID Connect兼容身份提供商处使用自己的个人帐户登录,然后在您的S3中创建和管理自己的对象没有踩在对方的脚趾上。
或者,...
[请提交每个“如何”作为一个独立的,新的问题。]
尽管这个问题是老了,你可能现在解决您的问题。 我正在为未来的读者撰写这个答案。
您可以在所有环境中使用相同的存储桶。但是你应该使用不同的桶。 原因:资产被上传到同一个桶中,所有环境都可能会在它们之间发生ID冲突。迟早你会面临这个问题。所以它最好是安全的。
在Heroku中,您可以为多个环境设置单独的配置。在你的情况dev
production
和staging
(我假设你已经设置了这些引用上面的名字,或者如果你还没有,并试图添加分段环境到现有的应用程序,你可以参考this或从头开始this)。
你可能有你的配置是这样(它涉及到回形针配置)
has_attached_file :photo,
:styles => ...,
:path => ...,
:storage => :s3,
:bucket => ENV['S3_BUCKET'],
:s3_credentials => {
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
}
你看到的环境变量ENV['S3_BUCKET']
ENV['S3_KEY']
和ENV['S3_SECRET']
。
您可以设置这些变量对于您的应用程序的显示如下
开发:
$ heroku config:set S3_BUCKET=XXX --remote dev
$ heroku config:set S3_KEY=YYY --remote dev
$ heroku config:set S3_SECRET=ZZZ --remote dev
生产:
$ heroku config:set S3_BUCKET=XXX --remote production
$ heroku config:set S3_KEY=YYY --remote production
$ heroku config:set S3_SECRET=ZZZ --remote production
分期:
$ heroku config:set S3_BUCKET=XXX --remote staging
$ heroku config:set S3_KEY=YYY --remote staging
$ heroku config:set S3_SECRET=ZZZ --remote staging
希望此回答有助于某人:-)
- 1. AWS S3 SSE GetObject需要秘密密钥
- 2. Amazon S3为每个对象创建唯一的密钥
- 3. AWS S3复制对象源密钥和目标密钥
- 4. aws每个人需要创建新的密钥对来访问EC2?
- 5. AWS S3 Node.js SDK:需要一次下载一个桶中的所有文件
- 6. Google地球API是否需要密钥?
- 7. 您何时需要Google Maps API密钥?
- 8. 您是否需要为要加密的每个子域“级别”提供通配符SSL证书?
- 9. 您是否需要为每个开发者支付iPhone SDK?
- 10. AWS CLI为什么需要访问/秘密密钥?
- 11. 为每个用户分配唯一的序列密钥
- 12. 我是否需要为Spring Boot中的每个@RequestBody分开一个对象
- 13. s3存储桶中的搜索文件(密钥)需要更长的时间
- 14. aws-s3错误:AWS :: S3 :: MissingAccessKey错误,但密钥已定义?
- 15. 在aws s3存储桶中加密对象
- 16. 弱实体是否需要部分密钥?
- 17. AWS S3错误的存储桶对象
- 18. 您是否可以授予AWS IAM用户创建CloudFront密钥对的权限?
- 19. S3 boto library:如何对桶中的密钥执行HEAD请求
- 20. DynamoDB在分区密钥桶变大时是否缩放?
- 21. AWS:无法检索S3中的密钥
- 22. boto3 S3使用aws密钥上传
- 23. 如何将子域分配给我的AWS S3存储桶?
- 24. 我是否需要每个强命名库版本的新.snk密钥文件?
- 25. 启用MFA的S3 AWS桶
- 26. AWS S3存储桶策略
- 27. AWS S3桶端点故障
- 28. AWS SQS是否需要
- 29. 如果对每个加密数据集使用不同的密钥,是否需要初始化向量?
- 30. 为什么AWS S3存储桶的跨区域复制需要版本控制?