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?