gpt4 book ai didi

amazon-web-services - 如何将 API 网关指向 CDK 中的 lambda 别名?

转载 作者:行者123 更新时间:2023-12-05 01:34:57 24 4
gpt4 key购买 nike

使用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())

关于amazon-web-services - 如何将 API 网关指向 CDK 中的 lambda 别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63477633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com