[已解决] AWS(和StackOverflow)新手.我正在尝试在AWS上创建一个lambda服务,并通过API网关从外部访问它,无需身份验证或限制.
为了方便起见,我现在将网关设置为模拟.
在API的Get方法上,Authorization设置为None,API Key为not required.
当我尝试这个时,我得到{"message":"Forbidden"}
(如果我将它连接到实际的lambda服务,则相同的消息).
有关如何使其可访问的任何建议?谢谢
在此问题中如何从Amazon API Gateway将查询字符串或路由参数传递给AWS Lambda
演示了如何使用API网关将查询字符串参数映射到AWS lambda.我想做同样的事情,但映射POST值而不是查询字符串.我试过了:
{
"values": "$input.params()"
}
Run Code Online (Sandbox Code Playgroud)
但没有工作,我没有看到实际的表格数据.BTW我发帖使用:
application/x-www-form-urlencoded
我得到了我的lambda函数的响应,所以我知道它正在调用lambda,但我的问题是我没有在任何地方看到POST参数.我可以弄清楚如何映射它们.我把所有我在Lambda一侧转移到这里,它是:
{"values":"{path={}, querystring={}, header={Accept=*/*, Accept-Encoding=gzip, deflate, Accept-Language=en-US,en;q=0.8, Cache-Control=no-cache, CloudFront-Forwarded-Proto=https, CloudFront-Is-Desktop-Viewer=true, CloudFront-Is-Mobile-Viewer=false, CloudFront-Is-SmartTV-Viewer=false, CloudFront-Is-Tablet-Viewer=false, CloudFront-Viewer-Country=US, Content-Type=application/x-www-form-urlencoded, Origin=chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop, Postman-Token=7ba28698-8753-fcb1-1f48-66750ce12ade, Via=1.1 6ba5553fa41dafcdc0e74d152f3a7a75.cloudfront.net (CloudFront), X-Amz-Cf-Id=sc8C7dLcW0BHYopztNYrnddC0hXyFdBzHv0O9aWU1gKhd1D_J2HF3w==, X-Forwarded-For=50.196.93.57, 54.239.140.62, X-Forwarded-Port=443, X-Forwarded-Proto=https}}"}
Run Code Online (Sandbox Code Playgroud) 为了防止未登录的用户通过AWS API网关调用我的lambda函数,我使用的是Custom Authorizer lambda解决方案.
如果请求被授权(200)并且我从被叫lambda得到响应,一切正常,我得到了Access-Control-Allow-Origin标题.
但是,如果该请求没有被授权,我得到一个401一个没有Access-Control-Allow-Origin头,所以阻止我读响应的401个状态和将用户重定向到登录页面.
我相信这是因为自定义自动化机制不知道请求需要使用CORS.有谁知道这实际上是问题吗?你知道任何可能的解决方案吗?
我正在编写一个Node.js lambda函数,我想在其中记录传入请求者的公共IP地址.我一整天都在查看API网关和Lambda文档,但还没有找到解决方案.
lambda event对象是否包含我可以用来提取用户IP的请求元数据?
我创建了一个api密钥并将其添加到我的函数中.我已经部署了api并测试了它但仍然得到:
"message": "Forbidden"
Run Code Online (Sandbox Code Playgroud)
如何将密钥传递给我的JSON请求,因为我一直在使用"x-api-key":"theKey"?
amazon-web-services amazon-cognito aws-lambda aws-api-gateway
这对我来说根本没有意义.创建新的API网关时,您可以指定它是区域优化还是边缘优化.但是,再次,当您为API网关创建自定义域名时,您可以在两者之间进行选择.
最糟糕的是,你可以混合搭配!您可以为边缘优化的API网关提供区域自定义域名,这对我来说绝对毫无意义!
为什么这两个可以分别进行区域/边缘优化?我什么时候想让它们中的每一个都进行区域/边缘优化?
我正在尝试在Cloudflare上设置CNAME以指向Amazon API Gateway端点.CNAME用于引用我的某个子域名时使用.网关反过来指向DigitalOcean上的服务器的IP.我是亚马逊网络服务的新手,如果有人能够概述DNS,亚马逊网关和Cloudfront的正确配置(我认为需要将网关暴露给亚马逊外部的DNS服务器),我将不胜感激.任何帮助将非常感激.
UPDATE
我已经在这方面做了一段时间而没有取得多大进展.有没有人知道这是否是一种可行的方法或者如何做到这一点?
UPDATE2
我以为我需要将CNAME记录添加到cloudFlare并且刚刚进入重定向循环,观察到:
curl -L -i -v https://sub.mydomain.com/
Run Code Online (Sandbox Code Playgroud) 我有一个AWS api代理lamba函数.我目前使用不同的端点和单独的lambda函数:
api.com/getData --> getData
api.com/addData --> addData
api.com/signUp --> signUp
Run Code Online (Sandbox Code Playgroud)
管理所有端点和功能的过程变得很麻烦.当我将一个端点用于一个lambda函数时,是否有任何缺点,该函数根据查询字符串决定做什么?
api.com/exec&func=getData --> exec --> if(params.func === 'getData') { ... }
Run Code Online (Sandbox Code Playgroud) 我找不到关于这两个术语的任何文档。我仔细研究了 AWS 文档和 Google 结果。
突发限制和速率限制有什么区别?当我去更改 API 上的默认路由限制设置时,只有两个数字输入。它没有说明这些数字代表什么单位或时间范围。是每秒 API 调用次数吗?每分钟?
在部署API时,阶段名称将添加到URL.假设阶段名称为"test",则生成的资源URL包括阶段名称.类似的东西:https: //abcabc.execute-api.us-east-1.amazonaws.com/test/my/path
我想删除URL中的阶段名称.我该怎么做?