Select your cookie preferences

We use essential cookies and similar tools that are necessary to provide our site and services. We use performance cookies to collect anonymous statistics, so we can understand how customers use our site and make improvements. Essential cookies cannot be deactivated, but you can choose “Customize” or “Decline” to decline performance cookies.

If you agree, AWS and approved third parties will also use cookies to provide useful site features, remember your preferences, and display relevant content, including relevant advertising. To accept or decline all non-essential cookies, choose “Accept” or “Decline.” To make more detailed choices, choose “Customize.”

Amazon EC2 Instance Metadata Service

Focus mode
Amazon EC2 Instance Metadata Service - AWS SDK for Go v2

You can use the AWS SDK for Go to access the Amazon EC2 Instance Metadata Service. The feature/ec2/imds Go package provides a Client type that can be used to access the Amazon EC2 Instance Metadata Service. The Client and associated operations can be used similar to the other AWS service clients provided by the SDK. To learn more information on how to configure the SDK, and use service clients see Configure the SDK and Use the AWS SDK for Go v2 with AWS services.

The client can help you easily retrieve information about instances on which your applications run, such as its AWS Region or local IP address. Typically, you must create and submit HTTP requests to retrieve instance metadata. Instead, create an imds.Client to access the Amazon EC2 Instance Metadata Service using a programmatic client like other AWS Services.

For example to construct a client:

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)

Then use the service client to retrieve information from a metadata category such as local-ipv4 (the private IP address of the instance).

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))

For a list of all metadata categories, see Instance metadata categories in the Amazon EC2 User Guide.

PrivacySite termsCookie preferences
© 2025, Amazon Web Services, Inc. or its affiliates. All rights reserved.