对不起,如果这是一个天真的问题,但我看了谷歌的工作人员的一堆谈话,仍然不明白为什么我会使用AE而不是CF?
如果我理解正确的话,这两种服务的整体概念就是构建"微服务架构".
虽然,AE必须包装到自己的服务器中.基本上它在与CF相同的功能之上利用了许多复杂性.那么,我何时应该使用它而不是CF?
google-app-engine google-cloud-platform google-cloud-functions serverless
我正在玩Cloudformation无服务器转换,并试图弄清楚如何以及何时使用AWS::Serverless::Function或AWS::Lambda::Function.出于某种原因,Lambda版本用于AWS中的SAM示例.这非常令人困惑.SAM github.然后还有servlerless框架本身,它实际上是一个nodejs框架.所有这些让我非常困惑.
我在 Next.js 中开发了一个应用程序。对于后端,我使用了 Nextjs 中配置的 api 端点,它们位于pages/api. api 端点经常返回 502(网关超时错误)或 504(我们的部署存在问题)。
经过一些研究,我发现发生这种情况是因为服务器超时。对于我部署了 Nextjs 应用程序的 Vercel,无服务器函数的最长超时时间为 10 秒。
端点之一的代码(https://bulkbays.com/api/fetchSections)是
import db from "../../config/db";
import Section from "../../Models/Section";
db();
export default async function handler(req, res) {
console.log('Entered the serverless function')
Section.find()
.lean()
.then((sections) => {
console.log('Fetched Sections',sections)
return res.json(sections);
})
.catch((err) => {
console.log('Error in fetching sessions',err)
return res.json({
status: false,
msg: "An unexpected problem occured",
err,
});
});
}Run Code Online (Sandbox Code Playgroud)
请有人告诉我怎么会超过10秒。这是人们可以进行的最简单的查询。此外,此查询的结果只是一个长度为 9 的数组,其中对象作为项目,其值包含字符串。它看起来像这样
[
{
"_id":"6092a55478ccc2092c5e41b0",
"images":["http://res.cloudinary.com/bulkbays97/image/upload/v1620223428/eysvsch2hf4ymajizzcn.jpg","http://res.cloudinary.com/bulkbays97/image/upload/v1620223429/qiwa2idfrntiygsfmnx2.jpg","http://res.cloudinary.com/bulkbays97/image/upload/v1620223429/elwhjk7abwcde7ccqcxf.jpg","http://res.cloudinary.com/bulkbays97/image/upload/v1620223428/yuzhe8iehcyj1rmfyr09.jpg"],
"title":"P-Caps", …Run Code Online (Sandbox Code Playgroud)我正在尝试将我的 reactJs 应用程序部署到 Amplify。我的 Github 连接到 Amplify。在部署期间,它在构建步骤中显示以下错误:
2020-01-07T19:35:22.127Z [INFO]: Failed to compile.
2020-01-07T19:35:22.129Z [INFO]: ./src/index.js
Cannot find file './aws-exports' in './src'.
2020-01-07T19:35:22.149Z [WARNING]: error Command failed with exit code 1.
2020-01-07T19:35:22.150Z [INFO]: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
2020-01-07T19:35:22.155Z [ERROR]: !!! Build failed
2020-01-07T19:35:22.239Z [ERROR]: !!! Non-Zero Exit Code detected
2020-01-07T19:35:22.239Z [INFO]: # Starting environment caching...
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为.gitignore忽略了 aws-exports。有人可以告诉我在不提交 aws-exports 的情况下解决此问题的方法是什么?
我试图在我的项目中使用AWS Aurora Serverless for MySQL,但我无法连接到它,尽管我有端点,用户名和密码.
我做了什么:
Ressult:
用户'admin'从主机到服务器的连接尝试失败xxxxx.cluster-abcdefg1234.eu-west-1.rds.amazonaws.com:3306:无法连接到'xxxxx.cluster-abcdefg1234上的MySQL服务器. eu-west-1.rds.amazonaws.com'(60)
我做错了吗?请指教.
****编辑****
我尝试使用容量类型创建另一个Aurora数据库:Provisioned.我可以使用MySql workbench的用户名和密码无缝连接到端点.这意味着端口3306为工作台打开.
我对整个无服务器环境都很陌生,而且我正试图在使用Fargate和Lambda时解决这个问题.
我知道Fargate是ECS的无服务器子集,Lambda也是无服务器的,但是由事件驱动.但我希望能够以简单的方式向其他熟悉容器的人解释这两种范例,而不是那些使用AWS和无服务器的人.
目前,我们有几个物理服务器负责接收文本文件,解析它们,并用结果填充几个数据库表.根据我的理解,我认为这将是一个更适合Lambda的用例,因为解析文本文件的过程是由计划触发的,不会长时间运行,并且在不使用时会减少.
但是,如果我们要移植一个接收API调用的服务器,我们可能会想要使用Fargate,因为我们总是需要至少一个映像实例启动并运行.
就容器而言,如果容器的设计是这样设计的话,可以安全地说:
docker run <some_input>
Run Code Online (Sandbox Code Playgroud)
然后这是Lambda的工作.
但是,如果容器设计为执行以下操作:
docker run --expose 80
Run Code Online (Sandbox Code Playgroud)
然后这是Fargate的工作.
这是一个很好的比喻吗?
我在这里阅读自述文件:https://github.com/awslabs/aws-sam-local
我已经写在python 3.6拉姆达及其类似HelloWorld示例这里:https://github.com/awslabs/aws-sam-local/tree/develop/samples/hello-world/python
template.yml看起来像这样:
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: MyFunction1 API
Resources:
MyFunction1:
Type: AWS::Serverless::Function
Properties:
FunctionName: MyFunction1
Handler: lambda_module.lambda_handler
Runtime: python3.6
CodeUri: lambda.zip
MemorySize: 128
Timeout: 10
Policies:
-AWSLamdbaBasicExecutionRole
Events:
BingLambdaEndpoint:
Type: Api
Properties:
Path: MyFunction1/search
Method: get
Run Code Online (Sandbox Code Playgroud)
我在lambda中有环境变量但在启动时无法连接它们.文档说我可以创建一个environments.json文件并在invoke命令上附加以下内容:使用--env-vars invoke参数
我的环境文件看起来像示例,我收到一个错误:
Unable to find environment variable: api_key
environment.json看起来像这样:
{
"MyFunction1": {
"api_key": "123456789",
"BUCKET_NAME": "testBucket"
}
}
Run Code Online (Sandbox Code Playgroud)
命令我运行是这样的:
sam local invoke MyFunction1 --env-vars environment_variables.json -e event.json
Run Code Online (Sandbox Code Playgroud)
有人能提供额外的见解吗?
我在 Vercel 上部署了一个 Nuxt.js 服务器端网站。我注意到,在某些情况下,我会收到504: GATEWAY_TIMEOUT错误,并显示代码FUNCTION_INVOCATION_TIMEOUT和消息“此无服务器函数已超时”。
为什么我会看到这个错误?
使用无服务器构建节点项目
\n首先我得到错误
\nError:\nError: npm ls -prod -json -depth=1 failed with code 1\n at ChildProcess.<anonymous> (/Users/jrobens/NetBeansProjects/azuron/winpay/winpay- \nRun Code Online (Sandbox Code Playgroud)\n上传者/node_modules/serverless-webpack/lib/utils.js:91:16)
\n要查找更多信息,我输入npm ls -prod -json -depth=1并获取
\nnpm ERR! code ELSPROBLEMS\nnpm ERR! invalid: serverless@3.2.1 \n/my-project/node_modules/serverless\n{\nRun Code Online (Sandbox Code Playgroud)\n看起来 webpack 已经工作了
\nwebpack compiled successfully in 4581 ms\nRun Code Online (Sandbox Code Playgroud)\n关于环境:node-14、typescript、aws
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 @serverless/typescript@3.2.0\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 @types/serverless@3.0.0\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-apigw-binary@0.4.4\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-certificate-creator@1.6.0\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-dynamodb-local@0.2.40\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-http@2.7.0\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-iam-roles-per-function@3.2.0\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-plugin-aws-alerts@1.7.4\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-prune-plugin@2.0.1\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-s3-local@0.6.21\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serverless-webpack@5.6.1\nRun Code Online (Sandbox Code Playgroud)\n 当尝试执行Amazon Web Services(AWS)Lambda函数(多次)时,我们看到了错误:
AWS Lambda TooManyRequestsException: Rate Exceeded
我们如何解决这个问题?
rate-limiting amazon-web-services node.js aws-lambda serverless
serverless ×10
aws-lambda ×4
node.js ×3
vercel ×2
amazon-ecs ×1
aws-amplify ×1
aws-fargate ×1
aws-sam-cli ×1
lambda ×1
mysql ×1
next.js ×1
npm ×1
nuxt.js ×1
reactjs ×1
server ×1