Chapter 35. AWS Simple Notification System Component Available as of Camel version 2.8 The SNS component allows messages to be sent to an Amazon Simple Notification Topic. The implementation of the Amazon API is provided by the AWS SDK . Prerequisites You must have a valid Amazon Web Services developer account, and be signed up to use Amazon SNS. More information are available at Amazon SNS . 35.1. URI Format aws-sns://topicNameOrArn[?options] The topic will be created if they don't already exists. You can append query options to the URI in the following format, ?options=value&option2=value&... 35.2. URI Options The AWS Simple Notification System component supports 5 options, which are listed below. Name Description Default Type configuration (advanced) The AWS SNS default configuration SnsConfiguration accessKey (producer) Amazon AWS Access Key String secretKey (producer) Amazon AWS Secret Key String region (producer) The region in which SNS client needs to work String resolveProperty Placeholders (advanced) Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. true boolean The AWS Simple Notification System endpoint is configured using URI syntax: with the following path and query parameters: 35.2.1. Path Parameters (1 parameters): Name Description Default Type topicNameOrArn Required Topic name or ARN String 35.2.2. Query Parameters (11 parameters): Name Description Default Type amazonSNSClient (producer) To use the AmazonSNS as the client AmazonSNS headerFilterStrategy (producer) To use a custom HeaderFilterStrategy to map headers to/from Camel. HeaderFilterStrategy messageStructure (producer) The message structure to use such as json String policy (producer) The policy for this queue String proxyHost (producer) To define a proxy host when instantiating the SNS client String proxyPort (producer) To define a proxy port when instantiating the SNS client Integer region (producer) The region in which SNS client needs to work String subject (producer) The subject which is used if the message header 'CamelAwsSnsSubject' is not present. String synchronous (advanced) Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). false boolean accessKey (security) Amazon AWS Access Key String secretKey (security) Amazon AWS Secret Key String 35.3. Spring Boot Auto-Configuration The component supports 16 options, which are listed below. Name Description Default Type camel.component.aws-sns.access-key Amazon AWS Access Key String camel.component.aws-sns.configuration.access-key Amazon AWS Access Key String camel.component.aws-sns.configuration.amazon-s-n-s-client To use the AmazonSNS as the client AmazonSNS camel.component.aws-sns.configuration.message-structure The message structure to use such as json String camel.component.aws-sns.configuration.policy The policy for this queue String camel.component.aws-sns.configuration.proxy-host To define a proxy host when instantiating the SNS client String camel.component.aws-sns.configuration.proxy-port To define a proxy port when instantiating the SNS client Integer camel.component.aws-sns.configuration.region The region in which SNS client needs to work String camel.component.aws-sns.configuration.secret-key Amazon AWS Secret Key String camel.component.aws-sns.configuration.subject The subject which is used if the message header 'CamelAwsSnsSubject' is not present. String camel.component.aws-sns.configuration.topic-arn The Amazon Resource Name (ARN) assigned to the created topic. String camel.component.aws-sns.configuration.topic-name The name of the topic String camel.component.aws-sns.enabled Enable aws-sns component true Boolean camel.component.aws-sns.region The region in which SNS client needs to work String camel.component.aws-sns.resolve-property-placeholders Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. true Boolean camel.component.aws-sns.secret-key Amazon AWS Secret Key String Required SNS component options You have to provide the amazonSNSClient in the Registry or your accessKey and secretKey to access the Amazon's SNS . 35.4. Usage 35.4.1. Message headers evaluated by the SNS producer Header Type Description CamelAwsSnsSubject String The Amazon SNS message subject. If not set, the subject from the SnsConfiguration is used. 35.4.2. Message headers set by the SNS producer Header Type Description CamelAwsSnsMessageId String The Amazon SNS message ID. 35.4.3. Advanced AmazonSNS configuration If you need more control over the AmazonSNS instance configuration you can create your own instance and refer to it from the URI: from("direct:start") .to("aws-sns://MyTopic?amazonSNSClient=#client"); The #client refers to a AmazonSNS in the Registry. For example if your Camel Application is running behind a firewall: AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey"); ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setProxyHost("http://myProxyHost"); clientConfiguration.setProxyPort(8080); AmazonSNS client = new AmazonSNSClient(awsCredentials, clientConfiguration); registry.bind("client", client); 35.5. Dependencies Maven users will need to add the following dependency to their pom.xml. pom.xml <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-aws</artifactId> <version>USD{camel-version}</version> </dependency> where USD{camel-version } must be replaced by the actual version of Camel (2.8 or higher). 35.6. See Also Configuring Camel Component Endpoint Getting Started AWS Component

Commands:
aws-sns://topicNameOrArn[?options]
aws-sns:topicNameOrArn
from("direct:start") .to("aws-sns://MyTopic?amazonSNSClient=#client");
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey"); ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setProxyHost("http://myProxyHost"); clientConfiguration.setProxyPort(8080); AmazonSNS client = new AmazonSNSClient(awsCredentials, clientConfiguration); registry.bind("client", client);
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-aws</artifactId> <version>USD{camel-version}</version> </dependency>