本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EC2 实例元数据服务
您可以使用 适用于 Go 的 AWS SDK 来访问 Amazon EC2 实例元数据服务。feature/ec2/imdsClient
和相关操作的使用方式与 SDK 提供的其他 AWS 服务客户端类似。要了解有关如何配置 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 用户指南中的实例元数据类别。