When writing a CloudFormation Template that needs to use the value of an Elastic IP to a file inside an EC2 Instance, you will most likely encounter a Circular dependency between resources error.
I encountered this when configuring OpenSwan IPSec VPN in CloudFormation.
You can try the CloudFormation template below to see the error above.
CloudFormation Template with Circular Dependency Error
Parameters:
AmazonLinux2AMIID:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
KeyName:
Type: AWS::EC2::KeyPair::KeyName
Resources:
ElasticIP:
Type: 'AWS::EC2::EIP'
Properties:
Domain: vpc
InstanceId: !Ref EC2Instance
EC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref AmazonLinux2AMIID
InstanceType: t2.micro
KeyName: !Ref KeyName
UserData:
Fn::Base64:
!Sub |
#!/bin/bash -ex
echo "${ElasticIP}" >> /EIPAddress.txt
Continue reading CloudFormation: How to solve Circular Dependency between an Elastic IP and an EC2 Instance