---
title: AWS IoT Core
description: >-
  A managed cloud platform facilitating secure interactions between connected
  devices, cloud applications, and devices.
breadcrumbs: Docs > Integrations > AWS IoT Core
---

# AWS IoT Core
Integration version1.0.0
## Overview{% #overview %}

AWS IoT Core is a managed cloud platform that lets connected devices easily and securely interact with cloud applications and other devices.

Enable this integration to see in Datadog all your IOT metrics.

## Setup{% #setup %}

### Installation{% #installation %}

If you haven't already, set up the [Amazon Web Services integration first](https://docs.datadoghq.com/integrations/amazon_web_services/).

### Metric collection{% #metric-collection %}

1. In the [AWS integration page](https://app.datadoghq.com/integrations/amazon-web-services), ensure that `IoT` is enabled under the `Metric Collection` tab.
1. Install the [Datadog - AWS IoT Core integration](https://app.datadoghq.com/integrations/amazon-iot).

### Log collection{% #log-collection %}

#### Enable logging{% #enable-logging %}

Configure AWS IoT Core to send logs either to a S3 bucket or to CloudWatch.

**Note**: If you log to a S3 bucket, make sure that `amazon_iot` is set as *Target prefix*.

#### Send logs to Datadog{% #send-logs-to-datadog %}

**Note**: Datadog's [automatic trigger setup](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/?tab=awsconsole#automatically-set-up-triggers) is available for CloudWatch log groups only. For S3 buckets, use the [manual trigger setup](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/#collecting-logs-from-s3-buckets).

1. If you haven't already, set up the [Datadog Forwarder Lambda function](https://docs.datadoghq.com/logs/guide/forwarder/).

1. Once the Lambda function is installed, manually add a trigger on the S3 bucket or CloudWatch log group that contains your AWS IoT Core logs in the AWS console:

   - [Add a manual trigger on the S3 bucket](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/#collecting-logs-from-s3-buckets)
   - [Add a manual trigger on the CloudWatch Log Group](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/#collecting-logs-from-cloudwatch-log-group)

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **aws.iot.connect\_auth\_error**(count)                       | AWS IoT could not authorize a connect request from a client on an MQTT topic.*Shown as error*                                                                            |
| **aws.iot.connection\_authn\_error**(count)                   | The number of connection attempts which AWS IoT Core rejects due to authentication failures.*Shown as error*                                                             |
| **aws.iot.connect\_client\_error**(count)                     | AWS IoT rejected a connect request from a client on an MQTT topic because the MQTT message did not meet the requirements defined in AWS IoT Limits.*Shown as error* |
| **aws.iot.connect\_client\_idthrottle**(count)                | AWS IoT did not process a client connect request on an MQTT topic because the client exceeded the allowed connect request rate for a specific client ID.                 |
| **aws.iot.connect\_server\_error**(count)                     | AWS IoT failed to process a client connect request on an MQTT topic because an internal error occurred.*Shown as error*                                                  |
| **aws.iot.connect\_success**(count)                           | AWS IoT successfully processed a client connect request on an MQTT topic.                                                                                                |
| **aws.iot.connect\_throttle**(count)                          | AWS IoT did not process a connect request on an MQTT topic because the account exceeded the allowed connect request rate.                                                |
| **aws.iot.credential\_exchange\_success**(count)              | The number of successful AssumeRoleWithCertificate requests to AWS IoT Core credentials provider.                                                                        |
| **aws.iot.delete\_thing\_shadow\_accepted**(count)            | AWS IoT received a DeleteThingShadow request.*Shown as request*                                                                                                          |
| **aws.iot.error\_action\_failure**(count)                     | The number of failed error actions.                                                                                                                                      |
| **aws.iot.error\_action\_success**(count)                     | The number of successful error actions.                                                                                                                                  |
| **aws.iot.failure**(count)                                    | The number of failed rule action invocations.                                                                                                                            |
| **aws.iot.get\_thing\_shadow\_accepted**(count)               | AWS IoT received a GetThingShadow request.*Shown as request*                                                                                                             |
| **aws.iot.http\_code\_4xx**(count)                            | Generated if the status code of the response from the downstream web service or application is between 400 and 499.                                                      |
| **aws.iot.http\_code\_5xx**(count)                            | Generated if the status code of the response from the downstream web service or application is between 500 and 599.                                                      |
| **aws.iot.http\_request\_timeout**(count)                     | Generated if the downstream web service or application does not return a response within the request timeout limit.                                                      |
| **aws.iot.http\_unknown\_host**(count)                        | Generated if the URL is valid, but the service does not exist or is unreachable.                                                                                         |
| **aws.iot.list\_named\_shadows\_for\_thing\_accepted**(count) | AWS IoT received a ListNamedShadowsForThing request.*Shown as request*                                                                                                   |
| **aws.iot.parse\_error**(count)                               | The number of JSON parse errors that occurred in messages published on a topic on which a rule is listening.                                                             |
| **aws.iot.ping\_success**(count)                              | AWS IoT received a ping message.                                                                                                                                         |
| **aws.iot.publish\_in\_auth\_error**(count)                   | AWS IoT could not authorize a publish request from a client.*Shown as error*                                                                                             |
| **aws.iot.publish\_in\_client\_error**(count)                 | AWS IoT rejected a publish request from a client because the MQTT message did not meet the requirements defined in AWS IoT Limits.*Shown as error*                       |
| **aws.iot.publish\_in\_server\_error**(count)                 | AWS IoT failed to process a client publish request because an internal error occurred.*Shown as error*                                                                   |
| **aws.iot.publish\_in\_success**(count)                       | A client successfully published an MQTT message.                                                                                                                         |
| **aws.iot.publish\_in\_throttle**(count)                      | AWS IoT did not process a client publish request because the client exceeded the allowed inbound message rate.                                                           |
| **aws.iot.publish\_out\_auth\_error**(count)                  | AWS IoT could not authorize the publish request from the message broker.*Shown as error*                                                                                 |
| **aws.iot.publish\_out\_client\_error**(count)                | AWS IoT rejected the publish out request from the message broker because the MQTT message did not meet the requirements defined in AWS IoT Limits.*Shown as error*       |
| **aws.iot.publish\_out\_success**(count)                      | AWS IoT successfully published a message to the connected client.                                                                                                        |
| **aws.iot.publish\_out\_throttle**(count)                     | The number of publish requests that were throttled because the client exceeded the allowed outbound message rate.                                                        |
| **aws.iot.publish\_retained\_auth\_error**(count)             | The number of publish requests with the `retain` flag set that the message broker was unable to authorize.                                                               |
| **aws.iot.publish\_retained\_success**(count)                 | The number of publish requests with the `retain` flag set that were successfully processed by the message broker.                                                        |
| **aws.iot.publish\_retained\_throttle**(count)                | The number of publish requests with the `retain` flag set that were throttled because the client exceeded the allowed inbound message rate.                              |
| **aws.iot.queued\_server\_error**(count)                      | The number of messages that haven't been stored for a persistent session because of an internal error.                                                                   |
| **aws.iot.queued\_success**(count)                            | The number of stored messages that were successfully processed by the message broker for clients that were disconnected from their persistent session.                   |
| **aws.iot.queued\_throttle**(count)                           | The number of messages that couldn't be stored and were throttled while clients with persistent sessions were disconnected.                                              |
| **aws.iot.rule\_message\_throttled**(count)                   | The number of messages throttled by the rules engine because of malicious behavior or because the number of messages exceeds the rules engine's throttle limit.          |
| **aws.iot.rule\_not\_found**(count)                           | The count of rules which could not be found.                                                                                                                             |
| **aws.iot.rules\_executed**(count)                            | The number of AWS IoT rules executed.                                                                                                                                    |
| **aws.iot.subscribe\_auth\_error**(count)                     | AWS IoT could not authorize a subscribe request from a client on an MQTT topic.*Shown as error*                                                                          |
| **aws.iot.subscribe\_client\_error**(count)                   | AWS IoT rejected a subscribe request from a client on an MQTT topic because the MQTT message did not meet the requirements defined in AWS IoT Limits.*Shown as error*    |
| **aws.iot.subscribe\_server\_error**(count)                   | AWS IoT failed to process a client subscribe request on an MQTT topic because an internal error occurred.*Shown as error*                                                |
| **aws.iot.subscribe\_success**(count)                         | AWS IoT successfully processed a client subscribe request on an MQTT topic.                                                                                              |
| **aws.iot.subscribe\_throttle**(count)                        | AWS IoT did not process a client subscribe request on an MQTT topic because the client exceeded the allowed subscribe request rate.                                      |
| **aws.iot.success**(count)                                    | The number of successful rule action invocations.                                                                                                                        |
| **aws.iot.throttle\_exceeded**(count)                         | The number of successful rule action invocations.                                                                                                                        |
| **aws.iot.topic\_match**(count)                               | The number of incoming messages published on a topic on which a rule is listening.                                                                                       |
| **aws.iot.unsubscribe\_client\_error**(count)                 | AWS IoT rejected an unsubscribe request from a client on an MQTT topic because the MQTT message did not meet the requirements defined in AWS IoT Limits.*Shown as error* |
| **aws.iot.unsubscribe\_server\_error**(count)                 | AWS IoT failed to process a client unsubscribe request on an MQTT topic because an internal error occurred.*Shown as error*                                              |
| **aws.iot.unsubscribe\_success**(count)                       | AWS IoT successfully processed a client unsubscribe request on an MQTT topic.                                                                                            |
| **aws.iot.unsubscribe\_throttle**(count)                      | AWS IoT did not process a client unsubscribe request on an MQTT topic because the client exceeded the allowed unsubscribe request rate.                                  |
| **aws.iot.update\_thing\_shadow\_accepted**(count)            | AWS IoT received a UpdateThingShadow request.*Shown as request*                                                                                                          |

Each of the metrics retrieved from AWS are assigned the same tags that appear in the AWS console, including but not limited to host name, security-groups, and more.

### Events{% #events %}

The AWS IoT Core integration does not include any events.

### Service Checks{% #service-checks %}

The AWS IoT Core integration does not include any service checks.

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
