如何将API Gateway指向CDK中的lambda别名? [英] How do you point API Gateway to a lambda Alias in CDK?

查看:19
本文介绍了如何将API Gateway指向CDK中的lambda别名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用CDK将ApiGateway连接到lambda,我们首先创建RestApi(),然后创建LambdaIntegration将Apigateway连接到lambda。如何在使用lambda别名时执行此操作?

How to point ApiGateway to a specific Lambda alias介绍如何在没有CDK的情况下将ApiG连接到Lambda别名。如何将其转换为CDK?

我们的目标是将预置并发和自动缩放添加到与API网关一起使用的lambda。

推荐答案

LambdaIntegration函数将handler: IFunction作为参数获取,该参数是lambda对象。

如上所述,您可以使用以下代码片段导入所需的lambda版本:

const lambdaAlias=lambda.Function.fromFunctionArn(scope,'LambdaImportUsingARN',"lambdaAliasARN")

lambdaAliasARN替换为您的lambda的ARN。

例如-

arn:aws:lambda:${AWS_REGION}:${AWS_ACCOUNT}:function:${LAMBDA_NAME}:${ALIAS_NAME}

稍后,将其传递给LambdaIntegration

const lambdaIntegrationUsingAlias  = new apigateway.LambdaIntegration(lambdaAlias) 

此外,lambda别名需要权限才能允许ApiGateway调用它。

const lambda = ...
const alias = Alias(this, "alias-id", AliasProps.builder()
            .provisionedConcurrentExecutions(1)
            .version(lambda.currentVersion)
            .aliasName(ALIAS_NAME)
            .build()
        )
// First add permission for your stage to invoke
alias.addPermission("apigateway-permission", Permission.builder()
            .action("lambda:InvokeFunction")
            .principal(ServicePrincipal("apigateway.amazonaws.com"))          
            .sourceArn("arn:aws:execute-api:$region:$account:${api.restApiId}/$stage/POST/$path")
            .build())
// Next add permission for testing
alias.addPermission("apigateway-test-permission", Permission.builder()
            .action("lambda:InvokeFunction")
            .principal(ServicePrincipal("apigateway.amazonaws.com"))
            .sourceArn("arn:aws:execute-api:$region:$account:${api.restApiId}/test-invoke-stage/POST/$path")
            .build())

这篇关于如何将API Gateway指向CDK中的lambda别名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆