Introduction
If you have noticed this error, it’s not a bug but a permission error when using the aws_s3 module:
Ansible aws_s3 module: PutObjectAcl error in PUT operation
We encountered this while using the PUT operation the amazon.aws.aws_s3 module in a playbook with:
- Ansible v3.6.9
- pip3 9.0.1
- botocore 1.26.10
- boto3 1.23.10
And we hit this error:
INFO:AnsibleMonitor:Ansible host failed reason Unable to set object ACL: An error occurred (AccessControlListNotSupported) when calling the PutObjectAcl operation: The bucket does not allow ACLs
Why?
So, why the ACL error when we have ACL is disabled in the target S3 bucket?
Well this GitHub post explains it well, also this.
Long story short, use the open ‘permission’ statement to get rid of this, example below:
- name: Export to S3 amazon.aws.aws_s3: region: region-name bucket: bucket-name object: my-file.txt src: /var/tmp/my-file.txt overwrite: true mode: put validate_certs: no permission: []
Conclusion
This permission statement is crucial for this operation to complete.