无法将Nodejs和Typescript部署到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。我不知道为什么我不能部署。请帮帮我。

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

理想情况下,您不应该使用Docker来构建Lambda,而应该使用esbuild。这将绕过Docker/M1问题。

尝试使用platform命令,看看是否可以消除错误。你可以尝试几件事;--平台linux/am64--平台linux/arm64/v8你也可以尝试在docker镜像中构建,它与你正在构建的镜像是同一种机器,这样你就可以避免与平台类型的冲突。

最新更新