
【新機能】PrivateLinkで独自エンドポイントを作ってアプリをプライベート公開する #reinvent
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
コンニチハ、千葉です。
まず、PrivateLinkについてはこちらから。
今までは、AWS公式としてEC2やKinesis StreamなどのエンドポイントへPrivateLinkを介しVPCからインターネットを介さずに接続することができていました。
今回このPrivateLinkのエンドポイントを自分で作れるようになりました。つまり、PrivateLinkのエンドポイントを作って公開することで、独自アプリケーションを特定のVPCへ公開することができます。このアーキテクチャは例えばVPCを数百作成し、マイクロサービスを提供するということが実現できるようになります。

アーキテクチャ
現在PrivateLinkで指定できるエンドポイントはNLB(Network Loadbalancer)になります。公開するアプリケーションはNLBを介して、PrivateLinkのエンドポイントとして提供されます。

使い分け
ここで、VPC間通信なのでVPCピアリングでもいいんじゃない?という疑問が出てきます。が、PrivateLinkを利用するときのユースケースを考えてみました。
- PrivateLinkを利用すると、特定のNLBのみ公開できるのでアクセスを限定できる。逆にVPCピアリングだとセグメントレベルでの共有になるので、アクセス制限を意識する必要がある
- 相手側ネットワークのセグメントを意識する必要がない。VPCピアリングだと、ネットワークセグメントがかぶるとそもそもピアリングができない
- マーケットプレイスが用意されます。2018に公開されるとのことです。APIのエンドポイントをサブスクリプション形式で買って利用することができるようになります
注意ポイントとしては、NLBを利用するのでTCPの利用が可能です。
やってみた
前提としてNLBを事前に作成しておく必要がります。今回は、NLBとEC2を事前に作成済みとして進めます。
VPCのインベントリに「エンドポイントのサービス」という項目が増えています。こちらから作成していきます

作成したNLBが表示されるので選択して、サービス作成をクリックします。

PrivateLinkエンドポイントを作成できました。VPCエンドポイント作成時に使うのでサービス名をメモっておきます。

次にVPCエンドポイントを作成します。

「サービス名を名前で検索」を指定して、先ほど作成したPrivateLinkエンドポイントのサービス名をを入力します。検証をクリックしサービスが見つかればokです。あとはアタッチするVPCとセキュリティグループを選択し作成します。今回は、NLBを作成したVPCと別のVPCを作成し指定しています。

作成したPrivateLinkエンドポイントにVPCエンドポイントからの承認依頼がくるので承認します。エンドポイントのサービス > エンドポイント接続タブ > アクションより承認します。

少し時間がかかったあとに利用可能になります

VPCエンドポイント経由で対向側のNLBにアクセスできるか確認してみます。
[ec2-user@ip-172-32-11-68 ~]$ curl vpce-0517fc33abd2d9b13-tzl6hwzg.vpce-svc-096b71c7455b79b04.ap-northeast-1.vpce.amazonaws.com
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>Test Page for the Nginx HTTP Server on the Amazon Linux AMI</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <style type="text/css">
            /*<









