我打算使用AWS API Gateway&Lambda通过HTML表单中的POST执行文件上传到S3.但是,如果文件足够大,API网关端点将失败,并显示消息[HTTP内容长度超过10485760字节.].
你碰巧知道增加这个限制的方法吗?
无论API方法隐藏Lambda函数还是简单的mock方法,都是一样的.
我正在尝试执行以下操作:
当我在AWS S3中上传csv文件时,AWS Lambda需要检测它并在AWS Redshift中创建一个表并将数据存储在其中.这个过程没有lambda.但我想自动化它.
所以,我做了一个lambda函数来检测上传op csv文件等等.
现在经过一些错误解决后,我得到一个错误,对我没有任何意义.
Loading function
START RequestId: e8baee71-c36b-11e5-b1cb-87083ac95a25 Version: $LATEST
END RequestId: e8baee71-c36b-11e5-b1cb-87083ac95a25
REPORT RequestId: e8baee71-c36b-11e5-b1cb-87083ac95a25 Duration: 67.04 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 44 MB
Run Code Online (Sandbox Code Playgroud)
这是我的lambda python文件.它位于我的zip文件的根目录中.在zip文件中,他们是另一张地图'psycopg2'
from __future__ import print_function
import json
import urllib
import boto3
import psycopg2
import linecache
print('Loading function')
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
try:
response = s3.get_object(Bucket=bucket, Key=key)
#SEND MAIL WHEN CREATED
#from = "email@gmail.com"
#password …Run Code Online (Sandbox Code Playgroud) 我可以通过api网关集成响应头映射设置单个http响应头.
在那种情况下,我从aws lambda给出响应并使用正则表达式(".http.")来识别响应,最后将它映射到我的标题.
当我尝试一次映射一个标题时,这是有效的.但我想在一个响应中设置Location和Cookie标头.实现这一点,我从我的aws lambda返回了一个json context.fail("http://www.google.com")
Location: integration.response.body.errorMessage
context.fail(JSON.stringify({Location:"http://www.google.com",Cookie: vid="233kwer34343"}))
Run Code Online (Sandbox Code Playgroud)
但我无法通过integration.response.body.errorMessage.Location和映射标题integration.response.body.errorMessage.Cookie
可以通过使用context.succeed()而不是来实现context.fail().但这不是检查正则表达式.我想检查正则表达式对响应进行分类.
从lambda响应体映射多个响应头的最佳方法是什么?
我已经创建了一个简单的Lambda函数来调用一个网页,当我从函数页面测试它时工作正常但是当试图创建一个技能来调用这个函数时我最终得到了一个"无法调用远程端点,或者它返回的回复无效." 错误.
Lambda函数
var http = require('http');
exports.handler = function(event, context) {
console.log('start request to ' + event.url)
http.get(event.url, function(res) {
console.log("Got response: " + res.statusCode);
context.succeed();
}).on('error', function(e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});
console.log('end request to ' + event.url);
}
Run Code Online (Sandbox Code Playgroud)
测试事件代码如下所示:
{
"url": "http://mywebsite.co.uk"
}
Run Code Online (Sandbox Code Playgroud)
我添加了"Alexa Skills Kit"的触发器.
此功能的ARN显示为:
阿尔恩:AWS:波长:美东1:052516835015:功能:CustomFunction
Alexa Skill(开发者门户网站)
然后我创建了一个简单的Intent技能:
{
"intents": [
{
"intent": "CustomFunction"
}
]
}
Run Code Online (Sandbox Code Playgroud)
并创造了一个话语:
CustomFunction execute my custom function
Run Code Online (Sandbox Code Playgroud)
在我的技术配置部分,我选择了"AWS Lambda ARN(亚马逊资源名称)"选项,并将ARN输入到北美的框中.
在测试 - >服务模拟器部分,我添加了"执行我的自定义函数"作为文本,这将更改Lambda请求显示:
{ …Run Code Online (Sandbox Code Playgroud) 尝试更新aws cli中的cloudformation堆栈时:
aws --profile dev cloudformation update-stack --stack-name mystackname --template-body file://events-list.yaml
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
An error occurred (ValidationError) when calling the UpdateStack operation: UpdateStack cannot be used with templates containing Transforms.
Run Code Online (Sandbox Code Playgroud)
因为我使用AWS无服务器转换进行lambda函数部署
Transform: 'AWS::Serverless-2016-10-31'
Run Code Online (Sandbox Code Playgroud)
是否有CLI方式来执行此堆栈更新,或者我将不得不在GUI中处理我的APM.
我正在寻找以编程方式安排lambda函数与另一个lambda函数运行一次的能力.例如,我向myFirstFunctionwith date和timeparameters 发出请求,然后在该日期和时间mySecondFunction执行.这只能用于无状态AWS服务吗?我试图避免一个永远在线的ec2实例.
我发现用于调度lambda函数的大多数结果都与cloudwatch和定期调度的事件有关,而不是ad-hoc事件.
我有API网关设置指向lambda函数,设置为aws_proxy.我可以GET,POST,DELETE就好了,但我正在尝试添加一个PUT而且我得到了Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
XMLHttpRequest无法加载https://api.small.pictures/picture/07e78691-20f9-4a20-8be5-458eaeb73a63.在预检响应中,Access-Control-Allow-Methods不允许使用方法PUT.
我想我的CORS设置正确.这是该路线的招摇用户.
'/picture/{picId}':
options:
summary: CORS support
description: |
Enable CORS by returning correct headers
consumes:
- application/json
produces:
- application/json
tags:
- CORS
x-amazon-apigateway-integration:
type: mock
requestTemplates:
application/json: |
{
"statusCode" : 200
}
responses:
"default":
statusCode: "200"
responseParameters:
method.response.header.Access-Control-Allow-Headers : "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'"
method.response.header.Access-Control-Allow-Methods : "'*'"
method.response.header.Access-Control-Allow-Origin : "'*'"
responseTemplates:
application/json: |
{}
parameters:
- name: picId
in: path
required: true
type: string
responses: …Run Code Online (Sandbox Code Playgroud) 如果我的Lambda Exception在消息中抛出,404则在API Gateway中看到的响应为
{
"errorMessage":"404",
"errorType":"java.lang.Exception",
"stackTrace":[..."]
}
Run Code Online (Sandbox Code Playgroud)
并且我可以在errorMessage上进行匹配以影响HTTP结果。
但是,如果我有效地返回相同的结果,即:
{
"errorMessage":"404",
"errorType":"Error"
}
Run Code Online (Sandbox Code Playgroud)
API网关似乎无法识别出错误,并且始终返回200。
我的精美功能代码有什么办法可以在不引发异常的情况下发出错误信号?
我已将AWS Lambda函数连接到Amazon RDS(MySQL).同时调用Lambda函数100次时,在RDS中打开了近400个连接(如RDS控制台中所示).为什么是这样?
我用以下方法检查了活动连接:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "MYDB";
Run Code Online (Sandbox Code Playgroud)
所有连接都来自Lambda容器.有谁知道Lambda容器如何对同时请求起作用?为什么容器不能重复使用?
当前配置:
var sequelize = new Sequelize('DB','username', 'password' ,{
dialect: 'mysql',
port: port,
host: host,
pool: {
max: 20,
min: 0,
idle: 300000
}
});
即使每个请求打开一个连接,它也应该是100.如何打开400个连接?
我正在使用Sequelize.节点JS 6.9.1
注意:连接仅在Lambda Handler方法之外发生一次
触发警告:初学者问题。
\n\n我使用 Express 和 Mongoose 以及 MongoDB Atlas DB 构建了一个 api。
\n\n大多数时候,它工作正常,但经常出现超时错误。这似乎是非常随机发生的,涉及所有路线等......准确地说,我得到:
\n\n`502 Internal server error via POSTMAN`\nRun Code Online (Sandbox Code Playgroud)\n\n在无服务器仪表板中,我得到:
\n\ninvocation\ntime invoked 1 day ago, mar 08 at 1:38pm\nfatal error Function execution duration going to exceeded configured timeout limit.\ncold start\nduration 48.9 s\nmemory used na\n\nrequest\nendpoint /{proxy+}\nmethod POST\nstatus 502\nmessage Internal server error\nlatency 27 ms\nRun Code Online (Sandbox Code Playgroud)\n\n和跨度和日志:
\n\n\n\n我使用本教程来包装我的 Express 应用程序,以使用无服务器框架进行部署:https://dev.to/adnanrahic/a-crash-course-on-serverless-apis-with-express-and-mongodb-193k
\n\n无服务器.yml 文件:
\n\nservice: serviceName\napp: appName\norg: orgName\n\nprovider:\n name: aws\n runtime: nodejs12.x\n stage: ${env:NODE_ENV}\n region: eu-central-1\n …Run Code Online (Sandbox Code Playgroud) mongoose express aws-lambda aws-api-gateway serverless-framework
aws-lambda ×10
alexa-skill ×1
amazon-s3 ×1
aws-cli ×1
express ×1
http-headers ×1
java ×1
mongoose ×1
mysql ×1
post ×1
python ×1
sequelize.js ×1
size ×1
swagger ×1