-
Notifications
You must be signed in to change notification settings - Fork 597
/
api_op_CreateSnapshots.go
166 lines (147 loc) · 5.45 KB
/
api_op_CreateSnapshots.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
// Code generated by smithy-go-codegen DO NOT EDIT.
package ec2
import (
"context"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/service/ec2/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Creates crash-consistent snapshots of multiple EBS volumes and stores the data
// in S3. Volumes are chosen by specifying an instance. Any attached volumes will
// produce one snapshot each that is crash-consistent across the instance. Boot
// volumes can be excluded by changing the parameters. You can create multi-volume
// snapshots of instances in a Region and instances on an Outpost. If you create
// snapshots from an instance in a Region, the snapshots must be stored in the same
// Region as the instance. If you create snapshots from an instance on an Outpost,
// the snapshots can be stored on the same Outpost as the instance, or in the
// Region for that Outpost.
func (c *Client) CreateSnapshots(ctx context.Context, params *CreateSnapshotsInput, optFns ...func(*Options)) (*CreateSnapshotsOutput, error) {
if params == nil {
params = &CreateSnapshotsInput{}
}
result, metadata, err := c.invokeOperation(ctx, "CreateSnapshots", params, optFns, c.addOperationCreateSnapshotsMiddlewares)
if err != nil {
return nil, err
}
out := result.(*CreateSnapshotsOutput)
out.ResultMetadata = metadata
return out, nil
}
type CreateSnapshotsInput struct {
// The instance to specify which volumes should be included in the snapshots.
//
// This member is required.
InstanceSpecification *types.InstanceSpecification
// Copies the tags from the specified volume to corresponding snapshot.
CopyTagsFromSource types.CopyTagsFromSource
// A description propagated to every snapshot specified by the instance.
Description *string
// Checks whether you have the required permissions for the action, without
// actually making the request, and provides an error response. If you have the
// required permissions, the error response is DryRunOperation. Otherwise, it is
// UnauthorizedOperation.
DryRun *bool
// The Amazon Resource Name (ARN) of the Outpost on which to create the local
// snapshots.
//
// * To create snapshots from an instance in a Region, omit this
// parameter. The snapshots are created in the same Region as the instance.
//
// * To
// create snapshots from an instance on an Outpost and store the snapshots in the
// Region, omit this parameter. The snapshots are created in the Region for the
// Outpost.
//
// * To create snapshots from an instance on an Outpost and store the
// snapshots on an Outpost, specify the ARN of the destination Outpost. The
// snapshots must be created on the same Outpost as the instance.
//
// For more
// information, see Create multi-volume local snapshots from instances on an
// Outpost
// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#create-multivol-snapshot)
// in the Amazon Elastic Compute Cloud User Guide.
OutpostArn *string
// Tags to apply to every snapshot specified by the instance.
TagSpecifications []types.TagSpecification
noSmithyDocumentSerde
}
type CreateSnapshotsOutput struct {
// List of snapshots.
Snapshots []types.SnapshotInfo
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationCreateSnapshotsMiddlewares(stack *middleware.Stack, options Options) (err error) {
err = stack.Serialize.Add(&awsEc2query_serializeOpCreateSnapshots{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsEc2query_deserializeOpCreateSnapshots{}, middleware.After)
if err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
return err
}
if err = addRetryMiddlewares(stack, options); err != nil {
return err
}
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
return err
}
if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addOpCreateSnapshotsValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateSnapshots(options.Region), middleware.Before); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opCreateSnapshots(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
SigningName: "ec2",
OperationName: "CreateSnapshots",
}
}