MongoDB Atlas を含む AWS ランディングゾーンを構築する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

MongoDB Atlas を含む AWS ランディングゾーンを構築する

Igor Alekseev、Amazon Web Services

概要

このパターンでは、MongoDB Atlas クラスターと統合された AWS ランディングゾーンを構築する方法について説明します。インフラストラクチャは Terraform スクリプトを使用して自動的にデプロイされます。

ランディングゾーンと呼ばれるよく構造化されたマルチアカウント AWS 環境は、特に企業にスケーラビリティとセキュリティを提供します。ワークロードとアプリケーションの迅速なデプロイの基盤として機能し、セキュリティとインフラストラクチャの信頼性を確保するのに役立ちます。ランディングゾーンを構築するには、アカウント構造、ネットワーク、セキュリティ、アクセス管理などの技術的およびビジネス上の要因を慎重に検討する必要があります。これらの考慮事項は、組織の将来の成長とビジネス目標と一致する必要があります。

このパターンのユースケースは次のとおりです。

  • エンタープライズ SaaS および PaaS プラットフォーム: で実行されるマルチテナント Software as a Service (SaaS) アプリケーションおよび Platform as a Service (PaaS) プラットフォーム AWS では、この設定を使用して、パブリックインターネット経由でデータを公開することなく、MongoDB Atlas への安全なプライベートアクセスを提供できます。

  • 規制の厳しい業界: 医療保険の相互運用性と説明責任に関する法律 (HIPAA)、Payment Card Industry Data Security Standard (PCI DSS)、System and Organization Controls 2 (SOC2)、一般データ保護規則 (GDPR) などの基準に厳密に準拠する必要がある銀行、金融サービス、ヘルスケア、政府のワークロードには、次の利点があります。

    • を介した暗号化されたプライベート接続 AWS PrivateLink

    • MongoDB レプリカセットのマルチ AZ 高可用性

  • 安全な AI/ML ワークロード: Amazon Bedrock、Amazon SageMaker AI、またはカスタム AI モデルのトレーニングまたは推論パイプラインは、PrivateLink 経由で MongoDB Atlas にデータを安全に取得して保存できます。

  • ディザスタリカバリとビジネス継続性: マルチ AZ 設計により、単一のアベイラビリティーゾーンの障害によってワークロードが中断されることはありません。アベイラビリティーゾーン間で設定された Atlas レプリカにより、自動フェイルオーバーが保証されます。これは、金融技術 (フィンテック) アプリ、デジタルバンキング、医療モニタリングなどの常時稼働サービスにとって重要です。

前提条件と制限

前提条件

  • 組織の所有者が MongoDB Atlas にアクセスして、Atlas API キーを作成できるようにします。この要件の詳細については、MongoDB ドキュメントの「組織アクセスの管理」を参照してください。

  • アクティブな AWS アカウント

  • Terraform、インストールおよび設定済み。

  • MongoDB バージョン 6.0 以降で作成された MongoDB Atlas クラスター。

  • MongoDB と MongoDB Atlas に精通していること。詳細については、MongoDB Atlas ドキュメントを参照してください。

制約事項

アーキテクチャ

次のリファレンスアーキテクチャ図は、MongoDB Atlas プライベートエンドポイントと統合された AWS ランディングゾーンのデプロイ設定を示しています。このリファレンスアーキテクチャは、MongoDB Atlas と統合された安全でスケーラブルで可用性の高い AWS ランディングゾーンを確立する方法を示しています。マルチ AZ 配置、最小特権のセキュリティコントロール、プライベート接続などの AWS ベストプラクティスを組み合わせることで、組織は最新のアプリケーション向けに堅牢な環境をプロビジョニングできます。

MongoDB Atlas と統合された AWS ランディングゾーンのマルチ AZ アーキテクチャ。

このアーキテクチャは、以下で構成されます。

VPC

  • 1 つの仮想プライベートクラウド (VPC) は 3 つのアベイラビリティーゾーンにまたがります。

  • VPC は、各アベイラビリティーゾーンに合わせてサブネットに分割されます。これらのサブネットは、高可用性のためにワークロードを分散します。

インターネットアクセス

  • インターネットゲートウェイは、アプリケーションや踏み台ホストなど、それを必要とするリソースのアウトバウンドインターネット接続を提供します。

  • パブリックサブネットには NAT ゲートウェイを格納できます。これにより、プライベートサブネットのワークロードは、パブリックインターネットに直接公開することなく、更新、パッチ、その他の必要なパッケージをダウンロードできるようになります。

プライベートサブネットとルートテーブル

  • アプリケーションコンポーネント、マイクロサービス、またはその他の機密性の高いリソースは通常、プライベートサブネットにあります。

  • 専用ルートテーブルはトラフィックフローを制御します。プライベートサブネットから NAT ゲートウェイに直接アウトバウンドトラフィックをルーティングして、Egress-Only の安全なインターネットアクセスを実現します。

  • インターネットからのインバウンドリクエストは、パブリックサブネットの Elastic Load Balancer または踏み台ホスト (使用する場合) を通過し、プライベートサブネットリソースに適切にルーティングされます。

PrivateLink を介した MongoDB Atlas 接続

  • このアーキテクチャでは、(VPC エンドポイントを介して) PrivateLink を使用して、データをパブリックインターネットに公開することなくMongoDB Atlas に安全に接続します。

  • リクエストは AWS バックボーンネットワークに残ります。転送中のデータは PrivateLink 暗号化の利点があり、パブリックインターネット経由でルーティングされることはありません。

  • MongoDB Atlas 専用 VPC は、プライマリノードとセカンダリノードをホストし、マネージドデータベースクラスターに安全で隔離された環境を提供します。

マルチ AZ 配置

  • 重要なインフラストラクチャコンポーネント (NAT ゲートウェイやアプリケーションサブネットなど) は、少なくとも 3 つのアベイラビリティーゾーンに分散されます。アベイラビリティーゾーンで機能停止が発生した場合、このアーキテクチャにより、残りのアベイラビリティーゾーンのワークロードが引き続き動作します。

  • MongoDB Atlas は、デフォルトでレプリカセットを通じて高可用性を提供し、データベースレイヤーの耐障害性を維持します。重要なインフラストラクチャは、回復力のために少なくとも 3 つのアベイラビリティーゾーンに分散されます。

ツール

AWS のサービス

  • AWS Secrets Manager は、パスワードを含むコード内のハードコードされた認証情報を、プログラムでシークレットを取得するための API コールに置き換えるのに役立ちます。

その他の製品とツール

  • MongoDB Atlas は、MongoDB データベースをクラウドにデプロイおよび管理するためのフルマネージド型 Database as a Service (DbaaS) です。

  • Terraform」は、HashiCorpのinfrastructure as code (IaC) ツールで、クラウドとオンプレミスのリソースの作成と管理を支援します。このパターンでは、Terraform を使用してスクリプトを実行し、 AWS と MongoDB Atlas に必要なリソースのデプロイを容易にします。

コードリポジトリ

このパターンのコードは、 AWS および MongoDB Atlas Landing Zone GitHub リポジトリで入手できます。

エピック

タスク説明必要なスキル

主要な利害関係者を識別します。

ランディングゾーンプロジェクトに関与するすべての主要な利害関係者とチームメンバーを特定します。これには、次のようなロールが含まれる場合があります。

  • データベース管理者 (DBAs)

  • DevOps エンジニア

  • アプリケーションデベロッパー

  • アプリケーションアーキテクト

移行リード

構造設計図を作成します。

AWS と MongoDB Atlas 対応ランディングゾーンの必要な構造の概要を示す設計図を作成します。

移行リード

アーキテクチャプランを作成します。

アプリケーションアーキテクトと協力して要件を分析し、耐障害性と回復力に優れたアーキテクチャを設計します。このパターンは、リファレンス用のスターターアーキテクチャテンプレートを提供します。このテンプレートは、組織のセキュリティとインフラストラクチャのニーズに合わせてカスタマイズできます。

クラウドアーキテクト

セットアップとデプロイを計画します。

すべてのステークホルダーとともに、アーキテクチャのデプロイ方法、セキュリティ対策の実装方法、その他の側面を決定し、組織とリクエスト元のチームの両方の利益との整合性を確保します。

移行リーダー、DevOps エンジニア、DBA
タスク説明必要なスキル

リポジトリをクローン作成します。

コマンドを実行して、GitHub リポジトリからコードをクローンします。

git clone https://github.com/mongodb-partners/AWS-MongoDB-Atlas-Landing-Zone
アプリ開発者、DevOps エンジニア

Atlas 組織 ID を取得します。

  1. MongoDB Atlas アカウントをお持ちでない場合は、サインアップしてください。

  2. MongoDB ドキュメントの手順に従って、組織を作成します。

  3. 組織 ID をコピーします。

DBA

Atlas 組織レベルの API キーを生成します。

Atlas で組織レベルの API キーを生成するには、MongoDB ドキュメントの指示に従います。

DBA

でシークレットを作成します AWS Secrets Manager。

前のステップで生成された MongoDB Atlas API キーをキーと値のシークレットとして Secrets Manager に保存します。手順については、「Secrets Manager のドキュメント」を参照してください。

DevOps エンジニア

Atlas クラスター層を選択します。

正しい Atlas クラスター階層を選択するには、MongoDB ドキュメントの指示に従います。

DBA
タスク説明必要なスキル

Terraform スクリプトを変更します。

GitHub リポジトリのローカルコピーで、Modules/mongodb-atlas/main.tf ファイル (12 行目) のシークレット名を更新し、Terraform がデプロイ中に Secrets Manager から認証情報を取得できるようにします。

DevOps エンジニア

AWS アクセスキー ID とシークレットキーを作成します。

AWS アクセスキー ID とシークレットキーを作成するには、 AWS 「re:Post」の記事AWS 「アクセスキーの作成方法」の手順に従います。

必要な最小限の権限でポリシーを割り当てるのがベストプラクティスですが、この場合はAdministratorAccessポリシーを選択します。

アクセスキーを作成したら、IAM のセキュリティのベストプラクティスを確認して、アクセスキーを管理するためのベストプラクティスを確認してください。

DevOps エンジニア

Elastic IP アドレスを割り当てます。

少なくとも 2 つの Elastic IP アドレス IDs。手順については、Amazon Virtual Private Cloud (Amazon VPC) のドキュメントを参照してください。

DevOps エンジニア

S3 バケットを作成する。

Amazon Simple Storage Service (Amazon S3) ドキュメントの手順に従って、Terraform デプロイの状態を保存する S3 バケットを作成します。 Amazon S3

DevOps エンジニア

ストレージ用に S3 バケットを更新します。

前のステップで作成したバケットの名前とリージョンと一致するように、ローカルバージョンの environments/development/main.tf の S3 バケット情報を更新し、キープレフィックスを指定します。例:

terraform { ... backend "s3" { bucket = "startup-name-product-terraform" key = "network/dev" region = "ap-southeast-1" } }

この例では、キープレフィックスを使用して Terraform 状態ファイルを整理network/devするように Terraform を設定できます。値は、作成する環境stagingに合わせて prodまたは に変更できます。複数の環境を使用する方法については、このセクションの最後のステップを参照してください。

Amazon S3 キープレフィックスの詳細については、Amazon S3 ドキュメントの「プレフィックスを使用してオブジェクトを整理する」を参照してください。

DevOps エンジニア

Terraform 変数を設定します。

サンプルランディングゾーンは、Terraform 変数定義ファイルを使用して入力変数値を定義します。

変数ファイルは environments/development/variables.tf にあります。変数値は environmentenvironments/development/terraform.tfvars ファイルで設定できます。GitHub リポジトリの Readme ファイルの説明に従って、これらの変数を設定します。

DevOps エンジニア

環境変数を設定します。

ローカルマシンで Terraform スクリプトを実行する予定がある場合は、次の環境変数を設定します。

  • AWS_ACCESS_KEY_ID: AWS アクセスキー ID

  • AWS_SECRET_ACCESS_KEY: AWS シークレットアクセスキー

  • AWS_DEFAULT_REGION: AWS リージョン

  • TF_LOG: Terraform ログレベル (DEBUG または INFO

環境変数の設定の詳細については、 AWS Command Line Interface (AWS CLI) ドキュメントを参照してください。

DevOps エンジニア

VPC 設定を確認します。

が推奨するベストプラクティスに従うには AWS、組織のニーズに合わせて Terraform スクリプトで VPC とサブネット CIDRs、NAT ゲートウェイ、ルート、ルートテーブルを設定します。詳細については、GitHub リポジトリの Readme ファイルを参照してください。

DevOps エンジニア

リソースにタグ付けします。

AWS リソースにタグを付けて、Terraform スクリプトによってデプロイされたときにモニタリングできます。例については、GitHub リポジトリの Readme ファイルを参照してください。コスト、使用状況などのタグによるリソースのモニタリングについては、 AWS Billing ドキュメントの「ユーザー定義のコスト配分タグのアクティブ化」を参照してください。

DevOps エンジニア

複数の環境を使用します。

GitHub リポジトリはdevelopment環境フォルダを提供します。環境フォルダに独自の環境を追加することもできます。

環境を追加するには、 development の下の新しいフォルダ ( prodや などstaging) にフォルダをコピーしますenvironments。その後、新しい値でterraform.tfvarsファイルを更新できます。

DevOps エンジニア
タスク説明必要なスキル

ディレクトリから Terraform を開始します。

作業ディレクトリを初期化し、必要なパッケージをダウンロードするには、 コマンドを実行します。

terraform init
DevOps エンジニア

実行計画を作成します。

実行計画を作成し、Terraform がインフラストラクチャに加える変更を視覚化するには、 コマンドを実行します。

terraform plan
DevOps エンジニア

変更をデプロイします。

コードの説明に従ってインフラストラクチャに変更を実装するには、 コマンドを実行します。

terraform apply
DevOps エンジニア

デプロイを検証します。

Terraform がインフラストラクチャで作成または変更したコンポーネントを検証します。

セットアップをテストするには、 または VPC にアタッチされたコンピューティングリソース (Amazon EC2 インスタンスや AWS Lambda 関数など) をプロビジョニングします。

DevOps エンジニア、アプリ開発者
タスク説明必要なスキル

クリーンアップを行います。

テストが完了したら、次のコマンドを実行して、Terraform がインフラストラクチャにデプロイしたリソースを破棄します。

terraform destroy
DevOps エンジニア

関連リソース

発見と評価

MongoDB Atlas と AWS 環境のセットアップ

ランディングゾーンのデプロイ