

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

# aws-apigateway-IoT
<a name="aws-apigateway-iot"></a>

![](http://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/experimental.png)


 すべてのクラスは積極的に開発されており、将来のバージョンでは下位互換性がない変更または削除の対象となります。これらは、[セマンティックバージョン管理](https://semver.org/)モデル。つまり、これらのパッケージを使用するかもしれませんが、このパッケージの新しいバージョンにアップグレードするときにソースコードを更新する必要があるかもしれません。

**注意:** 正しく機能するためには、プロジェクト内の AWS ソリューション構築パッケージと AWS CDK パッケージが同じバージョンである必要があります。


|  **言語**  |  **パッケージ**  | 
| --- | --- | 
|  ![](http://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/python.png) Python  |  aws\_solutions\_constructs.aws\_apigateway\_iot  | 
|  ![](http://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/typescript.png) TypeScript  |  @aws-solutions-constructs/aws-apigateway-iot  | 
|  ![](http://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/java.png) Java  |  software.amazon.awsconstructs.services.apigatewayiot  | 

## Overview
<a name="overview-32"></a>

 この AWS ソリューション構築物は、AWS IoT パターンに接続された Amazon API Gateway REST API を実装します。

 この構造体は、API Gateway と AWS IoT の間にスケーラブルな HTTPS プロキシを作成します。これは、MQTT または MQTT/WebSocket プロトコルをサポートしていないレガシーデバイスが AWS IoT プラットフォームと対話できるようにする場合に便利です。

 この実装により、特定の MQTT トピックに書き込み専用メッセージが公開されるようになります。また、デバイスレジストリーで許可されているものに対する HTTPS デバイスのシャドウ更新もサポートされます。これは、メッセージをプロキシするための Lambda 関数を必要とせず、JSON メッセージとバイナリメッセージの両方をサポートする直接 API Gateway から AWS IoT 統合に依存しています。

 TypeScript の最小限のデプロイ可能なパターン定義は次のとおりです。

```
import { ApiGatewayToIot } from '@aws-solutions-constructs/aws-apigateway-iot';

new ApiGatewayToIot(this, 'ApiGatewayToIotPattern', {
    iotEndpoint: 'a1234567890123-ats'
});
```

## Initializer
<a name="initializer-32"></a>

```
new ApiGatewayToIot(scope: Construct, id: string, props: ApiGatewayToIotProps);
```

 *パラメータ* 
+  scope[https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) 
+  id`string` 
+  props[`ApiGatewayToIotProps`](#pattern-construct-props-32) 

## パターン構成プロパティ
<a name="pattern-construct-props-32"></a>


|  **名前**  |  **タイプ**  |  **説明**  | 
| --- | --- | --- | 
|  IOTendPoint  |  string  |  API Gateway を統合する AWS IoT エンドポイントサブドメイン（a1234567890123-ats など）。 | 
|  APIGateWayCreateApiKey？  |  boolean  |  がに設定されている場合trueをクリックすると、API キーが作成され、UsagePlan に関連付けられます。RestApi にアクセスしている間、ユーザーは`x-api-key`ヘッダを指定する必要があります。デフォルト値はfalse。 | 
|  ApigateWayExecutionRole？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)  |  AWS IoT にアクセスするために API Gateway によって使用される IAM ロール。指定しない場合、すべてのトピックと Thing へのワイルドカード ('\*') アクセス権を持つデフォルトのロールが作成されます。 | 
|  ApigateWayProps？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApiProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApiProps.html)  |  API Gateway REST API のデフォルトの小道具をオーバーライドするオプションのユーザー提供の小道具です。 | 
|  LogGroupProps？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroupProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroupProps.html)  |  CloudWatch Logs ロググループのデフォルトプロップを上書きする、オプションのユーザー指定のプロップ。 | 

## パターンプロパティ
<a name="pattern-properties-32"></a>


|  **名前**  |  **タイプ**  |  **説明**  | 
| --- | --- | --- | 
|  apigateway  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApi.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApi.html)  |  パターンによって作成された API Gateway REST API のインスタンスを返します。 | 
|  APIGatewayクラウドウォッチロール  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)  |  API Gateway REST API から CloudWatch へのアクセスロギングを有効にするパターンによって作成された IAM ロールのインスタンスを返します。 | 
|  APIGateWayLogGroup  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html)  |  API Gateway REST API アクセスログが送信されるパターンによって作成されたロググループのインスタンスを返します。 | 
|  APIGateWayRole  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)  |  API Gateway REST API のパターンによって作成された IAM ロールのインスタンスを返します。 | 

## デフォルト設定
<a name="default-settings-32"></a>

 オーバーライドなしでこのパターンをすぐに実装すると、次のデフォルトが設定されます。

### Amazon API Gateway
<a name="amazon-api-gateway-32"></a>
+  エッジ最適化 API エンドポイントのデプロイ 
+  API リソースを`POST`IoT トピックにメッセージを発行する方法 
+  API リソースを`POST`メッセージの発行方法`ThingShadow`および`NamedShadows` 
+  API Gateway での CloudWatch ロギングを有効にする 
+  すべてのトピックと Thing にアクセスできる API Gateway の IAM ロールを設定する 
+  すべての API メソッドのデフォルトの authorizationType を IAM に設定する 
+  X-Ray トレースを有効にする 
+  UsagePlan を作成し、`prod`stage 

 以下は、コンストラクトのデプロイ後に API Gateway によって公開されるさまざまなリソースとメソッドの説明です。フレームワークの使用の詳細については、[例](#examples-32)を使用してこれらのエンドポイントを簡単にテストする方法の詳細については、`curl`。


|  **方法**  |  **リソース**  |  **クエリーパラメータ**  |  **戻りコード**  |  **説明**  | 
| --- | --- | --- | --- | --- | 
|  POST  |  /message/<topics>  |  qos  |  200/403/500  |  このエンドポイントを呼び出すことで、公開したいトピックを渡す必要があります（例：`/message/device/foo`)。 | 
|  POST  |  /shadow/<thingName>  |  なし  |  200/403/500  |  このルートは、Thing のシャドードキュメントを更新することを可能にします。thingName名前のない (クラシック) シャドウタイプを使用 ボディは、構成する標準的な影の漆喰を遵守しなければならないstateノードおよび関連するdesiredおよびreportedノード フレームワークの使用の詳細については、[デバイスシャドウの更新](#updating-device-shadows-32)例については、セクションを参照ください。 | 
|  POST  |  /shadow/<thingName>/<shadowName>  |  なし  |  200/403/500  |  このルートは、Thing の名前付きシャドードキュメントを更新することを可能にします。thingNameとshadowName[名前の付いたシャドウ] タイプを使用します。ボディは、構成する標準的な影の漆喰を遵守しなければならないstateノードおよび関連するdesiredおよびreportedノード フレームワークの使用の詳細については、[名前の付いたシャドウの更新](#updating-named-shadows-32)例については、セクションを参照ください。 | 

## Architecture
<a name="w23aab9c23c21"></a>

![](http://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/aws-apigateway-iot.png)


## Examples
<a name="examples-32"></a>

以下の例は、でのみ機能します。`API_KEY`認証タイプを使用する場合、IAM 認証では Sigv4 トークンも指定する必要があるため、`apiGatewayCreateApiKey`プロパティが`true`を呼び出す必要があります。そうしないと、以下の例は機能しません。

### メッセージの発行
<a name="publishing-a-message-32"></a>

次は、使用できます。`curl`を使用して、HTTPS API を使用して異なる MQTT トピックにメッセージを公開します。以下の例では、上のメッセージを投稿します`device/foo`トピック。

```
curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"Hello": "World"}'
```

注意: 置き換え`stage-id`,`region`, および`api-key`パラメーターをデプロイメント値に置き換えます。

URL でトピック名を連結できます。API では、公開できるサブトピックが最大 7 つまで受け付けられます。例えば、以下の例では、トピックにメッセージをパブリッシュします`device/foo/bar/abc/xyz`。

```
curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo/bar/abc/xyz -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"Hello": "World"}'
```

### デバイスシャドウの更新
<a name="updating-device-shadows-32"></a>

特定の Thing に関連付けられているシャドウドキュメントを更新するには、Thing 名を使用してシャドウステートリクエストを発行します。Thing Shadow を更新する方法の例を参照ください。

```
curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/shadow/device1 -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"state": {"desired": { "Hello": "World" }}}'
```

### 名前の付いたシャドウの更新
<a name="updating-named-shadows-32"></a>

特定の Thing の名前付き shadow に関連付けられたシャドウドキュメントを更新するには、Thing 名とシャドウ名を使用してシャドウ状態リクエストを発行します。名前付きシャドウを更新する方法については、次の例を参照してください。

```
curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/shadow/device1/shadow1 -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"state": {"desired": { "Hello": "World" }}}'
```

### バイナリペイロードの送信
<a name="sending-binary-payloads-32"></a>

バイナリペイロードをプロキシ API に送信し、AWS IoT サービスに送信することができます。次の例では、コンテンツを送信する`README.md`ファイル (バイナリデータとして扱われる) を`device/foo`を使用して、`application/octet-stream`コンテンツタイプ。

```
curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo/bar/baz/qux -H "x-api-key: <api-key>" -H "Content-Type: application/octet-stream" --data-binary @README.md
```

 注意: このコマンドをこのプロジェクトのディレクトリで実行します。その後、ファイルシステムから他のタイプのバイナリファイルの送信をテストできます。

## GitHub
<a name="github-32"></a>


<table>
<thead>
  <tr><th colspan="2"> このパターンのコードを表示するには、問題を作成/表示し、プル要求などを行います。 </th></tr>
</thead>
<tbody>
  <tr><td> ![](http://docs.aws.amazon.com/ja_jp/solutions/latest/constructs/images/GitHub-Mark-32px.png) </td><td> [@aws-solutions-構築/aws-apigateway-IoT](https://github.com/awslabs/aws-solutions-constructs/tree/master/source/patterns/%40aws-solutions-constructs/aws-apigateway-iot) </td></tr>
</tbody>
</table>
