Hello Guys,
Hitting a strange issue that I wasn’t expecting, working on a Terraform module for API Gateway, and hitting this behaviour :
"/test-apigw-endpoint" = {
delete = {
x-amazon-apigateway-integration = {
httpMethod = "POST"
payloadFormatVersion = "1.0"
type = "AWS_PROXY"
# TODO: add validation to URI names to avoid getting Terraform circular dependency errors on incorrect name
uri = module.alias["test-project-TestLambdaName-dev"].lambda_alias_invoke_arn
#uri = local.test_module_var
}
},
works without issues, than trying to pass a variable in the module index causes an issue :
"/test-apigw-endpoint" = {
delete = {
x-amazon-apigateway-integration = {
httpMethod = "POST"
payloadFormatVersion = "1.0"
type = "AWS_PROXY"
# TODO: add validation to URI names to avoid getting Terraform circular dependency errors on incorrect name
uri = module.alias["test-project-TestLambdaName-${var.env}"].lambda_alias_invoke_arn
#uri = local.test_module_var
}
},
The values of hardcoded string and variable are identical.
The error I get from this is a circular depedency :
│ Error: Cycle: module.alias.aws_lambda_permission.version_triggers, module.api_gateway.output.execution_arn (expand), module.alias.var.allowed_triggers (expand), module.alias.aws_lambda_permission.qualified_alias_triggers, module.alias (close), local.test_module_var (expand), module.api_gateway.var.openapi_config (expand), module.api_gateway.aws_api_gateway_rest_api.this
I thought this was a separate issue as I am using nested modules and I thought I made a mistake with dependencies but the same works with hardcoded index name and it doesn’t with a variable.
Is variable interpolation not supported in module indexes, or am I missing something else ?
Thanks for you help !
Regards,
Boris