是否可以在禁用 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),以便我的所有客户端实用程序继续像往常一样使用存储桶。请参阅随附的屏幕截图。
我有一个 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),以便我的所有客户端实用程序继续像往常一样使用存储桶。请参阅随附的屏幕截图。