You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python CDK实现API Gateway按Stage调用Lambda对应别名?

解决API Gateway多阶段对应Lambda别名的问题

针对API Gateway的stg/prd阶段无法匹配对应Lambda别名的问题,直接给你两个关键修复步骤及CDK代码示例:


1. 给API Gateway的Lambda集成添加别名变量

在配置API与Lambda的集成时,必须在Lambda的ARN末尾拼接:${stageVariables.alias},让API Gateway能根据当前阶段的变量动态调用对应别名的Lambda版本。

CDK代码示例:

from aws_cdk import aws_apigateway as apigw, aws_lambda as _lambda

# 假设已定义好Lambda函数my_lambda及stg别名
my_lambda = _lambda.Function(...)
stg_alias = _lambda.Alias(self, "StgAlias", alias_name="stg", version=my_lambda.current_version)

# 创建带别名变量的Lambda集成
lambda_integration = apigw.LambdaIntegration(
    my_lambda,
    integration_responses=[{"statusCode": "200"}],
    # 关键:在Lambda ARN后添加别名变量占位符
    uri=f"arn:aws:apigateway:{self.region}:lambda:path/2015-03-31/functions/{my_lambda.function_arn}:${{stageVariables.alias}}/invocations"
)

# 将集成绑定到API资源
api = apigw.RestApi(self, "MyApi")
api.root.add_method("POST", lambda_integration)

2. 为stg阶段配置别名变量并添加Lambda触发器权限

给stg阶段设置alias变量值为stg,同时添加API Gateway调用对应Lambda别名的权限。

CDK代码示例:

# 创建stg阶段并配置别名变量
stg_stage = api.deployment_stage.add_stage(
    "stg",
    stage_name="stg",
    variables={"alias": "stg"}  # 关联Lambda的stg别名
)

# 给stg阶段添加Lambda调用权限
_lambda.CfnPermission(self, "StgApiLambdaPermission",
    action="lambda:InvokeFunction",
    function_name=f"{my_lambda.function_name}:stg",
    principal="apigateway.amazonaws.com",
    source_arn=f"{stg_stage.stage_arn}/*/*"
)

# 同步配置prd阶段(如果之前未正确设置)
prd_stage = api.deployment_stage.add_stage(
    "prd",
    stage_name="prd",
    variables={"alias": "prd"}  # 若有prd别名则填prd,否则用$LATEST
)

_lambda.CfnPermission(self, "PrdApiLambdaPermission",
    action="lambda:InvokeFunction",
    function_name=f"{my_lambda.function_name}:prd",
    principal="apigateway.amazonaws.com",
    source_arn=f"{prd_stage.stage_arn}/*/*"
)

注意:如果prd阶段不需要专用别名,可将变量值和函数名替换为$LATEST,但建议给prd也创建专用别名便于版本管理。

内容的提问来源于stack exchange,提问作者jiminssy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:11:12