Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
titlePrerequisites

You must have a valid Amazon Web Services developer account, and be signed up to use Amazon S3. More information are available at Amazon S3.

URI Format

Code Block
aws-s3://bucketName[?options]
aws-s3://bucket-namebucketNameOrArn[?options]
 (Camel 2.18 onwards)

The bucket will be created if it don't already exists.
You can append query options to the URI in the following format, ?options=value&option2=value&...

...

Name

Default Value

Context

Description

amazonS3Client

null

Shared

Reference to a com.amazonaws.services.sqs.AmazonS3 in the Registry.

accessKey

null

Shared

Amazon AWS Access Key

secretKey

null

Shared

Amazon AWS Secret Key

amazonS3Endpoint

null

Shared

The region with which the AWS-S3 client wants to work with.

region

null

Producer

The region who the bucket is located. This option is used in the com.amazonaws.services.s3.model.CreateBucketRequest.

deleteAfterRead

true

Consumer

Delete objects from S3 after it has been retrieved.

deleteAfterWrite

false

Producer

Camel 2.11.0 Delete file object after the S3 file has been uploaded

maxMessagesPerPoll

10

Consumer

The maximum number of objects which can be retrieved in one poll. Used in in the com.amazonaws.services.s3.model.ListObjectsRequest.

policy

null

Shared

Camel 2.8.4: The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method.

storageClass

null

Producer

Camel 2.8.4: The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request.

prefix

null

Consumer

Camel 2.10.1: The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in.

multiPartUpload

falseProducerCamel 2.15.0: If it is true, camel will upload the file with multi part format, the part size is decided by the option of partSize

partSize

25 * 1024 * 1024

ProducerCamel 2.15.0: Setup the partSize which is used in multi part upload, the default size is 25M.
serverSideEncryptionnullProducerCamel 2.16: Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256.
proxyHostnullProducerCamel 2.16: Specify a proxy host to be used inside the client definition.
proxyPortnullProducerCamel 2.16: Specify a proxy port to be used inside the client definition.
includeBodytrueConsumerCamel 2.17: If it is true the exchange body will be set to a stream to the contents of the file. If false the headers will be set with the S3 object metadata but the body will be null.
operationnullProducerCamel 2.18: The operation to perform in case the end-user don't want to do a simple upload. Values can be: copyObject, listBuckets, deleteBucket
Info
titleRequired S3 component options

You have to provide the amazonS3Client in the Registry or your accessKey and secretKey to access the Amazon's S3.

...

Message headers evaluated by the S3 producer

Div
classconfluenceTableSmall

Header

Type

Description

CamelAwsS3Key

String

The key under which this object will be stored or which will be used for the current operation.

CamelAwsS3BucketName

String

Camel 2.18: The bucket Name which this object will be stored or which will be used for the current operation

CamelAwsS3BucketDestinationName

String

Camel 2.18: The bucket Destination Name which will be used for the current operation

CamelAwsS3ContentLength

Long

The content length of this object.

CamelAwsS3ContentType

String

The content type of this object.

CamelAwsS3ContentControl

String

Camel

Wiki Markup
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelAwsS3Key}} | {{String}} | The key under which this object will be stored. | | {{CamelAwsS3ContentLength}} | {{Long}} | The content length of this object. | | {{CamelAwsS3ContentType}} | {{String}} | The content type of this object. | | {{CamelAwsS3ContentControl}} | {{String}} | *Camel

2.8.2:

*

The

content

control

of

this

object.

| | {{CamelAwsS3ContentDisposition}} | {{String}} | *Camel

CamelAwsS3ContentDisposition

String

Camel 2.8.2:

*

The

content

disposition

of

this

object.

| | {{CamelAwsS3ContentEncoding}} | {{String}} | *Camel

CamelAwsS3ContentEncoding

String

Camel 2.8.2:

*

The

content

encoding

of

this

object.

| | {{CamelAwsS3ContentMD5}} | {{String}} | *Camel

CamelAwsS3ContentMD5

String

Camel 2.8.2:

*

The

md5

checksum

of

this

object. | | {{CamelAwsS3LastModified}} | {{

object.

CamelAwsS3DestinationKey

String

Camel 2.18: The Destination key which will be used for the current operation

CamelAwsS3LastModified

java.util.Date

}} | *Camel

Camel 2.8.2:

*

The

last

modified

timestamp

of

this

object. | | {{CamelAwsS3StorageClass}} | {{String}} | *Camel

object.

CamelAwsS3Operation

String

Camel 2.18: The operation to perform. Values can be: copyObject, listBuckets, deleteBucket

CamelAwsS3StorageClass

String

Camel 2.8.4:

*

The

storage

class

of

this

object.

| | {{CamelAwsS3CannedAcl}} | {{String}} | *Camel

CamelAwsS3CannedAcl

String

Camel 2.11.0:

*

The

canned

acl

that

will

be

applied

to

the

object.

see

{{

com.amazonaws.services.s3.model.CannedAccessControlList

}}

for

allowed

values.

| | {{CamelAwsS3Acl}} | {{

CamelAwsS3Acl

com.amazonaws.services.s3.model.AccessControlList

}} | *Camel

Camel 2.11.0:

*

a

well

constructed

Amazon

S3

Access

Control

List

object.

see

{{

com.amazonaws.services.s3.model.AccessControlList

}}

for

more

details | {div}

details

CamelAwsS3HeadersMap<String,String>Camel 2.15.0: support to get or set custom objectMetadata headers.
CamelAwsS3ServerSideEncryptionStringCamel 2.16: Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256.

Message headers set by the S3 producer

Div
classconfluenceTableSmall

Header

Type

Description

CamelAwsS3ETag

String

The ETag value for the newly uploaded object.

CamelAwsS3VersionId

String

The optional version ID of the newly uploaded object.

Wiki Markup
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelAwsS3ETag}} | {{String}} | The ETag value for the newly uploaded object. | | {{CamelAwsS3VersionId}} | {{String}} | The *optional* version ID of the newly uploaded object. | {div}

Message headers set by the S3 consumer

Div
classconfluenceTableSmall

Header

Type

Description

CamelAwsS3Key

String

The key under which this object is stored.

CamelAwsS3BucketName

String

The name of the bucket in which this object is contained.

CamelAwsS3ETag

String

The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3.

CamelAwsS3LastModified

Date

The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object.

CamelAwsS3VersionId

String

The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled.

CamelAwsS3ContentType

String

The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type.

CamelAwsS3ContentMD5

String

The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent.

CamelAwsS3ContentLength

Long

The Content-Length HTTP header indicating the size of the associated object in bytes.

CamelAwsS3ContentEncoding

String

The optional Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field.

CamelAwsS3ContentDisposition

String

The optional Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as.

CamelAwsS3ContentControl

String

The optional Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain.

CamelAwsS3ServerSideEncryptionStringCamel 2.16: The server-side encryption algorithm when encrypting the object using AWS-managed keys.
Wiki Markup
{div:class=confluenceTableSmall} || Header || Type || Description || | {{CamelAwsS3Key}} | {{String}} | The key under which this object is stored. | | {{CamelAwsS3BucketName}} | {{String}} | The name of the bucket in which this object is contained. | | {{CamelAwsS3ETag}} | {{String}} | The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864. This data is used as an integrity check to verify that the data received by the caller is the same data that was sent by Amazon S3. | | {{CamelAwsS3LastModified}} | {{Date}} | The value of the Last-Modified header, indicating the date and time at which Amazon S3 last recorded a modification to the associated object. | | {{CamelAwsS3VersionId}} | {{String}} | The version ID of the associated Amazon S3 object if available. Version IDs are only assigned to objects when an object is uploaded to an Amazon S3 bucket that has object versioning enabled. | | {{CamelAwsS3ContentType}} | {{String}} | The Content-Type HTTP header, which indicates the type of content stored in the associated object. The value of this header is a standard MIME type. | | {{CamelAwsS3ContentMD5}} | {{String}} | The base64 encoded 128-bit MD5 digest of the associated object (content - not including headers) according to RFC 1864. This data is used as a message integrity check to verify that the data received by Amazon S3 is the same data that the caller sent. | | {{CamelAwsS3ContentLength}} | {{Long}} | The Content-Length HTTP header indicating the size of the associated object in bytes. | | {{CamelAwsS3ContentEncoding}} | {{String}} | The *optional* Content-Encoding HTTP header specifying what content encodings have been applied to the object and what decoding mechanisms must be applied in order to obtain the media-type referenced by the Content-Type field. | | {{CamelAwsS3ContentDisposition}} | {{String}} | The *optional* Content-Disposition HTTP header, which specifies presentational information such as the recommended filename for the object to be saved as. | | {{CamelAwsS3ContentControl}} | {{String}} | The *optional* Cache-Control HTTP header which allows the user to specify caching behavior along the HTTP request/reply chain. | {div}

Advanced AmazonS3 configuration

If your Camel Application is running behind a firewall or if you need to have more control over the AmazonS3 instance configuration, you can create your own instance:

Code Block

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonS3 client = new AmazonS3Client(awsCredentials, clientConfiguration);

registry.bind("client", client);

and refer to it in your Camel aws-s3 component configuration:

Code Block

from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");

...

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

Code Block
xml
xml
titlepom.xmlxml

<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).

Include Page
Endpoint See Also
Endpoint See Also