在ebextensions文件中使用环境变量

时间:2018-04-03 09:17:39

标签: amazon-web-services amazon-s3 environment-variables ebextensions

我有三个AWS账户。我已将SSL证书文件存储在其中一个AWS账户(例如AWS1)中的S3中。我创建了一个IAM角色,它授予AWS1中S3存储桶的“GetObject”访问权限。然后,我为我在另一个AWS账户(例如AWS2)中运行的单个实例应用程序配置了ebextensions文件,以使用我在AWS1中创建的IK角色的AccessKey和Secret来从AWS1中的S3存储桶下载SSL证书。

以下是我在AWS2中的应用程序的.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账户中运行的应用程序,我已按照本文档中提供的说明进行操作 - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-storingprivatekeys.html这完美无缺。我目前拥有的解决方案也是根据需要下载SSL证书,但我只是想知道是否有办法更安全地执行此操作。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

请注意,S3可以使用ACL授予对其他帐户的访问权限,因此只要授予跨帐户访问权限,就不应该存在不属于同一AWS账户的问题。

将其与IAM角色结合使用仍应支持您的用例,而无需在代码中放置非旋转键。

请点击此处了解如何授予跨帐户访问权限:https://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html