【发布时间】:2023-03-22 14:09:01
【问题描述】:
当我在 AWS API Gateway API 中创建资源/方法时,我可以创建以下方法之一:DELETE、GET、HEAD、OPTIONS、PATCH 或 POST。
如果我选择GET,那么 API Gateway 不会通过身份验证详细信息;但对于POST 确实如此。
对于GET,我应该将认知凭据添加到我的GET 的URL 中吗?还是永远不要使用 GET 并使用 POST 进行所有经过身份验证的调用?
我在 API Gateway/Lambda 中的设置:
我创建了一个资源和两个方法:GET 和 POST
在授权设置下,我将授权设置为AWS_AIM
对于这个例子,没有Request Model
在方法执行下,我将集成类型设置为 Lambda 函数并检查Invoke with caller credentials(我还设置了 Lambda 区域和 Lambda 函数)
我没有选中Credentials cache。
对于正文映射模板,我将 Content-Type 设置为 `application/json' 并将映射模板设置为
{ "identity" : "$input.params('identity')"}
在我的 Python Lambda 函数中:
def lambda_handler(event, context):
print context.identity
print context.identity.cognito_identity_id
return True
运行 Python 函数:
对于GET,context.identity 为 None
因为POST context.identity 有一个值,context.identity.cognito_identity_id 有正确的值。
【问题讨论】:
-
所有方法都支持身份验证。您确定在测试之前为该方法启用了身份验证吗?
标签: aws-api-gateway