pkg/utils/imds/imds.go (23 lines of code) (raw):
package imds
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
ec2metadatasvc "github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/session"
)
// EC2Metadata wraps the methods from the amazon-sdk-go's ec2metadata package
type EC2Metadata interface {
GetMetadata(path string) (string, error)
Region() (string, error)
}
func GetMetaData(key string) (string, error) {
awsSession := session.Must(session.NewSession(aws.NewConfig().
WithMaxRetries(10),
))
var ec2Metadata EC2Metadata
ec2Metadata = ec2metadatasvc.New(awsSession)
requestedData, err := ec2Metadata.GetMetadata(key)
if err != nil {
return "", fmt.Errorf("get instance metadata: failed to retrieve %s - %s", key, err)
}
return requestedData, nil
}