我创建了一个"hello world"lambda函数,然后使用AWS的API网关将其部署到终点:
所有非常基本的设置,但我肯定会将安全性更改为"打开",而我被告知可能需要15分钟才能解析域名,我发现即使在30岁之后,我也得到了以下响应:打开"终点:
{"message":"Missing Authentication Token"}
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗 这不应该与我所做的一样吗?
注意,有人指出这个图像是PUT而不是GET.我试过了两个,两个都回来了错误.只是为了检查我是否通过Postman运行GET和PUT 并获得类似但不完全相同的响应:
然后GET ......
当我在控制台中测试lambda函数时,它成功运行但在API网关中运行它,它给出了我对同一错误的不同表述:
Tue Sep 29 20:57:43 UTC 2015:由于配置错误导致执行失败:Lambda函数的权限无效
但我使用了控制台建议的默认权限.lambda函数本身非常基础,可以在这里找到:代码
现在我的要求是,每当我通过 API 获取数据时,我都必须将其保存到 2-3 个不同的位置(例如,保存到我自己的数据库、某些 BI 服务中,有时还保存到日志记录数据库中)。
我不知道是否可以将单个资源和单个方法绑定到多个 lambda 函数左右。所以,我的替代方法是,因为我已经知道如何通过订阅 SNS 主题来触发多个 lambda 函数,我想也许如果我能以某种方式从 API 网关发布到 SNS 主题,剩下的就很容易了。我目前的想法如下:
但问题是,我无法从 API 网关发布到 SNS 主题。我收到类似的错误TopicArn or TargetArn Reason: no value for required parameter。
我的做法是,创建一个普通的 SNS 主题。然后,创建一个特殊的角色策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StmtXXXXXXXXXXX",
"Effect": "Allow",
"Action": [
"sns:Publish",
"sns:Subscribe",
"sns:Unsubscribe"
],
"Resource": [
"SNS-TOPIC-ARN"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后使用 POST/GET 方法创建 API(我都尝试过)并添加 SNS 主题作为 AWS 服务代理和角色作为执行角色。