Ansible CloudFormation模块无法查看S3对象

问题描述 投票:0回答:1

使用Ansible,我正在尝试将AWS CloudFormation模板上传到S3存储桶,然后使用生成的URL运行模板。

- name: create s3 bucket
  s3_bucket:
    name: '{{ s3.bucket_name }}'
    state: present
  register: s3_bucket

- name: stage cloudformation template
  aws_s3:
    bucket: '{{ s3_bucket.name }}'
    object: cloudformation-template-vpc.yaml
    src: ../files/cloudformation-template-vpc.yaml
    mode: put
  register: s3_file

- name: 'call cloudformation with state {{ vpc.state }}'
  cloudformation:
    stack_name: '{{ vpc.stack_name }}'
    state: '{{ vpc.state | default("present") }}'
    template: '{{ s3_file.url }}'
  register: vpc_ref

但是当这样做时我得到一个错误:

IOError: [Errno 2] No such file or directory:
'https://mybucket.s3.amazonaws.com/cloudformation-template-vpc.yaml?AWSAccessKeyId=<access-key>&Expires=<a-number>&Signature=<signature>'

(我明显修改了网址。但真正的网址是那种格式。)

很明显,该网址上有一个对象。 Ansible刚刚创建它,我正在使用它给我的价值,我通过网络控制台查看了S3存储桶以验证它在那里。该对象存在。有“这样的文件或目录”。

这可能是权限问题。我的意思是,我正在运行一个连续的Ansible游戏:上传文件,获取网址,然后使用该网址运行。这一切都是作为相同的IAM角色完成的。所以我不明白为什么它会成为权限问题,但是我再也不了解S3权限,公共,私有等。

为什么会失败?为什么Ansible在上传后无法看到该对象?

amazon-web-services amazon-s3 ansible amazon-cloudformation
1个回答
0
投票

问题的根源在于错误:“没有这样的文件或目录”。有时候你必须比平常更多地犯错误。在这种情况下,Ansible是对的。没有名称以“https://”开头的文件或目录。这是一个URL,而不是文件或目录。

  • 问:Egads,这可能是那么愚蠢吗?
  • A:你叫谁'笨蛋,哥们?根据Ansible文档,“模板”参数用于“云信息模板的本地路径”。还有另一个名为“template_url”的参数,用于“包含模板主体的文件的位置。该URL必须指向位于S3存储桶中的模板”。这是你想要做的。

好吧,好吧,也许愚蠢太苛刻了。我本来希望你为“模板”指定一些内容,并且知道它是否是一个URL与一个本地路径是足够聪明的。学过的知识。始终是RTFM。

因为我最初称之为cloudformation模块是这样的:

- name: 'call cloudformation with state {{ vpc.state }}'
  cloudformation:
    stack_name: '{{ vpc.stack_name }}'
    state: '{{ vpc.state | default("present") }}'
    template: '{{ s3_file.url }}'
  register: vpc_ref

...纠正这个问题的方法是将第二行更改为最后一行,如下所示:

- name: 'call cloudformation with state {{ vpc.state }}'
  cloudformation:
    stack_name: '{{ vpc.stack_name }}'
    state: '{{ vpc.state | default("present") }}'
    template_url: '{{ s3_file.url }}'
  register: vpc_ref

该块中的倒数第二行变为“template_url”。

© www.soinside.com 2019 - 2024. All rights reserved.