我有一个正在生成并返回值的Lambda.此值可能会过期.因此我需要在返回之前检查值的有效性.由于生成非常昂贵(取自另一个服务),我想以某种方式存储该值.
存储这两个值(时间戳和相应值)的最佳实践是什么?
什么是最佳做法?什么是性能方面?
amazon-s3 amazon-web-services amazon-dynamodb aws-lambda serverless
我有一个无服务器的 lambda函数,在其中我想触发(调用)一个方法而忘记它
我用这种方式做
// myFunction1
const params = {
FunctionName: "myLambdaPath-myFunction2",
InvocationType: "Event",
Payload: JSON.stringify(body),
};
console.log('invoking lambda function2'); // Able to log this line
lambda.invoke(params, function(err, data) {
if (err) {
console.error(err, err.stack);
} else {
console.log(data);
}
});
// my function2 handler
myFunction2 = (event) => {
console.log('does not come here') // Not able to log this line
}
Run Code Online (Sandbox Code Playgroud)
我注意到,直到并且除非我执行Promise returnin myFunction1,否则它不会触发myFunction2,但是不应该设置lambda InvocationType = "Event"意味着我们希望此操作被触发并忘记并且不关心回调响应吗?
我在这里想念什么吗?
非常感谢您的帮助。
javascript aws-lambda serverless aws-lambda-edge aws-serverless
我正在尝试使用 python 进行一些骨架部署。这是我的 serverless.yaml
我的文件夹结构是
serverless-test
|_lambdas
|____handler.py
|_layers
|____common
|_________somefunction.py
Run Code Online (Sandbox Code Playgroud)
service: serverless-test
frameworkVersion: '2'
provider:
name: aws
runtime: python3.8
lambdaHashingVersion: 20201221
stage: test
region: us-west-2
functions:
hello:
handler: lambdas/handler.hello
Run Code Online (Sandbox Code Playgroud)
这很好用。现在,一旦我添加图层,我就会收到以下错误
No file matches include / exclude patterns
service: serverless-test
frameworkVersion: '2'
provider:
name: aws
runtime: python3.8
lambdaHashingVersion: 20201221
stage: test
region: us-west-2
functions:
hello:
handler: lambdas/handler.hello
layers:
- {Ref: CommonLambdaLayer}
layers:
common:
path: layers/common
name: common-module
description: common set of functions
Run Code Online (Sandbox Code Playgroud)
我还尝试添加包含和排除模式。但这并没有解决我的问题
service: serverless-test
frameworkVersion: '2'
provider:
name: aws …Run Code Online (Sandbox Code Playgroud) 使用 CloudFlare 等 CDN 提供商在边缘托管 SPA 应用程序(即 React),但在常规 VPS/专用服务器上提供 SPA 应用程序使用的 API 后端,是否有任何重要的好处?
更常见的方法似乎是在 CDN 上托管 SPA,并拥有 AWS Lambda 或 Cloudflare Workers 等无服务器后端。我的应用程序和后端目前都在美国数据中心的 DigitalOcean 之类的 VPS 上提供服务,但分析显示我的用户也来自地球的另一半。
是否值得将 React 应用程序从 VPS 服务器迁移到 CDN?
谢谢
所以我在无服务器部署过程中遇到了这个问题:
\nServerlessError: An error occurred: MyDdbTable - Cannot perform more than one GSI creation or deletion in a single update.\nRun Code Online (Sandbox Code Playgroud)\n我的DDB表配置是这样的: \n serverless.yml中的配置
\n AttributeDefinitions:\n - AttributeName: externalId\n AttributeType: S\n - AttributeName: code\n AttributeType: S\n - AttributeName: accountId\n AttributeType: S\n KeySchema:\n - AttributeName: externalId\n KeyType: HASH\n - AttributeName: code\n KeyType: RANGE\n GlobalSecondaryIndexes:\n - IndexName: gsi-account-id\n KeySchema:\n - AttributeName: accountId\n KeyType: HASH\n - AttributeName: code\n KeyType: RANGE\n Projection:\n ProjectionType: ALL\n - IndexName: externalId\n KeySchema:\n - AttributeName: externalId\n KeyType: HASH\n …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-dynamodb serverless aws-serverless
我想尝试 FaunaDB,所以我制作了一个 NodeJS 应用程序。我按照教程制作了一个像 Twitter 这样的应用程序。但是,当我尝试访问数据库时,我收到 403 未经授权的消息。我已经检查了我的安全密钥,但仍然遇到相同的错误。任何帮助,将不胜感激。
.env 文件:
KEY=randomString
PORT=5000
Run Code Online (Sandbox Code Playgroud)
索引.js:
require("dotenv").config();
const app = require("express")();
const faunadb = require("faunadb");
const client = new faunadb.Client({
secret: process.env.KEY,
});
const {
Paginate,
Get,
Select,
Match,
Index,
Create,
Collection,
Lambda,
Var,
Join,
Ref,
} = faunadb.query;
app.listen(5000, () => console.log(`API on http://localhost:${process.env.PORT}`));
app.get("/tweet/:id", async (req, res) => {
try {
const doc = await client.query(
Get(
Ref(
Collection("tweets"),
req.params.id
)
)
)
res.send(doc);
} catch (err) {
res.send(err)
}
}); …Run Code Online (Sandbox Code Playgroud) 我正在为我的API尝试无服务器和授权者。我有一个用例,其中有两个不同的应用程序,一个iOS和一个Angular。iOS应用程序使用具有联合身份的开发人员身份验证,因为它使用第三方api进行身份验证,而Angular应用程序使用Cognito用户池进行身份验证。
因此,我可以使用User Pool授权者指定一个函数,并且该函数运行良好,对于我的开发人员身份验证用户,我正在使用AWS_IAM授权器,并且该函数也运行良好。
但是现在,我希望我的开发人员通过身份验证,并且我的用户池用户能够访问相同的api网关端点。那么,如何为一个端点使用两种不同类型的授权者?
任何在这方面有经验的人都可以为我指明正确的方向?
我有一个React应用程序,试图从AWS访问无服务器。但是我有下面的错误
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.test.com' is therefore not allowed access. The response had HTTP status code 502.
Run Code Online (Sandbox Code Playgroud)
端点网址为https://key.execute-api.ap-southeast-2.amazonaws.com/dev/samplefunction
在serverless.yml上的设置是
login:
handler: login.login
events:
- http:
path: login
method: post
cors:
origin: 'https://admin.differentdomain.com'
headers:
- MY_CUSTOM_HEADER
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
Run Code Online (Sandbox Code Playgroud)
我还有其他地方需要进行CORS配置吗?
是否有能力使用GraalVM在AWS Lambda函数中运行Java?我阅读了许多关于使用GraalVM AOT(提前)编译功能的Java应用程序冷启动的文章,并减少了持续时间,我想尝试在我的AWS Lambda项目中使用它.
如何将 CloudWatch Lambda Insights 添加到无服务器配置?我不想手动执行此操作,因此我希望这是一个选项。
我添加了这样的跟踪:
tracing:
lambda: true
Run Code Online (Sandbox Code Playgroud)
但这只能启用 AWS X-ray 而不是其他选项。
serverless ×10
aws-lambda ×5
amazon-s3 ×1
cdn ×1
cloudflare ×1
faunadb ×1
graalvm ×1
java ×1
javascript ×1
node.js ×1
reactjs ×1