是否可以在禁用 ACL 的情况下使用 aws_s3?

Is it possible to use aws_s3 with ACLs disabled?

我有一个 S3 存储桶,我正在尝试将其自动上传到。当我 运行 剧本时,出现以下错误:

FAILED! => {"boto3_version": "1.22.0", "botocore_version": "1.25.0", "changed": false,
"error": {"code": "AccessControlListNotSupported", "message": "The bucket does not allow 
ACLs"}, "msg": "Unable to set object ACL: An error occurred 

AWS recommends disabling ACLs,并且我能够使用 aws cli 就好了:

aws s3 cp <file name> s3://mybucket/<file name>

我的剧本:

- name: Upload logical backup to s3
  aws_s3:
    bucket: "{{ AWS_S3_BACKUP_BUCKET }}"
    aws_access_key: "{{ AWS_S3_BACKUP_ACCESS_KEY_ID }}"
    aws_secret_key: "{{ AWS_S3_BACKUP_SECRET_KEY }}"
    mode: put
    object: logical_db_backups/dump_01.sql.zst
    src: /path/to/my/backup/file

如果我启用 ACL,剧本就可以运行。但是,我真的更愿意使用一个被授予访问存储桶权限的用户。

我阅读了 aws_s3 模块上的 Ansible documentation,其中没有提及 ACL。

有谁知道在没有 ACL 的情况下使用此模块的方法吗?如果没有,我将返回常规 bash 和 cron 作业。

ansible版本: ansible 2.9.6

根本问题:

AWS 最近 (late Nov 2021) 添加了禁用对象 ACL 的选项,他们将其设置为 default/suggested 设置使很多人感到困惑,尽管许多客户端应用程序并未为此配备。

Ansible 的问题:

问题是许多客户端(如 Ansible 和各种 SDK)还没有配备处理这个 new 功能。

I read the Ansible documentation on the aws_s3 module, and it mentioned nothing about ACLs.

文档的“权限”部分提到了 ACL,你是对的,它没有提到“ACL”(不要问我为什么!):https://docs.ansible.com/ansible/2.9/modules/aws_s3_module.html#parameter-permission

目前,根据 Ansible 文档,ACL“权限”参数默认为 private 并且无法告诉它省略 ACL 设置。

解决方法:

我一直在做的是将存储桶保持在“传统模式”(也就是启用 ACL),以便我的所有客户端实用程序继续像往常一样使用存储桶。请参阅随附的屏幕截图。