- 22, Oct 2024
- #1
Итак, моя проблема в том, что terraform действительно не нравится команда, которую я пытаюсь запустить, используя внешний источник данных.
Я пытаюсь обойти проблему, из-за которой terraform не будет ждать завершения операции шифрования KMS, прежде чем пытаться использовать зашифрованный текст, возвращаемый KMS. Я также поднял проблему в терраформировании по этому поводу.
Итак, вот что я пытаюсь сделать:
data.external.encrypt_url: data.external.encrypt_url: failed to execute "bash": bash: export ENC_HOOK_URL=$(aws --profile ${AWS_PROFILE} kms encrypt --key-id ${KMS_ALIAS} --plaintext ${HOOK_URL} --output json --region ${AWS_REGION}): No such file or directory
Это будет работать нормально без encrypt_url
datasource but will fail with the following error when trying to run:
resource "aws_kms_alias" "kms_alias" {
name = "alias/${var.lambda_name}"
target_key_id = "${aws_kms_key.hook_url.arn}"
}
data "external" "encrypt_url" {
program = ["bash", "export ENC_HOOK_URL=$(aws --profile $${AWS_PROFILE} \
kms encrypt --key-id $${KMS_ALIAS} --plaintext $${HOOK_URL} --output json \
--region $${AWS_REGION})"]
}
resource "aws_lambda_function" "lambda_function" {
depends_on = ["data.external.encrypt_url"]
filename = "deploymentPackage.zip"
function_name = "${var.lambda_name}"
role = "${var.lambda_role_arn}"
handler = "index.lambda_handler"
source_code_hash = "${base64sha256(file("deploymentPackage.zip"))}"
runtime = "python3.6"
publish = "true"
environment {
variables = {
HOOK_URL = "${data.external.encrypt_url.result.ciphertextBlob}"
}
}
tags {
LastUpdated = "${var.timestamp}-${var.iamuser}-Terraform"
}
}
Теперь здесь не пытается вызваться ни один файл или каталог, и я не могу найти много информации об этом, поскольку эта функция недостаточно документирована.
Если у кого-нибудь есть подсказки, было бы здорово!
#amazon-web-services #terraform #amazon-kms