diff --git a/aws-s3-sink.kamelet.yaml b/aws-s3-sink.kamelet.yaml new file mode 100644 index 000000000..725170236 --- /dev/null +++ b/aws-s3-sink.kamelet.yaml @@ -0,0 +1,95 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: aws-s3-sink + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" + camel.apache.org/provider: "Apache Software Foundation" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "AWS S3 Sink" + description: |- + Upload data to AWS S3. + + The Kamelet expects the following headers to be set: + + - `file` / `ce-file`: as the file name to upload + + If the header won't be set the exchange ID will be used as file name. + required: + - bucketNameOrArn + - accessKey + - secretKey + - region + properties: + bucketNameOrArn: + title: Bucket Name + description: The S3 Bucket name or ARN. + type: string + accessKey: + title: Access Key + description: The access key obtained from AWS. + type: string + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + region: + title: AWS Region + description: The AWS region to connect to. + type: string + example: eu-west-1 + overrideEndpoint: + title: Override Endpoint + description: Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride. + type: boolean + default: false + uriEndpointOverride: + title: Override Endpoint URI + description: Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option. + type: string + example: "http://another-s3-endpoint:9000" + autoCreateBucket: + title: Autocreate bucket + description: Setting the autocreation of the S3 bucket bucketName. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + flow: + from: + uri: "kamelet:source" + steps: + - choice: + when: + - simple: "${header[file]}" + steps: + - set-header: + name: CamelAwsS3Key + simple: "${header[file]}" + - simple: "${header[ce-file]}" + steps: + - set-header: + name: CamelAwsS3Key + simple: "${header[ce-file]}" + otherwise: + steps: + - set-header: + name: CamelAwsS3Key + simple: "${exchangeId}" + - log: "s3 body - ${body}" + - to: + uri: "aws2-s3:{{bucketNameOrArn}}" + parameters: + secretKey: "{{secretKey}}" + accessKey: "{{accessKey}}" + region: "{{region}}" + uriEndpointOverride: "{{uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + autoCreateBucket: "{{autoCreateBucket}}" diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-s3-sink.svg b/docs/modules/ROOT/assets/images/kamelets/aws-s3-sink.svg new file mode 100644 index 000000000..1d0f76baa --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/aws-s3-sink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index d3318a171..a81f509dd 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -2,6 +2,7 @@ * xref:ROOT:aws-ddb-streams-source.adoc[image:kamelets/aws-ddb-streams-source.svg[] AWS DynamoDB Streams Source] * xref:ROOT:aws-kinesis-source.adoc[image:kamelets/aws-kinesis-source.svg[] AWS Kinesis Source] * xref:ROOT:aws-lambda-sink.adoc[image:kamelets/aws-lambda-sink.svg[] AWS Lambda Sink] +* xref:ROOT:aws-s3-sink.adoc[image:kamelets/aws-s3-sink.svg[] AWS S3 Sink] * xref:ROOT:aws-s3-source.adoc[image:kamelets/aws-s3-source.svg[] AWS S3 Source] * xref:ROOT:aws-sns-fifo-sink.adoc[image:kamelets/aws-sns-fifo-sink.svg[] AWS SNS FIFO Sink] * xref:ROOT:aws-sns-sink.adoc[image:kamelets/aws-sns-sink.svg[] AWS SNS Sink] diff --git a/docs/modules/ROOT/pages/aws-s3-sink.adoc b/docs/modules/ROOT/pages/aws-s3-sink.adoc new file mode 100644 index 000000000..9918009bc --- /dev/null +++ b/docs/modules/ROOT/pages/aws-s3-sink.adoc @@ -0,0 +1,71 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/aws-s3-sink.svg[] AWS S3 Sink + +*Provided by: "Apache Software Foundation"* + +Send data to AWS S3. + +== Configuration Options + +The following table summarizes the configuration options available for the `aws-s3-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accessKey {empty}* *| Access Key| The access key obtained from AWS.| string| | +| *bucketNameOrArn {empty}* *| Bucket Name| The S3 Bucket name or ARN.| string| | +| *filename {empty}* *| Filename (S3 Key)| The target filename created on S3.| string| | +| *region {empty}* *| AWS Region| The AWS region to connect to.| string| | `"eu-west-1"` +| *secretKey {empty}* *| Secret Key| The secret key obtained from AWS.| string| | +| autoCreateBucket| Autocreate bucket| Setting the autocreation of the S3 bucket bucketName.| boolean| `false`| +| overrideEndpoint| Override Endpoint| Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride.| boolean| `false`| +| uriEndpointOverride| Override Endpoint URI| Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option.| string| | `"http://another-s3-endpoint:9000"` +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `aws-s3-sink` can be used in various contexts. + +=== Knative Sink + +The `aws-s3-sink` Kamelet can be used as Knative sink by binding it to a Knative object. + +.aws-s3-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: aws-s3-sink-binding +spec: + source: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: aws-s3-sink + properties: + accessKey: "The Access Key" + bucketNameOrArn: "The Bucket Name" + filename: "The Filename (S3 Key)" + region: "eu-west-1" + secretKey: "The Secret Key" + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `aws-s3-sink-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the sink using the following command: + +[source,shell] +---- +kubectl apply -f aws-s3-sink-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT