View a markdown version of this page

Amazon EC2 インスタンスメタデータサービス - AWS SDK for Go v2

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 インスタンスメタデータサービス

AWS SDK for Go を使用して、Amazon EC2 インスタンスメタデータサービスにアクセスできます。feature/ec2/imds の Go パッケージは、Amazon EC2 インスタンスメタデータサービスにアクセスするための Client 型を提供します。Client および関連するオペレーションは、SDK が提供する他の AWS サービスクライアントと同様に使用できます。SDK の設定方法とサービスクライアントの使用方法の詳細については、「SDK を設定」および「AWS SDK for Go v2 を用いた AWS サービスを使用する」を参照してください。

このクライアントを使用すると、アプリケーションが実行されているインスタンスに関する情報 (AWS リージョンやローカル IP アドレスなど) を簡単に取得できます。通常、インスタンスメタデータを取得するには、HTTP リクエストを作成して送信する必要があります。代わりに、他の AWS サービスと同様にプログラムによるクライアントとして imds.Client を作成し、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 ユーザーガイド」の「インスタンスメタデータカテゴリ」を参照してください。