Terraform lambda源映射的地形导入
我的地形图有一些意想不到的变化。当我运行我的计划时,我看到它试图创建一个已经存在的资源Terraform lambda源映射的地形导入,terraform,Terraform,我的地形图有一些意想不到的变化。当我运行我的计划时,我看到它试图创建一个已经存在的资源 + module.transactions-lambda.aws_lambda_event_source_mapping.lambda-source-mapping id: "<computed>" batch_size: "1000" enabled: "tru
+ module.transactions-lambda.aws_lambda_event_source_mapping.lambda-source-mapping
id: "<computed>"
batch_size: "1000"
enabled: "true"
event_source_arn: "arn:aws:kinesis:us-west-2:xxxxxxxxxx:stream/transactions"
function_arn: "<computed>"
function_name: "arn:aws:lambda:us-west-2:xxxxxxxxxx:function:transactions"
last_modified: "<computed>"
last_processing_result: "<computed>"
starting_position: "LATEST"
state: "<computed>"
state_transition_reason: "<computed>"
uuid: "<computed>"
我希望我的计划现在不会显示任何变化。但是,我看到它试图强制使用新资源,因为:
- 计算“id”
- “起始位置”要更改为 最新的
module.validation-lambda.aws_lambda_event_source_mapping.lambda-source-mapping
module.send-lambda.aws_lambda_event_source_mapping.lambda-source-mapping
module.status-lambda.aws_lambda_event_source_mapping.lambda-source-mapping
这是导入中uuid的地形状态列表
[I] ➜ okta:sbux-prod $ aws lambda get-event-source-mapping --uuid 6f9d38a9-3173-47e8-8951-380353959d33
{
"MaximumBatchingWindowInSeconds": 30,
"UUID": "6f9d38a9-3173-47e8-8951-380353959d33",
"StateTransitionReason": "User action",
"LastModified": 1576562640.0,
"BatchSize": 1000,
"EventSourceArn": "arn:aws:kinesis:us-west-2:xxxxxxxxxx:stream/transaction",
"FunctionArn": "arn:aws:lambda:us-west-2:xxxxxxxxxx:function:transactions",
"State": "Enabled",
"LastProcessingResult": "OK"
}
非常感谢您的帮助。您能将您的地形代码作为一个共享文件共享吗?理想情况下,至少包括
aws_lambda_event_source_mapping的资源定义。lambda source mapping
资源。还有aws lambda的输出得到了什么事件源映射——uuid 6f9d38a9-3173-47e8-8951-380353959d33
show?添加,谢谢@ydaetskcorhmm。。。在调用GetEventSourceMapping
端点时,AWS API实际上不会返回起始位置,因此在导入它时,它只能设置它可以从API返回的内容。不幸的是,它也不能被更新,所以Terraform在导入过程中从读取中读取一个nil值,然后发现它需要更新起始位置
,如果没有升级路径,它必须销毁并重新创建它。老实说,无论是作为用户还是偶尔的贡献者,我都看不到一个很好的解决方案。这是一次性的,因此您可以允许Terraform使用apply重新创建事件源映射(我没有使用Lambda事件源映射,所以不确定这会有多糟糕)或者您可以手动破解状态文件以添加参数,直到差异消失。恐怕不是很好的选择:(您可以将您的地形代码作为一个共享吗?理想情况下,至少包括aws_lambda_事件_源代码_映射的资源定义。lambda源代码映射
资源。aws lambda获取事件源映射的输出是什么?uuid 6f9d38a9-3173-47e8-8951-380353959d33
show?添加,感谢@ydaetskcorhmm…aws API d。)调用GetEventSourceMapping
端点时,oesn实际上不会返回起始位置,因此当您导入它时,它只能设置它可以从API返回的内容。不幸的是,它也不是可以更新的内容,因此Terraform在导入时从读取中读取一个nil值,然后发现它需要更新从位置开始,如果没有升级路径,它必须销毁并重新创建它。老实说,作为用户或偶尔的贡献者,我看不到一个很好的解决方案。这是一次性的,因此您可以允许Terraform使用apply重新创建事件源映射(我没有使用Lambda事件源映射,因此不确定这会有多糟糕)或者您可以手动破解状态文件以添加参数,直到差异消失。恐怕不是好的选项:(
resource "aws_lambda_function" "lambda" {
s3_bucket = "${var.lambda_s3_bucket}"
s3_key = "${var.lambda_s3_key}"
handler = "${var.lambda_handler}"
function_name = "${var.name}"
runtime = "${var.lambda_runtime}"
timeout = "${var.lambda_timeout_sec}"
memory_size = "${var.lambda_memory_size_mb}"
role = "${aws_iam_role.lambda-role.arn}"
vpc_config {
subnet_ids = ["${var.subnet_ids}"]
security_group_ids = [
"${aws_security_group.lambda-security-group.id}",
]
}
environment {
variables = "${var.lambda_environment_variables}"
}
depends_on = ["aws_iam_policy.lambda-policy"]
}
...
resource "aws_lambda_event_source_mapping" "lambda-source-mapping" {
batch_size = "${var.lambda_batch_size}"
event_source_arn = "${var.kinesis_stream_arn}"
enabled = "${var.source_mapping_enabled}"
function_name = "${aws_lambda_function.lambda.arn}"
starting_position = "${var.kinesis_starting_position}"
}
...
module.validation-lambda.aws_lambda_event_source_mapping.lambda-source-mapping
module.send-lambda.aws_lambda_event_source_mapping.lambda-source-mapping
module.status-lambda.aws_lambda_event_source_mapping.lambda-source-mapping
[I] ➜ okta:sbux-prod $ aws lambda get-event-source-mapping --uuid 6f9d38a9-3173-47e8-8951-380353959d33
{
"MaximumBatchingWindowInSeconds": 30,
"UUID": "6f9d38a9-3173-47e8-8951-380353959d33",
"StateTransitionReason": "User action",
"LastModified": 1576562640.0,
"BatchSize": 1000,
"EventSourceArn": "arn:aws:kinesis:us-west-2:xxxxxxxxxx:stream/transaction",
"FunctionArn": "arn:aws:lambda:us-west-2:xxxxxxxxxx:function:transactions",
"State": "Enabled",
"LastProcessingResult": "OK"
}