【问题标题】:How to fetch AWS resource arn using Jenkins如何使用 Jenkins 获取 AWS 资源 arn
【发布时间】:2020-02-06 10:56:45
【问题描述】:

我们有两个 Jenkins 流水线;一种称为日志监控,另一种称为警报触发器。这两个管道都会在对 Bitbucket 中的 terraform 脚本进行任何更改时触发。

管道工作正常,AWS 资源创建成功。

我们在这里面临的问题是: 日志监控管道创建一个 AWS 资源,我们希望从 AWS 控制台获取其 ARN 并在警报触发管道中使用。

任何想法如何实现这一点,因为我们希望自动化所有管道,而不是手动获取 ARN 并触发下游管道。

【问题讨论】:

  • 我为资源附加标签,然后在 shell 脚本中使用 AWS CLI 检索 ARN。
  • 感谢@Elzo Valugi。我们正在标记通过日志监控管道创建的资源。您能否帮我理解一下,我们如何获得它的 ARN 并在 terraform.tfvars 文件中用于警报触发管道(该文件位于 Bitbucket 中)。再次感谢您!
  • 接下来就是在你的管道中执行一个 shell 脚本来获取你需要的 ARN。
  • 好的,让我试一试。
  • 感谢@Elzo Valugi。正如建议的那样,我可以在我的第一个管道内的 shell 脚本中使用 AWS cli 获取 ARN。我正在尝试将此 ARN 值传递给我的第二个管道。

标签: amazon-web-services jenkins jenkins-pipeline


【解决方案1】:

您可以将标签附加到现有资源,并使用这些标签在 shell 脚本中使用 AWS CLI 检索它们各自的 ARN。从该输出中,您可以进一步在管道中以动态方式使用该 ARN 值。

【讨论】:

  • 感谢@Elzo Valugi。我可以使用 aws cli 获取 ARN。 sh 'aws es describe-elasticsearch-domains --domain-name log_monitoring_es_domain'。获得域后,我就可以使用 grep 和 awk 获取 ARN。现在,我有包含变量 es_host="" 的文件。我正在尝试将此域名传递给此参数。下面的 sed 命令在 linux 终端中运行良好。但是,它在 Jenkins 管道中不起作用。命令: sh 'sed -i "s/es_host=\"\"/es_host=\"$my_es_host\"/g" terraform.tfvars ;这里 my_es_host 包含使用 AWS cli 获取的 ARN。任何指针,TIA。
  • 检查 terraform.tfvars 中的值是否正确写入。你有什么错误吗?
  • 感谢@Elzo Valugi 调查。我没有收到任何错误,管道运行良好,但 terraform.tfvars 中的值仍保持为 es_host=""。
  • tfvars文件的写入好像没有成功
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 2019-08-27
  • 2019-12-31
  • 2011-12-02
  • 2021-06-01
  • 2021-11-27
  • 2020-01-27
相关资源
最近更新 更多