【发布时间】:2019-07-18 01:35:05
【问题描述】:
以前有人问过类似的问题,但我找不到我的问题的确切答案...
我在UserData 部分中有一个需要访问其自己的公共 IP 的 EC2 实例的定义:
"MyEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"SubnetId": {
"Fn::ImportValue": {
"Fn::Sub": "${NetworkStackName}-SubnetID"
}
},
"ImageId": "ami-xxxx",
"InstanceType": { "Ref": "InstanceTypeParameter" },
"IamInstanceProfile": { "Ref": "MasterInstanceProfile" },
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash -v\n",
" PUBLIC_IP=",
{
"Fn::GetAtt": ["MyEC2Instance", "PublicIp"]
},
" /usr/local/bin/docker-compose -f /docker-compose.yml up -d\n"
]
]
}
}
}
通常通过"Fn::GetAtt": ["MyEC2Instance", "PublicIp"] 访问它很容易,但在这种情况下,这会引发“循环依赖错误”——这确实是有道理的,但我该如何解决呢?
【问题讨论】:
-
循环依赖可能是因为IP地址是在实例启动之后才分配的,而它是在实例启动之前引用的.
标签: amazon-web-services amazon-ec2 amazon-cloudformation