1package imds
2
3import (
4 "context"
5 "io"
6
7 "github.com/aws/smithy-go/middleware"
8 smithyhttp "github.com/aws/smithy-go/transport/http"
9)
10
11const getUserDataPath = "/latest/user-data"
12
13// GetUserData uses the path provided to request information from the EC2
14// instance metadata service for dynamic data. The content will be returned
15// as a string, or error if the request failed.
16func (c *Client) GetUserData(ctx context.Context, params *GetUserDataInput, optFns ...func(*Options)) (*GetUserDataOutput, error) {
17 if params == nil {
18 params = &GetUserDataInput{}
19 }
20
21 result, metadata, err := c.invokeOperation(ctx, "GetUserData", params, optFns,
22 addGetUserDataMiddleware,
23 )
24 if err != nil {
25 return nil, err
26 }
27
28 out := result.(*GetUserDataOutput)
29 out.ResultMetadata = metadata
30 return out, nil
31}
32
33// GetUserDataInput provides the input parameters for the GetUserData
34// operation.
35type GetUserDataInput struct{}
36
37// GetUserDataOutput provides the output parameters for the GetUserData
38// operation.
39type GetUserDataOutput struct {
40 Content io.ReadCloser
41
42 ResultMetadata middleware.Metadata
43}
44
45func addGetUserDataMiddleware(stack *middleware.Stack, options Options) error {
46 return addAPIRequestMiddleware(stack,
47 options,
48 "GetUserData",
49 buildGetUserDataPath,
50 buildGetUserDataOutput)
51}
52
53func buildGetUserDataPath(params interface{}) (string, error) {
54 return getUserDataPath, nil
55}
56
57func buildGetUserDataOutput(resp *smithyhttp.Response) (interface{}, error) {
58 return &GetUserDataOutput{
59 Content: resp.Body,
60 }, nil
61}