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