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」を参照してください。

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

この章のトピック:

AWS IoT Core 用 VPC エンドポイントの作成

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 の制限事項の詳細については、VPC エンドポイントの制約事項 を参照してください。

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

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

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

注記

現時点では、AWS IoT Coreは、https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policiesVPC エンドポイントポリシーをサポートしていません。

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

{ "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 エンドポイントの制約事項

このセクションでは、パブリックエンドポイントと比較した VPC エンドポイントの制約事項について説明します。

  • 現在 VPC エンドポイントは、IoT データエンドポイントのためだけにサポートされています。

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

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

  • VPC エンドポイントは IPv4 トラフィックのみをサポートします。

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

  • VPC エンドポイントポリシーは、今のところサポートされていません。

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

IoT Core での VPC エンドポイントのスケーリング

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

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

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

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

AWS IoT Core インターフェイス VPC エンドポイントは、AWS IoT Core がサポートされているリージョンのすべてで利用できます。