プライベートエンドポイント を使用すると、仮想プライベートクラウド(VPC)内から Atlas App Services にアクセスできます。 これは、パブリック インターネットを経由しないAtlas App Services Goのプライベート接続であり、 VPC 外からのリクエストでは 404
エラーが返されます。
プライベートエンドポイントは、 AWSのリージョンにローカルに配置された Atlas App Services アプリでのみ使用できます。 AWS PrivateLink を使用してAWS VPCに接続します。詳細については、 「AWS PrivateLink とは」を参照してください。 AWSドキュメントの 。
App Services プライベートエンドポイントには次の 2 種類があります。
一般: クライアント HTTP リクエストに
services.cloud.mongodb.com
を使用するエンドポイント。同期: 同期 WebSocket 接続に
services.cloud.mongodb.com
を使用するエンドポイント。
重要
カスタムHTTPS endpointsおよびData APIエンドポイントは、 プライベート エンドポイント ではサポートされていません。
始める前に
以下の情報を収集します。
VPC ID は、 Amazon Web Services VPCダッシュボード、またはAmazon Web Services CLI で describe-vpcs コマンドを実行中ことで確認できます。
サブネット ID は、 Amazon Web Services VPCダッシュボード、またはAmazon Web Services CLI で describe-subnets コマンドを実行中ことで見つけることができます。
VPC用のプライベートホストゾーンを設定します。これにはVPC ID が必要です。ModifyVpcAttribute を使用して、次のVPC属性を true に設定します。
EnableDnsHostnames
EnableDnsSupport
また、 Amazon Web Services CLIをインストールして認証する必要があります。
プライベートエンドポイントの追加
App Services UI または管理 API を使用して、新しい一般エンドポイントまたは同期エンドポイントを追加できます。
一般的なエンドポイントの追加
VPC インターフェイスエンドポイントの作成
App Services UI で、 App Settingsに移動し、 Private Endpointsタブをクリックします。
[Add Private Endpoint をクリックし、[General] をクリックします。
VPC ID とサブネット ID(カンマ区切りのリスト)を別々のフィールドに追加し、 Next ] をクリックします。
生成されたVPC Interface Endpoint Commandをコピーします。 コマンドは次のようになります。
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids> ターミナルで、生成されたAmazon Web Services CLIコマンドを実行してVPCエンドポイントを作成します。
アプリへのプライベートエンドポイントの追加
VPC にインターフェイスエンドポイントを作成したので、それをアプリに追加する必要があります。
前のステップで実行した コマンドの出力、または VPCダッシュボードのエンドポイント詳細画面で、 エンドポイントID CLIAmazon Web ServicesVPCを見つけます。この値は
vpce-
から始まります。新しい VPC エンドポイントの ID をコピーして、App Services UI の
Your VPC Endpoint ID
フィールドに貼り付け、 Nextをクリックします。これが最初に作成するプライベートエンドポイントである場合は、PrivateLink 接続外のリクエストからのすべてのアクセスを制限または開くために使用できるトグルが表示されます。 デフォルトでは、App Services は PrivateLink 接続外部からのすべてのリクエストをブロックします。 この設定は、このエンドポイントと作成する 追加のすべてのエンドポイントに適用されます。 詳細については、「アクセス制限の変更」を参照してください。
[Finish Endpoint Creation] をクリックします。
VPC インターフェイスエンドポイントの作成
List VPC プライベートエンドポイント サービスエンドポイントを呼び出します。
応答オブジェクトをフィルタリングして、アプリの配置リージョンと作成するエンドポイント タイプのエントリを見つけます。
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoint_service_infos \ -H "Authorization: Bearer <access_token>" [ { "cloud_provider_region": "aws-us-east-1", "service_name": "com.amazonaws.vpce.us-east-1.vpce-svc-0718bec2c0bdeab5c", "endpoint_type": "general" }, ... ] 前のステップで、目的のエントリから
service_name
フィールドを取得します。Amazon Web Services CLI の create-vpc-endpoint コマンドを使用してVPCエンドポイントを作成します。App Services エンドポイント サービス名、 VPC ID、サブネット ID、 Amazon Web Services配置リージョンが必要です。 コマンドは次のようになります。
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids>
アプリへのプライベートエンドポイントの追加
VPC にインターフェイスエンドポイントを作成したので、それをアプリに追加する必要があります。
前のステップで実行した コマンドの出力、または VPCダッシュボードのエンドポイント詳細画面で、 エンドポイントID CLIAmazon Web ServicesVPCを見つけます。この値は
vpce-
から始まります。VPC エンドポイントの ID が取得されたら、「 エンドポイント ID、クラウド配置リージョン、エンドポイントタイプを使用して VPC プライベートエンドポイントの作成」を呼び出します。 たとえば、
aws-us-east-1
を使用する場合は次のようになります。
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoints \ -X POST \ -H "Authorization: Bearer <accessToken>" \ -H "Content-Type: application/json" \ -d '{ "cloud_provider_region": "<your-cloud-deployment-region>", "cloud_provider_endpoint_id": "<your-vpc-endpoint-id>", "endpoint_type": "general", "comment": "Optional: add a comment describing the endpoint." }'
同期エンドポイントの追加
すべての同期エンドポイントは 一般的なエンドポイント と組み合わせる必要があります。
VPC インターフェイスエンドポイントの作成
App Services UI で、 App Settingsに移動し、 Private Endpointsタブをクリックします。
[Add Private Endpoint をクリックし、[Sync] をクリックします。
VPC ID とサブネット ID(カンマ区切りのリスト)を別々のフィールドに追加し、 Next ] をクリックします。
生成されたVPC Interface Endpoint Commandをコピーします。 コマンドは次のようになります。
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids> ターミナルで、生成されたAmazon Web Services CLIコマンドを実行してVPCエンドポイントを作成します。
また、App Services が生成するコマンドを使用して、一般的なエンドポイントも作成する必要があります。
アプリへのプライベートエンドポイントの追加
VPC にインターフェースエンドポイントを作成したので、それらをアプリに追加する必要があります。
前のステップで実行した コマンドの出力、または ダッシュボードのエンドポイント詳細画面で、VPC 同期 エンドポイント ID および 一般的な VPC エンドポイント IDCLIAmazon Web ServicesVPC を見つけます。この値は
vpce-
から始まります。新しい VPC エンドポイント ID をコピーし、App Services UI のそれぞれの
Your VPC Endpoint ID
フィールドに貼り付け、 Nextをクリックします。これが最初に作成するプライベートエンドポイントである場合は、PrivateLink 接続外のリクエストからのすべてのアクセスを制限または開くために使用できるトグルが表示されます。 デフォルトでは、App Services は PrivateLink 接続外部からのすべてのリクエストをブロックします。 この設定は、このエンドポイントと作成する 追加のすべてのエンドポイントに適用されます。 詳細については、「アクセス制限の変更」を参照してください。
このページに記載されている一般プライベートエンドポイントの作成手順に従って、一般プライベートエンドポイントも作成する必要があります。
[Finish Endpoint Creation] をクリックします。
VPC インターフェイスエンドポイントの作成
List VPC プライベートエンドポイント サービスエンドポイントを呼び出します。
応答オブジェクトをフィルタリングして、アプリの配置リージョンと作成するエンドポイント タイプのエントリを見つけます。
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoint_service_infos \ -H "Authorization: Bearer <access_token>" [ { "cloud_provider_region": "aws-us-east-1", "service_name": "com.amazonaws.vpce.us-east-1.vpce-svc-0718bec2c0bdeab5c", "endpoint_type": "sync" }, ... ] 前のステップで、目的のエントリから
service_name
フィールドを取得します。Amazon Web Services CLI の create-vpc-endpoint コマンドを使用してVPCエンドポイントを作成します。App Services エンドポイント サービス名、 VPC ID、サブネット ID、 Amazon Web Services配置リージョンが必要です。 コマンドは次のようになります。
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids>
アプリへのプライベートエンドポイントの追加
VPC にインターフェイスエンドポイントを作成したので、それをアプリに追加する必要があります。
前のステップで実行した コマンドの出力、または VPCダッシュボードのエンドポイント詳細画面で、 同期 エンドポイントID CLIAmazon Web ServicesVPCを見つけます。この値は
vpce-
から始まります。エンドポイント ID、クラウド配置リージョン、エンドポイントタイプを指定して VPC プライベートエンドポイントの作成を呼び出して、同期プライベートエンドポイントを作成します。 たとえば、
aws-us-east-1
を使用する場合は次のようになります。curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoints \ -X POST \ -H "Authorization: Bearer <accessToken>" \ -H "Content-Type: application/json" \ -d '{ "cloud_provider_region": "<your-cloud-deployment-region>", "cloud_provider_endpoint_id": "<your-vpc-endpoint-id>", "endpoint_type": "sync", "comment": "Optional: add a comment describing the endpoint." }' このページに記載されている一般プライベートエンドポイントの作成手順に従って、一般プライベートエンドポイントも作成する必要があります。
アクセス制限の変更
デフォルトでは、すべてのプライベートエンドポイントは内部リクエストのみを処理します。 PrivateLink 接続外のすべてのリクエストからアクセスを開くことを選択できます。
重要
この設定は、すべてのエンドポイントにグローバルです。
この設定は、次の 3 つの方法で切り替えることができます。
UI で、 Restrict Access Private Endpointsタブのエンドポイントのリストから [] ボタンをクリックします。
UI では、最初のプライベートエンドポイントを作成するときに、 Modify Your VPC Private DNSステップでこの設定を切り替えるオプションがあります。
Admin API で、ブール値(デフォルトの制限を削除するには
true
、デフォルトの制限を再度有効にするにはfalse
)を指定してAtlas 非 VPC リクエストを呼び出します。
プライベートエンドポイントは IP アクセス リストを無視します
プライベートエンドポイントを有効にした場合でも、 IP アクセス リスト へのパブリック IP 追加といった他のメソッドを使って App Services アプリケーションへのアクセスを有効にできます。
プライベートエンドポイントを介したリクエストは IP アクセス リストを無視するため、プライベート IP を IP アクセス リストに追加する必要はありません。
サポートされている SDK バージョン
Atlas Device SDK は 一般 エンドポイントと 同期 エンドポイントにアクセスできます。 ただし、新しいドメインをサポートするバージョンを使用する必要があります。
プライベートエンドポイントの制限
グローバルに配置されたアプリまたは Azure または GCP に配置されたローカルアプリでは、プライベートエンドポイントは使用できません。
プライベートエンドポイントが有効になっている場合、パブリックインターネット接続を使用してアプリにアクセスすることはできません。 すべてのリクエストはプライベートエンドポイントを介して送信される必要があります。
配置モデルを変更する場合は、アプリの新しいリージョン用に新しいプライベートエンドポイントを作成する必要があります。
プライベートエンドポイント を同時に使用し、 MongoDB ワイヤプロトコル 経由で接続を許可することはできません。 一方が有効になっている場合は、もう一方を有効にすることはできません。
デフォルトでは、プライベートエンドポイントは VPC 内からのリクエストのみを処理します。 また、パブリック インターネットからのリクエストも受け入れるようにアプリを構成できます。 その方法については、「アクセス制限の変更 」を参照してください。
外部 を呼び出す App Services などのすべての アウトバウンドtrigger APIリクエストは、パブリックGo インターネット経由で送信され 。