本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EC2 实例元数据服务
您可以使用适用于 Go 的 AWS SDK 来访问 Amazon EC2 实例元数据服务。feature/ec2/imdsClient 和相关操作的使用方式与 SDK 提供的其他 AWS 服务客户端类似。要了解有关如何配置 SDK 和使用服务客户端的更多信息,请参阅配置 SDK 和将适用于 Go 的 AWS SDK v2 与 AWS 服务结合使用。
该客户端可以帮助您轻松检索有关应用程序运行所在实例的信息,例如其 AWS 区域或本地 IP 地址。通常,您必须创建并提交 HTTP 请求来检索实例元数据。不过,现在您可以创建一个 imds.Client,以便像其他 AWS 服务一样使用编程客户端来访问 Amazon EC2 实例元数据服务。
例如,构造客户端:
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 用户指南》中的实例元数据类别。