[CloudFormation] SSMエンドポイント

インターネットに接続されていない閉域環境で、セッションマネージャなどのSSMを利用するには3つのエンドポイントを作成する必要があります。
・com.amazonaws.${AWS::Region}.ssm
・com.amazonaws.${AWS::Region}.ec2messages
・com.amazonaws.${AWS::Region}.ssmmessages
作成されたエンドポイントには、指定したサブネットのIPアドレスがアサインされます。
設定したけれど利用できない原因となるポイントを挙げます。
1つ目は、DNSで引くためにプライベートDNSを有効にする必要があります。

PrivateDnsEnabled: true

2つ目は、エンドポイントには443番ポートを空ける必要があります。インバウンドを許可したセキュリティグループを割り当てます。

SecurityGroupIds:
  - !Ref EndpointSecurityGroup

以下、全文です。

AWSTemplateFormatVersion: '2010-09-09'
Description: Create VPC endpoints for SSM, EC2Messages, and SSMMessages

Resources:
  SSMVpcEndpoint:
    Type: 'AWS::EC2::VPCEndpoint'
    Properties:
      VpcId: !ImportValue VpcId
      ServiceName: !Sub com.amazonaws.${AWS::Region}.ssm
      VpcEndpointType: Interface
      SubnetIds:
        - !ImportValue SubnetId
      SecurityGroupIds:
        - !Ref EndpointSecurityGroup
      PrivateDnsEnabled: true

  EC2MessagesVpcEndpoint:
    Type: 'AWS::EC2::VPCEndpoint'
    Properties:
      VpcId: !ImportValue VpcId
      ServiceName: !Sub com.amazonaws.${AWS::Region}.ec2messages
      VpcEndpointType: Interface
      SubnetIds:
        - !ImportValue SubnetId
      SecurityGroupIds:
        - !Ref EndpointSecurityGroup
      PrivateDnsEnabled: true

  SSMMessagesVpcEndpoint:
    Type: 'AWS::EC2::VPCEndpoint'
    Properties:
      VpcId: !ImportValue VpcId
      ServiceName: !Sub com.amazonaws.${AWS::Region}.ssmmessages
      VpcEndpointType: Interface
      SubnetIds:
        - !ImportValue SubnetId
      SecurityGroupIds:
        - !Ref EndpointSecurityGroup
      PrivateDnsEnabled: true

  EndpointSecurityGroup:
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      GroupDescription: Security Group for SSM VPC Endpoints
      VpcId: !ImportValue VpcId
      SecurityGroupIngress:
        - CidrIp: !ImportValue VpcCIDR
          IpProtocol: tcp
          FromPort: 443
          ToPort: 443
  
Outputs:
  SSMVpcEndpointId:
    Description: SSM VPC Endpoint ID
    Value: !Ref SSMVpcEndpoint
    Export:
      Name: SSMVpcEndpointId

  EC2MessagesVpcEndpointId:
    Description: EC2Messages VPC Endpoint ID
    Value: !Ref EC2MessagesVpcEndpoint
    Export:
      Name: EC2MessagesVpcEndpointId

  SSMMessagesVpcEndpointId:
    Description: SSMMessages VPC Endpoint ID
    Value: !Ref SSMMessagesVpcEndpoint
    Export:
      Name: SSMMessagesVpcEndpointId

AWSCloudFormation

Posted by kidatti