mon*_*mon 4 aws-lambda terraform
要从 API GW 调用 Lambda,invoke_arn可用于 aws_lambda_function 资源。
invoke_arn - 用于从 API Gateway 调用 Lambda 函数的 ARN。
resource "aws_api_gateway_integration" "videos" {
rest_api_id = "${aws_api_gateway_rest_api.24_hour_video.id}"
resource_id = "${aws_api_gateway_method.videos_get.resource_id}"
http_method = "${aws_api_gateway_method.videos_get.http_method}"
integration_http_method = "GET"
type = "AWS_PROXY" # Lambda Proxy
uri = "${aws_lambda_function.list_videos.invoke_arn}"
}
Run Code Online (Sandbox Code Playgroud)
在uri中设置什么才能通过别名调用相同的 lambda?
resource "aws_lambda_alias" "lambda_alias_list_videos" {
name = "get_video_list"
description = "Alias to lambda_list_videos"
function_name = "${aws_lambda_function.list_videos.arn}"
function_version = "$LATEST"
}
Run Code Online (Sandbox Code Playgroud)
这aws_lambda_alias资源创建一个指向 Lambda 函数的特定版本的别名。别名本身是不可调用的。
相反,您应该创建一个aws_lambda_function指向别名版本的数据源,并使用其invoke_arn属性。您可以使用qualifieran 中的参数aws_lambda_function来指定版本或别名(有关更多信息,请参阅AWS Lambda Invoke 文档)。
您的示例显示您已经创建了一个名为get_video_list的别名,它指向$LATEST版本。您需要创建一个指向此别名的新数据源:
data "aws_lambda_function" "my_function_get_video_list" {
function_name = "your-function-name"
qualifier = "get_video_list"
}
Run Code Online (Sandbox Code Playgroud)
您现在可以获得别名函数的调用 ARN:
${aws_lambda_function.my_function.get_video_list.invoke_arn}
Run Code Online (Sandbox Code Playgroud)
aws_lambda_alias资源具有专为 API Gateway 设计的invoke_arn属性(请参阅文档)。例如:
resource "aws_lambda_alias" "api_function_alias_live" {
name = "live"
function_name = aws_lambda_function.api_function.function_name
function_version = "1"
}
resource "aws_api_gateway_integration" "proxy_integration" {
rest_api_id = aws_api_gateway_rest_api.api_gateway.id
resource_id = aws_api_gateway_resource.proxy_resource.id
http_method = aws_api_gateway_method.proxy_method.http_method
integration_http_method = "POST"
type = "AWS_PROXY"
uri = aws_lambda_alias.api_function_alias_live.invoke_arn
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6473 次 |
| 最近记录: |