1. EC2 元数据访问

AWS 提供的 EC2MetadataUtils 工具类能获取实例元数据(如 AMI ID 和实例类型)。Spring Cloud AWS 更进一步,允许直接通过 @Value 注解注入这些元数据

只需在配置类上添加 @EnableContextInstanceData 注解即可启用:

@Configuration
@EnableContextInstanceData
public class EC2EnableMetadata {
    //
}

⚠️ 在 Spring Boot 环境中,此功能默认启用,无需额外配置。

然后就能直接注入元数据值:

@Value("${ami-id}")
private String amiId;

@Value("${hostname}")
private String hostname;

@Value("${instance-type}")
private String instanceType;

@Value("${services/domain}")
private String serviceDomain;

1.1 自定义标签

Spring 还支持注入用户定义的标签(tags)。通过 XML 配置启用此功能:

<beans...>
    <aws-context:context-instance-data user-tags-map="instanceData"/>
</beans>

接着使用 Spring 表达式语法注入自定义标签:

@Value("#{instanceData.myTagKey}")
private String myTagValue;

2. EC2 客户端

当实例配置了用户标签时,Spring 会自动创建 AmazonEC2 客户端,可直接通过 @Autowired 注入使用:

@Autowired
private AmazonEC2 amazonEc2;

✅ 这些功能仅在 EC2 实例内运行时生效。

3. 总结

本文简要介绍了如何通过 Spring Cloud AWS 访问 EC2 实例数据。后续文章将探讨 RDS 集成方案。

完整示例代码可在 GitHub 获取。


原始标题:Spring Cloud AWS – EC2