

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

# Amazon EC2 インスタンスメタデータサービス
<a name="sdk-utilities-ec2-imds"></a>

 AWS SDK for Go を使用して、[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 インスタンスメタデータサービスにアクセスするための [Client](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/feature/ec2/imds#Client) 型を提供します。`Client` および関連するオペレーションは、SDK が提供する他の AWS サービスクライアントと同様に使用できます。SDK の設定方法とサービスクライアントの使用方法の詳細については、「[SDK を設定](configure-gosdk.md)」および「[AWS SDK for Go v2 を用いた AWS サービスを使用する](use-services.md)」を参照してください。

 このクライアントを使用すると、アプリケーションが実行されているインスタンスに関する情報 (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 ユーザーガイド」の「[インスタンスメタデータカテゴリ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories)」を参照してください。