我在serverless.yml文件中定义了以下资源.它非常适合为我所有不同的开发阶段创建资源.
resources:
Resources:
uploadBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${self:service}-${self:custom.stage}-uploads
visitsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${self:custom.visitsTable}
AttributeDefinitions:
- AttributeName: userId
AttributeType: S
- AttributeName: visitId
AttributeType: S
KeySchema:
- AttributeName: userId
KeyType: HASH
- AttributeName: visitId
KeyType: RANGE
ProvisionedThroughput:
ReadCapacityUnits: ${self:custom.dynamoDbCapacityUnits.${self:custom.stage}}
WriteCapacityUnits: ${self:custom.dynamoDbCapacityUnits.${self:custom.stage}}
Run Code Online (Sandbox Code Playgroud)
问题是......如果我sls remove在删除数据库时这样做,它还会删除其他所有内容,包括lambda函数及其api网关端点,我需要保留它们,因为我已经为它们明确设置了策略. 如何告诉无服务器我只想删除数据库或S3或其他任何东西而不是其余的?
我试过的事情:
我在AWS上手动删除了,但是如果你这样做并且执行sls部署它不会再次创建数据库!所以不确定最好的方法来做到这一点......
整个Serverless.yml文件
service: mydomain-api
# Use serverless-webpack plugin to transpile ES6/ES7
plugins:
- serverless-webpack
- serverless-domain-manager
custom:
webpackIncludeModules: true
stage: ${opt:stage, self:provider.stage}
visitsTable: "${self:service}-visits-${self:custom.stage}"
domains:
prod: api.mydomain.com
staging: staging-api.mydomain.com
dev: dev-api.mydomain.com …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-lambda aws-api-gateway serverless-framework serverless
我有一个简单的Lambda函数,该函数应该获取事件数据并将消息发送到SNS主题。
运行时为Node.js 8.10。
这是我完整的Lambda代码:
const AWS = require("aws-sdk");
exports.handler = async (event) => {
const sns = new AWS.SNS();
const emailBody =
`
New Message
From: ${event.name}
Contact: ${event.contact}
Message: ${event.message}
`;
const snsMessageParams = {
TopicArn: process.env.snsTopicArn,
Message: emailBody
};
sns.publish(snsMessageParams, (err, data) => {
if(err) {
return err;
} else {
return data;
}
});
};
Run Code Online (Sandbox Code Playgroud)
每次我运行该函数时,响应总是总是为null。没有错误返回,但我从未从SNS的电子邮件中收到消息,因此这里有问题。我只是不知道是什么。
我能够从SNS控制台以及本地计算机上的Node SDK成功地将消息发布到我的SNS主题。这些完美地工作。通过直接从成功的本地代码和SNS控制台复制并粘贴,我已检查env变量中的snsTopicArn是否正确。
我在Lambda函数上具有执行角色,该角色应允许我在帐户中的任何主题上发布到SNS。在配置Lambda角色以测试所有内容时,我选择了默认的“ SNSPublish”选项。但是,作为参考,以下是我的执行角色的政策:
{
"roleName": <MyRoleName>,
"policies": [
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ …Run Code Online (Sandbox Code Playgroud) amazon-web-services node.js amazon-sns aws-lambda serverless
我正在使用 Vercel Serverless 函数来处理上传到 Digital Ocean Spaces 的文件(与 AWS S3 相同的 API)。但是,我在请求处理程序中处理多部分/表单数据时遇到了问题。
在前端,我使用 fetch 来发布带有文件和几个文本字段的 FormData() 对象。当在标题上记录主体和服务器时,我可以按预期看到那里的所有内容,但是当使用 Multer 处理多部分时(我也尝试了其他几个类似的包),我无法检索任何已发布的字段或文件。
另外值得注意的是,当使用 Postman 测试 POST 请求时,我遇到了完全相同的问题,因此我确信问题出在无服务器功能上。
const handleSubmit = async (values) => {
const formData = new FormData();
// build my Form Data from state.
Object.keys(values).forEach(key => {
formData.append(key, values[key]);
});
const response = await fetch("/api/post-submission", {
method: "POST",
headers: {
Accept: "application/json",
},
body: formData,
});
const json = await response.json();
};
Run Code Online (Sandbox Code Playgroud)
const util = require("util");
const multer = …Run Code Online (Sandbox Code Playgroud) 我计划将一组 Azure Functions(~15)推广到生产环境。今天,我们将消耗计划用于开发目的,但该计划的冷启动性质可能会影响整体体验。
我一直在寻找部署应用程序的最佳成本效益计划,发现 Elastic Plan EP1 可以满足我们的需求(例如,无冷启动、快速横向扩展、“...在多个功能应用程序之间共享应用程序服务计划” ...“, ETC)。
问题是我没有找到这个计划的具体收费方式......
在所公开的场景中,我是否需要为每个大约 388.67 雷亚尔支付 388.67 雷亚尔的费用。该计划部署了 15 项职能?或者,该费用是针对计划本身而各职能部门将共享该计划的资源吗?
而且,计划中的所有功能应用程序都会预热?
编辑:
即使没有在官方文档中找到明确的答案,我还是创建了 EP1 计划并部署了功能。
在 serverless.yml 中,在自定义下,我有以下代码(此处带有虚拟值):
customDomain:
domainName: myhost.mydomain.com
basePath: ''
stage: ${self:provider:stage}
createRouteS3Record: true
endpointType: 'edge'
securityPolicy: tls_1_2
certificateArn: 'arn:aws:acm:.................'
hostZoneId: 'P4OCK4S1PSTZK'
Run Code Online (Sandbox Code Playgroud)
当我执行无服务器部署时,一切都很顺利。为我的函数正确生成了 Api。(在我拥有的功能下events: http)
但是,在部署 API 生成的 lambda 后,我收到以下错误:
Error: Error: Unable to setup base domain mappings for myhost.mydomain.com
Run Code Online (Sandbox Code Playgroud)
除了https://forum.serverless.com/t/error-unable-to-setup-base-domain-mappings/11395之外,我没有得到太多信息 不知道如何在无服务器中包含 api 版本(如果这是解决方案) 。
amazon-web-services aws-api-gateway serverless custom-domain aws-serverless
GCP / Cloud Functions 是否有类似于 AWS Lambda Layers 的库概念?这意味着,如果我们想减少代码重复并为 Google Cloud Functions 推出通用库层,我们会怎么做?
我正在尝试实现请求的自定义授权,在将请求发送到微服务之前,我使用 Cloudflare 工作脚本进行授权,但无法通过工作脚本生成 MD5 哈希。
我在网上浏览了很多博客和文章,但未能达到最终结果。非常感谢任何帮助。
下面提到的是我正在尝试做的事情的一瞥
addEventListener('fetch', event => {
importScripts('https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/md5.js');
let test = CryptoJS.MD5('test').toString();
console.log(test);
event.respondWith(handleRequest(event.request))
})
Run Code Online (Sandbox Code Playgroud) 创建新的 CloudFormation 堆栈时,CREATE 失败并出现以下错误:
[RESOURCE] already exists in stack [DELETE_COMPLETE status stack ARN]
Run Code Online (Sandbox Code Playgroud)
我已经验证该资源不再位于 AWS 账户中。
我正在尝试使用无服务器框架将 NestJS 实现为 AWS 无服务器功能。
我正在关注这个官方文档,我的代码与文档中的完全一样。但是,当我启动它时,我收到错误Failure: offline: handler 'handler' in [..] is not a function。
如果我进入我编译的源代码main.js并将其更改exports.handler = handler;为module.exports.handler = handler;它就开始工作。
我还尝试更改代码main.ts以适应这一点,但这没有帮助,因为 webpack 的编译方式不同。
// main.ts
const handler ...;
module.exports.handler = handler;
Run Code Online (Sandbox Code Playgroud)
这是我的main.ts
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { Callback, Context, Handler } from 'aws-lambda';
import serverlessExpress from '@vendia/serverless-express';
import { AppModule } from './app.module';
let server: Handler;
async function …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行命令serverless deploy,但即使我有 python,我也会收到以下错误:
Stack xxxxxx failed to deploy (0s)
Environment: win32, node 14.16.1, framework 3.2.1, plugin 6.0.0, SDK 4.3.1
Docs: docs.serverless.com
Support: forum.serverless.com
Bugs: github.com/serverless/serverless/issues
Error:
Error: `python3 -m pip help install` Exited with code 9009
Run Code Online (Sandbox Code Playgroud)
我的python版本是Python 3.9.6,我的pip版本是pip 21.1.3
论坛里好像没有类似的问题。
serverless ×10
node.js ×3
aws-lambda ×2
amazon-sns ×1
azure ×1
cloudflare ×1
forms ×1
javascript ×1
nestjs ×1
pip ×1
python ×1
typescript ×1
vercel ×1