我有一个 AWS Cloudformation,我想在同一 VPC 下的私有子网上有两个 EC2 实例 A 和 B。
在应用程序中,我需要 A 访问 B。
如何使用 B 的动态分配私有 IP 配置 A?
我相信我可以使用环境变量(例如,使用aws:elasticbeanstalk:application:environment
)配置 A。
问题是我不知道如何获取 B 的 IP。我认为它不能是弹性 IP,因为它是私有的,因此它可能在部署之间发生变化。
答案1
你用安全组这样您就不必担心 IP 地址。在子网 A 中为实例创建一个 sec 组,在子网 b 中为实例创建一个 sec 组,然后允许 sec 组之间的流量。sec 组 A 中的任何实例都可以通过您定义的端口或所有流量与 sec 组 b 中的实例进行通信。
instanceA:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref imageID
SecurityGroupIds:
- !Ref SGroupA
SubnetId: !Ref subnetA
instanceB:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref imageID
SecurityGroupIds:
- !Ref SGroupb
SubnetId: !Ref subnetb
SGroupA:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: EC2 Instance access
SGroupB:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: EC2 Instance access
SGroupAIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: !Ref SGroupA
IpProtocol: tcp
ToPort: 80
FromPort: 80
SourceSecurityGroupName: !Ref SGroupB
SGroupBIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: !Ref SGroupB
IpProtocol: tcp
ToPort: 80
FromPort: 80
SourceSecurityGroupName: !Ref SGroupA
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2.html