0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CLIによるVPC Endpoint設定

Last updated at Posted at 2023-08-16

はじめに

AWS Hands-on for Beginners でハンズオンしてみたものをアウトプットする資料として記事にまとめました。

【Network編#1】AWS上にセキュアなプライベートネットワーク空間を作成する

構成図

net^N1.png

VPCEndpointのGateway型Interface型を構築し、SSMとS3に接続を試すシンプルな構成図です。

ハンズオンの流れ

ハンズオンのざっくりとした全体の流れは、以下の通りです。

①WEBインスタンスを構築し、SSM接続を許可するIAMロールを付与します。
②SSM接続の確認をします。
③Internalインスタンスを立て、SSM接続を許可するIAMロールを付与します。
④ルートテーブルを編集し、NATゲートウェイ経由でプライベートサブネット内からSSMへ接続をします。
★Private Route Table

送信先   ターゲット
10.0.0.0/16 local
0.0.0.0/0 nat-gateway

⑤ルートテーブルを編集し、Internal→SSM接続ができない状態にします。
★Private Route Table

送信先   ターゲット
10.0.0.0/16 local

⑥VPCEndpointをInterface型で作り、Internal→SSMへ接続します。
img_int_1.png

⑦S3バケットを作成します。

⑧VPCEndpointをGateway型で作ります。
img_gtw_1.png

⑨ルートテーブルを編集します。
★Private Route Table

送信先   ターゲット
10.0.0.0/16 local
S3 vpce-xxxx

⑩InternalのSSMから、aws s3 ls --region ap-northeast-1で出力を確認します。

IAMロールには以下のポリシーを付与します。

  • AmazonS3ReadOnlyAccess
  • AmazonSSMFullAccess
  • AmazonSSMManagedInstanceCore(※)
    ※ハンズオン動画では紹介ありませんでしたが、こちらを付与していないとSSMの接続ができませんでした。

Hands-onメモ

AWS CLIで構築したので、メモとして構築手順を記載します。

EIPの割り当て

aws ec2 allocate-address

出力は以下になります。

{
    "PublicIp": "xx.xx.xx.xx",
    "AllocationId": "eipalloc-xxxx",
    "PublicIpv4Pool": "amazon",
    "NetworkBorderGroup": "ap-northeast-1",
    "Domain": "vpc"
}

AllocationIdを、NATゲートウェイ作成時に指定します。

NATゲートウェイの作成

aws ec2 create-nat-gateway \
--allocation-id eipalloc-xxxx \
--subnet-id subnet-xxxx \
--tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=Handson-B}]' \
--output json

EIPの付与、サブネットIDの指定、タグの割り当て、出力結果の指定をします。
出力は以下になります。

{
    "ClientToken": "xxxx-xxxx-xxxx-xxxx-xxxx",
    "NatGateway": {
        "CreateTime": "2023-08-xxT04:48:28+00:00",
        "NatGatewayAddresses": [
            {
                "AllocationId": "eipalloc-xxxx",
                "IsPrimary": true,
                "Status": "associating"
            }
        ],
        "NatGatewayId": "nat-xxxx",
        "State": "pending",
        "SubnetId": "subnet-xxxx",
        "VpcId": "vpc-xxxx",
        "Tags": [
            {
                "Key": "Name",
                "Value": "Handson-B"
            }
        ],
        "ConnectivityType": "public"
    }
}

VPCエンドポイントの作成

aws ec2 create-vpc-endpoint \
    --vpc-endpoint-type Interface \
    --vpc-id vpc-xxxx  \
    --subnet-ids subnet-xxxx \
    --security-group-ids sg-xxxx \
    --service-name com.amazonaws.ap-northeast-1.ssm 

出力は以下のようになります。

{
    "VpcEndpoint": {
        "VpcEndpointId": "vpce-xxxx",
        "VpcEndpointType": "Interface",
        "VpcId": "vpc-xxxx",
        "ServiceName": "com.amazonaws.ap-northeast-1.ssm",
        "State": "pending",
        "RouteTableIds": [],
        "SubnetIds": [
            "subnet-xxxx"
        ],
        "Groups": [
            {
                "GroupId": "sg-xxxx",
                "GroupName": "Handson-B-ssm"
            }
        ],
        "IpAddressType": "ipv4",
        "DnsOptions": {
            "DnsRecordIpType": "ipv4"
        },
        "PrivateDnsEnabled": true,
        "RequesterManaged": false,
        "NetworkInterfaceIds": [
            "eni-xxxx"
        ],
        "DnsEntries": [
            {
                "DnsName": "vpce-xxxx-4cgcwtqq.ssm.ap-northeast-1.vpce.amazonaws.com",
                "HostedZoneId": "Z2E726K9Y6RL4W"
            },
            {
                "DnsName": "vpce-xxxx-4cgcwtqq-ap-northeast-1c.ssm.ap-northeast-1.vpce.amazonaws.com",
                "HostedZoneId": "Z2E726K9Y6RL4W"
            },
            {
                "DnsName": "ssm.ap-northeast-1.amazonaws.com",
                "HostedZoneId": "ZONEIDPENDING"
            }
        ],
        "CreationTimestamp": "2023-08-xxT02:38:35.644000+00:00",
        "OwnerId": "066576575514"
    }
}

タグ付けをします。

 aws ec2 create-tags --resources vpce-xxxx --tags Key=Name,Value=ssm-cli

まとめ

  • VPC Endpoint、AWS PrivateLinkを使うことで、VPCからIGW、NatGWを経由せずにVPC外サービスと直接通信が可能になる
  • Gateway型とInterface型に分かれる
  • Gateway型はS3やDynamoDBと接続
  • Interface型はSSM、Clourwatchなどのサポートされているサービスと接続
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?