为什么在 local-exec provisioner 中会出现 /bin/sh: aws: command not found 的错误?

4
我想在 terraform 运行 destroy 时从 lambda 中进行调用。 Jenkins 在远程服务器上运行 terraform 作业。
根据 this 文档,我定义了以下的 provisioner:
provisioner "local-exec" {
   when = destroy
   command = "aws lambda invoke --function-name ${var.lambda_name} --payload '{ \"someProperty\": \"someValue\" }' response.json"
}

lambda invoke的命令语法是根据AWS CLI命令参考来执行的。

但是,在运行Terraform时会出现以下错误:

Error running command 'aws lambda invoke --function-name my-lambda-name --payload '{ "someProperty": "someValue" }' response.json': exit status 127. Output: /bin/sh: aws: command not found

为什么我在本地执行提供程序时会收到“/bin/sh:aws:找不到命令”的消息?
1个回答

0

local-exec 运行在您的本地计算机上,而不是资源上。因此,我猜测您的计算机可能缺少 aws-cli。

命令 which aws 将显示您是否已安装 aws-cli 并将其添加到您的 PATH 中。如果尚未安装,请按照您的操作系统的安装说明进行安装。


1
我已经修改了这个问题,所以在我的情况下,Terraform 作业在由 Jenkins 管理的远程机器上运行。并且那里已经安装了 AWS-CLI。 - Constantine Ch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接