修复 AWS CDK 中的“需要应用程序”错误

pay*_*y17 4 amazon-web-services node.js typescript aws-lambda aws-cdk

我正在尝试运行这个函数:

"cdk deploy --require-approval never"
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

--app is required either in command-line, in cdk.json or in ~/.cdk.json
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?这是我的 cdk.json 文件中的内容:

{
  "app": "npx ts-node --prefer-ts-exts bin/project-infra.ts",
}
Run Code Online (Sandbox Code Playgroud)

这是我的项目基础设施代码:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as lambda from 'aws-cdk-lib/aws-lambda';
// import * as sqs from 'aws-cdk-lib/aws-sqs';

export class ProjectInfraStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const layer = new lambda.LayerVersion(this, "BaseLayer", {
      code: lambda.Code.fromAsset("lambda_base_layer/layer.zip")
      compatibleRuntimes: [lambda.Runtime.PYTHON_3_9],

    });

    const apiLambda = new lambda.Function(this, "ApiFunction", {
      runtime: lambda.Runtime.PYTHON_3_9,
      code: lambda.Code.fromAsset("../main_app/"),
      handler: "main.handler",
      layers: [layer], 
    });
    
  }
}

Run Code Online (Sandbox Code Playgroud)

小智 12

此消息通常意味着当您发出 cdk Synth 时,您不在 AWS CDK 项目的主目录中。此目录中的文件 cdk.json 由 cdk init 命令创建,包含运行(从而合成)您的 AWS CDK 应用程序所需的命令行。对于 TypeScript 应用程序,默认的 cdk.json 看起来像这样:

{
  "app": "npx ts-node bin/my-cdk-app.ts"
}
Run Code Online (Sandbox Code Playgroud)

这是 CDK 文档中描述的常见问题:

排查常见 AWS CDK 问题