AWS 开发工具包 Java 标记运行实例

问题描述 投票:0回答:1

我们的 AWS 团队在 INSTANCE 和 VOLUME 中启用了标签,现在我们必须修改代码以添加标签。我尝试标记 EC2 实例,但出现以下错误,希望有人能给我指出正确的方向。

问题: 该错误表示实例或卷缺少强制标签。

这是我的示例代码,如果关闭标记,此代码将起作用。

try {
String accessKey = "XXXXXX";
String secretKey = "XXXXXX";
AwsBasicCredentials credentials = AwsBasicCredentials.create(accessKey, secretKey);

Ec2Client ec2 = Ec2Client.builder().region(Region.of("ca-central-1")).credentialsProvider(StaticCredentialsProvider.create(credentials)).build();

IamInstanceProfileSpecification iamSpec = IamInstanceProfileSpecification.builder().name("PROFILE1").build();

List<Tag> tags = new ArrayList<Tag>();

tags.add(Tag.builder().key("Department").value("IT").build());
tags.add(Tag.builder().key("Team").value("DEV").build());

TagSpecification tagSpecs = TagSpecification.builder()
.resourceType(ResourceType.VOLUME)
.resourceType(ResourceType.INSTANCE)
.tags(tags)
.build();

RunInstancesRequest runRequest = RunInstancesRequest.builder()
.imageId("ami-xxxxx")
.instanceType(InstanceType.C5_2_XLARGE)
.keyName("xxx")
.subnetId("subnet-xxxxx")
.iamInstanceProfile(iamSpec)
.securityGroupIds("sg-xxxxxxx")
.tagSpecifications(tagSpecs)
.maxCount(1).minCount(1).build();

RunInstancesResponse response = ec2.runInstances(runRequest);

if (response.sdkHttpResponse().isSuccessful()) {
System.out.println("Successful");
} else {
System.out.println("Not Successful");
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
java aws-java-sdk aws-java-sdk-2.x
1个回答
0
投票

设法通过分离卷和实例来解决问题

TagSpecification tagVolume = TagSpecification.builder().resourceType(ResourceType.VOLUME).tags(tags).build();

TagSpecification tagInstance = TagSpecification.builder().resourceType(ResourceType.INSTANCE).tags(tags).build();

RunInstancesRequest runRequest = RunInstancesRequest.builder()
.imageId("ami-xxxxx")
.instanceType(InstanceType.C5_2_XLARGE)
.keyName("xxx")
.subnetId("subnet-xxxxx")
.iamInstanceProfile(iamSpec)
.securityGroupIds("sg-xxxxxxx")
.tagSpecifications(tagVolume, tagInstance)
.maxCount(1).minCount(1).build();
© www.soinside.com 2019 - 2024. All rights reserved.