1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package s3 4 5import ( 6 "context" 7 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 8 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" 9 s3cust "github.com/aws/aws-sdk-go-v2/service/s3/internal/customizations" 10 "github.com/aws/aws-sdk-go-v2/service/s3/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// This action aborts a multipart upload. After a multipart upload is aborted, no 16// additional parts can be uploaded using that upload ID. The storage consumed by 17// any previously uploaded parts will be freed. However, if any part uploads are 18// currently in progress, those part uploads might or might not succeed. As a 19// result, it might be necessary to abort a given multipart upload multiple times 20// in order to completely free all storage consumed by all parts. To verify that 21// all parts have been removed, so you don't get charged for the part storage, you 22// should call the ListParts 23// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html) action and 24// ensure that the parts list is empty. For information about permissions required 25// to use the multipart upload, see Multipart Upload and Permissions 26// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). The 27// following operations are related to AbortMultipartUpload: 28// 29// * 30// CreateMultipartUpload 31// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 32// 33// * 34// UploadPart 35// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) 36// 37// * 38// CompleteMultipartUpload 39// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 40// 41// * 42// ListParts 43// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html) 44// 45// * 46// ListMultipartUploads 47// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html) 48func (c *Client) AbortMultipartUpload(ctx context.Context, params *AbortMultipartUploadInput, optFns ...func(*Options)) (*AbortMultipartUploadOutput, error) { 49 if params == nil { 50 params = &AbortMultipartUploadInput{} 51 } 52 53 result, metadata, err := c.invokeOperation(ctx, "AbortMultipartUpload", params, optFns, addOperationAbortMultipartUploadMiddlewares) 54 if err != nil { 55 return nil, err 56 } 57 58 out := result.(*AbortMultipartUploadOutput) 59 out.ResultMetadata = metadata 60 return out, nil 61} 62 63type AbortMultipartUploadInput struct { 64 65 // The bucket name to which the upload was taking place. When using this action 66 // with an access point, you must direct requests to the access point hostname. The 67 // access point hostname takes the form 68 // AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this 69 // action with an access point through the AWS SDKs, you provide the access point 70 // ARN in place of the bucket name. For more information about access point ARNs, 71 // see Using Access Points 72 // (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) 73 // in the Amazon S3 User Guide. When using this action with Amazon S3 on Outposts, 74 // you must direct requests to the S3 on Outposts hostname. The S3 on Outposts 75 // hostname takes the form 76 // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When using 77 // this action using S3 on Outposts through the AWS SDKs, you provide the Outposts 78 // bucket ARN in place of the bucket name. For more information about S3 on 79 // Outposts ARNs, see Using S3 on Outposts 80 // (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) in the 81 // Amazon S3 User Guide. 82 // 83 // This member is required. 84 Bucket *string 85 86 // Key of the object for which the multipart upload was initiated. 87 // 88 // This member is required. 89 Key *string 90 91 // Upload ID that identifies the multipart upload. 92 // 93 // This member is required. 94 UploadId *string 95 96 // The account ID of the expected bucket owner. If the bucket is owned by a 97 // different account, the request will fail with an HTTP 403 (Access Denied) error. 98 ExpectedBucketOwner *string 99 100 // Confirms that the requester knows that they will be charged for the request. 101 // Bucket owners need not specify this parameter in their requests. For information 102 // about downloading objects from requester pays buckets, see Downloading Objects 103 // in Requestor Pays Buckets 104 // (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) 105 // in the Amazon S3 Developer Guide. 106 RequestPayer types.RequestPayer 107} 108 109type AbortMultipartUploadOutput struct { 110 111 // If present, indicates that the requester was successfully charged for the 112 // request. 113 RequestCharged types.RequestCharged 114 115 // Metadata pertaining to the operation's result. 116 ResultMetadata middleware.Metadata 117} 118 119func addOperationAbortMultipartUploadMiddlewares(stack *middleware.Stack, options Options) (err error) { 120 err = stack.Serialize.Add(&awsRestxml_serializeOpAbortMultipartUpload{}, middleware.After) 121 if err != nil { 122 return err 123 } 124 err = stack.Deserialize.Add(&awsRestxml_deserializeOpAbortMultipartUpload{}, middleware.After) 125 if err != nil { 126 return err 127 } 128 if err = addSetLoggerMiddleware(stack, options); err != nil { 129 return err 130 } 131 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 132 return err 133 } 134 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 135 return err 136 } 137 if err = addResolveEndpointMiddleware(stack, options); err != nil { 138 return err 139 } 140 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 141 return err 142 } 143 if err = addRetryMiddlewares(stack, options); err != nil { 144 return err 145 } 146 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 147 return err 148 } 149 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 150 return err 151 } 152 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 153 return err 154 } 155 if err = addClientUserAgent(stack); err != nil { 156 return err 157 } 158 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 159 return err 160 } 161 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 162 return err 163 } 164 if err = addOpAbortMultipartUploadValidationMiddleware(stack); err != nil { 165 return err 166 } 167 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opAbortMultipartUpload(options.Region), middleware.Before); err != nil { 168 return err 169 } 170 if err = addMetadataRetrieverMiddleware(stack); err != nil { 171 return err 172 } 173 if err = addAbortMultipartUploadUpdateEndpoint(stack, options); err != nil { 174 return err 175 } 176 if err = addResponseErrorMiddleware(stack); err != nil { 177 return err 178 } 179 if err = v4.AddContentSHA256HeaderMiddleware(stack); err != nil { 180 return err 181 } 182 if err = disableAcceptEncodingGzip(stack); err != nil { 183 return err 184 } 185 if err = addRequestResponseLogging(stack, options); err != nil { 186 return err 187 } 188 return nil 189} 190 191func newServiceMetadataMiddleware_opAbortMultipartUpload(region string) *awsmiddleware.RegisterServiceMetadata { 192 return &awsmiddleware.RegisterServiceMetadata{ 193 Region: region, 194 ServiceID: ServiceID, 195 SigningName: "s3", 196 OperationName: "AbortMultipartUpload", 197 } 198} 199 200// getAbortMultipartUploadBucketMember returns a pointer to string denoting a 201// provided bucket member valueand a boolean indicating if the input has a modeled 202// bucket name, 203func getAbortMultipartUploadBucketMember(input interface{}) (*string, bool) { 204 in := input.(*AbortMultipartUploadInput) 205 if in.Bucket == nil { 206 return nil, false 207 } 208 return in.Bucket, true 209} 210func addAbortMultipartUploadUpdateEndpoint(stack *middleware.Stack, options Options) error { 211 return s3cust.UpdateEndpoint(stack, s3cust.UpdateEndpointOptions{ 212 Accessor: s3cust.UpdateEndpointParameterAccessor{ 213 GetBucketFromInput: getAbortMultipartUploadBucketMember, 214 }, 215 UsePathStyle: options.UsePathStyle, 216 UseAccelerate: options.UseAccelerate, 217 SupportsAccelerate: true, 218 TargetS3ObjectLambda: false, 219 EndpointResolver: options.EndpointResolver, 220 EndpointResolverOptions: options.EndpointOptions, 221 UseDualstack: options.UseDualstack, 222 UseARNRegion: options.UseARNRegion, 223 }) 224} 225