Amazon Virtual Private Cloud
ユーザーガイド

VPC エンドポイントサービス (AWS PrivateLink)

VPC で独自のアプリケーションを作成し、これを AWS PrivateLink を使用するサービス (エンドポイントサービス) として設定できます。他の AWS プリンシパルは、インターフェイス VPC エンドポイントを使用して VPC からエンドポイントサービスへの接続を作成できます。お客様はサービスプロバイダであり、お客様のサービスへの接続を作成する AWS プリンシパルはサービスコンシューマーです。

概要

エンドポイントサービスの一般的な作成手順は以下のとおりです。

  1. VPC でアプリケーションの Network Load Balancer を作成し、これを、サービスを使用可能にするサブネット (アベイラビリティーゾーン) ごとに設定します。ロードバランサーは、サービスコンシューマーからリクエストを受け取ってサービスにルーティングします。詳細については、Network Load Balancer 用ユーザーガイドの「Network Load Balancer のご利用開始にあたって」を参照してください。サービスは、リージョン内のすべてのアベイラビリティーゾーンに設定することをお勧めします。

  2. VPC エンドポイントサービス設定を作成し、Network Load Balancer を指定します。

サービスコンシューマーからサービスに接続するための一般的な手順は以下のとおりです。

  1. 特定のサービスコンシューマー (AWS アカウント、IAM ユーザー、および IAM ロール) に対して、エンドポイントサービスへの接続を作成するためのアクセス権限を付与します。

  2. アクセス権限を付与されたサービスコンシューマーは、サービスへのインターフェイスエンドポイントを (必要に応じて) サービスが設定されている各アベイラビリティーゾーンで作成します。

  3. 接続を有効にするには、インターフェイスエンドポイント接続リクエストを承諾します。デフォルトでは、接続リクエストは手動で承諾する必要があります。ただし、接続リクエストが自動的に承諾されるように、エンドポイントサービスの承諾設定を指定できます。

アクセス許可と承諾設定を組み合わせると、サービスにアクセスできるサービスコンシューマー (AWS プリンシパル) を管理するうえで役立ちます。たとえば、信頼している選択されたプリンシパルにアクセス許可を付与して自動的にすべての接続リクエストを承諾するか、プリンシパルのより広範なグループにアクセス許可を付与して、信頼している特定の接続リクエストを手動で承諾できます。

次の図で、VPC B のアカウント所有者はサービスプロバイダで、サブネット B のインスタンスでサービスを実行しています。VPC B の所有者が使用するサービスエンドポイント (vpce-svc-1234) に関連付けられた Network Load Balancer はサブネット B のインスタンスをターゲットとして指します。VPC A のサブネット A のインスタンスは、インターフェイスエンドポイントを使用してサブネット B のサービスにアクセスします。


                インターフェイスエンドポイントを使用してエンドポイントサービスにアクセスする

低レイテンシーと耐障害性のために、Network Load Balancer を使用し AWS リージョンの各アベイラビリティーゾーンにターゲットを置くことをお勧めします。ゾーン DNS ホスト名を使用するサービスコンシューマーがサービスにアクセスするための高可用性を実現するために、クロスゾーン負荷分散を使用できます。クロスゾーン負荷分散を使用すると、ロードバランサーを使用して有効なすべてのアベイラビリティーゾーンの登録済みターゲットにトラフィックを分散できます。詳細については、Network Load Balancer 用ユーザーガイドの「クロスゾーン負荷分散」を参照してください。クロスゾーン負荷分散を有効にすると、リージョン内データ転送料金がアカウントに適用されることがあります。

以下の図では、VPC B の所有者はサービスプロバイダであり、2 つの異なるアベイラビリティーゾーンにターゲットを置く Network Load Balancer を設定しています。サービスコンシューマー (VPC A) は、自分の VPC で同じ 2 つのアベイラビリティーゾーンにインターフェイスエンドポイントを作成しました。VPC A のインスタンスからサービスへのリクエストには、いずれかのインターフェイスエンドポイントが使用されます。


                インターフェイスエンドポイントを使用してエンドポイントサービスにアクセスする

エンドポイントサービスのアベイラビリティゾーンに関する考慮事項

エンドポイントサービスを作成する場合、サービスはアカウントにマッピングされたアベイラビリティーゾーンに作成され、他のアカウントからは独立したものになります。サービスプロバイダーとコンシューマーが別のアカウントにある場合、アベイラビリティーゾーン ID を使用してエンドポイントサービスのアベイラビリティーゾーンを一意に一貫して識別します。たとえば、use1-az1 は、us-east-1 リージョンの AZ ID で、すべての AWS アカウントで同じ場所にマッピングされます。アベイラビリティーゾーン ID の詳細については、AWS RAM ユーザーガイドの「リソースの AZ ID」を参照するか、describe-availability-zones を使用してください。

エンドポイントサービスの制限

エンドポイントサービスを使用するには、現在のルールおよび制限に注意する必要があります。

  • エンドポイントサービスは、TCP 経由の IPv4 トラフィックのみをサポートします。

  • サービスコンシューマーは、エンドポイント固有の DNS ホスト名を使用してエンドポイントサービスにアクセスする必要があります。プライベート DNS はサポートされていません。詳細については、「インターフェイスエンドポイントを介したサービスへのアクセス」を参照してください。

  • エンドポイントサービスが複数の Network Load Balancer に関連付けられている場合、特定のアベイラビリティーゾーンでは、インターフェイスエンドポイントは 1 つのロードバランサーとのみ接続を確立します。

  • エンドポイントサービスでは、関連付けられたネットワークロードバランサーは一意の各ターゲット (IP アドレスとポート) に対して 55,000 の同時接続または 1 分あたり約 55,000 の接続をサポートできます。これらの接続数を超えた場合、ポート割り当てエラーが発生する可能性が高くなります。ポート割り当てエラーを修正するには、ターゲットグループにさらに多くのターゲットを追加します。Network Load Balancer ターゲットグループの詳細については、Network Load Balancer 用ユーザーガイドの「ネットワークロードバランサーのターゲットグループ」と「ターゲットグループへのターゲットの登録」を参照してください。

  • アカウントのアベイラビリティーゾーンは、別のアカウントのアベイラビリティーゾーンと同じ場所にマッピングされない可能性があります。たとえば、あるアカウントのアベイラビリティーゾーン us-east-1a は別のアカウントのアベイラビリティーゾーン us-east-1a と同じ場所にはない可能性があります。詳細については、「リージョンとアベイラビリティーゾーンの概念」を参照してください。エンドポイントサービスを設定すると、アカウントにマッピングされるようにアベイラビリティーゾーンで設定されます。

VPC エンドポイントサービス設定の作成

Amazon VPC コンソールまたはコマンドラインを使用して、エンドポイントサービス設定を作成できます。開始する前に、VPC 内にサービス用の Network Load Balancer が 1 つ以上作成済みであることを確認します。詳細については、Network Load Balancer 用ユーザーガイドの「Network Load Balancer のご利用開始にあたって」を参照してください。

オプションとして、サービスへのインターフェイスエンドポイント接続リクエストを手動で承諾するように設定で指定することもできます。通知を作成し、接続リクエストがあった場合はアラートを受信できます。接続を承諾しない場合、サービスコンシューマーはサービスにアクセスできません。

注記

承諾設定にかかわらず、サービスコンシューマーでは、サービスへの接続を作成するアクセス許可も必要です。

コンソールを使用してエンドポイントサービスを作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services]、[Create Endpoint Service] の順に選択します。

  3. [ネットワークロードバランサーの関連付け] で、エンドポイントサービスに関連付けるNetwork Load Balancerを選択します。

  4. [Require acceptance for endpoint] チェックボックスをオンにして、サービスへの接続リクエストを手動で承諾します。このオプションを選択しないと、エンドポイント接続は自動的に承諾されます。

  5. [Create service] を選択します。

エンドポイントサービス設定の作成後に、アクセス権限を追加し、サービスコンシューマーがサービスへのインターフェイスエンドポイントを作成できるようにします。

AWS CLI を使用してエンドポイントサービスを作成するには

  • create-vpc-endpoint-service-configuration コマンドを使用し、Network Load Balancerの 1 つ以上の ARN を指定します。オプションとして、サービスへの接続に承諾を必要とするかどうかを指定できます。

    aws ec2 create-vpc-endpoint-service-configuration --network-load-balancer-arns arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/nlb-vpce/e94221227f1ba532 --acceptance-required
    { "ServiceConfiguration": { "ServiceType": [ { "ServiceType": "Interface" } ], "NetworkLoadBalancerArns": [ "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/nlb-vpce/e94221227f1ba532" ], "ServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-03d5ebb7d9579a2b3", "ServiceState": "Available", "ServiceId": "vpce-svc-03d5ebb7d9579a2b3", "AcceptanceRequired": true, "AvailabilityZones": [ "us-east-1d" ], "BaseEndpointDnsNames": [ "vpce-svc-03d5ebb7d9579a2b3.us-east-1.vpce.amazonaws.com" ] } }

AWS Tools for Windows PowerShell または API を使用してエンドポイントサービスを作成するには

エンドポイントサービスのアクセス権限の追加または削除

エンドポイントサービス設定の作成後に、どのサービスコンシューマーがサービスへのインターフェイスエンドポイントを作成できるかを制御できます。サービスコンシューマーは、IAM プリンシパル (IAM ユーザー、IAM ロール、および AWS アカウント) です。プリンシパルのアクセス権限を追加または削除するには、Amazon リソースネーム (ARN) が必要です。

  • AWS アカウント (およびアカウントのすべてのプリンシパル) の場合、ARN の形式は arn:aws:iam::aws-account-id:root です。

  • 特定の IAM ユーザーの場合、ARN の形式は arn:aws:iam::aws-account-id:user/user-name です。

  • 特定の IAM ロールの場合、ARN の形式は arn:aws:iam::aws-account-id:role/role-name です。

コンソールを使用してアクセス権限を追加または削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、エンドポイントサービスを選択します。

  3. [Actions]、[Add principals to whitelist] の順に選択します。

  4. アクセス権限を追加する先のプリンシパルの ARN を指定します。さらにプリンシパルを追加するには、[Add principal] を選択します。プリンシパルを削除するには、エントリの横にある十字アイコンを選択します。

    注記

    すべてのプリンシパルにアクセス権限を追加するには、* を指定します。これにより、すべての AWS アカウントのすべてのプリンシパルで、サービスへのインターフェイスエンドポイントを作成できます。

  5. [Add to Whitelisted principals] を選択します。

  6. プリンシパルを削除するには、それをリストで選択して [Delete] を選択します。

AWS CLI を使用してアクセス権限を追加または削除するには

  1. エンドポイントサービスにアクセス権限を追加するには、modify-vpc-endpoint-service-permissions コマンドで --add-allowed-principals パラメータを使用し、プリンシパルの 1 つ以上の ARN を追加します。

    aws ec2 modify-vpc-endpoint-service-permissions --service-id vpce-svc-03d5ebb7d9579a2b3 --add-allowed-principals '["arn:aws:iam::123456789012:root"]'
  2. エンドポイントサービスに追加したアクセス権限を表示するには、describe-vpc-endpoint-service-permissions コマンドを使用します。

    aws ec2 describe-vpc-endpoint-service-permissions --service-id vpce-svc-03d5ebb7d9579a2b3
    { "AllowedPrincipals": [ { "PrincipalType": "Account", "Principal": "arn:aws:iam::123456789012:root" } ] }
  3. エンドポイントサービスのアクセス権限を削除するには、modify-vpc-endpoint-service-permissions コマンドで --remove-allowed-principals パラメータを使用し、プリンシパルの 1 つ以上の ARN を削除します。

    aws ec2 modify-vpc-endpoint-service-permissions --service-id vpce-svc-03d5ebb7d9579a2b3 --remove-allowed-principals '["arn:aws:iam::123456789012:root"]'

AWS Tools for Windows PowerShell または API を使用してエンドポイントサービスのアクセス権限を変更するには

Network Load Balancer および承諾の設定の変更

エンドポイントサービス設定を変更するには、エンドポイントサービスに関連付けられた Network Load Balancer を変更したり、エンドポイントサービスへの接続リクエストに承諾を必要とするかどうかを変更したりします。

エンドポイントサービスにインターフェイスエンドポイントがアタッチされている場合、ロードバランサーの関連付けを解除することはできません。

コンソールを使用してエンドポイントサービスの Network Load Balancer を変更するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、エンドポイントサービスを選択します。

  3. [Actions]、[Associate/Disassociate Network Load Balancers] の順に選択します。

  4. 必要に応じてロードバランサーを選択または選択解除し、[Save] を選択します。

コンソールを使用して承諾の設定を変更するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、エンドポイントサービスを選択します。

  3. [Actions]、[Modify endpoint acceptance setting] の順に選択します。

  4. [Require acceptance for endpoint] を選択または選択解除し、[Modify] を選択します。

AWS CLI を使用してロードバランサーと承諾の設定を変更するには

  1. エンドポイントサービスのロードバランサーを変更するには、次に示すように modify-vpc-endpoint-service-configuration コマンドで --add-network-load-balancer-arn パラメータまたは --remove-network-load-balancer-arn パラメータを使用します。

    aws ec2 modify-vpc-endpoint-service-configuration --service-id vpce-svc-09222513e6e77dc86 --remove-network-load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/nlb-vpce/e94221227f1ba532
  2. 承諾を必要とするかどうかを変更するには、次に示すように modify-vpc-endpoint-service-configuration コマンドを使用し、--acceptance-required or --no-acceptance-required を指定します。

    aws ec2 modify-vpc-endpoint-service-configuration --service-id vpce-svc-09222513e6e77dc86 --no-acceptance-required

AWS Tools for Windows PowerShell または API を使用してエンドポイントサービス設定を変更するには

インターフェイスエンドポイントの接続リクエストの承諾または拒否

エンドポイントサービスの作成後に、アクセス権限を追加したサービスコンシューマーはサービスに接続するためのインターフェイスエンドポイントを作成できます。インターフェイスエンドポイントの作成の詳細については、「インターフェイス VPC エンドポイント (AWS PrivateLink)」を参照してください。

接続リクエストに承諾を要することを指定した場合は、エンドポイントサービスへのインターフェイスエンドポイントの接続リクエストを手動で承諾または拒否する必要があります。インターフェイスエンドポイントを承諾すると、そのエンドポイントは available になります。

インターフェイスエンドポイントの接続は、それが available になった後で、拒否することができます。

コンソールを使用して接続リクエストを承諾または拒否するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、エンドポイントサービスを選択します。

  3. [Endpoint Connections] タブに、現在承認待ちのエンドポイント接続が一覧表示されます。エンドポイントを選択して、[Actions] を選択し、[Accept endpoint connection request] を選択して接続を承諾するか、[Reject endpoint connection request] を選択して接続を拒否します。

AWS CLI を使用して接続リクエストを承諾または拒否するには

  1. 承諾待ちのエンドポイント接続を表示するには、describe-vpc-endpoint-connections コマンドを使用し、pendingAcceptance 状態でフィルタします。

    aws ec2 describe-vpc-endpoint-connections --filters Name=vpc-endpoint-state,Values=pendingAcceptance
    { "VpcEndpointConnections": [ { "VpcEndpointId": "vpce-0c1308d7312217abc", "ServiceId": "vpce-svc-03d5ebb7d9579a2b3", "CreationTimestamp": "2017-11-30T10:00:24.350Z", "VpcEndpointState": "pendingAcceptance", "VpcEndpointOwner": "123456789012" } ] }
  2. エンドポイント接続のリクエストを承諾するには、accept-vpc-endpoint-connections コマンドを使用し、エンドポイント ID とエンドポイントサービス ID を指定します。

    aws ec2 accept-vpc-endpoint-connections --service-id vpce-svc-03d5ebb7d9579a2b3 --vpc-endpoint-ids vpce-0c1308d7312217abc
  3. エンドポイント接続のリクエストを拒否するには、reject-vpc-endpoint-connections コマンドを使用します。

    aws ec2 reject-vpc-endpoint-connections --service-id vpce-svc-03d5ebb7d9579a2b3 --vpc-endpoint-ids vpce-0c1308d7312217abc

AWS Tools for Windows PowerShell または API を使用してエンドポイント接続を承諾または拒否するには

エンドポイントサービスの通知の作成と管理

エンドポイントサービスにアタッチしたエンドポイントで特定のイベントが発生した場合に、アラートを受信するための通知を作成できます。たとえば、エンドポイントサービスに対するエンドポイントリクエストが承諾または拒否されたときに E メールを受信できます。通知を作成するには、Amazon SNS トピックを通知に関連付ける必要があります。この SNS トピックへの受信登録を行い、エンドポイントイベントの発生時に E メール通知を受信できます。詳細については、『Amazon Simple Notification Service 開発者ガイド』を参照してください。

通知に使用する Amazon SNS トピックには、ユーザーに代わって通知を発行することを Amazon VPC エンドポイントサービスに許可するトピックポリシーが必要です。トピックポリシーには、次のステートメントを必ず含めます。詳細については、Amazon Simple Notification Service 開発者ガイドの「Amazon SNS トピックへのアクセスの管理」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vpce.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:region:account:topic-name" } ] }

エンドポイントサービスの通知を作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、エンドポイントサービスを選択します。

  3. [Notifications]、[Create Notification] の順に選択します。

  4. 通知に関連付ける SNS トピックの ARN を選択します。

  5. [Events] で、通知を受け取る対象のエンドポイントイベントを選択します。

  6. [Create Notification] を選択します。

通知の作成後に、通知に関連付けた SNS トピックを変更できます。または、通知に対して別のエンドポイントイベントを指定できます。

エンドポイントサービスの通知を変更するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、エンドポイントサービスを選択します。

  3. [Notifications]、[Actions]、[Modify Notification] の順に選択します。

  4. SNS トピックの ARN を指定し、必要に応じてエンドポイントイベントを選択または選択解除します。

  5. [Modify Notification] を選択します。

通知が不要になった場合は、それを削除できます。

通知を削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、エンドポイントサービスを選択します。

  3. [Notifications]、[Actions]、[Delete Notification] の順に選択します。

  4. [Yes, Delete] を選択します。

AWS CLI を使用して通知を作成または管理するには

  1. エンドポイントサービスの通知を作成するには、create-vpc-endpoint-connection-notification コマンドを使用し、SNS トピックの ARN、通知対象のイベント、エンドポイントサービスの ID を指定します。次に例を示します。

    aws ec2 create-vpc-endpoint-connection-notification --connection-notification-arn arn:aws:sns:us-east-2:123456789012:VpceNotification --connection-events Connect Accept Delete Reject --service-id vpce-svc-1237881c0d25a3abc
    { "ConnectionNotification": { "ConnectionNotificationState": "Enabled", "ConnectionNotificationType": "Topic", "ServiceId": "vpce-svc-1237881c0d25a3abc", "ConnectionEvents": [ "Reject", "Accept", "Delete", "Connect" ], "ConnectionNotificationId": "vpce-nfn-008776de7e03f5abc", "ConnectionNotificationArn": "arn:aws:sns:us-east-2:123456789012:VpceNotification" } }
  2. 通知を表示するには、describe-vpc-endpoint-connection-notifications コマンドを使用します。

    aws ec2 describe-vpc-endpoint-connection-notifications
  3. 通知の SNS トピックまたはエンドポイントイベントを変更するには、modify-vpc-endpoint-connection-notification コマンドを使用します。次に例を示します。

    aws ec2 modify-vpc-endpoint-connection-notification --connection-notification-id vpce-nfn-008776de7e03f5abc --connection-events Accept Reject --connection-notification-arn arn:aws:sns:us-east-2:123456789012:mytopic
  4. 通知を削除するには、delete-vpc-endpoint-connection-notifications コマンドを使用します。

    aws ec2 delete-vpc-endpoint-connection-notifications --connection-notification-ids vpce-nfn-008776de7e03f5abc

接続情報のプロキシプロトコルの使用

Network Load Balancer はアプリケーション (サービス) にソース IP アドレスを提供します。サービスコンシューマーがインターフェイスエンドポイントを介してサービスにトラフィックを送信する場合、アプリケーションに提供されるソース IP アドレスは、サービスコンシューマーの IP アドレスではなく、Network Load Balancer ノードのプライベート IP アドレスです。

サービスコンシューマーの IP アドレスおよび対応するインターフェイスエンドポイント ID が必要な場合は、ロードバランサーでプロキシプロトコルを有効化し、プロキシプロトコルヘッダーからクライアント IP アドレスを取得します。詳細については、Network Load Balancer 用ユーザーガイドの「プロキシプロトコル」を参照してください。

VPC エンドポイントサービスタグの追加または削除

タグは VPC エンドポイントサービスを識別する方法を提供します。タグを追加または削除できます。

VPC エンドポイントサービスタグを追加または削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services (エンドポイントサービス)] を選択します。

  3. VPC エンドポイントサービスを選択し、[アクション]、[タグの追加/編集] の順に選択します。

  4. タグを追加または削除します。

    [タグの追加] [タグの作成] を選択して、以下を実行します。

    • [キー] にはキー名を入力します。

    • [] にはキー値を入力します。

    [タグの削除] タグのキーと値の右側にある削除ボタン ("x") を選択します。

To add or remove a tag using the AWS Tools for Windows PowerShell or an API

エンドポイントサービス設定の削除

エンドポイントサービス設定を削除できます。設定を削除しても、VPC でホストされているアプリケーションや関連付けられたロードバランサーは削除されません。

エンドポイントサービス設定を削除する前に、サービスにアタッチされている available または pending-acceptance の VPC エンドポイントを拒否する必要があります。詳細については、「インターフェイスエンドポイントの接続リクエストの承諾または拒否」を参照してください。

コンソールを使用してエンドポイントサービス設定を削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[Endpoint Services] を選択し、サービスを選択します。

  3. [ Actions] で、[Delete ] を選択します。

  4. [Yes, Delete] を選択します。

AWS CLI を使用してエンドポイントサービス設定を削除するには

AWS Tools for Windows PowerShell または API を使用してエンドポイントサービス設定を削除するには