LoginSignup
3
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-12-30

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 を経由したアクセスがサポートされました!)

3
4
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
3
4