Amazon web services 在ebextensions文件中使用环境变量
我有三个AWS账户。我已经将我的SSL证书文件存储在其中一个AWS帐户(比如AWS1)的S3中。我创建了一个IAM角色,该角色授予对AWS1中S3存储桶的“GetObject”访问权。然后,我为在另一个AWS帐户(比如AWS2)中运行的单实例应用程序配置了一个ebextensions文件,以使用我在AWS1中创建的IAM角色的AccessKey和Secret从AWS1中的S3存储桶下载SSL证书 以下是.ebextensions中我的http-single-instance.config文件的一部分,用于我在AWS2中的应用程序Amazon web services 在ebextensions文件中使用环境变量,amazon-web-services,amazon-s3,environment-variables,ebextensions,Amazon Web Services,Amazon S3,Environment Variables,Ebextensions,我有三个AWS账户。我已经将我的SSL证书文件存储在其中一个AWS帐户(比如AWS1)的S3中。我创建了一个IAM角色,该角色授予对AWS1中S3存储桶的“GetObject”访问权。然后,我为在另一个AWS帐户(比如AWS2)中运行的单实例应用程序配置了一个ebextensions文件,以使用我在AWS1中创建的IAM角色的AccessKey和Secret从AWS1中的S3存储桶下载SSL证书 以下是.ebextensions中我的http-single-instance.config文件的一
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["aws1-bucket"]
accessKeyId: "AWS1IAMACCESSKEY"
secretKey: "AWS1IAMSECRET"
但正如您所看到的,我必须将AWS1 IAM秘密值直接放入AWS2中应用程序的源代码中,以使其正常工作。与将accessKeyId和secretKey的值放入实际的源代码中不同,是否可以从环境变量或S3加载这些值?所以最后,如果我能得到
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["aws1-bucket"]
accessKeyId: {AWS2ENVACCESSKEYID}
secretKey: {AWS2ENVSECRETKEY}
对于在同一AWS帐户中运行的应用程序,我已遵循本文档中提供的说明-
这是完美的。我目前的解决方案还可以根据需要下载SSL证书,但我只想知道是否有更安全的方法
非常感谢您的帮助。谢谢 请注意,S3可以使用ACL授予对其他帐户的访问权,因此只要授予跨帐户访问权,它们不在同一AWS帐户下就不会有问题 将其与IAM角色结合使用仍应支持您的用例,而无需在代码中放置非旋转键
有关如何授予跨帐户访问权限的信息,请参见此处:为什么不使用跨帐户S3权限?让帐户2和3访问帐户1 S3。这样你就不需要分享任何秘密了