Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Privatelink の閉域接続環境をBeanstalkで簡単作成

Privatelink (VPC Interface Endpoint) へ閉域接続する構成をBeanstalkで簡単作成してみます

この構成を考えた理由

  • AWSへの閉域網アクセスのリクエストが意外に多い
  • でも、AWSへの閉域網接続を検討する場合こんな悩みが
    • APN パートナーが提供する Direct Connect は確実だけどイニシャルとランニングコストが若干高め
    • AWS のVPN 接続を使う手もあるがクラウドHUBとして動くので、異なる組織を収容するマルチテナントには向かない

Privatelink (VPC Interface Endpoint) を利用した場合に解決できること

  • Direct Connect や VPNで接続するVPCの中に接続用エンドポイントが作成されるので、オンプレミス拠点からの接続が可能
  • 異なるAWSアカウントのVPC間でも接続できる(クロスアカウント構成)
  • PlivateLink エンドポイントと接続先を収容するNetwork Load Blancer(NLB)の間は双方向NATの様な動きをするため、サービスを利用する側のVPCとサービスを提供する側のVPCでアドレス帯が重複していても接続可能

1. NLBとBeanstalk Web Tierを作成します

  • EB CLIの環境設定や eb init でのEB環境設定は完了しているものとします
  • 検証用に下記のEB環境を使用
  • ELBはNLBで作成するため「--elb-type network」を指定します
  • ELBはInternalに設定するので「--vpc.elbpublic」は外しています
  • VPC IDや各種subnetのIDはご自身の環境に合わせてください
eb-create.ps1
eb create eb-privatelink `
--elb-type network `
--cname eb-privatelink-oreg `
--tags project=eb-privatelink `
--vpc.id vpc-0a1d806e `
--vpc.ec2subnets subnet-97aa55cf,subnet-d7d47fa1 `
--vpc.elbsubnets subnet-97aa55cf,subnet-d7d47fa1 `
--vpc.dbsubnets subnet-cc097594,subnet-710c0107 `
--vpc.securitygroups sg-1d12c87b `
--instance_profile aws-elasticbeanstalk-ec2-role `
--instance_type t2.small `
--vpc.publicip `
--tier webserver `
--timeout 30

2. エンドポイントサービスの作成(サービス提供側)

 Beanstalkで作成したNLBが表示されるのでPrivatelinkのサービスを作成します
VPC_Privatelink.PNG

3. ホワイトリストにプリンシパルを追加する(サービス提供側)

 エンドポイントサービスを利用するAWSアカウントを登録します
  arn:aws:iam::サービスを利用するAWSアカウントID:root
princepal.PNG

4. エンドポイントサービスのサービス名を確認します(サービス提供側)

endpoint_service_name.PNG

5. エンドポイントサービスするAWSアカウントでエンドポイントを作成します(サービス利用側)

「サービスを名前で検索」を選択して4.でコピーしたサービス名を入力します
create_endpoint.PNG

6. エンドポイントを作成するVPCとセキュリティグループを選択します(サービス利用側)

select_endpoint_VPC.PNG

7. エンドポイントサービスで接続するエンドポイントを承認します(サービス提供側)

承諾の保留中 → 利用可能 になるまで少し待ちます
endpoint_approval.PNG

8. エンドポイントのDNS名を確認します(サービス利用側)

PrivateLinkのDNS名はSplit-horizonで解決されるので一番上のDNS名でOKです
endpoint_dns.PNG

9. エンドポイントを作成したAWSアカウントで起動したWorkspacesでサービスへアクセスします(サービス利用側)

workspaces.PNG

R53のプライベートゾーン レコードセットにエンドポイントDNS名のCNAMEを分かりやすい名前で登録するとアクセスが楽になります(サービス利用側)

試しにマネージド VPN接続のオンプレ環境からアクセスしてみた

  • PrivteLink サービス提供側 と サービス利用側 のVPC IPプレフィックスは同じ
  • エンドポイントを作成したサービス利用側VPCに作成したVGWとオンプレ環境のpfSenseをIPSec接続
  • R53プライベートゾーンにエンドポイントDNS名を登録
  • workspaces に付帯しているSinpleAD DNSをオンプレ拠点のリゾルバとして参照
  • SinpleADやエンドポイントのセキュリティグループにオンプレ拠点IPプレフィックスが接続元の通信を許可設定 Beanstalk-Privatelink.png

オンプレ拠点からエンドポイントDNS名の名前解決はできているが、エンドポイントへのHTTP接続はできなかった。
resolve-dns.PNG

この構成が可能になると、VPN閉域網でのサービス提供の選択肢が広がるので早く実現してほしいです。
(Sep 25, 2018 更新 PrivateLink で AWS VPN を経由したアクセスがサポートされました!)

kazu_0
Chief Transmissionand Switching Engineer /Chief Line Engineer/ On-the-ground service I-category special radio operator /Technical engineer(Network)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away