OpenSearch - Amazon IoT Core
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

OpenSearch

The OpenSearch (openSearch) action writes data from MQTT messages to an Amazon OpenSearch Service domain. You can then use tools like OpenSearch Dashboards to query and visualize data in OpenSearch Service.

Requirements

This rule action has the following requirements:

  • An IAM role that Amazon IoT can assume to perform the es:ESHttpPut operation. For more information, see Granting an Amazon IoT rule the access it requires.

    In the Amazon IoT console, you can choose or create a role to allow Amazon IoT to perform this rule action.

  • If you use a customer managed Amazon KMS key to encrypt data at rest in OpenSearch Service, the service must have permission to use the KMS key on the caller's behalf. For more information, see Encryption of data at rest for Amazon OpenSearch Service in the Amazon OpenSearch Service Developer Guide.

Parameters

When you create an Amazon IoT rule with this action, you must specify the following information:

endpoint

The endpoint of your Amazon OpenSearch Service domain.

Supports substitution templates: API and Amazon CLI only

index

The OpenSearch index where you want to store your data.

Supports substitution templates: Yes

type

The type of document you are storing.

Note

For OpenSearch versions later than 1.0, the value of the type parameter must be _doc. For more information, see the OpenSearch documentation.

Supports substitution templates: Yes

id

The unique identifier for each document.

Supports substitution templates: Yes

roleARN

The IAM role that allows access to the OpenSearch Service domain. For more information, see Requirements.

Supports substitution templates: No

Limitations

The OpenSearch (openSearch) action cannot be used to deliver data to VPC Elasticsearch clusters.

Examples

The following JSON example defines an OpenSearch action in an Amazon IoT rule and how you can specify the fields for the OpenSearch action. For more information, see OpenSearchAction.

{ "topicRulePayload": { "sql": "SELECT *, timestamp() as timestamp FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "openSearch": { "endpoint": "https://my-endpoint", "index": "my-index", "type": "_doc", "id": "${newuuid()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_os" } } ] } }

The following JSON example defines an OpenSearch action with substitution templates in an Amazon IoT rule.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "openSearch": { "endpoint": "https://my-endpoint", "index": "${topic()}", "type": "${type}", "id": "${newuuid()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_os" } } ] } }
Note

The the substituted type field works for OpenSearch version 1.0. For any versions later than 1.0, the value of type must be _doc.

See also

What is Amazon OpenSearch Service? in the Amazon OpenSearch Service Developer Guide