LoginSignup
8
6

More than 3 years have passed since last update.

VPC内にElasticsearchを配置する際の注意点

Posted at

VPC内のプライベートサブネットにElasticsearchを置いたはいいけど、LambdaからAPI叩けないしKibanaにもアクセスできなくて困ったときのメモです。

解決策

  • BastionServerとして同VPC内にEC2(パブリックサブネット)を置く
    • EC2にSSH接続してダイナミックフォワードを行う(ダイナミックフォワードあまりわかっていない...)
  • Lambdaを同じVPC内に置く
    • 仕様によってプライベートかパブリックかを選択する
  • それぞれのリソースに適切なセキュリティグループ(後述)を設定する

セキュリティグループ設定

EC2

  • アクセス元IPアドレス(ローカルマシン)から22ポートへのトラフィック許可

  • アクセス元IPアドレス(ローカルマシン)から8157ポートへのトラフィック許可

Lambda

  • 今回は特に設定は不要(仕様による)

Elasticsearch

  • Lambdaにアタッチしたセキュリティグループから443ポートへのトラフィック許可

  • EC2のプライベートIPアドレスから443ポートへのトラフィック許可

ハマりポイント

ElasticsearchのアクセスコントロールでEC2のプライベートIPを許可しようとしたが以下のエラーが出ました。

UpdateElasticsearchDomainConfig: {"message":"You can’t attach an IP-based policy to a domain that has a VPC endpoint. Instead, use a security group to control IP-based access."}

解決策が見つからず2時間くらいはまりましたが、ちゃんと公式に書いてありました。

VPCs ではセキュリティグループを通じてドメインへのアクセスを管理できます。多くのユースケースでは、このセキュリティ機能の組み合わせで十分となり、ドメインにオープンなアクセスポリシーを安心して適用できます。

Amazon Elasticsearch Service ドメインの VPC サポート - Amazon Elasticsearch Service

どうやらセキュリティグループでの制限で十分のようです。

つまりVPC内にElasticsearchを置くケースだとオープンアクセスを選択しておいて、アタッチしているセキュリティグループのみでアクセスの制限を行う形になります。

 

参考

8
6
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
8
6