我正在运行一个 docker 容器来构建 python 包。我使用 null_resource 和
local-exec
来执行此操作,如下所示:
resource "null_resource" "install_dependencies" {
provisioner "local-exec" {
command = "docker run -v (dirname "{PWD}"):/var/task 'public.ecr.aws/sam/build-${local.python_runtime}' /bin/sh -c 'pip install -r ${var.package_requirements_path} -t ${var.lambda_function_source_directory};exit'"
}
triggers = {
dependencies_versions = filemd5(var.package_requirements_path)
}
}
但是,我得到
│ An argument definition must end with a newline.
我的问题是,这个错误是什么意思?
我认为这是因为您正在使用双引号创建一个字符串,然后在其中使用双引号。
要解决此问题,请将字符串内使用的双引号更改为单引号,例如在您的情况下。
command = "docker run -v (dirname "{PWD}"):/var/task 'public.ecr.aws/sam/build-${local.python_runtime}' /bin/sh -c 'pip install -r ${var.package_requirements_path} -t ${var.lambda_function_source_directory};退出'"
可以改为
command = "docker run -v (dirname '{PWD}'):/var/task 'public.ecr.aws/sam/build-${local.python_runtime}' /bin/sh -c 'pip install -r ${var.package_requirements_path} -t ${var.lambda_function_source_directory};退出'"
所以“{PWD}”改为“{PWD}”
您还可以通过添加反斜杠来转义它,如下所示:
command = "docker run -v (dirname "{PWD}"):/var/task 'public.ecr.aws/sam/build-${local.python_runtime}' /bin/sh -c 'pip install -r ${var.package_requirements_path} -t ${var.lambda_function_source_directory};退出'"
对其进行格式化后修复。
fmt
我使用 PyCharm,因此我使用 IDE 运行格式化。