📌

【初心者向け】VPCエンドポイントをCloudFormationで作成してみる

2024/09/21に公開

はじめに

こちらの記事で実装したVPCエンドポイントをCloudFormationで作成する方法をまとめてみます。
掲載しているCloudFormationテンプレートのファイルはこちらから確認できます。


赤枠の箇所の内容になります

対象読者

  • VPCエンドポイントについて基礎的な知識がある方
  • CloudFormationについて基礎的な知識がある方

手順

VPCエンドポイントの作成(ゲートウェイ型)

  VPCS3Endpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      RouteTableIds:
        - !Ref PrivateRouteTableA #ルートテーブルの指定
        - !Ref PrivateRouteTableC
      VpcId: !Ref RagVPC
      ServiceName: !Sub com.amazonaws.${AWS::Region}.s3 # S3のVPCエンドポイントを指定
      VpcEndpointType: Gateway # ゲートウェイ型の指定

VPCエンドポイントの作成(インタフェース型)

インタフェース型のVPCエンドポイントの場合、セキュリティグループをVPCエンドポイントにアタッチする必要があるため、セキュリティグループを作成する。

VPCEndpointSG:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: for VPC Endpoint
      GroupName: ecs-test-vpc-endpoint-sg
      # Outbound
      SecurityGroupEgress:
        - CidrIp: 0.0.0.0/0
          FromPort: -1
          IpProtocol: -1
          ToPort: -1
      # Inbound
      SecurityGroupIngress:
        - SourceSecurityGroupId: !Ref ECSSG
          FromPort: 443
          IpProtocol: tcp
          ToPort: 443
      Tags:
        - Key: Name
          Value: ecs-test-vpc-endpoint-sg
      VpcId: !Ref RagVPC

上記で作成したセキュリティグループをVPCエンドポイントに紐づける。

VPCBedrockEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      PrivateDnsEnabled: true
      ServiceName: !Sub com.amazonaws.${AWS::Region}.bedrock-runtime # 紐づけるAWSリソース
      SubnetIds:
        - !Ref PrivateSubnetA # VPCエンドポイントに紐づけるサブネット
        - !Ref PrivateSubnetC
      VpcId: !Ref RagVPC
      VpcEndpointType: Interface # インタフェース型の指定
      SecurityGroupIds:
        - !Ref VPCEndpointSG

まとめ

以上がVPCエンドポイントをCloudFormationで作成する方法になります。
VPC機能をCloudFormationで記述すると結構長くなるので、テンプレートファイルの管理が大変そうだな。。という印象です。
Terraformでも記述してみたいなと思います。

Discussion