Setting up Cloud Profile with EC2 Spot Fleet config Failed - setInstanceRequirements method missing
I am attempting to setup TeamCity to use cloud profiles (following: https://www.jetbrains.com/help/teamcity/setting-up-teamcity-for-amazon-ec2.html#Amazon+EC2+Spot+Fleet+support), however, there seems to be a call to a missing method:

The stack trace in the dropdown:
java.lang.RuntimeException: An exception occurred while parsing config
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.lambda$deserialize$0(SpotFleetRequestConfigDataDeserializer.java:66)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.deserialize(SpotFleetRequestConfigDataDeserializer.java:39)
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.lambda$deserialize$0(SpotFleetRequestConfigDataDeserializer.java:51)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.deserialize(SpotFleetRequestConfigDataDeserializer.java:39)
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.deserialize(SpotFleetRequestConfigDataDeserializer.java:26)
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.deserialize(SpotFleetRequestConfigDataDeserializer.java:16)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4218)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3214)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3182)
at jetbrains.buildServer.clouds.amazon.AmazonUtil.deserializeSpotFleetConfig(AmazonUtil.java:66)
at jetbrains.buildServer.clouds.amazon.parameters.impl.AmazonSpotFleetParametersImpl.readAndValidateSpotFleetConfig(AmazonSpotFleetParametersImpl.java:39)
at jetbrains.buildServer.clouds.amazon.parameters.impl.AmazonSpotFleetParametersImpl.<init>(AmazonSpotFleetParametersImpl.java:28)
at jetbrains.buildServer.clouds.amazon.parameters.impl.AmazonParametersFactoryImpl.processImage(AmazonParametersFactoryImpl.java:148)
at jetbrains.buildServer.clouds.amazon.parameters.impl.AmazonParametersFactoryImpl.loadImageParameters(AmazonParametersFactoryImpl.java:119)
at jetbrains.buildServer.clouds.amazon.parameters.impl.AmazonParametersFactoryImpl.createParameters(AmazonParametersFactoryImpl.java:113)
at jetbrains.buildServer.clouds.amazon.parameters.impl.AmazonParametersFactoryImpl.createParameters(AmazonParametersFactoryImpl.java:33)
at jetbrains.buildServer.clouds.amazon.AmazonCloudClientFactory.createNewClient(AmazonCloudClientFactory.java:78)
at jetbrains.buildServer.clouds.amazon.AmazonCloudClientFactory.createNewClient(AmazonCloudClientFactory.java:17)
at jetbrains.buildServer.clouds.server.impl.ProjectCloudManagerImpl.createNewClient(ProjectCloudManagerImpl.java:485)
at jetbrains.buildServer.clouds.server.impl.ProjectCloudManagerImpl.lambda$getClient$7(ProjectCloudManagerImpl.java:334)
at jetbrains.buildServer.serverSide.impl.auth.SecurityContextImpl$2.run(SecurityContextImpl.java:2)
at jetbrains.buildServer.serverSide.impl.auth.SecurityContextImpl.runAs(SecurityContextImpl.java:72)
at jetbrains.buildServer.serverSide.impl.auth.SecurityContextImpl.runAs(SecurityContextImpl.java:83)
at jetbrains.buildServer.serverSide.impl.auth.SecurityContextImpl.runAsSystem(SecurityContextImpl.java:44)
at jetbrains.buildServer.clouds.server.impl.ProjectCloudManagerImpl.getClient(ProjectCloudManagerImpl.java:331)
at jetbrains.buildServer.clouds.server.impl.CloudManagerBaseImpl.getClient(CloudManagerBaseImpl.java:328)
at jetbrains.buildServer.clouds.server.impl.CloudManagerFacade.getClient(CloudManagerFacade.java:166)
at jetbrains.buildServer.clouds.server.impl.SecuredCloudManager.getClient(SecuredCloudManager.java:121)
at jetbrains.buildServer.clouds.server.web.beans.CloudTabFormFactoryImpl$CreateProfileInfo.tryCreateInfo(CloudTabFormFactoryImpl.java:163)
at jetbrains.buildServer.clouds.server.web.beans.CloudTabFormFactoryImpl$CreateProfileInfo.createInfo(CloudTabFormFactoryImpl.java:145)
at jetbrains.buildServer.clouds.server.web.beans.CloudTabFormFactoryImpl.createProfileInfo(CloudTabFormFactoryImpl.java:124)
at jetbrains.buildServer.clouds.server.web.beans.CloudTabFormFactoryImpl.getForm(CloudTabFormFactoryImpl.java:92)
at jetbrains.buildServer.clouds.server.web.project.CloudProfilesProjectTab.fillModel(CloudProfilesProjectTab.java:83)
at jdk.internal.reflect.GeneratedMethodAccessor459.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at jetbrains.buildServer.web.impl.PagePlaceImpl$ProxyHandler.invokeExtensionMethodUnsafe(PagePlaceImpl.java:38)
at jetbrains.buildServer.web.impl.PagePlaceImpl$ProxyHandler.invoke(PagePlaceImpl.java:25)
at com.sun.proxy.$Proxy76.fillModel(Unknown Source)
at jetbrains.buildServer.web.impl.PageExtensionsInterceptor.fillModel(PageExtensionsInterceptor.java:68)
at jetbrains.buildServer.web.impl.PageExtensionsInterceptor.processCustomTabs(PageExtensionsInterceptor.java:17)
at jetbrains.buildServer.web.impl.PageExtensionsInterceptor.fillModel(PageExtensionsInterceptor.java:96)
at jetbrains.buildServer.web.impl.PageExtensionsInterceptor.postHandle(PageExtensionsInterceptor.java:69)
at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:151)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:974)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at jetbrains.buildServer.maintenance.WebDispatcherServlet.doService(WebDispatcherServlet.java:9)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at jetbrains.buildServer.maintenance.TeamCityDispatcherServlet.processedByMainServlet(TeamCityDispatcherServlet.java:27)
at jetbrains.buildServer.maintenance.TeamCityDispatcherServlet.service(TeamCityDispatcherServlet.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.jsp.JspPrecompilerFilter.doFilter(JspPrecompilerFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.DisableSessionIdFromUrlFilter.doFilter(DisableSessionIdFromUrlFilter.java:4)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.UserIdProviderFilter.doFilter(UserIdProviderFilter.java:5)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.BannedIPsFilter.doFilter(BannedIPsFilter.java:3)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.NodeInfoHeaderFilter.doFilter(NodeInfoHeaderFilter.java:9)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at jetbrains.buildServer.diagnostic.web.DiagnosticFilter.doFilter(DiagnosticFilter.java:15)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.web.DependencyParametersCalculationContextFilter.doFilter(DependencyParametersCalculationContextFilter.java:3)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.diagnostic.web.HttpRequestsDurationMetricsReporter.doFilter(HttpRequestsDurationMetricsReporter.java:5)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.web.HttpSecurityHeadersFilter.doFilter(HttpSecurityHeadersFilter.java:3)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.controllers.filters.DisableSessionCookieTokenAuthFilter.doFilter(DisableSessionCookieTokenAuthFilter.java:10)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.controllers.filters.ProxyDetailsFilter.doFilter(ProxyDetailsFilter.java:5)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.controllers.filters.ClearSecurityContextFilter.doFilter(ClearSecurityContextFilter.java:23)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at jetbrains.buildServer.web.DelegatingFilter.doFilter(DelegatingFilter.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.ResponseFragmentFilter.doFilter(ResponseFragmentFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:196)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1650)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.NoSuchMethodException: No such method: com.amazonaws.services.ec2.model.SpotFleetLaunchSpecification#setInstanceRequirements
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.getMethod(SpotFleetRequestConfigDataDeserializer.java:102)
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.getMethod(SpotFleetRequestConfigDataDeserializer.java:91)
at jetbrains.buildServer.clouds.amazon.sync.action.SpotFleetRequestConfigDataDeserializer.lambda$deserialize$0(SpotFleetRequestConfigDataDeserializer.java:41)
... 113 more
I've grepped the logs, but cannot find this error message.
The config I am using (with some details obfuscated):
{
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"AllocationStrategy": "lowestPrice",
"TargetCapacity": 1,
"ValidFrom": "2022-02-28T01:33:25Z",
"ValidUntil": "2023-02-28T01:33:25Z",
"SpotPrice": "0.890",
"TerminateInstancesWithExpiration": false,
"LaunchSpecifications": [
{
"InstanceRequirements": {
"VcpuCount": {
"Min": 4,
"Max": 16
},
"MemoryMiB": {
"Min": 8192,
"Max": 24576
}
},
"ImageId": "ami-0123456789abcdef0",
"SubnetId": "subnet-01234567",
"KeyName": "some_KeyPair",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": true,
"SnapshotId": "snap-0123456789abcdef0",
"VolumeSize": 50,
"VolumeType": "gp2",
"Encrypted": false
}
}
],
"SecurityGroups": [
{
"GroupId": "sg-0d997168"
}
],
"IamInstanceProfile": {
"Arn": "arn:aws:iam::abcdef012345:instance-profile/TeamCityBuildAgent"
},
"EbsOptimized": true
}
],
"Type": "request",
"TargetCapacityUnitType": "units"
}
Please sign in to leave a comment.