簡體   English   中英

無法將 Nodejs 和 Typescript 部署到 AWS cdk + lambda

[英]Cannot deploy Nodejs and Typescript to AWS cdk + lambda

我是 aws cdk + lambda 的初學者。 我試圖部署我的代碼,但我看到了這個錯誤。

 => [internal] load build definition from Dockerfile                                                                                                                                                   0.0s
 => => transferring dockerfile: 37B                                                                                                                                                                    0.0s
 => [internal] load .dockerignore                                                                                                                                                                      0.0s
 => => transferring context: 2B                                                                                                                                                                        0.0s
 => [internal] load metadata for public.ecr.aws/sam/build-nodejs14.x:latest                                                                                                                            1.0s
 => [1/9] FROM public.ecr.aws/sam/build-nodejs14.x@sha256:06985a76d686d0c86515379f71bed3a1acbab280d661ef551b5b4cda640e8f90                                                                             0.0s
 => CACHED [2/9] RUN npm install --global yarn@1.22.5                                                                                                                                                  0.0s
 => CACHED [3/9] RUN npm install --global pnpm                                                                                                                                                         0.0s
 => CACHED [4/9] RUN npm install --global typescript                                                                                                                                                   0.0s
 => CACHED [5/9] RUN npm install --global --unsafe-perm=true esbuild@0                                                                                                                                 0.0s
 => CACHED [6/9] RUN mkdir /tmp/npm-cache &&     chmod -R 777 /tmp/npm-cache &&     npm config --global set cache /tmp/npm-cache                                                                       0.0s
 => CACHED [7/9] RUN mkdir /tmp/yarn-cache &&     chmod -R 777 /tmp/yarn-cache &&     yarn config set cache-folder /tmp/yarn-cache                                                                     0.0s
 => CACHED [8/9] RUN npm config --global set update-notifier false                                                                                                                                     0.0s
 => CACHED [9/9] RUN /sbin/useradd -u 1000 user && chmod 711 /                                                                                                                                         0.0s
 => exporting to image                                                                                                                                                                                 0.0s
 => => exporting layers                                                                                                                                                                                0.0s
 => => writing image sha256:8b25175ce58bbb3ce58ba4f0b73e8ae17cf0fcb8532a6c02b0aca7b1a7429499                                                                                                           0.0s
 => => naming to docker.io/library/cdk-470fb4012c9ce199d4de1e4462a2a6890905c9a52978baa58741ff003794f41b                                                                                                0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Bundling asset CdkMqHrApiStack/MqHrApiHandler/Code/Stage...
esbuild cannot run locally. Switching to Docker bundling.
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
qemu: uncaught target signal 11 (Segmentation fault) - core dumped

結構體

- bin
- build
- cdk.out
- lib
- node_modules
- src
  -- index.ts
- package.json
- package-lock.json

bin/cdk-test.ts 文件

const app = new cdk.App();
new CdkTestStack(app, 'CdkTestStack');

lib/cdk-test-stack.ts 文件

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

        // defines an AWS Lambda resource
        // new lambda.Function(this, 'TestHandler', {
        //  memorySize: 1024,
        //  runtime: lambda.Runtime.NODEJS_14_X, // execution environment
        //  code: lambda.Code.fromAsset('./src'), // code loaded from "lambda" directory
        //  handler: 'index.handler',
        //  functionName: 'TestHandler',
        //  timeout: cdk.Duration.seconds(300),
        // });

        new lambdaNodejs.NodejsFunction(this, 'TestHandler', {
            runtime: lambda.Runtime.NODEJS_14_X,
            handler: 'handler',
            entry: './build/index.js',
        });
    }
}

src/index.ts 文件

export const handler = ServerlessAdapter.new(app).setFramework(new FastifyFramework()).build();

我使用 mac m1 和 cdk 版本 2.42。 我不知道為什么我不能部署。 請幫我。

嘗試使用平台命令,看看是否可以擺脫錯誤。 您可以嘗試幾件事; --platform linux/amd64 --platform linux/arm64/v8 您也可以嘗試在 docker 鏡像中構建,該鏡像與您正在構建的鏡像類型相同,以避免與平台類型發生沖突。

您的 package.json 中是否有 esbuild 作為 devDependency?

理想情況下,您不應該使用 Docker 來構建 Lambda,而是使用 esbuild。 這將繞過 Docker/M1 問題。

暫無
暫無

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

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