标签: aws-lambda

AWS S3是否有"更新"文件的概念?

我想编写一个Lambda函数,该函数在s3存储桶中添加或修改文件时触发,并处理它们并将它们移动到其他地方,破坏旧版本的文件.

我想知道AWS Lambda是否可以配置为在文件更新时触发?

在查看s3 的Boto3文档之后,看起来s3存储桶中可能发生的唯一事情就是创建和删除.

此外,AWS文档似乎表明无法触发S3的"更新".

我是否正确地认为在S3中没有对文件进行"更新"的真实概念,并且更新实际上是在某些内容被销毁和重新创建时?如果我弄错了,在存储桶中更改S3文件时如何触发Lambda函数?

amazon-s3 amazon-web-services aws-lambda

2
推荐指数
1
解决办法
2102
查看次数

Alexa lambda_handler没有创建事件会话

我有一个问题让我的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)

python alexa aws-lambda alexa-skills-kit

2
推荐指数
1
解决办法
1921
查看次数

AWS Lambda函数如何抛出SubnetIPAddressLimitReachedException?

在我的一个项目中,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)

我在这里和这里搜索过,但是我没有找到任何关于这个例外的明确解释?

amazon-web-services aws-lambda

2
推荐指数
1
解决办法
1028
查看次数

HTTP请求主体未通过AWS API Gateway进入AWS Lambda函数

我有一个用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)

amazon-web-services aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
3124
查看次数

如何在长时间执行时忽略AWS Lambda超时限制300秒?

我在使用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)

amazon-s3 amazon-web-services node.js aws-lambda

2
推荐指数
1
解决办法
6754
查看次数

使用Python boto3设置或修改AWS Lambda环境变量

我想在我的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

2
推荐指数
2
解决办法
4734
查看次数

无法使用C#AWS Lambda函数连接到SQL Server Express

尝试通过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)

sqlclient amazon-rds aws-lambda

2
推荐指数
1
解决办法
1138
查看次数

如何从Java代码调用AWS lambda函数/处理程序

我是AWS lambda的新手我已经使用handler创建了一个lambda函数

example.Orders::orderHandler
Run Code Online (Sandbox Code Playgroud)

这是自定义处理程序,现在我想从我的Java程序中调用它,我该怎么做呢.

java aws-sdk aws-lambda

2
推荐指数
2
解决办法
9673
查看次数

执行不等待AWS Lambda中的promise结果

我正在尝试在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)

当我运行代码时,我得到的是"成功回调",而不是"承诺的成功".我在这里做错了吗?

node.js typescript aws-lambda

2
推荐指数
1
解决办法
3366
查看次数

使用AWS Lambda函数访问存储在AWS s3中的大型文件

我有超过30GB的文件存储在s3中,我想写一个Lambda函数,它将访问该文件,解析它然后运行一些算法.我不确定我的lambda函数是否可以获取该大文件并对其进行处理,因为Lambda函数的Max执行时间为300秒(5分钟).我找到了有关加速更快的AWS S3功能,但它会有所帮助吗?

考虑lambda函数以外的场景可以任何人建议任何其他服务来托管我的代码作为微服务并解析文件吗?

提前致谢

amazon-s3 amazon-web-services microservices aws-lambda

2
推荐指数
1
解决办法
3202
查看次数