我正在开发一个 Java / Spring Boot / Spring 应用程序,该应用程序使用 AWS Java SDK 版本 1 和 io.awspring.cloud 版本 2.4.4。
此应用程序使用类
io.awspring.cloud.core.env.ec2.AmazonEc2InstanceDataPropertySource
来获取 EC2 实例的 AMI ID:
var amazonEc2InstanceDataPropertySource = new AmazonEc2InstanceDataPropertySource("xxx");
String amiId = getInstanceDataProperty(amazonEc2InstanceDataPropertySource,"ami-id", "N/A");
..其他属性依此类推。
我现已将此应用程序升级到 AWS Java SDK 版本 2 和
io.awspring.cloud
版本 3.0.2。在新版本的io.awspring.cloud
中,没有名为AmazonEc2InstanceDataPropertySource
的类。
如何重写现有代码以在该库的新版本中工作以获取 EC2 实例元数据?
AmazonEc2InstanceDataPropertySource
类通过 IMDS(实例元数据服务)获取当前 EC2 实例的 EC2 实例元数据属性。
@EnableContextInstanceData
(在Spring Boot中不需要使用正确的配置)和使用Value
注释进行字段注入。
在您的情况下,当您希望获取 AMI ID 和其他属性时,请使用 @Value 注释直接注入这些属性。
@Configuration
@EnableContextInstanceData
public static class MyConfig {}
@Value("${ami-id}")
private String amiId;
@Value("${hostname}")
private String hostname;
@Value("${instance-type}")
private String instanceType;
@Value("${services/domain}")
private String serviceDomain;