Создание конечной точки интерфейса VPC для SQS в облачной формации - PullRequest
0 голосов
/ 12 февраля 2019

Мне было интересно, возможно ли создать ресурс в моем файле CloudFormation для создания конечной точки VPC для SQS.Я смог сделать это для SQS и DynamoDB, но я верю, что это потому, что они были конечными точками шлюза.

Пока я определил свой ресурс SQS как:

SQSEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: '*'
            Action:
              - 'sqs:*'
            Resource:
              - '*'
      ServiceName: !Join 
        - ''
        - - com.amazonaws.
          - !Ref 'AWS::Region'
          - .sqs
      SubnetIds:
        - !Ref PrivateSubnet
        - !Ref PublicSubnet
      VpcId: !Ref 'VPC'
      VpcEndpointType: Interface

Хотя, когдаЯ пытаюсь создать стек, я получаю сообщение об ошибке:

enter image description here

Кажется, что это возможно из чтения этого сообщения в блоге изAWS.Хотя я не могу найти никаких примеров или документации.Есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2019

Я понял, что для DynamoDB и S3, которые используют конечные точки шлюза, необходимо определить свойство PolicyDocument.Для всех других услуг, это не должно быть определено.Таким образом, для SQS все, что нужно:

 SQSEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      ServiceName: !Join 
        - ''
        - - com.amazonaws.
          - !Ref 'AWS::Region'
          - .sqs
      SubnetIds:
        - !Ref PrivateSubnet
        - !Ref PublicSubnet
      VpcId: !Ref 'VPC'
      VpcEndpointType: Interface

РЕДАКТИРОВАТЬ: Все еще не работало, хотя конечная точка интерфейса была настроена, мне пришлось:

  1. установите для свойства PrivateDnsEnabled значение true, чтобы вы могли использовать интерфейс командной строки AWS, поскольку интерфейс командной строки AWS использует общедоступную конечную точку, а установка PrivateDnsEnabled позволяет частной конечной точке автоматически сопоставляться с общедоступнойодин

  2. установить для SecurityGroupsIds группу безопасности, которая разрешает входящий трафик от вашего VPC.Если этот экземпляр установлен, используется группа безопасности по умолчанию, и она разрешает входящий трафик только из источников, которые имеют группу безопасности по умолчанию, что означает, что SQS не сможет отправить трафик обратно вашему экземпляру

Итак, подведем итог:

  SQSEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      ServiceName: !Join 
        - ''
        - - com.amazonaws.
          - !Ref 'AWS::Region'
          - .sqs
      SubnetIds:
        - !Ref PrivateSubnet
      VpcId: !Ref 'VPC'
      VpcEndpointType: Interface
      SecurityGroupIds:
        - !Ref PrivateSubnetInstanceSG # has to allow traffic from your VPC
      PrivateDnsEnabled: true
...