

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

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


 Todas as classes estão em desenvolvimento ativo e estão sujeitas a alterações ou remoção não compatíveis com versões anteriores em qualquer versão futura. Estes não estão sujeitos à[Versionamento semântico](https://semver.org/)Modelo. Isso significa que, embora você possa usá-los, você pode precisar atualizar seu código-fonte ao atualizar para uma versão mais recente deste pacote. 

**Observações:** Para garantir a funcionalidade adequada, os pacotes AWS Solutions Constructs e os pacotes CDK da AWS em seu projeto devem ser da mesma versão. 


|  **Linguagem**  |  **Pacote**  | 
| --- | --- | 
|  ![](http://docs.aws.amazon.com/pt_br/solutions/latest/constructs/images/python.png) Python  |  aws\_solutions\_constructs.aws\_apigateway\_iot  | 
|  ![](http://docs.aws.amazon.com/pt_br/solutions/latest/constructs/images/typescript.png) TypeScript  |  @aws-solutions-constructs/aws-apigateway-iot  | 
|  ![](http://docs.aws.amazon.com/pt_br/solutions/latest/constructs/images/java.png) Java  |  software.amazon.awsconstructs.services.apigatewayiot  | 

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

 Este AWS Solutions Construct implementa uma API REST do Amazon API Gateway conectada ao padrão do AWS IoT. 

 Essa construção cria um proxy HTTPS escalável entre o API Gateway e o AWS IoT. Isso é útil ao querer permitir que dispositivos legados que não suportam o protocolo MQTT ou MQTT/WebSocket interajam com a plataforma AWS IoT. 

 Essa implementação permite que mensagens somente de gravação sejam publicadas em determinados tópicos MQTT e também suporta atualizações de sombra de dispositivos HTTPS para itens permitidos no registro do dispositivo. Ele não envolve funções do Lambda para mensagens de proxy e, em vez disso, depende da integração direta do API Gateway para o AWS IoT, que suporta mensagens JSON e mensagens binárias. 

 Aqui está uma definição de padrão implantável mínima no 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);
```

 *Parâmetros* 
+  escopo[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) 

## Props de construção de padrão
<a name="pattern-construct-props-32"></a>


|  **Nome**  |  **Tipo**  |  **Descrição**  | 
| --- | --- | --- | 
|  IoTendpoint  |  string  |  O subdomínio de endpoint do AWS IoT para integrar o API Gateway com (por exemplo, a1234567890123-ats).  | 
|  ApigatewayCreateApikey?  |  boolean  |  Se definido comotrue, uma chave de API é criada e associada a um UsagePlan. O usuário deve especificar o cabeçalho `x-api-key` ao acessar RestApi. Valor padrão definido comofalse.  | 
|  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)  |  A função do IAM usada pelo API Gateway para acessar o AWS IoT. Se não for especificado, uma função padrão será criada com acesso curinga ('\*') a todos os tópicos e coisas.  | 
|  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)  |  Props opcionais fornecidos pelo usuário para substituir os adereços padrão para a API REST do API Gateway. | 
|  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)  |  Props opcionais fornecidos pelo usuário para substituir os adereços padrão para o grupo de logs do CloudWatch Logs.  | 

## Propriedades de padrão
<a name="pattern-properties-32"></a>


|  **Nome**  |  **Tipo**  |  **Descrição**  | 
| --- | --- | --- | 
|  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)  |  Retorna uma instância da API REST Gateway criada pelo padrão.  | 
|  ApigatewayCloudWatchRole  |  [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)  |  Retorna uma instância da função do IAM criada pelo padrão que permite o log de acesso da API REST do API Gateway para o CloudWatch.  | 
|  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)  |  Retorna uma instância do grupo de logs criado pelo padrão para o qual os logs de acesso à API REST do API Gateway são enviados.  | 
|  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)  |  Retorna uma instância da função do IAM criada pelo padrão para a API REST do API Gateway.  | 

## Configurações padrão
<a name="default-settings-32"></a>

 A implementação imediata desse padrão sem substituições definirá os seguintes padrões:

### Amazon API Gateway
<a name="amazon-api-gateway-32"></a>
+  Implantar um endpoint de API otimizado para bordas 
+  Cria recursos de API com`POST`Método para publicar mensagens para tópicos do IoT 
+  Cria recursos de API com`POST`Método para publicar mensagens`ThingShadow`e`NamedShadows` 
+  Habilitar o log do CloudWatch para o 
+  Configurar a função do IAM para o API Gateway com acesso a todos os tópicos e coisas 
+  Defina o AuthorizationType padrão para todos os métodos de API como IAM 
+  Habilitar X-Ray Rastreamento 
+  Cria um UsagePlan e associa a`prod`stage 

 Abaixo está uma descrição dos diferentes recursos e métodos expostos pelo API Gateway após a implantação do Construct. Consulte o[Exemplos](#examples-32)para obter mais informações sobre como testar facilmente esses endpoints usando`curl`. 


|  **Método**  |  **Recurso**  |  **Parâmetro (s) de Consulta**  |  **Código (es) de retorno**  |  **Descrição**  | 
| --- | --- | --- | --- | --- | 
|  POST  |  /message/<topics>  |  qos  |  200/403/500  |  Ao chamar este ponto final, você precisa passar os tópicos sobre os quais você gostaria de publicar (por exemplo, `/message/device/foo`).  | 
|  POST  |  /shadow/<thingName>  |  Nenhum  |  200/403/500  |  Esta rota permite atualizar o documento sombra de uma coisa, dada a suathingNameUsando o tipo de shadow sem nome (clássico). O corpo deve estar em conformidade com a estrutura de sombra normalizada que inclui umstatenó e associadodesiredereportedNó. Consulte o[Atualizar sombras do dispositivo](#updating-device-shadows-32)Seção para ver um exemplo.  | 
|  POST  |  /shadow/<thingName>/<shadowName>  |  Nenhum  |  200/403/500  |  Esta rota permite atualizar o documento de sombra nomeado de uma coisa, dada a suathingNameO e ashadowNameusando o tipo de sombra Nomeado. O corpo deve estar em conformidade com a estrutura de sombra normalizada que inclui umstatenó e associadodesiredereportedNó. Consulte o[Atualizar sombras nomeadas](#updating-named-shadows-32)Seção para ver um exemplo.  | 

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

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


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

Os exemplos a seguir funcionam somente com o`API_KEY`, uma vez que a autorização do IAM exige que um token Sigv4 seja especificado também, certifique-se de que o`apiGatewayCreateApiKey`de seus adereços do Construct está definida como`true`ao implantar a pilha, caso contrário, os exemplos abaixo não funcionarão.

### Publicar uma mensagem
<a name="publishing-a-message-32"></a>

Você pode usar o`curl`para publicar uma mensagem em diferentes tópicos MQTT usando a API HTTPS. O exemplo abaixo irá postar uma mensagem no`device/foo`Tópico.

```
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"}'
```

Observações: Substituir o`stage-id`,`region`, e`api-key`com seus valores de implantação.

Você pode encadear nomes de tópicos no URL e a API aceita até 7 subtópicos nos quais você pode publicar. Por exemplo, o exemplo abaixo publica uma mensagem no tópico`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"}'
```

### Atualizar sombras do dispositivo
<a name="updating-device-shadows-32"></a>

Para atualizar o documento sombra associado a uma determinada coisa, você pode emitir uma solicitação de estado de sombra usando um nome de coisa. Consulte o exemplo a seguir sobre como atualizar uma 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" }}}'
```

### Atualizar sombras nomeadas
<a name="updating-named-shadows-32"></a>

Para atualizar o documento sombra associado à sombra nomeada de uma determinada coisa, você pode emitir uma solicitação de estado de sombra usando um nome de coisa e nome de sombra. Consulte o exemplo a seguir sobre como atualizar uma sombra nomeada.

```
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" }}}'
```

### Enviando cargas binárias
<a name="sending-binary-payloads-32"></a>

É possível enviar uma carga binária para a API proxy, até o serviço AWS IoT. No exemplo a seguir, enviamos o conteúdo do`README.md`associado a este módulo (tratado como dados binários) para`device/foo`Usando o`application/octet-stream`Tipo de conteúdo.

```
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
```

 Observações: Execute este comando enquanto estiver no diretório deste projeto. Em seguida, você pode testar o envio de outros tipos de arquivos binários do seu sistema de arquivos. 

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


<table>
<thead>
  <tr><th colspan="2"> Para exibir o código desse padrão, crie/exiba problemas e solicitações pull e muito mais: </th></tr>
</thead>
<tbody>
  <tr><td> ![](http://docs.aws.amazon.com/pt_br/solutions/latest/constructs/images/GitHub-Mark-32px.png) </td><td> [@aws -solutions-constructs/aws-apigateway-iot](https://github.com/awslabs/aws-solutions-constructs/tree/master/source/patterns/%40aws-solutions-constructs/aws-apigateway-iot) </td></tr>
</tbody>
</table>
