AWS IoT Core Data Delivery

Sensos supports direct data delivery to your AWS IoT Core account. To establish a secure connection, the first step is to upload your AWS IoT client certificate to Sensos. This certificate is used to authenticate and authorize the MQTT connection from Sensos to your AWS IoT Core endpoint.

Notice: This integration supports outbound data delivery only (publishing telemetry and event data to your AWS IoT Core MQTT topic). Device management or inbound control via the AWS IoT Core instance is not supported.

Step 1: Upload Certificate

To upload your certificate, make a POST request to the data delivery certificates endpoint:

POST /v1/accounts/{accountId}/data-delivery-certificates

Request Headers

Authorization: Bearer <your_access_token>
Content-Type: application/json

Request Body

{
  "name": "My AWS IoT Certificate",
  "description": "Optional description for reference",
  "certificate": "<base64-encoded-certificate-content>"
}
  • name (string, required): A user-defined name for the certificate.
  • description (string, optional): Additional description to help identify the certificate.
  • certificate (string, required): The certificate content (PEM format), encoded in base64.

Example

curl -X POST https://api.sensos.io/v1/accounts/{accountId}/data-delivery-certificates \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "aws-iot-core-cert",
    "description": "Certificate for AWS IoT Core connection",
    "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t..."
  }'

Response

Upon successful upload, the endpoint returns 200 OK with the certificate metadata and a unique id:

{
  "id": "cf3d8e2c-6f7e-4b91-81e9-4d35f558f9f3",
  "name": "aws-iot-core-cert",
  "description": "Certificate for AWS IoT Core connection",
  "createdAt": "2026-03-30T12:00:00Z"
}

Step 2: Create a Data Delivery Rule

Once your AWS IoT certificate is uploaded, create a Data Delivery Rule to define which telemetry data to send, where to send it, and how.

To deliver data to AWS IoT Core, configure the rule with action type "AwsIot".

Endpoint

POST /v1/accounts/{accountId}/data-delivery-rules

Request Headers

Authorization: Bearer <your_access_token>
Content-Type: application/json

Request Body

{
  "name": "AWS IoT Export Config",
  "dataSourceType": "DeviceReports",
  "action": {
    "type": "AwsIot",
    "endpoint": "your-iot-endpoint.iot.<region>.amazonaws.com",
    "topic": "sensos/data/devicereports",
    "clientCertificateId": "cf3d8e2c-6f7e-4b91-81e9-4d35f558f9f3"
  }
}
  • name (string, required): A descriptive name for this data delivery rule.
  • dataSourceType (string, required): The data stream to export (e.g., DeviceReports, TemperatureLogging, HumidityLogging, Alerts).
  • action.type (string, required): Must be "AwsIot" for AWS IoT Core.
  • action.endpoint (string, required): Your AWS IoT Core ATS endpoint (e.g., xxxxxxxxxxxxxx-ats.iot.us-west-2.amazonaws.com).
  • action.topic (string, required): The MQTT topic where Sensos will publish events (e.g., sensos/data/devicereports).
  • action.clientCertificateId (string, required): The ID of the certificate uploaded in Step 1.

Example

curl -X POST https://api.sensos.io/v1/accounts/{accountId}/data-delivery-rules \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "AWS IoT Temperature Export",
    "dataSourceType": "TemperatureLogging",
    "action": {
      "type": "AwsIot",
      "endpoint": "a3k7odshaiipe8-ats.iot.us-east-1.amazonaws.com",
      "topic": "sensos/data/temperature",
      "clientCertificateId": "cf3d8e2c-6f7e-4b91-81e9-4d35f558f9f3"
    }
  }'

Once this rule is created, Sensos begins delivering event payloads in real time to your specified AWS IoT Core topic.

Managing and Updating Certificates

Uploaded certificates are used to establish secure mutual TLS (mTLS) with your AWS IoT Core endpoint. It is your responsibility to ensure certificates remain valid before expiration.

If a certificate expires, data delivery will pause until an updated certificate is provided.

To update an existing certificate:

PUT /v1/accounts/{accountId}/data-delivery-certificates/{certificateId}
curl -X PUT https://api.sensos.io/v1/accounts/{accountId}/data-delivery-certificates/cf3d8e2c-6f7e-4b91-81e9-4d35f558f9f3 \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "aws-iot-core-cert-renewed",
    "description": "Renewed AWS IoT Core certificate",
    "certificate": "<base64-encoded-certificate-content>"
  }'

Did this page help you?