我正在尝试使用 SSL 设置 AWS 弹性 beanstalk 单个实例,我想将私有密钥存储在 S3 中,并让实例在部署后检索密钥(以避免将私有密钥提交到版本控制(。
根据AWS文档:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-storingprivatekeys.html,我已经设置了我的配置,存储在myproject/.ebextensions/privatekey.config:
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["my_bucket"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
# Private key
/path/to/private/key:
mode: "000400"
owner: root
group: root
authentication: "S3Auth"
source: https://s3.eu-west-2.amazonaws.com/my_s3_bucket/my_private_key
但是,每当我部署时,我都会收到错误: Command failed on instance. Return code: 1 Output: Failed to retrieve https://s3.eu-west-2.amazonaws.com/my_bucket/my_private_key: 'NoneType' object has no attribute 'is_default'.
我已经检查了弹性 beanstalk 中的配置,该项目具有 aws-elasticbeanstalk-ec2-role 的实例配置文件,并且此角色肯定具有正确的 S3 策略(我什至为其分配了 AmazonS3FullAccess,这应该是不必要的!
当我使用可公开访问的文件进行测试时,我可以让它正常工作。但是,当文件是私有文件时不会。
我在 eu-west-2 区域中的 EC2 实例上遇到了这个问题。我无法在其他地区复制它。
如果您遇到此问题,并且 EC2 实例位于 eu-west-2 区域,请尝试解决此问题,只需以不同的方式格式化 URL:
而不是: https://s3.eu-west-2.amazonaws.com/elasticbeanstalk-eu-west-2-XXXXXXXXX/yourfolderpath/server.key
尝试: https://elasticbeanstalk-eu-west-2-XXXXXXXXX.s3-eu-west-2.amazonaws.com/yourfolderpath/server.key