簡體   English   中英

使用 Rest API 和 Lambda Function 集成部署 CDK 堆棧時出錯 (AWS CDK 2 Python API)

[英]Error deploying a CDK stack with a Rest API with a Lambda Function Integration (AWS CDK 2 Python API)

我正在嘗試使用 AWS Lambda、API 網關和 AWS CDK 2.16 Python API 創建一個簡單的 Rest API。

這個 Rest API 應該有一個資源,其方法啟用了 CORS 屬性,POST 方法具有 lambda function 集成。

但是,當我添加方法(使用 add_method)並部署堆棧時會發生錯誤。

代碼:

    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))

錯誤:

'''

jsii.errors.JavaScriptError: 
  TypeError: this.handler.addPermission is not a function

你知道會發生什么嗎?

先感謝您

您正在傳遞低級別 (L1) lambda function 構造CfnFunction ,而LambdaIntegration僅接受IFunction ,它由更高級別 (L2) 構造實現,例如Function

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

您使用 L1 結構的任何原因?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM