如何分配使用 AWS Cloudformation 动态生成的私有 IP?

ole*_*iba 1 amazon-ec2 amazon-web-services amazon-cloudformation amazon-vpc elastic-beanstalk

我有一个 AWS Cloudformation,我希望在同一 VPC 下的私有子网上有两个 EC2 实例 A 和 B。
在应用中,我需要A访问B,
如何配置B动态分配的私有IP给A?

我相信我可以使用环境变量(例如,使用aws:elasticbeanstalk:application:environment)配置 A。
问题是我不知道如何获取 B 的 IP。我认为它不能是弹性 IP,因为它是私有的,因此它可能会在部署之间更改。

str*_*gjz 5

您使用安全组,因此您不必担心 IP 地址。在子网 A 中创建一个 sec 组,在子网 b 中创建一个实例,然后允许 sec 组之间的流量。安全组 A 中的任何实例都可以通过您定义的端口或所有流量与安全组 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
Run Code Online (Sandbox Code Playgroud)

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2.html