Я могу создавать экземпляры с помощью aws-sdk-java, но в последнее время при попытке создать теги для именования экземпляров я постоянно получаю сообщение об ошибке
java.lang.NoSuchMethodError: com.amazonaws.services.ec2.AmazonEC2.createTags(Lcom/amazonaws/services/ec2/model/CreateTagsRequest;)Lcom/amazonaws/services/ec2/model/CreateTagsResult;
Tag resourceName = new Tag("Name", instanceName);
List<Tag> tags = new ArrayList<Tag>();
tags.add(resourceName);
CreateTagsRequest tag_request = new CreateTagsRequest()
.withTags(resourceName).withResources("i-0xxxxxxxxxxxxxxxx");
try {
CreateTagsResult tag_response = ec2Client.createTags(tag_request);
}catch(com.amazonaws.services.ec2.model.AmazonEC2Exception e){
e.printStackTrace();
}
Я попытался установить имя тега при создании экземпляра, используя
List<TagSpecification> tagSpecifications = new ArrayList<>();
tagSpecifications.add(new TagSpecification().withTags(tags));
runInstancesRequest.withTagSpecifications(tagSpecifications);
Но даже это не удается с той же ошибкой java.lang.NoSuchMethodError. Хотя с компиляцией проблем нет, я не понимаю, почему после развертывания возникает эта ошибка.




Либо метод с именем createTags не существует в классе AmazonEC2, либо вы передаете в метод неправильный список параметров.
Это также может произойти, если клиентская и серверная версии api aws-sdk-java отличаются друг от друга. Убедитесь, что вы используете правильный API на стороне клиента.
AmazonE2Client в основном устарел: @ см. https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/ec2/AmazonEC2Client.html
В документации сказано: «Вместо этого используйте AWSClientBuilder».
Да, вы правильно указали, проблема была в клиентской и серверной версиях sdk. Мне пришлось преобразовать проект в maven, а затем использовать версию 1.11.335, поскольку в качестве библиотеки последняя версия была указана как 1.11.333. Ваше здоровье!!
Я добавил 1.11.333 версию aws-sdk-java в качестве библиотеки на моей клиентской стороне. Это последняя версия, как показывает eclipse.