本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EC2 实例元数据服务
您可以使用 适用于 Go 的 AWS SDK 来访问 Amazon EC2 实例元数据服务。feature/ec2/imdsClient
和相关操作的使用方式与提供的其他 AWS 服务客户端类似SDK。要了解有关如何配置和使用服务客户端的更多信息SDK,请参阅配置SDK和将 适用于 Go 的 AWS SDK v2 与服务配合 AWS 使用。
该客户端可以帮助您轻松检索有关运行应用程序的实例的信息,例如其 AWS 区域或本地 IP 地址。通常,您必须创建并提交HTTP请求才能检索实例元数据。相反,创建一个,imds.Client
以便像其他服务一样使用编程客户端来访问 Amazon EC2 实例元数据 AWS
服务。
例如,要构造客户端,请执行以下操作:
import "context"
import "github.com/aws/aws-sdk-go-v2/config"
import "github.com/aws/aws-sdk-go-v2/feature/ec2/imds"
// ...
cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
log.Printf("error: %v", err)
return
}
client := imds.NewFromConfig(cfg)
然后使用服务客户端从元数据类别中检索信息,例如local-ipv4
(实例的私有 IP 地址)。
localIp, err := client.GetMetadata(context.TODO(), &imds.GetMetadataInput{
Path: "local-ipv4",
})
if err != nil {
log.Printf("Unable to retrieve the private IP address from the EC2 instance: %s\n", err)
return
}
content, _ := io.ReadAll(localIp.Content)
fmt.Printf("local-ip: %v\n", string(content))
有关所有元数据类别的列表,请参阅 Amazon EC2 用户指南中的实例元数据类别。