JBe*_*rto 5 lambda terraform serverless
我正在尝试向我的 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"
}
Run Code Online (Sandbox Code Playgroud)
我的问题是, aws_cloudwatch_log_group资源是否可以检查是否已创建 cloudwatch 组并仅更新保留策略而不是尝试创建日志组?
由于您没有向我们展示 lambda 函数的 iam 角色策略,我不得不猜测。
我的感觉是 lambda 的 iam 角色和策略具有权限logs:CreateLogGroup
。所以 lambda 函数会处理creating log group if not exist
.
当您更新时,该日志组不受 terraform 管理,它会报告该问题。
您能否删除权限logs:CreateLogGroup
并删除日志组,然后重试?
归档时间: |
|
查看次数: |
9086 次 |
最近记录: |