非常有兴趣在2018年动手使用Serverless。已经计划在多个分散式应用程序项目中实现对AWS Lambda的使用。但是,我还不了解如何防止第三方应用程序(可能甚至是竞争对手)滥用端点而增加使用成本。
我不是说DDoS,也不是说所有流量都来自单个IP,而这可能发生在任何网络上,但是特别是让第三方应用程序的客户直接拨打REST呼叫,这会导致使用成本增加,因为他们的应用程序会在您的“开放”端点上进行备份。
例如:
我希望在AWS Lambda上创建一个终端节点,以向我提供以太坊ETH / USD的当前价格。是什么会阻止另一个(或每个) dapp开发人员使用我的 lambda端点并导致我的帐户产生过多的账单费用?
我正在为我的API尝试无服务器和授权者。我有一个用例,其中有两个不同的应用程序,一个iOS和一个Angular。iOS应用程序使用具有联合身份的开发人员身份验证,因为它使用第三方api进行身份验证,而Angular应用程序使用Cognito用户池进行身份验证。
因此,我可以使用User Pool授权者指定一个函数,并且该函数运行良好,对于我的开发人员身份验证用户,我正在使用AWS_IAM授权器,并且该函数也运行良好。
但是现在,我希望我的开发人员通过身份验证,并且我的用户池用户能够访问相同的api网关端点。那么,如何为一个端点使用两种不同类型的授权者?
任何在这方面有经验的人都可以为我指明正确的方向?
我使用无服务器框架将python函数部署到aws lambda上
我的配置文件serverless.yml如下
frameworkVersion: "=1.27.3"
service: recipes
provider:
name: aws
endpointType: REGIONAL
runtime: python3.6
stage: dev
region: eu-central-1
memorySize: 512
deploymentBucket:
name: dfki-meta
versionFunctions: false
stackTags:
Project: DFKIAPP
# Allows updates to all resources except deleting/replacing EC2 instances
stackPolicy:
- Effect: Allow
Principal: "*"
Action: "Update:*"
Resource: "*"
- Effect: Deny
Principal: "*"
Action:
- Update: Replace
- Update: Delete
Resource: "*"
Condition:
StringEquals:
ResourceType:
- AWS::EC2::Instance
# Access to RDS and S3 Bucket
iamRoleStatements:
- Effect: "Allow"
Action: "s3:ListBucket" …Run Code Online (Sandbox Code Playgroud) 使用无服务器框架(在Mac OS X High Sierra上)时,SLS_DEBUG环境变量设置为启用详细的调试信息
export SLS_DEBUG=*
Run Code Online (Sandbox Code Playgroud)
问题:现在如何禁用它(除了转移到新终端)?export SLS_DEBUG=false没有做到这一点.
macos serverless-framework serverless-architecture serverless aws-serverless
下面的代码会报错,为什么呢?
超出导航超时:超出 60000ms
我使用的是 puppeteer 版本 1.19.0
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setCacheEnabled(false);
try {
const response = await page.goto("https://www.gatsbyjs.com", {
waitUntil: "networkidle0",
timeout: 60000
});
console.log("Status code:", response.status());
} catch (error) {
console.log(error.message);
}
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
其他一些 URL 工作正常,所以我想知道这个特定 URL 是否有什么特别之处?
我无法在 API 网关实例上启用 CORS,如下所示:
我已经尝试了很多事情,例如检查DEFAULT 4XX和DEFAULT 5XX并按照某些帖子中的建议手动输入 Access-Control-Allow-Methods 。
如果我将鼠标悬停在错误上,我会得到:Invalid Response status code specified。
我可以使用浏览器获取数据,但只能通过邮递员完成 POST 操作。我的 ReactJS 网站也不会发布,抛出:
Access to XMLHttpRequest at <ENDPOINT> from origin <S3-REACT-BUCKET> has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我读到我的 React 应用程序应该发送 CORS 标头(尚未实现),但我什至无法在 API 网关中启用 CORS!
cors aws-lambda aws-api-gateway serverless-framework serverless
我尝试将图像上传到 S3 使用serverless和 NodeJS,但上传后出现问题。在本地使用中,serverless-offline一切都像冠军一样工作,但部署后我收到此错误。然后我尝试拦截并检测发生了什么并看到这个结果:
图像主体中出现了一些奇怪的字符,例如<0x0a> 0x01 0x04
我也尝试过使用serverless-apigw-binary,但运气不好。
我正在为我的 AWS 支持的应用程序使用无服务器框架。serverless.yml到目前为止,我一直在编写一个超长文件,其中包含我所有的 lambda 代码、资源、IAM 角色和状态机。我发现管理这个大文件非常困难。我该如何解决这个问题?有什么方法可以将我的serverless.yml文件分割成更小的、可管理的块吗?yml如果我能每人得到一份就太好了lambda。提前致谢
lambda yaml amazon-web-services serverless-framework serverless
目前我正在开发一个使用 Serverless Framework 和 Go 的 API。
我正在使用 Serverless-offline 插件进行本地测试。
该 API 依赖于其他一些存储库(我也维护这些存储库),我使用该go.mod文件导入这些存储库。
然而,我很难完善我的开发人员工作流程。
目前,如果我想对此 API 所依赖的存储库进行更改,我必须更改项目go.mod以包含替换指令以进行测试,但随后我必须手动将其更改回以部署到生产环境。
基本上我正在寻找一种包含替换指令的方法,该指令仅在本地开发期间应用。其他人都是如何处理这个问题的?
额外问题:有什么方法可以在 docker 中离线运行 Serverless 吗?我发现在裸机上运行的无服务器离线会导致不同开发人员环境之间的不一致。
上下文: 我正在尝试通过 Netlify 使用 Apollo Server Lambda 部署 GraphQL。我的处理程序如下:
代码:
exports.handler = server.createHandler({
cors: {
origin: '*'
}
});
Run Code Online (Sandbox Code Playgroud)
我能够在 Netlify 上成功构建和部署 - 但是服务器在启动时抛出错误。Netlify 正在寻找要触发的事件,但我使用的 Apollo Server 处理程序没有提供。我们如何将此处理程序连接到使用事件的处理程序?
错误信息:
{"errorType":"Error","errorMessage":"Unable to determine event source based on event.","trace":["Error: Unable to determine event source based on event."," at getEventSourceNameBasedOnEvent (/var/task/node_modules/@vendia/serverless-express/src/event-sources/utils.js:88:9)"," at proxy (/var/task/node_modules/@vendia/serverless-express/src/configure.js:38:51)"," at handler (/var/task/node_modules/@vendia/serverless-express/src/configure.js:99:12)"," at Runtime.handler (/var/task/node_modules/apollo-server-lambda/dist/ApolloServer.js:51:27)"]}
Run Code Online (Sandbox Code Playgroud) serverless ×10
aws-lambda ×4
lambda ×2
cors ×1
docker ×1
go ×1
go-modules ×1
graphql ×1
image-upload ×1
local ×1
macos ×1
netlify ×1
node.js ×1
puppeteer ×1
yaml ×1