[ https://issues.apache.org/jira/browse/CAMEL-22429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrea Cosentino reassigned CAMEL-22429: ---------------------------------------- Assignee: Andrea Cosentino > camel-aws2-sns component fails when sending CloudEvents with subjects over > 100 characters > ----------------------------------------------------------------------------------------- > > Key: CAMEL-22429 > URL: https://issues.apache.org/jira/browse/CAMEL-22429 > Project: Camel > Issue Type: Bug > Components: camel-aws2, camel-knative > Affects Versions: 4.14.0 > Environment: Knative IntegrationSink with SNS > Reporter: Darick > Assignee: Andrea Cosentino > Priority: Minor > Fix For: 4.x > > > Because the aws2-sns component directly uses the Cloud Event "subject" field > as the subject of the SNS message, the operation can fail if the former is > longer than 100 characters (the [limit imposed by AWS on SNS > messages|https://docs.aws.amazon.com/sns/latest/api/API_Publish.html#:~:text=Constraints%3A%20Subjects%20must%20be%20UTF%2D8%20text%20with%20no%20line%20breaks%20or%20control%20characters%2C%20and%20less%20than%20100%20characters%20long.]). > Since Cloud Events don't impose a limit on the subject length, this is case > of a protocol incompatibility of sorts. Perhaps the SNS subject can be a > truncated / elided version of the Cloud Event subject, with the original > subject preserved in the SNS MessageAttributes (along with all of the other > Cloud Event attributes). > Example headers: > {{Accept-Encoding=gzip}} > {{CamelCloudEventID=fd9f87b0-b6e9-4251-8dfa-4169aaf7bc14 > CamelCloudEventSource=[https://10.100.0.1:443|https://10.100.0.1/] > CamelCloudEventSubject=/apis/events.k8s.io/v1/namespaces/my-namespace-name/events/my-deployment-name-7944f7bdb8-dvswj.186599cec321ad80}} > {{CamelCloudEventTime=2025-09-15T23:52:22.886411647Z}} > {{CamelCloudEventType=dev.knative.apiserver.resource.add}} > {{CamelCloudEventVersion=1.0}} > {{CamelHttpMethod=POST}} > {{CamelHttpPath=}} > {{CamelHttpQuery=null}} > {{CamelHttpUri=/}} > {{Ce-Apiversion=events.k8s.io/v1}} > {{Ce-Kind=Event}} > {{Ce-Knativearrivaltime=2025-09-15T23:52:22.90022962Z}} > {{Content-Length=1224}} > {{Content-Type=application/json}} > {{Host=cluster-events-log-sink-service.events.svc.cluster.local}} > {{Kn-Namespace=events}} > {{Prefer=reply}} > {{User-Agent=Go-http-client/1.1}} > > Result: > {{{}2025-09-15 23:52:23,902 ERROR [org.apa.cam.pro.err.DefaultErrorHandler] > (executor-thread-1) Failed delivery for (MessageId: > 065650A8FE0690D-0000000000000002 on ExchangeId: > 065650A8FE0690D-0000000000000002). Exhausted after delivery attempt: 1 > caught: software.amazon.awssdk.services.sns.model.InvalidParameterException: > Invalid parameter: Subject (Service: Sns, Status Code: 400, Request ID: > 2a1a5faa-0139-5b3a-b5cc-3ee8a9ce604e) (SDK Attempt Count: 1) Message History > (complete message history is disabled) > --------------------------------------------------------------------------------------------------------------------------------------- > Source ID Processor Elapsed (ms) aws-sns-sink.kamelet.yaml:108 > aws-sns-sink-1/aws-sns-sink-1 from[kamelet://source?routeId=aws-sns-sink-1] > 783 ... aws-sns-sink.kamelet.yaml:123 aws-sns-sink-1/to2 > aws2-sns:{{topicNameOrArn{}}}?{{{}accessKey=xxxxxx&autoC 0 Stacktrace > ---------------------------------------------------------------------------------------------------------------------------------------: > software.amazon.awssdk.services.sns.model.InvalidParameterException: Invalid > parameter: Subject (Service: Sns, Status Code: 400, Request ID: > 2a1a5faa-0139-5b3a-b5cc-3ee8a9ce604e) (SDK Attempt Count: 1) at > software.amazon.awssdk.services.sns.model.InvalidParameterException$BuilderImpl.build(InvalidParameterException.java:146) > at > software.amazon.awssdk.services.sns.model.InvalidParameterException$BuilderImpl.build(InvalidParameterException.java:94) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.utils.RetryableStageHelper.retryPolicyDisallowedRetryException(RetryableStageHelper.java:168) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:73) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36) > at > software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206) > at > software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:53) > at > software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:35) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:82) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:62) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:43) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:50) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:32) > at > software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206) > at > software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37) > at > software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26) > at > software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:210) > at > software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103) > at > software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173) > at > software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80) > at > software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182) > at > software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74) > at > software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45) > at > software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53) > at > software.amazon.awssdk.services.sns.DefaultSnsClient.publish(DefaultSnsClient.java:2182) > at > org.apache.camel.component.aws2.sns.Sns2Producer.process(Sns2Producer.java:75) > at > org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65) > at > org.apache.camel.processor.SendProcessor.sendUsingProducer(SendProcessor.java:252) > at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:157) > at > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.handleFirst(RedeliveryErrorHandler.java:440) > at > org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:416) > at > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199) > at > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189) > at > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166) > at > org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148) > at > org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:163) at > org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:82) > at > org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:32) > at > org.apache.camel.component.knative.http.KnativeHttpConsumer.lambda$handleRequest$3(KnativeHttpConsumer.java:239) > at > io.vertx.core.impl.ContextImpl.lambda$executeBlocking$4(ContextImpl.java:192) > at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270) at > io.vertx.core.impl.ContextImpl$1.execute(ContextImpl.java:221) at > io.vertx.core.impl.WorkerTask.run(WorkerTask.java:56) at > io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:637) > at > org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651) > at > org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630) > at > org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622) > at > org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589) > at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11) at > org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11) > at > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > at java.base/java.lang.Thread.run(Thread.java:840){}}}{}}} -- This message was sent by Atlassian Jira (v8.20.10#820010)