为什么我会收到 /bin/sh: aws: command not found in local-exec Provisioner?

Con*_* Ch 5 amazon-web-services aws-lambda terraform

我想在 destroy 运行时从 terraform 执行 lambda 调用。terraform 作业由 Jenkins 在远程服务器上运行。

根据文档,我定义了以下配置程序:

provisioner "local-exec" {
   when = destroy
   command = "aws lambda invoke --function-name ${var.lambda_name} --payload '{ \"someProperty\": \"someValue\" }' response.json"
}
Run Code Online (Sandbox Code Playgroud)

lambda invoke 的命令语法根据AWS CLI Command Reference

但是,在运行 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
Run Code Online (Sandbox Code Playgroud)

为什么我会收到 /bin/sh: aws: command not found in local-exec Provisioner?

小智 0

local-exec 正在本地计算机上运行,​​而不是在资源上运行。所以我猜你的机器上缺少 aws-cli 。

该命令which aws将显示您是否已安装 aws-cli 并在您的PATH? 如果未安装,请按照您的操作系统的安装说明进行操作。

  • 我已经编辑了这个问题,所以就我而言,Terraform 作业在 Jenkins 处理的远程计算机上运行。并且那里已经安装了 aws-cli。 (2认同)