【问题标题】:Passing context / authorisation with cloudfront to lambda使用云端将上下文/授权传递给 lambda
【发布时间】:2017-01-19 10:36:38
【问题描述】:

我遇到的情况有点棘手, 我设置了一个 lambda 函数和 API 网关,然后我在 API 网关上设置了 cloudfront,以便更快地处理并实现 AWS 提供的所有端点节点的好处 [在 API 网关服务之上使用 cloudfront 应该需要更多时间,但我正在变得更好结果在它上面有云端层,也许 DNS 解析和 AWS 内部基础设施更好]

我在 lambda 中设置了一个 JAVA 函数,它工作得非常好,但我想在 lambda 函数中使用请求制造者的上下文

public String handleRequest(UserPOJO input, Context context) {
}

如果我提出直接 lambda 函数请求,我可以实现,但是从我的 Android 客户端执行直接 lambda 会花费太多时间,而且我发现公开这些细节也不好,并且使用 cloudfront 我不确定什么标头我应该发送以便 lambda 在 lambda 中使用 context.getIdentity().getIdentityId(); 检测它的认知角色和 ID。

如果有人在这里理解我的问题并为其他人更好地阐述它,我会很高兴,解释这个问题非常复杂。

技术上

  1. 我可以通过认知凭证提供者身份验证直接执行 lambda 函数,但速度很慢

  2. 可以通过认知凭证提供者身份验证的API网关请求,速度优于直接执行lambda

  3. 可以发出云端请求,但卡在我不知道如何在发出请求时使用 cognito 凭据提供程序授权的地方。似乎比 API 网关快。

谢谢。 :)

【问题讨论】:

    标签: amazon-web-services amazon-cloudfront aws-lambda aws-api-gateway


    【解决方案1】:

    如果您想在 Lambda 函数中获取 Cognito 相关信息,并且您正在代理来自 API Gateway 的请求,您可以使用 mapping template 包含您需要的信息,然后您可以从输入对象中获取它。

    1. 我可以通过 cognito 凭证提供者身份验证直接执行 lambda 函数,但速度很慢。

      我建议您在 python 或 javascript 运行时构建您的 Lambda 函数。

    2. 可以通过认知凭证提供者身份验证的API网关请求,速度优于直接lambda执行

      API Gateway 无法提高您的 Lambda 函数的性能,但 API Gateway 可以为您的 Lambda 函数提供 API 管理功能。

    3. 可以发出云端请求,但卡在我不知道如何在发出请求时使用 cognito 凭据提供程序授权的地方。似乎比 API 网关快。

      CloudFront 对您的 Cognito 凭证没有任何作用。它只是将获得的所有内容传递给 API 网关。

    我不确定如何在 API Gateway 前添加 CloudFront 分配可以改善延迟,除非您启用边缘端缓存,它不会每次都调用您的 Lambda 函数。

    【讨论】:

    • CloudFront 并没有通过一切。默认情况下,大多数请求标头、cookie 和查询字符串都会从请求中删除,但可以在适当的情况下通过缓存行为配置重新添加。 CloudFront 可以在不启用缓存的情况下通过连接和传输优化来提高性能(这就是 S3 Transfer Acceleration 的实施方式)......但对于 API Gateway 而言,它已经被 CloudFront 前端(透明地)用于传输目的......所以如果这很有帮助,这可能是由于缓存不应该缓存的响应造成的错觉。
    • 3.我不太确定这种方式如何更快,但我假设他们有自己的内部 DNS 服务器和高性能网络,这使得主机名发现以及数据在云端到 lambda 旅程之间来回传输更快。以及离用户最近的端点的云端提供商。我仍在寻找解决办法,让我们拭目以待。
    猜你喜欢
    • 2019-04-19
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多