我有一个问题让我的python lambda函数工作.我得到一个无效的键,用于在调用技能时应该创建的事件数组.我得到的错误是:
{
"stackTrace": [
[
"/var/task/lambda_function.py",
163,
"lambda_handler",
"app_id = event['session']['application']['applicationId']"
]
],
"errorType": "KeyError",
"errorMessage": "'session'"
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
def lambda_handler(event, context):
"""Lambda function entrypoint."""
# print("event.session.application.applicationId={}".format(
# event['session']['application']['applicationId']))
# Prevent unwanted access to this Lambda function.
app_id = event['session']['application']['applicationId']
if app_id != "amzn1.ask.skill.yyyyyyyy-xxx":
raise ValueError("Invalid Application ID: {}".format(app_id))
request = event['request']
if event['session']['new']:
on_session_started(
{'requestId': request['requestId']}, event['session'])
func_map = {
"LaunchRequest": on_launch,
"IntentRequest": on_intent,
"SessionEndedRequest": on_session_ended,
}
return func_map[request['type']](event['request'], event['session'])
Run Code Online (Sandbox Code Playgroud) 在我的一个项目中,AWS Lambda函数之一(通常每分钟调用一次)在其函数内调用另一个AWS Lambda函数(使用AWSLambdaClient lambdaClient;).有时lambdaClient调用lambda函数(它不常说每小时4到5次)抛出SubnetIPAddressLimitReachedException:
2016-11-24 14 <---------------------> INFO xyzHandler:395 - Lambda无法为Lambda函数设置VPC访问权限,因为一个或更多配置的子网没有可用的IP地址.(服务:AWSLambda;状态代码:502;错误代码:SubnetIPAddressLimitReachedException ;请求ID:XXXX)
我有一个用Scala编写的非常基本的lambda函数,已部署到AWS Lambda。当我通过AWS Lambda控制台对其进行测试时,该功能可以正常工作。
这是功能,其中添加了一些其他日志记录以用于调试目的。
package com.spacecorpshandbook.ostium.lambda.handler
import java.util
import com.google.gson.Gson
import temp.{ApiGatewayProxyResponse, Appointment, CancelResponse}
/**
* Amazon Lambda handler adapter for the Cancellation application
*/
class CancellationHandler {
def cancelAppointment(appointment: Appointment): ApiGatewayProxyResponse = {
System.out.println("++++ appointmentId is: " + appointment.getAppointmentId)
val apiGatewayProxyResponse = new ApiGatewayProxyResponse
val cancelResponse = new CancelResponse
cancelResponse.setMessage("Cancelled appointment with id " + appointment.getAppointmentId)
val gson: Gson = new Gson
apiGatewayProxyResponse.setBody(gson.toJson(cancelResponse))
apiGatewayProxyResponse.setStatusCode("200")
val headerValues = new util.HashMap[String, String]
headerValues put("Content-Type", "application/json")
apiGatewayProxyResponse.setHeaders(headerValues)
System.out.println("+++++ message before returning: " …Run Code Online (Sandbox Code Playgroud) 我在使用Node.js的AWS Lambda中遇到超时问题,默认超时时间为300秒.
我想zip size>300MB从S3存储桶下载并解压缩后,上传到同一个存储桶中的临时文件夹.
但由于数据繁重,我无法在时间间隔内完成此操作.
我可以使用EBS,但希望得到任何可以使用Lambda函数的最近解决方案.
如果我能得到相关的建议来完成这项任务,那就太棒了.
这是我用Lambda函数编写的东西.
exports.handler = (event, context, callback) => {
console.log('Received event for big file:', JSON.stringify(event, null, 2));
// Get the object from the event and show its content type
const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const params = {
Bucket: bucket,
Key: key,
};
s3.getObject(params, (err, data) => {
if (err) {
console.log('Error', err);
const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist …Run Code Online (Sandbox Code Playgroud) 我想在我的lambda脚本中设置或修改环境变量。我需要为脚本的下一次调用保存一个值。例如,我使用aws lambda控制台创建一个环境变量,并且不设置值。之后,我试试这个:
import boto3
import os
if os.environ['ENV_VAR']:
print(os.environ['ENV_VAR'])
os.environ['ENV_VAR'] = "new value"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我的值将永远不会显示。我尝试了:
os.putenv()
Run Code Online (Sandbox Code Playgroud)
但这是相同的结果。您知道为什么未设置此环境变量吗?
谢谢 !
environment-variables amazon-web-services python-2.7 boto3 aws-lambda
尝试通过AWS Lambda连接到我的SQL Server Express RDS实例时出现以下错误System.Data.SqlClient:
"errorType":"PlatformNotSupportedException",
"errorMessage":"此平台不支持该操作.",
"stackTrace":[
"System.Runtime.InteropServices.OSPlatform.get_Windows()",
"at System.Data.SqlClient" .SNI.SNITCPHandle.d__22.MoveNext()"
]
我使用Amazon.Lambda.Tools构建部署包.运行该函数并从本地连接到数据库工作正常,但在尝试在AWS Lambda上运行时失败.
这是我的project.json:
{
"version": "1.0.0-*",
"description": "AWS lambda Console Application",
"authors": [ "" ],
"packOptions": {
"tags": [],
"projectUrl": "",
"licenseUrl": ""
},
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"Newtonsoft.Json": "9.0.1",
"Amazon.Lambda.Core": "1.0.0*",
"Amazon.Lambda.Serialization.Json": "1.0.1",
"Amazon.Lambda.Tools": {
"type": "build",
"version": "1.0.0-preview1"
},
"Dapper": "1.50.2",
"System.Data.SqlClient": "4.3.0"
},
"tools": {
"Amazon.Lambda.Tools": "1.0.0-preview1"
}, …Run Code Online (Sandbox Code Playgroud) 我是AWS lambda的新手我已经使用handler创建了一个lambda函数
example.Orders::orderHandler
Run Code Online (Sandbox Code Playgroud)
这是自定义处理程序,现在我想从我的Java程序中调用它,我该怎么做呢.
我正在尝试在AWS Lambda中使用promises并遇到一些麻烦.我正在使用typescript/nodejs; 见下面的代码
export function handler(event: any, context: any, callback: Function){
testFunction().then(data => callback(null, "success from promise"));
callback(null, "success");
}
export function testFunction(){
return new Promise((resolve, reject) => {
setTimeout(() => resolve("data"), 5000);
});
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我得到的是"成功回调",而不是"承诺的成功".我在这里做错了吗?
我有超过30GB的文件存储在s3中,我想写一个Lambda函数,它将访问该文件,解析它然后运行一些算法.我不确定我的lambda函数是否可以获取该大文件并对其进行处理,因为Lambda函数的Max执行时间为300秒(5分钟).我找到了有关加速更快的AWS S3功能,但它会有所帮助吗?
考虑lambda函数以外的场景可以任何人建议任何其他服务来托管我的代码作为微服务并解析文件吗?
提前致谢
aws-lambda ×10
amazon-s3 ×3
node.js ×2
alexa ×1
amazon-rds ×1
aws-sdk ×1
boto3 ×1
java ×1
python ×1
python-2.7 ×1
sqlclient ×1
typescript ×1