Java v2 SDK Exception when Waiting for SES Identity

0

I'm using the Java SDK version 2.17.116. In my code, I'm calling:

            SES_CLIENT.verifyEmailIdentity(
                VerifyEmailIdentityRequest
                    .builder()
                    .emailAddress(eMailAddress)
                    .build()
            );

            // wait 5 seconds for the identity to be created
            Thread.sleep(5000);

            SES_CLIENT.waiter().waitUntilIdentityExists(
                GetIdentityVerificationAttributesRequest
                    .builder()
                    .identities(eMailAddress)
                    .build()
            );

But that is throwing the following exception on the call to waitUntilIdentityExists:

java.lang.IllegalArgumentException: Unsupported value type: class java.util.Collections$UnmodifiableMap
	at software.amazon.awssdk.services.ses.waiters.internal.WaitersRuntime$Value.<init>(WaitersRuntime.java:138)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
	at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.findAny(Unknown Source)
	at software.amazon.awssdk.services.ses.waiters.internal.WaitersRuntime$Value.field(WaitersRuntime.java:255)
	at software.amazon.awssdk.services.ses.waiters.DefaultSesWaiter.lambda$identityExistsWaiterAcceptors$3(DefaultSesWaiter.java:96)
	at software.amazon.awssdk.core.waiters.WaiterAcceptor$1.matches(WaiterAcceptor.java:81)
	at software.amazon.awssdk.core.internal.waiters.WaiterExecutorHelper.lambda$responseMatches$4(WaiterExecutorHelper.java:105)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
	at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.findFirst(Unknown Source)
	at software.amazon.awssdk.core.internal.waiters.WaiterExecutorHelper.responseMatches(WaiterExecutorHelper.java:106)
	at java.base/java.util.Optional.map(Unknown Source)
	at software.amazon.awssdk.utils.Either.map(Either.java:51)
	at software.amazon.awssdk.core.internal.waiters.WaiterExecutorHelper.firstWaiterAcceptorIfMatched(WaiterExecutorHelper.java:56)
	at software.amazon.awssdk.core.internal.waiters.WaiterExecutor.evaluate(WaiterExecutor.java:67)
	at software.amazon.awssdk.core.internal.waiters.WaiterExecutor.doExecute(WaiterExecutor.java:60)
	at software.amazon.awssdk.core.internal.waiters.WaiterExecutor.execute(WaiterExecutor.java:48)
	at software.amazon.awssdk.core.internal.waiters.DefaultWaiter.run(DefaultWaiter.java:49)
	at software.amazon.awssdk.services.ses.waiters.DefaultSesWaiter.waitUntilIdentityExists(DefaultSesWaiter.java:79)
	at com.company.ccr.ses.CloudFormationCustomResourceSesIdentity.createSesIdentity(CloudFormationCustomResourceSesIdentity.java:149)
	at com.company.ccr.ses.CloudFormationCustomResourceSesIdentity.doCreate(CloudFormationCustomResourceSesIdentity.java:46)
	at com.company.ccr.CloudFormationCustomResource.handleRequest(CloudFormationCustomResource.java:68)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at lambdainternal.EventHandlerLoader$PojoMethodRequestHandler.handleRequest(EventHandlerLoader.java:282)
	at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:199)
	at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:899)
	at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:262)
	at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:199)
	at lambdainternal.AWSLambda.main(AWSLambda.java:193)

This seems like a bug. The eMailAddress variable is a valid String, and the call to verifyEmailIdentity succeeds, and I see the requested identity in the SES console, so I'm sure it's not a null String or anything.

Can anyone confirm that I'm calling waitUntilIdentityExists correctly? What am I missing here? Or is this really a bug?

gefragt vor 2 Jahren87 Aufrufe
Keine Antworten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen