我正在將一些 Cloudformation 轉換為創建 Lambda 的 Terraform,然后為 Lambda 設定預配置并發和應用程式自動縮放。當 Terraform 運行 aws_appautoscaling_target 資源時,它失敗并顯示以下訊息:
Error: Error creating application autoscaling target: ValidationException: Unsupported service namespace, resource type or scalable dimension
我還沒有找到太多與 Lambdas 一起使用的 aws_appautoscaling_target 資源的例子。這不再支持嗎?作為參考,我運行的是 Terraform 版本 1.0.11,我使用的是 AWS 提供商版本 3.66.0。我在下面發布我的 Terraform。謝謝。
data "archive_file" "foo_create_dist_pkg" {
source_dir = var.lambda_file_location
output_path = "foo.zip"
type = "zip"
}
resource "aws_lambda_function" "foo" {
function_name = "foo"
description = "foo lambda"
handler = "foo.main"
runtime = "python3.8"
publish = true
role = "arn:aws:iam::${local.account_id}:role/serverless-role"
memory_size = 256
timeout = 900
depends_on = [data.archive_file.foo_create_dist_pkg]
source_code_hash = data.archive_file.foo_create_dist_pkg.output_base64sha256
filename = data.archive_file.foo_create_dist_pkg.output_path
}
resource "aws_lambda_provisioned_concurrency_config" "foo_provisioned_concurrency" {
function_name = aws_lambda_function.foo.function_name
provisioned_concurrent_executions = 15
qualifier = aws_lambda_function.foo.version
}
resource "aws_appautoscaling_target" "autoscale_foo" {
max_capacity = var.PCMax
min_capacity = var.PCMin
resource_id = "function:${aws_lambda_function.foo.function_name}"
scalable_dimension = "lambda:function:ProvisionedConcurrency"
service_namespace = "lambda"
}
uj5u.com熱心網友回復:
您需要發布您的 Lambda 以獲取新版本。這可以通過publish = true在aws_lambda_function資源中設定來完成。這將為您的函式提供一個數字版本,可用于aws_appautoscaling_target:
resource "aws_appautoscaling_target" "autoscale_foo" {
max_capacity = var.PCMax
min_capacity = var.PCMin
resource_id = "function:${aws_lambda_function.foo.function_name}:${aws_lambda_function.foo.version}"
scalable_dimension = "lambda:function:ProvisionedConcurrency"
service_namespace = "lambda"
}
或者,您可以創建一個aws_lambda_alias并aws_appautoscaling_target在 Lambda 版本中使用它。盡管如此,這也需要發布該功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360919.html
