我尝试将 WarmUp 无服务器插件集成到我的项目中。但是,我相信它不起作用。我在 lambda\xe2\x80\x99s CloudWatch 日志组中没有看到 WarmUp 的调用,并且 lambda 在空闲一段时间后确实需要预热时间。
\n我的配置如下:
\nservice: ${file(./${env:DEPLOY_FILE_NAME}):service}\n\nprovider:\n name: aws\n custom:\n roleName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):roleName}\n profileName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):profileName}\n bundle:\n ignorePackages:\n - pg-native\n warmup:\n enabled: true\n events:\n - schedule: rate(5 minutes)\n prewarm: true\n plugins:\n - pluginHandler\n - serverless-plugin-warmup\n runtime: nodejs12.x\n iamRoleStatements:\n - Effect: 'Allow'\n Action:\n - 'lambda:InvokeFunction'\n Resource:\n - Fn::Join:\n - ':'\n - - arn:aws:lambda\n - Ref: AWS::Region\n - Ref: AWS::AccountId\n - function:${self:service}-${opt:stage, self:provider.stage}-*\n cfLogs: true\n stage: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):stage}\n region: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):region}\n memorySize: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):memorySize}\n timeout: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):timeout}\n keepWarm: false\n useApigateway: …Run Code Online (Sandbox Code Playgroud) 我想知道在无服务器应用程序 (AWS Lambdas) 中使用 Express.js 作为中间件是否是一个好主意?我的担忧来自这样一个事实:在 Express.js 中存在单一功能设置,将来如果有大量请求进来,它将开始限制。我的担忧是否合理,或者我什么都没有动摇。
Cloudflare 自己的全球分布式数据存储 \xe2\x80\x93 Workers KV \xe2\x80\x93可以接受三种“类型”的数据:string、ArrayBuffer和ReadableStream。
虽然前两者的用例足够清楚,但我正在努力弄清楚存储如何ReadableStream有用。我熟悉这个概念:使用它,您可以随着时间的推移“流式传输”不同的值,但是将其放入数据存储中有何意义?典型场景有哪些?
distributed-computing cloudflare serverless cloudflare-workers
我对 AWS 的具体情况相当陌生,所以请原谅我提出一个愚蠢的问题。我一直在寻找答案,但没有找到任何可以回答我的问题的问题。
我正在构建一个项目,并尝试使用此 AWS 教程正确获得权限:https://aws.amazon.com/blogs/apn/partitioning-pooled-multi-tenant-saas-data-with-amazon-动态数据库/
我创建了角色和策略:
const tenantUserRole = new Role(this, "TenantUserRole", {
assumedBy: new ServicePrincipal("lambda.amazonaws.com"),
});
table.grantReadWriteData(tenantUserRole);
Run Code Online (Sandbox Code Playgroud)
然后,在我的 Lambda 中,我尝试:
const role = await stsClient.send(
new AssumeRoleCommand({
Policy: getPolicy("tenant"),
RoleArn: process.env.TENANT_ROLE_ARN,
RoleSessionName: "foo",
})
);
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我在 Lambda 中收到错误:
{ "errorType": "AccessDenied", "errorMessage": "用户:arn:aws:sts::xxx:assumed-role/ProjectStack-createUserServiceRoleB9D8AADE-GRDI6MWXA5MY/ProjectStack-createUserC6ED88E6-K0S95UXTN9MH 无权执行: sts:AssumeRole on资源:arn:aws:iam::xxx:role/ProjectStack-TenantUserRoleB79B8D3A-11N644X7UF0SR","trace":["AccessDenied:用户:arn:aws:sts::xxx:assumed-role/ProjectStack-createUserServiceRoleB9D8AADE-GRDI6MWXA5MY/ProjectStack -createUserC6ED88E6-K0S95UXTN9MH 无权对资源执行:sts:AssumeRole:arn:aws:iam::xxx:role/ProjectStack-TenantUserRoleB79B8D3A-11N644X7UF0SR",
目标是始终根据用户上下文解析权限,那么我应该在 CDK 堆栈中做什么才能使我的所有 Lambda 能够执行必须执行的操作?
amazon-web-services amazon-iam serverless aws-serverless aws-cdk
当我运行时出现构建失败错误sam build
错误:
PythonPipBuilder:ResolveDependencies - {future==0.18.2(sdist), wrapt==1.12.1(sdist)}
我正在学习 CloudFormation 教程,这是我的 AWS CloudFormation 模板:
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: A starter AWS Lambda function.
Resources:
helloworldpython3:
Type: 'AWS::Serverless::Function'
Properties:
Handler: app.lambda_handler
Runtime: python3.6
CodeUri: src/
Description: A starter AWS Lambda function.
MemorySize: 128
Timeout: 3
Environment:
Variables:
TABLE_NAME: !Ref Table
REGION_NAME: !Ref AWS::Region
Events:
HelloWorldSAMAPI:
Type: Api
Properties:
Path: /hello
Method: GET
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref Table
Table:
Type: AWS::Serverless::SimpleTable
Properties:
PrimaryKey:
Name: greeting
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
Run Code Online (Sandbox Code Playgroud)
我可以使用 生成最终模板aws cloudformation package。但是当我尝试使用 …
我错误地在我的电脑上安装了更高版本的无服务器。v2.41.2现在由于v2.35.0一些项目需求,我想将我的无服务器框架版本从 降级到。
我曾尝试做的事情:
我使用 卸载了当前的无服务器框架npm uninstall -g serverless。
然后运行这个命令npm install -g serverless@2.35.0
但是当我运行此命令时,serverless --version它仍然在我的电脑上显示版本 2.41.2。
node.js serverless-framework serverless aws-serverless serverless-offline
我使用 AWS lambda 和 NodeJS 环境构建了应用程序。对于部署目的,我使用无服务器框架。现在,当我尝试使用带有 Nodejs 模板的无服务器框架将我的服务部署到 AWS 时。它已部署到服务器,但未将自定义域名映射到我的服务。之前我映射了它,之后自动映射了我的域名。现在,当我尝试重新部署服务时,它会抛出无法映射客户域的错误。我已附上下面的错误日志。你可以检查一下。您能帮我解决这个问题吗?
以下是我的命令的输出sls deploy -s local。
Serverless: Running "serverless" installed locally (in service node_modules)
Serverless: Load command interactiveCli
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command config:tabcompletion
Serverless: Load command config:tabcompletion:install
Serverless: Load command config:tabcompletion:uninstall
Serverless: Load command create
Serverless: Load command install
Serverless: Load command package
Serverless: Load command deploy
Serverless: Load command deploy:function
Serverless: Load command deploy:list
Serverless: Load command deploy:list:functions
Serverless: Load command invoke …Run Code Online (Sandbox Code Playgroud) node.js serverless-framework serverless-architecture serverless aws-serverless
我正在使用无服务器,并且试图弄清楚如何重写此 serverless.yml 文件,这样我就不会重复每个函数的环境变量。有没有办法全局设置环境变量?
service: test-api
frameworkVersion: ">=1.2.0 <2.0.0"
provider:
name: aws
runtime: nodejs12.x
timeout: 30
stage: dev
memorysize: 2048
region: us-east-2
logRetentionInDays: 21
functions:
doCreate:
handler: functions/do-create.handler
environment:
DB_PORT: ${ssm:/${self:custom.stage}/db_port}
DB_URL: ${ssm:/${self:custom.stage}/db_url}
API_KEY: ${ssm:/${self:custom.stage}/api_key}
ENV: "${self:custom.stage}"
SEARCH_ARN: ${ssm:/${self:custom.stage}/search_arn}
doUpdate:
handler: functions/do-update.handler
environment:
DB_PORT: ${ssm:/${self:custom.stage}/db_port}
DB_URL: ${ssm:/${self:custom.stage}/db_url}
API_KEY: ${ssm:/${self:custom.stage}/api_key}
ENV: "${self:custom.stage}"
SEARCH_ARN: ${ssm:/${self:custom.stage}/search_arn}
Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-lambda serverless-framework serverless
使用 REST API(AWS API Gateway v1),我们可以X-API-Key在请求中使用标头并维护 API 密钥来控制对给定端点的访问。
在 AWS 中,如果我转到 API Gateway 并选择 REST API (v1),则在资源下我会看到:API Key Required在 API 密钥下我可以找到我的密钥。
使用serverless它可以像这样配置:
provider:
apiKeys:
- my-api-key
functions:
hello:
handler: handler.hello
events:
- http:
path: /hello
method: get
private: true
Run Code Online (Sandbox Code Playgroud)
但如果我切换到httpApi然后我得到:
Configuration warning at 'functions.hello.events[0].httpApi': unrecognized property 'private'
Run Code Online (Sandbox Code Playgroud)
此外,在 API Gateway 中,在 HTTP API (v2) 下,任何地方都没有 API 密钥。
当我检查文档时,REST API 下有很大一部分关于 API 密钥:https: //www.serverless.com/framework/docs/providers/aws/events/apigateway 但 API Gateway HTTP API 没有任何关于 API 密钥的内容: https: …
rest amazon-web-services aws-api-gateway serverless aws-http-api
serverless ×10
aws-lambda ×3
node.js ×2
amazon-iam ×1
aws-cdk ×1
aws-http-api ×1
aws-sam ×1
cloudflare ×1
express ×1
rest ×1
sam ×1