AWS IoT Core とインターフェイス VPC エンドポイントの使用 - AWS IoT Core

AWS IoT Core とインターフェイス VPC エンドポイントの使用

インターフェイス VPC エンドポイントを使用することによって、AWS IoT Core で IoT データエンドポイントを仮想プライベートクラウド (VPC) 内で作成することができます。インターフェイス VPC エンドポイントは、プライベート IP アドレスを通じて AWS で実行しているサービスにサクセスするために使用できる AWS テクノロジーである AWS PrivateLink を使用しています。詳細については、「Amazon Virtual Private Cloud」を参照してください。

リモートネットワーク上の現場にあるデバイス (企業ネットワークなど) を Amazon VPC の詳細については、「ネットワークから Amazon VPC への接続マトリックス」に掲載されている様々なリストを参照してください。 

AWS IoT Core データプレーン用の VPC エンドポイントの作成

AWS IoT Core データプレーン API 用の VPC エンドポイントを作成して、デバイスを AWS IoT サービスやその他の AWS サービスに接続できます。VPC エンドポイントの使用を開始するには、インターフェイス VPC エンドポイントを作成し、AWS のサービスとして AWS IoT Core を選択します。CLI を使用している場合は、まずdescribe-vpc-endpoint servicesを呼び出して、特定のAWS リージョンにAWS IoT Coreが存在するアベイラビリティーゾーンを選択していることを確認します。例えば、us-east-1 では、このコマンドは以下のようになります。

aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.data
注記

DNS レコードを自動的に作成するための VPC 機能は無効になっています。これらのエンドポイントを接続するには、プライベート DNS レコードを手動で作成する必要があります。プライベート VPC DNS レコードの詳細については、インターフェイスエンドポイントのプライベート DNS を参照してください。AWS IoT Core VPC の制限事項の詳細については、制限 を参照してください。

MQTT クライアントを VPC エンドポイントインターフェイスに接続するには

  • VPC にアタッチされているプライベートホストゾーンに DNS レコードを手動で作成する必要があります。開始するには、「プライベートホストゾーンの作成」を参照してください。

  • プライベートホストゾーン内で、VPC エンドポイントの各 Elastic Network Interface IP のエイリアスレコードを作成します。複数の VPC エンドポイントに複数のネットワークインターフェイス IP がある場合、すべての加重レコードを通して等しい加重の DNS レコードを作成する必要があります。これらの IP アドレスは、説明フィールドの VPC エンドポイント ID でフィルタリングした場合に、DescribeNetworkInterfaces API コールから取得できます。

AWS IoT Core データプレーンの「Amazon VPC インターフェイスエンドポイントを作成する」および「プライベートホストゾーンを設定する」の下にある詳細な手順を参照してください。

AWS IoT Core 認証情報プロバイダーの VPC エンドポイントの作成

AWS IoT Core 認証情報プロバイダー用の VPC エンドポイントを作成して、クライアント証明書ベースの認証でデバイスに接続し、AWS 署名バージョン 4 形式で一時的な AWS 認証情報を取得できます。AWS IoT Core 認証情報プロバイダーの VPC エンドポイントの使用を開始するには、create-vpc-endpoint CLI コマンドを実行してインターフェイス VPC エンドポイントを作成し、AWS サービスとして AWS IoT Core 認証情報プロバイダーを選択します。特定の AWS リージョン に AWS IoT Core が存在するアベイラビリティーゾーンを選択していることを確認するには、まず describe-vpc-endpoint services コマンドを実行します。例えば、us-east-1 では、このコマンドは以下のようになります。

aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.credentials
注記

DNS レコードを自動的に作成するための VPC 機能は無効になっています。これらのエンドポイントを接続するには、プライベート DNS レコードを手動で作成する必要があります。プライベート VPC DNS レコードの詳細については、インターフェイスエンドポイントのプライベート DNS を参照してください。AWS IoT Core VPC の制限事項の詳細については、制限 を参照してください。

HTTP クライアントを VPC エンドポイントインターフェイスに接続するには

  • VPC にアタッチされているプライベートホストゾーンに DNS レコードを手動で作成する必要があります。開始するには、「プライベートホストゾーンの作成」を参照してください。

  • プライベートホストゾーン内で、VPC エンドポイントの各 Elastic Network Interface IP のエイリアスレコードを作成します。複数の VPC エンドポイントに複数のネットワークインターフェイス IP がある場合、すべての加重レコードを通して等しい加重の DNS レコードを作成する必要があります。これらの IP アドレスは、説明フィールドの VPC エンドポイント ID でフィルタリングした場合に、DescribeNetworkInterfaces API コールから取得できます。

AWS IoT Core 認証情報プロバイダーの「Amazon VPC インターフェイスエンドポイントを作成する」および「プライベートホストゾーンを設定する」の下にある詳細な手順を参照してください。

Amazon VPC インターフェイスエンドポイントの作成

インターフェイス VPC エンドポイントを作成して、AWS PrivateLink を利用する AWS サービスに接続できます。次の手順を使用して、AWS IoT Core データプレーンまたは AWS IoT Core 認証情報プロバイダーに接続するインターフェイス VPC エンドポイントを作成します。詳細については、「インターフェイス VPC エンドポイントを使用して AWS サービスにアクセスする」を参照してください。

注記

AWS IoT Core データプレーンと AWS IoT Core 認証情報プロバイダーの Amazon VPC インターフェイスエンドポイントを作成するプロセスは似ていますが、接続を機能させるにはエンドポイント固有の変更を行う必要があります。

VPC エンドポイントコンソールを使用して VPC エンドポイントを使用してインターフェイスを作成するには

  1. VPC エンドポイントコンソールに移動し、左側のメニューの [仮想プライベートクラウド][エンドポイント][エンドポイントを作成] を選択します。

  2. [エンドポイントの作成] ページで、以下の情報を指定します。

    • [Service category] (サービスカテゴリ) には [AWS のサービスs] を選択します。

    • [Service Name] (サービス名) については、キーワード iot を入力して検索します。表示された iot サービスのリストで、エンドポイントを選択します。

      AWS IoT Core データプレーンの VPC エンドポイントを作成する場合は、リージョンの AWS IoT Core データプレーン API エンドポイントを選択します。エンドポイントは com.amazonaws.region.iot.data の形式です。

      AWS IoT Core 認証情報プロバイダーの VPC エンドポイントを作成する場合は、リージョンの AWS IoT Core 認証情報プロバイダーエンドポイントを選択します。エンドポイントは com.amazonaws.region.iot.credentials の形式です。

      注記

      中国リージョンでの AWS IoT Core データプレーンのサービス名は cn.com.amazonaws.region.iot.data の形式になります。AWS IoT Core 認証情報プロバイダーの VPC エンドポイントの作成は、中国リージョンではサポートされていません。

    • [VPC] と [Subnets] (サブネット) には、エンドポイントを作成する VPC と、エンドポイントネットワークを作成するアベイラビリティーゾーン (AZ) を選択します。

    • [Enable DNS name] (DNS 名を有効にする) で、[Enable for this endpoint] (このエンドポイントで有効にする) が選択されていないことを確認してください。AWS IoT Core データプレーンも AWS IoT Core 認証情報プロバイダーもプライベート DNS 名をサポートしていません。

    • [Security group] (セキュリティグループ) には、エンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。

    • オプションで、タグを追加または削除できます。タグとは名前と値のペアで、エンドポイントに関連付けるために使用します。

  3. [Create Endpoint] (エンドポイントの作成) をクリックして、VPC エンドポイントを作成します。

AWS PrivateLink エンドポイントを作成した後、エンドポイントの [詳細] タブに、DNS 名のリストが表示されます。このセクションで作成したこれらの DNS 名のいずれかを使用して、プライベートホストゾーンを設定できます

プライベートホストゾーンの設定

前のセクションで作成したこれらの DNS 名のいずれかを使用して、プライベートホストゾーンを設定できます。

AWS IoT Core データプレーンの場合

DNS 名は、ドメイン設定名または IoT:Data-ATS エンドポイントである必要があります。例えば、DNS 名は、xxx-ats.data.iot.region.amazonaws.com などがあります。

AWS IoT Core 認証情報プロバイダー

DNS 名は iot:CredentialProvider エンドポイントである必要があります。例えば、DNS 名は、xxxx.credentials.iot.region.amazonaws.com などがあります。

注記

AWS IoT Core データプレーンと AWS IoT Core 認証情報プロバイダーのプライベートホストゾーンを設定するプロセスは似ていますが、接続を機能させるにはエンドポイント固有の変更を行う必要があります。

プライベートホストゾーンを作成します。

Route 53 コンソールを使用してプライベートホストゾーンを作成するには

  1. Route 53 の [Hosted zones] (ホストゾーン) コンソールに移動して、[Create hosted zone] (ホストゾーンの作成) をクリックします。

  2. [Create hosted zone] (ホストゾーンの作成) ページで、以下の情報を指定します。

    • [ドメイン名] には、iot:Data-ATS または iot:CredentialProvider エンドポイントのエンドポイントアドレスを入力します。次の AWS CLI コマンドは、パブリックネットワークの aws iot describe-endpoint --endpoint-type iot:Data-ATS または aws iot describe-endpoint --endpoint-type iot:CredentialProvider を通じてエンドポイントを取得する方法を示しています。

      注記

      カスタムドメインを使用している場合は、「VPC コマンドでのカスタムドメインの使用」を参照してください。カスタムドメインは、AWS IoT Core 認証情報プロバイダーではサポートされていません。

    • [タイプ] には、[プライベートホストゾーン] を選択します。

    • 必要に応じて、タグを追加または削除してホストゾーンに関連付けることができます。

  3. プライベートホストゾーンを作成するには、ホストゾーンの作成を選んでください。

詳細については、「プライベートホストゾーンの作成」を参照してください。

レコードを作成する

プライベートホストゾーンを作成したら、そのドメインにトラフィックをルーティングする方法を DNS に指示するレコードを作成できます。

レコードを作成するには

  1. 表示されるホストゾーンのリストで、前に作成したプライベートホストゾーンを選び、レコードを作成するを選びます。

  2. ウィザードを使用してレコードを作成します。コンソールに [Quick create] (クイック作成) 方式が表示された場合は、[Switch to wizard] (ウィザードに切り替える) をクリックします。

  3. [Routing policy] (ルーティングポリシー) に [Simple Routing] (シンプルルーティング) を選択し、[Next] (次へ) を選びます。

  4. [Configure records] (レコードを設定)ページで、[Define simple record] (シンプルなレコードを定義) を選択します。

  5. [Define simple record] (シンプルなレコードを定義) ページで

    • [レコード名]iot:Data-ATS エンドポイントまたは iot:CredentialProvider エンドっポイントを入力します。これは、プライベートホストゾーン名と同じである必要があります。

    • [レコードタイプ] では、IPv4 サポートのみが必要な場合は、値を A - Routes traffic to an IPv4 address and some AWS resources にします。IPv6 サポートのみが必要な場合は、値を AAAA - Routes traffic to an IPv6 address and some AWS resources にします。デュアルスタックのサポート (IPv4 と IPv6 の両方) が必要な場合は、同じレコード名値/トラフィックのルーティング先を使用して 2 つのレコード (AAAAA) をホストゾーンに作成します。

    • [Value/Route traffic to (値/トラフィックのルーティング先)] には、[Alias to VPC endpoint ( VPCエンドポイントへのエイリアス)] を選択します。次に、お使いの [Region] (地域)を選択し、表示されたエンドポイントのリストから、「Amazon VPC インターフェイスエンドポイントの作成」の説明に従って先ほど作成したエンドポイントを選択します。

  6. [Define simple record] (シンプルなレコードを定義) をクリックしてレコードを作成します。

VPC エンドポイントを経由しての AWS IoT Core へのアクセス制御

VPC の条件コンテキストキーを使用して、AWS IoT Core へのデバイスアクセスが VPC エンドポイントを経由する場合のみ許可されるように制限することができます。AWS IoT Core は、以下の VPC 関連のコンテキストキーをサポートします。

注記

AWS IoT Core は VPC エンドポイントのエンドポイントポリシーをサポートしていません。

例えば、次のポリシーは、特定の VPC エンドポイント ID を持った VPC エンドポイントへの接続デバイスの条件によって、モノの名前と一致するクライアント ID を使い、AWS IoT Core へ接続する許可、モノの名前によってプレフィックスされた任意のトピックを発行する許可を付与します。このポリシーでは、パブリック IoT データエンドポイントへの接続試行が拒否されます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ], "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}/*" ] } ] }

制限

VPC エンドポイントは現在、AWS IoT Core データエンドポイントAWS IoT Core 認証情報プロバイダーエンドポイントでのみサポートされています。VPC エンドポイントポリシーは、連邦情報処理規格 (FIPS) エンドポイントではサポートされません。

IoT データ VPC エンドポイントの制限

このセクションでは、IoT データ VPC エンドポイントの制限について説明します。

  • MQTT キープアライブ期間は 230 秒に制限されています。これ以上のキープアライブ期間は、自動的に 230 秒に短縮されます。

  • 各 VPC エンドポイントは、合計で 100,000 台の同時接続デバイスをサポートします。より多くの接続が必要な場合は、AWS IoT Core で VPC エンドポイントをスケールするを参照してください。

  • VPC エンドポイントは ATS 証明書のみに対応します (カスタムドメインを除く)。

  • VPC エンドポイントポリシーはサポートされません。

  • AWS IoT Core データプレーン用に作成された VPC エンドポイントでは、AWS IoT Core は、ゾーンまたはリージョンのパブリック DNS レコードの使用をサポートしていません。

認証情報プロバイダーエンドポイントの制限

このセクションでは、認証情報プロバイダー VPC エンドポイントの制限について説明します。

  • VPC エンドポイントは ATS 証明書のみを提供します。

  • VPC エンドポイントポリシーはサポートされません。

  • 認証情報プロバイダーエンドポイントでは、カスタムドメインはサポートされていません。

  • AWS IoT Core 認証情報プロバイダー用に作成された VPC エンドポイントでは、AWS IoT Core は、ゾーンまたはリージョンのパブリック DNS レコードの使用をサポートしていません。

AWS IoT Core で VPC エンドポイントをスケールする

AWS IoT Core インターフェイス VPC エンドポイントは、単一のインターフェイスエンドポイントあたり、接続デバイス 100,000 台に制限されています。ユースケースでブローカーに対する同時接続がこれ以上必要になる場合は、複数の VPC エンドポイントを使用して、インターフェイスエンドポイント間でのデバイスのルーティングを手動で行うことをお勧めします。VPC エンドポイントにトラフィックをルーティングするプライベート DNS レコードを作成するときは、VPC エンドポイントと同じ数の加重レコードを作成して、複数のエンドポイント全体にトラフィックを分散するようにしてください。

VPC エンドポイントでのカスタムドメインの使用

VPC エンドポイントでカスタムドメインを使用する場合は、プライベートホストゾーンにカスタムドメイン名レコードを作成し、Route53 でルーティングレコードを作成する必要があります。詳細については、「プライベートホストゾーンの作成」を参照してください。

注記

カスタムドメインは、AWS IoT Core データエンドポイントでのみサポートされています。

AWS IoT Core 用の VPC エンドポイントの可用性

AWS IoT Core インターフェイス VPC エンドポイントは、AWS IoT Core がサポートされているリージョンのすべてで利用できます。AWS IoT CoreAWS IoT Core 認証情報プロバイダーのインターフェイス VPC エンドポイントは、中国リージョンおよび AWS GovCloud (US) Regions ではサポートされていません。