Amazon EKS コンテナから Amazon Neptune データベースにアクセスする
Amazon Web Services、Ramakrishnan Palaninathan
概要
本パターンは、フルマネージド型のグラフデータベースである Amazon Neptune と、コンテナオーケストレーションサービスである Amazon Elastic Kubernetes Service (Amazon EKS) との間の接続を確立して Neptune データベースにアクセスします。Neptune DB クラスターは、AWS の仮想プライベートクラウド (VPC) 内に制限されています。そのため、Neptune にアクセスするには、接続を有効にするために VPC を注意して設定する必要があります。
Neptune は、Amazon Relational Database Service (Amazon RDS) for PostgreSQL とは異なり一般的なデータベースアクセス認証情報に依存しません。代わりに、認証に AWS Identity and Access Management (IAM) ロールを使用します。したがって、Amazon EKS から Neptune に接続するには、Neptune へのアクセスに必要なアクセス許可を持つ、IAM ロールの設定が必要になります。
さらに、Neptune エンドポイントには、クラスターが存在する VPC 内のみでアクセスできます。つまり、Amazon EKS と Neptune の間の通信が容易になるようにネットワーク設定を構成する必要があります。Neptune と Amazon EKS 間のシームレスな接続を可能にするには、特定の要件とネットワーク設定に応じてさまざまな方法で VPC を設定します。それぞれの方法には個別の利点と考慮事項があり、アプリケーションのニーズに合ったデータベースアーキテクチャを柔軟に設計できます。
前提条件と制限事項
前提条件
最新バージョンの kubectl をインストールします (手順
を参照)。バージョンを確認するには次を実行します。 kubectl version --short最新バージョンの eksctl をインストールします (手順
を参照)。バージョンを確認するには次を実行します。 eksctl infoAWS Command Line Interface (AWS CLI) バージョン 2 の最新バージョンをインストールします (手順を参照)。バージョンを確認するには次を実行します。
aws --versionNeptune DB クラスターを作成します (手順を参照)。VPC ピアリング、AWS Transit Gateway、またはその他の方法を使用して、クラスターの VPC と Amazon EKS 間の通信を確立します。また、クラスターのステータスが「使用可能」であり、セキュリティグループのポート 8182 にインバウンドルールがあることを確認します。
既存の Amazon EKS クラスターで IAM OpenID Connect (OIDC) プロバイダーを設定します (手順を参照)。
製品バージョン
アーキテクチャ
次の図は、Neptune データベースへのアクセスを可能にする、Amazon EKS クラスター内の Kubernetes ポッドと Neptune との間の接続を示しています。

自動化とスケール
Amazon EKS Horizontal Pod Autoscaler を使用することでこのソリューションをスケールできます。
ツール
サービス
Amazon Elastic Kubernetes Service (Amazon EKS) は、AWS で Kubernetes を実行する際に役立ちます。独自の Kubernetes コントロールプレーンまたはノードをインストールおよび維持する必要はありません。
「AWS Identity and Access Management (IAM)」では、リソースの使用を認証、許可されるユーザーを制御することで、AWS リソースへのアクセスを安全に管理できます。
Amazon Neptune は、複雑に接続されたデータセットを扱うアプリケーションを構築して実行するために使用できるマネージドグラフデータベースサービスです。
ベストプラクティス
ベストプラクティスについては、「Amazon EKS ベストプラクティスガイド」の「アイデンティティとアクセス管理
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
クラスターコンテキストを検証する。 | Helm またはその他のコマンドラインツールを使用して Amazon EKS クラスターを操作するときは、事前にクラスターの詳細をカプセル化する環境変数を定義する必要があります。これらの変数は、正しいクラスターとリソースをターゲットにするために、後続のコマンドで使用されます。 まず、正しいクラスターコンテキスト内で動作していることを確認します。これにより、後続のコマンドが目的の Kubernetes クラスターに送信されます。現在のコンテキストを確認するには、次のコマンドを実行します。
| AWS 管理者、クラウド管理者 |
| Amazon EKS クラスターの
| AWS 管理者、クラウド管理者 |
出力を検証します。 | 変数が正しく設定されていることを確認するには、次のコマンドを実行します。
このコマンドの出力が、前のステップで指定した入力と一致することを確認します。 | AWS 管理者、クラウド管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
サービスアカウントを作成します。 | サービスアカウントの IAM ロールを使用して、Kubernetes サービスアカウントを IAM ロールにマッピングし、Amazon EKS で実行されるアプリケーションのきめ細かなアクセス許可管理を有効にします。eksctl 重要これらのコマンドを実行するときは、先に、クラスターに OIDC エンドポイントが関連付けられている必要があります。
完了すると、このコマンドは次のレスポンスを表示します。
| AWS 管理者、クラウド管理者 |
アカウントが正しく設定されていることを確認します。 |
出力は次のようになります:
| AWS 管理者、クラウド管理者 |
接続を確認する。 |
| AWS 管理者、クラウド管理者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
IAM データベース認証を有効にする | デフォルトでは、Neptune DB クラスターの作成時、IAM データベース認証は無効になっています。AWS マネジメントコンソール を使用して、IAM データベース認証を有効にするか、無効にすることができます AWS ドキュメントの手順に従って、Neptune で IAM データベース認証を有効にします。 | AWS 管理者、クラウド管理者 |
接続を検証します。 | このステップでは、既に実行中のステータスにある
| AWS 管理者、クラウド管理者 |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
Neptune データベースにアクセスできない。 | サービスアカウントにアタッチされている IAM ポリシーを確認します。実行する操作に必要なアクション ( |
関連リソース
Kubernetes サービスアカウントを使用して Kubernetes ワークロードに AWS へのアクセスを許可する (Amazon EKS ドキュメント)
サービスアカウントの IAM ロール (Amazon EKS ドキュメント)
新しい Neptune DB クラスターの作成 (Amazon Neptune ドキュメント)