我正在尝试向我的terraform脚本添加逻辑,以便在创建lambda时添加CW保留逻辑,因此我们的日志会在30天后清除。我所看到的是,当运行terraform来更新现有的lambda(在我的新保留逻辑被添加之前部署)时,我的作业失败并出现以下错误。
- aws_cloudwatch_log_group.lambda-deploy:发生1个错误:
- aws_cloudwatch_log_group.lambda-deploy:创建CloudWatch日志组失败:ResourceAlreadyExistsException:指定的日志组已存在状态码:400,请求ID:e500eb50-4a81-11e9-9c08-7152b4a0ad31:CloudWatch日志组'/ aws / lambda / {lambda -name}'已经存在。
以下是我设置terraform代码的方法:
resource "aws_lambda_function" "lambda-deploy" {
filename = "${var.filename}"
function_name = "${var.functionname}"
role = "${var.role}"
handler = "${var.handler}"
runtime = "${var.runtime}"
publish = "${var.publish}"
memory_size = "${var.memory_size}"
timeout = "${var.timeout}"
description = "${var.description}"
layers = "${var.layers}"
environment {
variables = "${var.envVars}"
}
tags {
PLATFORM = "${var.tag_PLATFORM}"
BUSINESS_UNIT = "${var.tag_BUSINESS_UNIT}"
CLIENT = "${var.tag_CLIENT}"
BUSINESS_REGION = "${var.tag_BUSINESS_REGION}"
}
vpc_config {
subnet_ids = "${var.subnet_ids}"
security_group_ids = "${var.security_group_ids}"
}
}
#Below logic will add cloud watch retention logic so logs rotate after 30 days.
resource "aws_cloudwatch_log_group" "lambda-deploy" {
name = "/aws/lambda/${aws_lambda_function.lambda-deploy.function_name}"
retention_in_days = "30"
}
我的问题是,aws_cloudwatch_log_group资源是否可以检查是否已创建云监视组,只更新保留策略而不是尝试创建日志组?
既然你没有向我们展示lambda函数的iam角色策略,我必须猜测。
我的感觉是我的角色和lambda的政策有权限logs:CreateLogGroup
。所以lambda函数将照顾creating log group if not exist
。
更新时,此日志组不受terraform管理,它将报告问题。
你能删除权限logs:CreateLogGroup
并删除日志组,然后再试一次吗?