ume*_*mer 43 amazon-web-services aws-api-gateway
我试图通过AWS API Gateway调用Lambda函数.当我提到身份验证类型为NONE时它工作正常但API变为公共,任何有url的人都可以访问我的API.为了使API调用安全,我使用身份验证类型AWS_IAM并将AmazonAPIGatewayInvokeFullAccess策略附加到我的用户但收到此错误:
{message:"缺少身份验证令牌"}
我不知道我在这里失踪了什么.
Car*_*der 90
我因为一个愚蠢的理由而失去了一些时间:
创建阶段时,显示的链接不包含URL的资源部分:
API URL: https ://1111.execute-api.us-east-1.amazonaws.com/dev
API + RESOURCE URL https://1111.execute-api.us-east-1.amazonaws.com/dev/get-list
在/获取列表不见了
当然,您需要检查方法配置是否如下所示:
小智 26
我认为您直接尝试访问API链接,这不起作用,因为API使用IAM角色进行保护,您必须提供AWS身份验证,即Access密钥和密钥.
使用Postman Chrome扩展程序测试您的API:http: //docs.aws.amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html
vij*_*j34 13
就我而言,我错过了在 api 末尾添加“/”正斜杠。
真是个愚蠢的错误。
https://le9dq5l9.execute-api.eu-west-1.amazonaws.com/v1/putdoctorinfo/
cel*_*epo 12
确保首先单击阶段树中的特定资源,因为这将使用资源的完整路径(而不仅仅是根路径)填充 URL :

对于其他原因,请参阅http://www.awslessons.com/2017/aws-api-gateway-missing-authentication-token/
小智 7
在文档中找到了这个:
如果使用 AWS_IAM 授权,您将使用签名版本 4 协议签署请求。
您还可以为您的 API 生成一个 SDK。
为您选择的平台生成开发工具包后,第 6 步提到如果您使用 AWS 凭证,将对 API 的请求进行签名:
要使用 AWS 凭证初始化 API Gateway 生成的开发工具包,请使用类似于以下的代码。如果您使用 AWS 凭证,则对 API 的所有请求都将被签名。这意味着您必须为每个请求设置适当的 CORS Accept 标头:
var apigClient = apigClientFactory.newClient({
accessKey: 'ACCESS_KEY',
secretKey: 'SECRET_KEY',
});
Run Code Online (Sandbox Code Playgroud)看起来(截至2019年4月),AWS API Gateway出于各种原因引发了此异常-主要是在您遇到API Gateway无法访问的端点时(无论是因为未部署它还是在特定情况下)不支持HTTP方法。
我希望网关发送更合适的错误代码,例如不支持HTTP 405方法或找不到HTTP 404,而不是通用的HTTP 403禁止访问。
小智 6
我尝试了以上所有方法,如果您执行了上述答案中的所有步骤,但没有解决问题,则:
我的原因是,当我创建“方法请求”(请参阅第 2 步如何转到此菜单)时,在“授权”中,我在测试 api 后选择“AWS_IAM”,在 aws 测试选项中,我在“邮递员”中尝试”然后我理解在“方法请求”中,在“授权”中,我应该选择“无”
我将其更改为无,但我认为 AWS,需要再次部署它,正如我所解释的
| 归档时间: |
|
| 查看次数: |
56786 次 |
| 最近记录: |