

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon EC2 執行個體中繼資料服務
<a name="sdk-utilities-ec2-imds"></a>

 您可以使用 適用於 Go 的 AWS SDK 來存取 [Amazon EC2 執行個體中繼資料服務](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)。[feature/ec2/imds](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/feature/ec2/imds) Go 套件提供可用來存取 Amazon EC2 執行個體中繼資料服務的[用戶端](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/feature/ec2/imds#Client)類型。`Client` 和相關聯的操作可以使用類似於 SDK 提供的其他 AWS 服務用戶端。若要進一步了解如何設定 SDK，以及如何使用服務用戶端，請參閱 [設定軟體開發套件](configure-gosdk.md)和 [搭配 AWS 服務使用 適用於 Go 的 AWS SDK v2](use-services.md)。

 用戶端可協助您輕鬆擷取應用程式執行所在執行個體的相關資訊，例如其 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 使用者指南》中的[執行個體中繼資料類別](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories)。