翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ダイレクトメッセージングポリシーの例
ダイレクトメッセージングを使用するには、特定のポリシーが必要です。ダイレクトメッセージングは、SendDirectMessage HTTP API を使用して、送信者から MQTT クライアント ID で識別される単一のレシーバーにメッセージを配信します。このセクションでは、ダイレクトメッセージングの一般的な使用を許可するポリシーの例を示します。
このセクションの内容:
特定のトピックで特定のクライアントに直接メッセージを送信するポリシー
送信者が直接メッセージを送信するには、送信者にターゲットクライアント ID をリソースとするiot:SendDirectMessageアクセス許可が必要です。iot:Topic 条件キー (オプション) は、送信者がメッセージを送信できるトピックを制限します。
-
SigV4-authenticatedサーバーの場合は、これを IAM ポリシーに追加します。
-
X.509 認証 IoT デバイスの場合は、これを ポリシーに追加します AWS IoT Core 。
-
カスタムオーソライザー認証クライアントの場合、Lambda 関数は、
iot:Topic条件キーを使用してターゲットクライアントリソースiot:SendDirectMessageで を付与するポリシードキュメントを返す必要があります。
次のポリシーではdevice1、クライアントがトピック commands/rebootおよび myDeviceでクライアントに直接メッセージを送信することを許可しますcommands/update。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/myDevice", "Condition": { "StringEquals": { "iot:Topic": ["commands/reboot", "commands/update"] } } } ] }
ダイレクトメッセージを受信するポリシー
受信者のポリシーは、 トピックiot:Receiveに を付与する必要があります。受信者はiot:Subscribeアクセス許可を必要としません。トピックのサブスクリプションを必要とせずにダイレクトメッセージを AWS IoT Core 配信します。レシーバーは、X.509 クライアント証明書 (AWS IoT Core ポリシー) または SigV4 (IAM ポリシー) を使用して認証できます。いずれの場合も、受信トピックに対する アクセスiot:Receive許可が必要です。
次のポリシーでは、受信者クライアントがトピック commands/rebootおよび に関する直接メッセージを受信myDeviceすることを許可しますcommands/update。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/reboot" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/update" } ] }
次のポリシーでは、ワイルドカードを使用して、受信者がcommands/プレフィックスの下にある任意のトピックで直接メッセージを受信できるようにします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/*" } ] }
注記
レシーバーは、ダイレクトメッセージを受信する前に、 への AWS IoT Core MQTT 接続を確立する必要があります。ダイレクトメッセージはオフラインデバイス用にキューに入れられません。
特定のトピックで任意のクライアントに直接メッセージを送信するポリシー
次のポリシーでは、送信者は任意のクライアントに直接メッセージを送信できますが、commands/*プレフィックスに一致するトピックでのみ送信できます。これは、特定のコマンドトピックにのみアクセスする必要があるフリート管理サービスに役立ちます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "commands/*" } } } ] }
注記
iot:Topic 条件キーは、 StringLike条件演算子とのワイルドカードマッチングをサポートします。
任意のトピックの任意のクライアントにダイレクトメッセージを送信するポリシー
次のポリシーでは、送信者は任意のトピックの任意のクライアントに直接メッセージを送信できます。これは、バックエンドサービスが無制限のアクセスを必要とする管理またはフリート管理のユースケースに適しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "*" } } } ] }