You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/05/10 10:05:25 UTC
[camel] 01/04: CAMEL-18064 - Cannot set server side encryption SSE-S3 for S3 bucket
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 552936102c529ed8ae7bfe6ddee3105a5ad9361b
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue May 10 11:19:27 2022 +0200
CAMEL-18064 - Cannot set server side encryption SSE-S3 for S3 bucket
---
.../camel/component/aws2/s3/AWS2S3ComponentConfigurer.java | 6 ++++++
.../camel/component/aws2/s3/AWS2S3EndpointConfigurer.java | 6 ++++++
.../camel/component/aws2/s3/AWS2S3EndpointUriFactory.java | 3 ++-
.../org/apache/camel/component/aws2/s3/aws2-s3.json | 2 ++
.../apache/camel/component/aws2/s3/AWS2S3Configuration.java | 13 +++++++++++++
.../org/apache/camel/component/aws2/s3/AWS2S3Producer.java | 12 ++++++++++++
6 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java
index 7a7bd51deac..f57352a5210 100644
--- a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java
+++ b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java
@@ -122,6 +122,8 @@ public class AWS2S3ComponentConfigurer extends PropertyConfigurerSupport impleme
case "useCustomerKey": getOrCreateConfiguration(target).setUseCustomerKey(property(camelContext, boolean.class, value)); return true;
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": getOrCreateConfiguration(target).setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
+ case "usesses3":
+ case "useSSES3": getOrCreateConfiguration(target).setUseSSES3(property(camelContext, boolean.class, value)); return true;
default: return false;
}
}
@@ -228,6 +230,8 @@ public class AWS2S3ComponentConfigurer extends PropertyConfigurerSupport impleme
case "useCustomerKey": return boolean.class;
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": return boolean.class;
+ case "usesses3":
+ case "useSSES3": return boolean.class;
default: return null;
}
}
@@ -330,6 +334,8 @@ public class AWS2S3ComponentConfigurer extends PropertyConfigurerSupport impleme
case "useCustomerKey": return getOrCreateConfiguration(target).isUseCustomerKey();
case "usedefaultcredentialsprovider":
case "useDefaultCredentialsProvider": return getOrCreateConfiguration(target).isUseDefaultCredentialsProvider();
+ case "usesses3":
+ case "useSSES3": return getOrCreateConfiguration(target).isUseSSES3();
default: return null;
}
}
diff --git a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java
index be2224e9339..d74446d6133 100644
--- a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java
+++ b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java
@@ -149,6 +149,8 @@ public class AWS2S3EndpointConfigurer extends PropertyConfigurerSupport implemen
case "useDefaultCredentialsProvider": target.getConfiguration().setUseDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true;
case "usefixeddelay":
case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
+ case "usesses3":
+ case "useSSES3": target.getConfiguration().setUseSSES3(property(camelContext, boolean.class, value)); return true;
default: return false;
}
}
@@ -289,6 +291,8 @@ public class AWS2S3EndpointConfigurer extends PropertyConfigurerSupport implemen
case "useDefaultCredentialsProvider": return boolean.class;
case "usefixeddelay":
case "useFixedDelay": return boolean.class;
+ case "usesses3":
+ case "useSSES3": return boolean.class;
default: return null;
}
}
@@ -425,6 +429,8 @@ public class AWS2S3EndpointConfigurer extends PropertyConfigurerSupport implemen
case "useDefaultCredentialsProvider": return target.getConfiguration().isUseDefaultCredentialsProvider();
case "usefixeddelay":
case "useFixedDelay": return target.isUseFixedDelay();
+ case "usesses3":
+ case "useSSES3": return target.getConfiguration().isUseSSES3();
default: return null;
}
}
diff --git a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java
index bfbfd35815d..8b18d94253c 100644
--- a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java
+++ b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java
@@ -21,7 +21,7 @@ public class AWS2S3EndpointUriFactory extends org.apache.camel.support.component
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Set<String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(69);
+ Set<String> props = new HashSet<>(70);
props.add("accessKey");
props.add("amazonS3Client");
props.add("amazonS3Presigner");
@@ -91,6 +91,7 @@ public class AWS2S3EndpointUriFactory extends org.apache.camel.support.component
props.add("useCustomerKey");
props.add("useDefaultCredentialsProvider");
props.add("useFixedDelay");
+ props.add("useSSES3");
PROPERTY_NAMES = Collections.unmodifiableSet(props);
Set<String> secretProps = new HashSet<>(2);
secretProps.add("accessKey");
diff --git a/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json b/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json
index 33d83b51ac3..ce0c522548b 100644
--- a/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json
+++ b/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json
@@ -69,6 +69,7 @@
"awsKMSKeyId": { "kind": "property", "displayName": "Aws KMSKey Id", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define the id of KMS key to use in case KMS is enabled" },
"useAwsKMS": { "kind": "property", "displayName": "Use Aws KMS", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if KMS must be used or not" },
"useCustomerKey": { "kind": "property", "displayName": "Use Customer Key", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if Customer Key must be used or not" },
+ "useSSES3": { "kind": "property", "displayName": "Use SSES3", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if SSE S3 must be used or not" },
"autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
"accessKey": { "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
"secretKey": { "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
@@ -154,6 +155,7 @@
"awsKMSKeyId": { "kind": "parameter", "displayName": "Aws KMSKey Id", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define the id of KMS key to use in case KMS is enabled" },
"useAwsKMS": { "kind": "parameter", "displayName": "Use Aws KMS", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if KMS must be used or not" },
"useCustomerKey": { "kind": "parameter", "displayName": "Use Customer Key", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if Customer Key must be used or not" },
+ "useSSES3": { "kind": "parameter", "displayName": "Use SSES3", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if SSE S3 must be used or not" },
"backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
"backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
"backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
diff --git a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java
index 2cc8d999ac9..f07e715da45 100644
--- a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java
+++ b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java
@@ -102,6 +102,8 @@ public class AWS2S3Configuration implements Cloneable {
private String customerKeyMD5;
@UriParam(label = "common,advanced")
private String customerAlgorithm;
+ @UriParam(label = "producer,advanced", defaultValue = "false")
+ private boolean useSSES3;
@UriParam(defaultValue = "false")
private boolean useDefaultCredentialsProvider;
@UriParam(label = "producer")
@@ -669,6 +671,17 @@ public class AWS2S3Configuration implements Cloneable {
this.restartingPolicy = restartingPolicy;
}
+ public boolean isUseSSES3() {
+ return useSSES3;
+ }
+
+ /**
+ * Define if SSE S3 must be used or not
+ */
+ public void setUseSSES3(boolean useSSES3) {
+ this.useSSES3 = useSSES3;
+ }
+
public AWS2S3Configuration copy() {
try {
return (AWS2S3Configuration) super.clone();
diff --git a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
index 80c52dc5b76..3830fa10814 100644
--- a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
+++ b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
@@ -182,6 +182,10 @@ public class AWS2S3Producer extends DefaultProducer {
createMultipartUploadRequest.serverSideEncryption(ServerSideEncryption.AWS_KMS);
}
+ if (getConfiguration().isUseSSES3()) {
+ createMultipartUploadRequest.serverSideEncryption(ServerSideEncryption.AES256);
+ }
+
if (getConfiguration().isUseCustomerKey()) {
if (ObjectHelper.isNotEmpty(getConfiguration().getCustomerKeyId())) {
createMultipartUploadRequest.sseCustomerKey(getConfiguration().getCustomerKeyId());
@@ -348,6 +352,10 @@ public class AWS2S3Producer extends DefaultProducer {
}
}
+ if (getConfiguration().isUseSSES3()) {
+ putObjectRequest.serverSideEncryption(ServerSideEncryption.AES256);
+ }
+
if (getConfiguration().isUseCustomerKey()) {
if (ObjectHelper.isNotEmpty(getConfiguration().getCustomerKeyId())) {
putObjectRequest.sseCustomerKey(getConfiguration().getCustomerKeyId());
@@ -411,6 +419,10 @@ public class AWS2S3Producer extends DefaultProducer {
}
}
+ if (getConfiguration().isUseSSES3()) {
+ copyObjectRequest.serverSideEncryption(ServerSideEncryption.AES256);
+ }
+
if (getConfiguration().isUseCustomerKey()) {
if (ObjectHelper.isNotEmpty(getConfiguration().getCustomerKeyId())) {
copyObjectRequest.sseCustomerKey(getConfiguration().getCustomerKeyId());