我目前正在学习如何使用 API Gateway 公开我的 lambda 函数。我按照此处记录的说明创建了一个 API 来触发我的测试 lambda 函数。这是我所做的总结。
好的,所以我在 API Gateway 控制台中测试了上面的解决方案。它工作正常,我只需要通过创建一个阶段来部署它,我就完成了。
但后来我注意到另一种使用 API Gateway 公开 lambda 的方法。也就是说,通过转到该 lambda 函数并向其添加 API 网关触发器。像下面这样:
它将要求输入我将使用的 API 的 API 名称。这个 API 与我在 API Gateway 控制台下创建的 API 有某种关系。
创建触发器后,测试 lambda 函数现在将有一个如下所示的触发器,以及在其下公开的 https URL。
之后,当我转到 API Gateway 控制台时,我注意到添加了一个新资源。
资源名称是我的测试 lambda 函数的名称,方法是 ANY,我不太明白它的用法。
通过将以上内容与我之前创建的资源进行比较。上面的没有 lambda 函数的 ARN 地址,而这个有
所以,我的问题是,
创建 API 并为它添加与 lambda 的集成以及从 …
我是 node.js 的新手,我正在尝试编写一个 AWS lambda 函数,该函数将 s3 对象的内容流式传输到节点的加密模块中,以创建 s3 对象的 md5 校验和值。不知道为什么,但每次我运行代码时,它都会在 console.log 上生成不同的哈希值。谁能指出我正确的方向来修复我的代码?感谢您的帮助!
var crypto = require('crypto');
var fs = require('fs');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = (event, context, callback) => {
var params = {
Bucket: 'bucket_name',
Key: 'key',
};
var hash = crypto.createHash('md5');
var stream = s3.getObject(params, function(err, data) {
if (err){
console.log(err);
return;
}
}).createReadStream();
stream.on('data', function (data) {
hash.update(data, 'utf-8')
})
stream.on('end', function () {
console.log(hash.digest('hex'))
})
};
Run Code Online (Sandbox Code Playgroud) 所以我有一个由 AWS Cloudfront 从 AWS S3 提供的 SPA。我已经配置了以下错误页面行为:
404: Not Found->/index.html带有 HTTP 代码200
这是在客户端处理路由所必需的。
现在我有一个 Lambda@Edge 函数,它由viewer-responseCloudfront 中的事件触发并设置一些自定义标头,如 HSTS 和 X-Frame。该函数正在被调用并按预期在除实际/index.html. 我倾向于认为这是因为它由 Cloudfront 中的上述错误页面行为处理,因为对 html 的实际 GET 请求由 Cloudfront 中的错误页面配置处理。
解决这个问题的实用方法是什么?
我不确定为什么重定向不会触发 lambda 函数。有什么方法可以实现与 lambda@edge 中的错误页面配置相同的逻辑吗?
我必须在 AWS 流程上设置管理。为简单起见,我有一些客户端向我发送心跳,假设每 5 分钟一次,通过 SOAP 请求发送到部署在 Elastic Beanstalk NodeJS 应用程序上的 SOAP 服务器。每次收到心跳时,我都会通过更新表上的字段将上次收到的心跳存储在 DynamoDB 表中。
我现在需要创建一个进程,如果我在过去 30 分钟内没有收到心跳,则执行某些操作(更新另一个表、调用 Lambda 函数等)。我现在不知道我将拥有多少个客户端,但它们会随着时间的推移而自然增长,并 24/7 全天候连接到我的服务器。
我希望在表中的特定行未更新的 30 分钟后触发 Lambda 函数(或在 SNS 主题上发布消息)之类的事件,但我不知道如何获得最后一部分上班。此事件应该检查文档中的每一行。
你会怎么做?
谢谢!
我有一个只有私有 IP 的 EC2 实例,并且我在 say 上运行的同一个实例上安装了 Apache Kafka 10.0.4.44:9092。现在,我创建了 AWS Lambda 函数,它从给定的 Bucket 读取文档并将文档正文发送到在 EC2 实例上运行的 Apache Kafka。
现在,AWS Lambda 无法访问 EC2 实例服务。
如何授予 Lambda 访问权限以访问 EC2 上的 Apache kafka 服务?
我正在尝试通过 powershell 生成 AWS API 网关访问密钥。但是,每次我尝试使用任何 cmdlet 时都会引发错误:
例如:
Get-AWSCredential -ListProfileDetail
Run Code Online (Sandbox Code Playgroud)
会导致这样的错误:
Get-AWSCredential :术语“Get-AWSCredential”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。在行:1 char:1 + Get-AWSCredential -ListProfileDetail + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Get-AWSCredential:String) [], CommandNotFoundException +fullyQualifiedErrorId :命令未找到异常
当我通过 Get-Command 显示命令列表时,AWS cmdlet 不会弹出。知道可能是什么问题吗?
希望创建一个用于存储客户信息的 DynamoDB 全局表。我遇到的问题是我当前的模式是侦听此表上的更改并使用 Lambda 触发器发送电子邮件更新。
即您的个人资料信息已更改。如果这不是你..
我现在是否需要在每个区域都拥有该 Lambda,数据复制是否意味着它会针对每个区域触发?
我正在尝试通过 AWS Lambda 自动备份我的 EC2 实例。
我使用了这两个脚本,它们工作得很好。 https://gist.github.com/bkozora/724e01903a9ad481d21e https://gist.github.com/bkozora/d4f1cf0e5cf26acdd377
但是我想添加脚本仅删除或备份今天已启动并具有备份标签的实例的功能。
我想我可以通过按 Launch Time = (date of today) 额外过滤实例列表来实现这一点,然后在午夜之前执行过滤列表的函数。
可悲的是,我不知道实现这一目标的语法是什么样的,因为我对此完全陌生。
但只是为了进一步澄清,代码的上述部分应该是这样的:
#....
var date = datetime.datetime.now();
Filters=[
{'Name': 'tag-key', 'Values': ['Backup']},
{'Name': 'instance.launch_time', 'Values': [date]}
]
#....
#(and then the code to make a backup of every instance in the filtered list.
Run Code Online (Sandbox Code Playgroud)
在启动时间过滤列表中找不到任何内容,所以希望有人可以帮助我。
我想使用 AWS Lambda 来抓取网站。爬虫代码使用 Python 编写并使用 Pip 提供的 Scrapy 库。
要运行 lambda 函数,我必须在公共 Amazon Linux AMI 版本 - amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 中创建一个依赖项的 zip(这里仅是 scrapy),根据他们的文档here,添加 lambda 函数和上传它以创建 lambda 函数。
现在,当我调用 lambda 函数时,它给了我以下错误:
cannot import name certificate_transparency: ImportError
Traceback (most recent call last):
File "/var/task/my_lambda_function.py", line 120, in my_lambda_handler
return get_data_from_scrapy(username, password)
File "/var/task/my_lambda_function.py", line 104, in get_data_from_scrapy
process.crawl(MyScrapyFunction)
File "/var/task/scrapy/crawler.py", line 167, in crawl
crawler = self.create_crawler(crawler_or_spidercls)
File "/var/task/scrapy/crawler.py", line 195, in create_crawler
return self._create_crawler(crawler_or_spidercls)
File "/var/task/scrapy/crawler.py", line 200, in _create_crawler …Run Code Online (Sandbox Code Playgroud) In my code I am calling a query from my lambda function
let featured_json_data = JSON.parse(fs.readFileSync('data/jsons/featured.json'))
Run Code Online (Sandbox Code Playgroud)
This works locally because my featured.json is in the directory that I am reading from. However when I deploy with serverless, the zip it generates doesn't have those files, I get a
ENOENT: no such file directory, open...
I tried packaging by adding
package:
include:
- data/jsons/featured.json
Run Code Online (Sandbox Code Playgroud)
but it just doesn't work. The only way I get this to work is manually adding the …
json amazon-web-services node.js aws-lambda serverless-framework
aws-lambda ×10
amazon-ec2 ×2
node.js ×2
python ×2
amazon-s3 ×1
boto3 ×1
cmdlets ×1
json ×1
md5 ×1
pip ×1
powershell ×1
scrapy ×1
triggers ×1