首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Lambda函数集成(AWSCDK2PythonAPI)部署带有Rest的CDK堆栈时出错

使用Lambda函数集成(AWSCDK2PythonAPI)部署带有Rest的CDK堆栈时出错
EN

Stack Overflow用户
提问于 2022-05-10 02:21:50
回答 1查看 330关注 0票数 0

我试图使用AWS Lambda、API Gateway和AWSCDK2.16PythonAPI创建一个简单的Rest。

这个Rest应该有一个带有CORS属性的方法的资源和一个带有lambda函数集成的POST方法。

但是,当我添加方法(使用add_method)并部署堆栈时,会发生错误。

代码:

代码语言:javascript
复制
    lambda_predictor = lambda_.CfnFunction(self, "LambdaPredictor",
                                            code = lambda_.CfnFunction.CodeProperty(s3_bucket="my-bucket",
                                                                                    s3_key=lambda_predictor_location),
                                            role =lambda_glue_role.attr_arn,
                                            # properties
                                            architectures = ["x86_64"],
                                            description = 'Lambda function',
                                            function_name = f"{environment}-{project}-lambda-predictor",
                                            handler = "lambda_function.lambda_handler",
                                            memory_size = 256,
                                            layers=[layer.layer_version_arn],
                                            package_type = "Zip",
                                            runtime = "python3.8",
                                            timeout = 30) 
                                            
    
    lambda_predictor.add_depends_on(lambda_glue_role)  
    
    rest_api = apigateway.RestApi(self, "InferencePipelineRestApi",
                                  rest_api_name="InferencePipelineAPI")
                          
    api_resource = rest_api.root.add_resource('myResource',
                                      default_cors_preflight_options=apigateway.CorsOptions(
                                          allow_headers=['Content-Type', 'X-Amz-Date', 'Authorization', 'X-Api-Key', 'X-Amz-Security-Token'],
                                          allow_methods=['OPTIONS', 'GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
                                          allow_origins=["*"])
                                    )
    api_resource.add_method("POST", apigateway.LambdaIntegration(lambda_predictor))

错误:

“”“

代码语言:javascript
复制
jsii.errors.JavaScriptError: 
  TypeError: this.handler.addPermission is not a function

你知道并知道会发生什么吗?

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 06:33:35

您正在传递一个低级别(L1) lambda函数构造,CfnFunction,而LambdaIntegration只接受IFunction,它是由高级(L2)结构(如Function )实现的。

相关文档:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.LambdaIntegration.html

有什么理由使用L1构造吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72180062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档