我正在尝试为学校项目设置一些自动化功能。要点是:
cfn-init
来
COPY
命令将数据导入表中这一切都可以执行脚本。手动执行此操作可以解决问题,但这是因为我可以将创建的Redshift端点复制到用于数据库连接的脚本中。我遇到的问题是,我不知道如何从CloudFormation中提取该输出值,因此无法将其插入脚本中以实现全自动(保存初始EC2部署)解决方案。
我看到Ansible至少有一种方法可以这样做(例如cloudformation_facts
),但是我对如何实现它有点困惑。我看了一些示例,但还没有更清楚。没有上下文,我迷路了,到目前为止,我所看到的只是独立的片段。
答案 0 :(得分:0)
为了确保列出答案:
我找出了describe-stacks
cli命令的describe-stack-resources
和aws cloudformation
子命令。使用这些,我能够找到所需的信息。特别是,我需要访问一个角色。这是我使用的命令:
aws cloudformation describe-stacks --stack-name=StackName --region=us-west-2 \
--query 'Stacks[0].Outputs[?OutputKey==`RedshiftClusterEndpointAddress`].OutputValue' \
--output text
我首先使用describe-stacks
子命令来获取堆栈列表。相关堆栈是列表中的第一个(数组),因此我在查询顶部使用Stacks[0]
来访问describe-stack-recources
子命令。然后,我使用了Outputs
,因为我对CloudFormation输出列表中的值感兴趣。我知道键的名称(RedshiftClusterEndpointAddress),因此我将其用作参数。然后,我使用OutputValue
返回RedshiftClusterEndpointAddress的值。