我想知道函数中lambda函数的事件源.
我想要做的是使用一些AWS服务(CloudWatch,S3,Step函数等)中的一个lambda函数,并根据服务更改其行为.
上下文对象(函数的参数之一)具有有关lambda函数的信息,但不包含有关事件源的信息.
有没有办法知道这个?
目前我已经设置了一个从api网关端点触发的lambda函数.目标是通过形成响应并首先触发回调来保持响应时间较短,然后继续与sns交互以将工作传递给其他lambda函数.但是,当我对端点运行火焰计时,我注意到了一些奇怪的行为.主要是响应时间似乎不断增加,此外还有502和504响应代码返回但没有500响应代码(如果我理解正确,则表示调用限制,因为429响应在api网关中映射到500).如果我删除异步操作,我会看到合理的响应时间,并且没有错误.为什么这是观察到的行为,当实际触发响应时,在nodejs事件循环中项目排队的顺序是否不起作用,或者lambda只是等待事件队列在发送响应之前清空?如果是后者,则异步交互中的错误会导致502和504响应吗?
我有一个由IoT规则调用的lambda函数,我想从这个lambda函数中知道主题名称.
到目前为止,我只能从event参数中检索消息数据.在没有任何context参数都不是.
我在文档中没有找到任何内容......
它甚至可能吗?
我想使用Amazon Lambda(python)在镶木地板中向S3写一个json对象!
但是我无法将fastparquet lib与boto3连接起来,因为第一个lib有一种方法可以将其写入文件,并且boto3期望将一个对象放入S3存储桶中
有什么建议吗?
快速镶木地板的例子
fastparque.write('test.parquet', df, compression='GZIP', file_scheme='hive')
Run Code Online (Sandbox Code Playgroud)
Boto3示例
client = authenticate_s3()
response = client.put_object(Body=Body, Bucket=Bucket, Key=Key)
Run Code Online (Sandbox Code Playgroud)
主体将对应于实木复合地板内容!并允许写入S3
根据我的理解,AWS Lambda在用户无法访问的EC2实例上运行上载的代码.它创建运行上载代码,管理权限和平衡负载所需的运行时环境.这就是我认为AWS Lambda在幕后所做的事情.
引用维基百科:
与在专用服务器,虚拟机或容器上持续运行的代码相比,不经常使用的无服务器代码可能遭受更大的响应延迟.这是因为,与自动扩展不同,云提供商通常在不使用时完全"旋转"无服务器代码.
这是有道理的,但AWS Lambda确实声称使用自动缩放:
AWS Lambda通过运行代码来响应每个触发器,自动扩展您的应用程序.您的代码并行运行并单独处理每个触发器,并根据工作负载的大小进行精确缩放.
我的问题是 -
我有一个用Java I编写的Lambda函数,我想让它访问S3(putObject).
我不想在我的Lambda函数中使用或存储凭据以访问S3.相反,我想使用IAM角色.
如何在我的Java代码(将由Lambda运行)中编写AWS S3客户端,该代码不需要任何凭据并假设Lambda具有适当的角色?
amazon-s3 amazon-web-services aws-sdk aws-lambda serverless-framework
我正在尝试使用AWS Lambda和API Gateway设置POST lambda函数.这个POST应该可以使用Javascript从现代浏览器调用,所以很自然地,我需要为此启用CORS.不幸的是,无论我做什么,服务器都会在Firefox中返回400错误.我在Gateway的POST功能上启用了CORS,并设置了一个包含所有必需头的OPTIONS功能,但我仍然得到:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://ua1c36to9i.execute-api.ap-southeast-2.amazonaws.com/beta. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
它告诉我,我没有收到Access-Control-Allow-Origin标题,我可以通过查看"网络"标签中的响应来确认:
Content-Length: 181
Content-Type: application/json
Date: Sun, 23 Apr 2017 03:39:10 GMT
Via: 1.1 d0d3075c33572544a6859ec75d2258a1.cloudfront.net (CloudFront)
X-Amz-Cf-Id: EEMUjL78Bf1PSwt4E4QGPgTLXSD8sehiUCgy-XA7TC_1cKv3jxs9Rg==
X-Cache: Error from cloudfront
X-Firefox-Spdy: h2
x-amzn-RequestId: 6943b9bd-27d6-11e7-aaae-f36ce836982f
Run Code Online (Sandbox Code Playgroud)
标题X-Cache: Error from cloudfront似乎告诉我Lambda必须返回某种内部服务器错误,并且CORS仅在Gateway上启用HTTP 200请求.实际上,我的OPTIONS预检返回HTTP 200 OK,这表明CORS似乎启用得很好.但我不知道如何用lambda捕获错误并为CORS启用它,所以我不知道我的内部错误可能是什么.
但令我感到奇怪的是,如果我使用test-cors.org测试我的POST功能,它声称我得到了一个HTTP 200 OK.更奇怪的是,如果我复制它生成的确切代码来发出请求并将其放入我本地计算机上的测试HTML页面,我仍然会获得HTTP 400.这是怎么回事?
我的ajax电话:
var myData = JSON.parse(this.result);
console.log(result);
$.ajax({
type: "POST",
dataType: "json",
url: "https://ua1c36to9i.execute-api.ap-southeast-2.amazonaws.com/beta",
data: myData,
headers: …Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services cors aws-lambda aws-api-gateway
我无法找到我想做的事的例子...
我想在Java中创建Lambda函数。我以为我总是将Javascript用于Lambda函数,但是在这种情况下,我最终将重用已经用Java编写的应用程序逻辑,因此这很有意义。
过去,我写过由Kinesis事件触发的Javascript Lambda函数。超级简单,函数接收事件作为参数,做点什么,瞧。我想用Java做同样的事情。真的很简单:
Kinesis事件->触发函数->(Java)接收Kinesis事件,并对其进行处理
任何人都有这种用例的经验吗?
Lambda函数可以访问自己/tmp目录中的磁盘空间.我的问题是,我在哪里可以直观地查看/tmp目录?
我正在尝试将文件下载到/tmp目录中以读取它们,并将一个新文件写入其中.我实际上希望看到我正在使用的文件/tmp在执行期间正确存储.
谢谢
aws-lambda ×10
amazon-s3 ×2
python ×2
amazon-ec2 ×1
aws-iot ×1
aws-sdk ×1
cors ×1
cron ×1
java ×1
javascript ×1
node.js ×1
parquet ×1
python-2.7 ×1