当前位置: 首页 > 知识库问答 >
问题:

使用Ansible创建AWS S3 bucket

沈曜灿
2023-03-14

下面是我创建S3桶的yml文件。为了安全起见,我没有在这里粘贴实际的aws_access_keyaws_secret_key只是在下面的片段中显示为 ***** 。我已经在EC2实例上安装了boto3、boto、AWS CLI,该实例上安装了安博。

---
- hosts: localhost
  tasks:
  - name: Create an S3 bucket
    become: true
    aws_s3: aws_access_key=****** aws_secret_key=**** bucket=testbuck  mode=create permission=public-read region=us-east-1

当我使用ansible playbook命令执行上面的yml文件时,它会给出如下所示的异常。请帮助我解决这个问题,以便创建名为“testbuck”的S3 bucket。

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: botocore.exceptions.ClientError: An error occurred (403) when calling the HeadBucket operation: Forbidden
fatal: [localhost]: FAILED! => {"boto3_version": "1.10.44", "botocore_version": "1.13.44", "changed": false, "error": {"code": "403", "message": "Forbidden"}, "msg": "Failed while looking up bucket (during bucket_check) testbuck.: An error occurred (403) when calling the HeadBucket operation: Forbidden", "response_metadata": {"host_id": "OmIY2bLkh4T4JwxD/UJsM47n7oUUS6ttEL9ZMl+vv66bVsLcwQuP2pzAGr05m1LdtznYudrrapk=", "http_headers": {"content-type": "application/xml", "date": "Fri, 17 Jan 2020 16:54:49 GMT", "server": "AmazonS3", "transfer-encoding": "chunked", "x-amz-bucket-region": "us-east-1", "x-amz-id-2": "OmIY2bLkh4T4JwxD/UJsM47n7oUUS6ttEL9ZMl+vv66bVsLcwQuP2pzAGr05m1LdtznYudrrapk=", "x-amz-request-id": "51740FB276A10A18"}, "http_status_code": 403, "request_id": "51740FB276A10A18", "retry_attempts": 0}}

共有3个答案

龙博
2023-03-14

HeadBucket操作是检查s3 bucket是否存在,以及您是否有权访问它。要使用此操作,您的IAM角色/用户必须能够执行s3:ListBucket操作。默认情况下,bucket所有者拥有此权限,并将此权限授予其他用户。有关更多信息,请参阅s3官方文档https://docs.aws.amazon.com/en_us/AmazonS3/latest/API/API_HeadBucket.html

尤研
2023-03-14

您需要检查是否存在s3:ListBucketaccess。这是官方的s3文档https://docs.aws.amazon.com/en_us/AmazonS3/latest/API/API_HeadBucket.html

利稳
2023-03-14

默认情况下,Ansible命令会在创建bucket之前运行,并检查bucket是否存在。可能您使用的IAM用户没有权限检查bucket是否存在。尝试添加

aws_s3:。。。忽略_不存在_bucket:True

或者将s3:ListBucket权限授予用户。

 类似资料:
  • 如何在基于Debian的系统上使用Ansible Playbook在创建目录?

  • 问题内容: 我正在使用ansible在centos7上部署jenkins CI服务器的项目,并且在使用ansible从xml模板创建jenkins作业时遇到了问题。 到目前为止,一切工作正常,但现在我希望能够创建作业,并使用ansible从xml文件为它们提供一些基本配置。我的解决方案是jenkins-cli的以下命令: 在centos7框中手动输入时,此方法非常有效,但是当我将其放入ansibl

  • 在前面介绍过Tower的Job是ansible中playbook的一次执行,也是Tower中Job template的一次的执行。 思路 我们先来屡屡思路,然后再上图来说明创建第一个Job的具体过程。 在ansible中,第一次执行playbook,我们需要做什么准备工作呢。 首先确定要管理的远程主机 即编辑inventory 配置连接远程主机的SSH连接 ssh-genkey && ssh-co

  • 但随后文件每次都被触摸,在日志中显示为黄线,这也是不令人满意的... 这个简单的问题还有更好的解决办法吗?

  • 我试图弄清楚如何使用Ansible(version2.0.2.0和python 2.7.3)创建一个名为“deployer”的用户,并能够使用该id登录服务器,然后进行“apt-get install”之类的操作。我的剧本是这样的: 运行这个playbook后,我可以以“deployer”(例如ssh deployer@myserver)的身份ssh进入机器,但是如果我运行sudo命令,它总是要求