gpt4 book ai didi

node.js - 在 AWS Lambda NodeJS 中创建和访问通用代码

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:48 25 4
gpt4 key购买 nike

我应该使用什么目录结构:

  1. 我想将 NodeJS 代码打包为一个层?
  2. 使用通用代码的 NodeJS 应用程序?我想使用 SAM 或 cloudformation 模板来构建图层以及另一个用于构建使用它的 lambda 的模板。我希望该层可供多个 Lambda 使用,因此我将其单独打包。

我仍然不清楚公共(public)代码应该使用的确切目录结构。另外,如果我的通用代码又依赖于其 package.json 文件中的内容,我该如何构建内容?示例:我想构建通用代码以从 AWS 参数存储中读取。然后我需要依赖我的公共(public)代码的package.json中的aws-param-store,即:

 "dependencies": {
"aws-param-store": "^3.0.0",

假设我的公共(public)代码位于某个名为 my-common-code 的包中。

一旦我正确构建和部署了该层,我知道我可以在 SAM 模板中引用 Lambda 的 ARN 名称(正确的方法吗?)?我的调用 Lambda 如何引用以下方面的公共(public)代码:1.目录结构?2. 调用 Lambda 的 package.json 文件中包含哪些内容来引用 my-common-code 的名称和版本?我假设是这样的?

 "dependencies": {
"my-common-code": "^1.0.0",

在我的 Lambda 中,我希望能够执行以下操作:

let commonModule = require('my-common-code');
commonModule.doSomething();

我尝试了各种结构和配置,但遇到错误,要么找不到 my-common-code,要么找不到它所依赖的东西,例如aws-param-store。

最佳答案

要创建图层,您首先需要将常用代码放入具有以下文件夹结构的 zip 文件中:

nodejs/node_modules/my-common-code/my-common-code.js

引用:Including Library Dependencies in a Layer

即如果您要打开 zip 文件,您会看到如下内容:

my-common-code.zip
└ nodejs
└ node_modules
└ my-common-code
└ package.json
└ my-common-code.js
└ more-common-code.js
└ ...

要使用 CloudFormation 从该 zip 文件创建图层,您需要将其存储在某个位置的 s3 存储桶中。

CloudFormation 模板的相关部分可能如下所示:

 "Resources": {
"MyCommonCode": {
"Type": "AWS::Lambda::LayerVersion",
"Properties": {
"CompatibleRuntimes": [
"nodejs8.10"
],
"Content": {
"S3Bucket": "my-common-code-bucket",
"S3Key": "my-common-code.zip"
},
"Description": "My common code",
}
}
}

这是根据 this 示例修改的。

使用该层的 lambda 的 CloudFormation 可能如下所示:

"MyFunction": {
"Type": "AWS::Lambda::Function",
"Properties": {
"Handler": "index.handler",
"Layers":
- "arn:aws:lambda:us-east-2:012345678901:layer:MyCommonCode"
"Role": "arn:aws:iam::012345678901:role/LambdaRole",
"Code": {
"S3Bucket": "my-lambda-functions",
"S3Key": "myLambda.zip"
},
"Runtime": "nodejs8.10"
}
}

完成所有这些之后,您的代码:

let commonModule = require('my-common-code');
commonModule.doSomething();

应该可以

关于node.js - 在 AWS Lambda NodeJS 中创建和访问通用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57358941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com