Назначать частный IP только с CloudFormation - PullRequest
0 голосов
/ 17 октября 2018

Я использую CloudFormation для создания экземпляра EC2.То, что я пытаюсь достичь, это назначить только частный IP.Нет публичного IP.Все отлично создается и создает DNS-запись для частного IP, но также создает публичный IP.Как я могу сказать это, чтобы не создавать публичный IP.Вот мой шаблон.Vpc_id и subnet_id находятся в частной сети.

AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS CloudFormation template for creating riskInternalElk instance with DNS record'
Parameters:
Resources:
  InstanceSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupName: "{{security_group_name}}"
      GroupDescription: "{{security_group_name}}"
      VpcId: "{{vpc_id}}"
      SecurityGroupIngress:
{% for item in security_group_ingress %}
      - IpProtocol: "{{item.protocol}}"
        FromPort: "{{item.from_port}}"
        ToPort: "{{item.to_port}}"
        CidrIp: "{{item.cidr_ip}}"
{% endfor %}
  NetworkInterface:
    Type: AWS::EC2::NetworkInterface
    Properties:
      SubnetId: "{{subnet_id}}"
      Description: "{{subnet_description}}"
      GroupSet:
      - !Ref InstanceSecurityGroup
      SourceDestCheck: true
      Tags:
      - Key: Network
        Value: Web
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      Tags:
      - Key: "Name"
        Value: "{{instance_name}}"
      ImageId: "{{image_id}}"
      InstanceType: "{{instance_type}}"
      KeyName: "{{key_name}}"
      NetworkInterfaces:
      - NetworkInterfaceId: !Ref NetworkInterface
        DeviceIndex: 1
      BlockDeviceMappings:
      - DeviceName: "{{device_name}}"
        Ebs:
          VolumeType: "gp2"
          VolumeSize: "{{volume_size}}"
          Encrypted: true
          DeleteOnTermination: false
  DnsRecord:
    Type: AWS::Route53::RecordSet
    Properties:
      HostedZoneName: "{{hosted_zone_name}}"
      Comment: "DNS name for risk internal ec2 instance."
      Name: "{{host_name}}"
      Type: A
      TTL: '60'
      ResourceRecords:
      - !GetAtt EC2Instance.PrivateIp

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Вы управляете назначением общедоступных IP-адресов экземплярам EC2 через конфигурацию подсети.Подсеть определяет MapPublicIpOnLaunch.Это также означает, что подсеть должна быть частью вашего стека облачной информации.

Если вы используете автоматическое масштабирование, у вас есть опция AssociatePublicIpAddress в AWS::AutoScaling::LaunchConfiguration

AWS :: EC2 :: Подсеть

AWS :: AutoScaling :: LaunchConfiguration

0 голосов
/ 17 октября 2018

Вы можете указать информацию в EC2: Набор ресурсов экземпляра для NetworkInterfaces по-разному, чтобы она отклонялась от настройки подсетей для назначения общедоступного IP-адреса.

Специально установите AssociatePublicIpAddress в значение «Ложь» и переместите ресурс NetworkInterface таким образом:

  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      Tags:
      - Key: "Name"
        Value: "{{instance_name}}"
      ImageId: "{{image_id}}"
      InstanceType: "{{instance_type}}"
      KeyName: "{{key_name}}"

      NetworkInterfaces:  
      - AssociatePublicIpAddress: false <--- This should do it
        DeleteOnTermination: false
        DeviceIndex: 0
        SubnetId: "{{subnet_id}}"
        Description: "{{subnet_description}}"
        GroupSet:
        - !Ref InstanceSecurityGroup
        SourceDestCheck: true

      BlockDeviceMappings:
      - DeviceName: "{{device_name}}"
        Ebs:
          VolumeType: "gp2"
          VolumeSize: "{{volume_size}}"
          Encrypted: true
          DeleteOnTermination: false
0 голосов
/ 17 октября 2018

Проверьте в подсети настройку «Автоматическое назначение общедоступного IPv4-адреса».

Измените его, перейдя в консоль VPC и выбрав Подсеть -> Действия -> «Изменить автоматическое назначение IP».настройки».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...