[ 
https://issues.apache.org/jira/browse/AIRFLOW-4175?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17062189#comment-17062189
 ] 

ASF subversion and git services commented on AIRFLOW-4175:
----------------------------------------------------------

Commit 7646b50b66f4051a94f6d792490a26699612b3ba in airflow's branch 
refs/heads/v1-10-test from Kaxil Naik
[ https://gitbox.apache.org/repos/asf?p=airflow.git;h=7646b50 ]

[AIRFLOW-4175] S3Hook load_file should support ACL policy paramete (#7733)

cherry-picked from a8b5fc74d07e50c91bb64cb66ca1a450aa5ce6e1

- Added acl_policy parameter to all the S3Hook.load_*() and 
S3Hook.copy_object() function
                     - Added unittest to test the response permissions when the 
policy is passed
                     - Updated the docstring of the function

Co-authored-by: retornam <retor...@users.noreply.github.com>


> S3Hook load_file should support ACL policy parameter
> ----------------------------------------------------
>
>                 Key: AIRFLOW-4175
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-4175
>             Project: Apache Airflow
>          Issue Type: Improvement
>          Components: hooks
>    Affects Versions: 1.10.2
>            Reporter: Keith O'Brien
>            Assignee: Omair Khan
>            Priority: Major
>              Labels: gsoc, gsoc2020, mentor
>             Fix For: 1.10.10
>
>
> We have a use case where we are uploading files to an S3 bucket in a 
> different AWS account to the one Airflow is running in.  AWS S3 supports this 
> situation using the pre canned ACL policy, specifically 
> {{bucket-owner-full-control. }}
> However, the current implementations of the {{S3Hook.load_*}}() and 
> {{S3Hook.copy_object}}() methods do not allow us to supply any ACL policy for 
> the file being uploaded/copied to S3.  
> It would be good to add another optional parameter to the {{S3Hook}} methods 
> called {{acl_policy}} which would then be passed into the boto3 client method 
> calls like so 
>  
> {code}
> # load_file
> ...
> if encrypt: 
>    extra_args['ServerSideEncryption'] = "AES256"
> if acl_policy:
>    extra_args['ACL'] = acl_policy
> client.upload_file(filename, bucket_name, key, ExtraArgs=extra_args){code}
>  
> {code}
> # load_bytes
> ...
> if encrypt: 
>    extra_args['ServerSideEncryption'] = "AES256"
> if acl_policy:
>    extra_args['ACL'] = acl_policy
> client.upload_file(filename, bucket_name, key, ExtraArgs=extra_args){code}
> {code}
> # copy_object
> self.get_conn().copy_object(Bucket=dest_bucket_name,
>                                                Key=dest_bucket_key,
>                                                CopySource=CopySource, 
>                                                ACL=acl_policy)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to