@@ -236,6 +236,18 @@ public class CopyS3ObjectCmdlet : AmazonS3ClientCmdlet, IExecutor
236236 public SwitchParameter PublicReadWrite { get ; set ; }
237237 #endregion
238238
239+ #region Parameter ExpectedBucketOwner
240+ /// <summary>
241+ /// <para>
242+ /// <para>The account ID of the expected bucket owner. If the account ID that you provide does
243+ /// not match the actual owner of the bucket, the request fails with the HTTP status code
244+ /// <code>403 Forbidden</code> (access denied).</para>
245+ /// </para>
246+ /// </summary>
247+ [ Parameter ( ValueFromPipelineByPropertyName = true , ParameterSetName = CopyS3ObjectToS3Object ) ]
248+ public System . String ExpectedBucketOwner { get ; set ; }
249+ #endregion
250+
239251 #region Parameter StorageClass
240252
241253 // NOTE: This parameter does not use the marker attribute for automated validate set
@@ -636,6 +648,8 @@ protected override void ProcessRecord()
636648 break ;
637649 }
638650
651+ if ( this . ExpectedBucketOwner != null )
652+ context . ExpectedBucketOwner = this . ExpectedBucketOwner ;
639653 if ( ParameterWasBound ( "UtcModifiedSinceDate" ) )
640654 context . UtcModifiedSinceDate = this . UtcModifiedSinceDate ;
641655 if ( ParameterWasBound ( "UtcUnmodifiedSinceDate" ) )
@@ -731,7 +745,6 @@ private GetObjectMetadataResponse GetSourceObjectData(CmdletContext cmdletContex
731745 {
732746 request . RequestPayer = cmdletContext . RequestPayer ;
733747 }
734-
735748 base . UserAgentAddition = AmazonS3Helper . GetCleanKeyUserAgentAdditionString ( objectKey , request . Key ) ;
736749
737750 var response = CallAWSServiceOperation ( sourceRegionClient , request ) ;
@@ -853,6 +866,8 @@ private object CopyS3ObjectToS3(ExecutorContext context)
853866 {
854867 request . RequestPayer = cmdletContext . RequestPayer ;
855868 }
869+ if ( cmdletContext . ExpectedBucketOwner != null )
870+ request . ExpectedBucketOwner = cmdletContext . ExpectedBucketOwner ;
856871
857872 AmazonS3Helper . SetMetadataAndHeaders ( request , cmdletContext . Metadata , cmdletContext . Headers ) ;
858873
@@ -951,6 +966,8 @@ private object MultipartCopyS3ObjectToS3(ExecutorContext context, long objectSiz
951966 {
952967 completeRequest . RequestPayer = cmdletContext . RequestPayer ;
953968 }
969+ if ( cmdletContext . ExpectedBucketOwner != null )
970+ initiateRequest . ExpectedBucketOwner = cmdletContext . ExpectedBucketOwner ;
954971
955972 CallAWSServiceOperation ( Client , completeRequest ) ;
956973 uploadId = null ;
@@ -1320,6 +1337,7 @@ internal class CmdletContext : ExecutorContext
13201337 public S3MetadataDirective ? MetadataDirective { get ; set ; }
13211338 public S3CannedACL CannedACL { get ; set ; }
13221339 public String SourceVersionId { get ; set ; }
1340+ public String ExpectedBucketOwner { get ; set ; }
13231341 public S3StorageClass StorageClass { get ; set ; }
13241342 public ServerSideEncryptionMethod ServerSideEncryptionMethod { get ; set ; }
13251343 public string ServerSideEncryptionKeyManagementServiceKeyId { get ; set ; }
0 commit comments