---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: aws-sns
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: aws-sns
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: aws-sns
        spec:
          containers:
          - image: funktion/connector-aws-sns:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: aws-sns
      syntax: aws-sns:topicNameOrArn
      title: AWS Simple Notification System
      description: The aws-sns component is used for sending messages to an Amazon Simple Notification Topic.
      label: cloud,mobile,messaging
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.aws.sns.SnsComponent
      groupId: org.apache.camel
      artifactId: camel-aws
      version: 2.18.3
    componentProperties: {}
    properties:
      topicNameOrArn:
        kind: path
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Topic name or ARN
        order: 0
      accessKey:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Amazon AWS Access Key
        order: 1
      amazonSNSClient:
        kind: parameter
        group: producer
        type: object
        javaType: com.amazonaws.services.sns.AmazonSNS
        deprecated: false
        secret: false
        description: To use the AmazonSNS as the client
        order: 2
      amazonSNSEndpoint:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The region with which the AWS-SNS client wants to work with.
        order: 3
      messageStructure:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The message structure to use such as json
        order: 4
      policy:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The policy for this queue
        order: 5
      proxyHost:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: To define a proxy host when instantiating the SQS client
        order: 6
      proxyPort:
        kind: parameter
        group: producer
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: To define a proxy port when instantiating the SQS client
        order: 7
      secretKey:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Amazon AWS Secret Key
        order: 8
      subject:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The subject which is used if the message header 'CamelAwsSnsSubject' is not present.
        order: 9
      synchronous:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
        order: 10
  documentation.adoc: |+
    [[AWS-SNS-SNSComponent]]
    SNS Component
    ~~~~~~~~~~~~~

    *Available as of Camel 2.8*

    The SNS component allows messages to be sent to an
    http://aws.amazon.com/sns[Amazon Simple Notification] Topic. The
    implementation of the Amazon API is provided by
    the http://aws.amazon.com/sdkforjava/[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
    http://aws.amazon.com/sns[Amazon SNS].

    [[AWS-SNS-URIFormat]]
    URI Format
    ^^^^^^^^^^

    [source,java]
    -----------------------------
    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&...`

    [[AWS-SNS-URIOptions]]
    URI Options
    ^^^^^^^^^^^


    // component options: START
    The AWS Simple Notification System component has no options.
    // component options: END





    // endpoint options: START
    The AWS Simple Notification System component supports 11 endpoint options which are listed below:

    {% raw %}
    [width="100%",cols="2,1,1m,1m,5",options="header"]
    |=======================================================================
    | Name | Group | Default | Java Type | Description
    | topicNameOrArn | producer |  | String | *Required* Topic name or ARN
    | accessKey | producer |  | String | Amazon AWS Access Key
    | amazonSNSClient | producer |  | AmazonSNS | To use the AmazonSNS as the client
    | amazonSNSEndpoint | producer |  | String | The region with which the AWS-SNS client wants to work with.
    | messageStructure | producer |  | String | The message structure to use such as json
    | policy | producer |  | String | The policy for this queue
    | proxyHost | producer |  | String | To define a proxy host when instantiating the SQS client
    | proxyPort | producer |  | Integer | To define a proxy port when instantiating the SQS client
    | secretKey | producer |  | String | Amazon AWS Secret Key
    | subject | producer |  | String | The subject which is used if the message header 'CamelAwsSnsSubject' is not present.
    | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
    |=======================================================================
    {% endraw %}
    // endpoint options: END




    Required SNS component options

    You have to provide the amazonSNSClient in the
    link:registry.html[Registry] or your accessKey and secretKey to access
    the http://aws.amazon.com/sns[Amazon's SNS].

    [[AWS-SNS-Usage]]
    Usage
    ^^^^^

    [[AWS-SNS-MessageheadersevaluatedbytheSNSproducer]]
    Message headers evaluated by the SNS producer
    +++++++++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsSnsSubject` |`String` |The Amazon SNS message subject. If not set, the subject from the
    `SnsConfiguration` is used.
    |=======================================================================

    [[AWS-SNS-MessageheaderssetbytheSNSproducer]]
    Message headers set by the SNS producer
    +++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsSnsMessageId` |`String` |The Amazon SNS message ID.
    |=======================================================================

    [[AWS-SNS-AdvancedAmazonSNSconfiguration]]
    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:

    [source,java]
    -------------------------------------------------
    from("direct:start")
    .to("aws-sns://MyTopic?amazonSNSClient=#client");
    -------------------------------------------------

    The `#client` refers to a `AmazonSNS` in the
    link:registry.html[Registry].

    For example if your Camel Application is running behind a firewall:

    [source,java]
    --------------------------------------------------------------------------------------
    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);
    --------------------------------------------------------------------------------------

    [[AWS-SNS-Dependencies]]
    Dependencies
    ^^^^^^^^^^^^

    Maven users will need to add the following dependency to their pom.xml.

    *pom.xml*

    [source,xml]
    ---------------------------------------
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-aws</artifactId>
        <version>${camel-version}</version>
    </dependency>
    ---------------------------------------

    where `${camel-version`} must be replaced by the actual version of Camel
    (2.8 or higher).

    [[AWS-SNS-SeeAlso]]
    See Also
    ^^^^^^^^

    * link:configuring-camel.html[Configuring Camel]
    * link:component.html[Component]
    * link:endpoint.html[Endpoint]
    * link:getting-started.html[Getting Started]

    * link:aws.html[AWS Component]

