

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ダイレクトメッセージングポリシーの例
<a name="direct-messaging-policy-examples"></a>

ダイレクトメッセージングを使用するには、特定のポリシーが必要です。ダイレクトメッセージングは、SendDirectMessage HTTP API を使用して、送信者から MQTT クライアント ID で識別される単一のレシーバーにメッセージを配信します。このセクションでは、ダイレクトメッセージングの一般的な使用を許可するポリシーの例を示します。

**Topics**
+ [特定のトピックで特定のクライアントに直接メッセージを送信するポリシー](#dm-policy-send-specific)
+ [ダイレクトメッセージを受信するポリシー](#dm-policy-receive)
+ [特定のトピックで任意のクライアントに直接メッセージを送信するポリシー](#dm-policy-send-any-client)
+ [任意のトピックの任意のクライアントにダイレクトメッセージを送信するポリシー](#dm-policy-send-any-client-any-topic)

## 特定のトピックで特定のクライアントに直接メッセージを送信するポリシー
<a name="dm-policy-send-specific"></a>

送信者が直接メッセージを送信するには、送信者にターゲットクライアント 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"]
                }
            }
        }
    ]
}
```

## ダイレクトメッセージを受信するポリシー
<a name="dm-policy-receive"></a>

受信者のポリシーは、 トピック`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 接続を確立する必要があります。ダイレクトメッセージはオフラインデバイス用にキューに入れられません。

## 特定のトピックで任意のクライアントに直接メッセージを送信するポリシー
<a name="dm-policy-send-any-client"></a>

次のポリシーでは、送信者は任意のクライアントに直接メッセージを送信できますが、`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`条件演算子とのワイルドカードマッチングをサポートします。

## 任意のトピックの任意のクライアントにダイレクトメッセージを送信するポリシー
<a name="dm-policy-send-any-client-any-topic"></a>

次のポリシーでは、送信者は任意のトピックの任意のクライアントに直接メッセージを送信できます。これは、バックエンドサービスが無制限のアクセスを必要とする管理またはフリート管理のユースケースに適しています。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:SendDirectMessage",
            "Resource": "arn:aws:iot:us-west-2:123456789012:client/*",
            "Condition": {
                "StringLike": {
                    "iot:Topic": "*"
                }
            }
        }
    ]
}
```