【问题标题】:Cannot add multiple API Endpoints of the same Method in AWS Lambda无法在 AWS Lambda 中添加同一方法的多个 API 端点
【发布时间】:2016-09-28 21:01:13
【问题描述】:

我有一个带有 DEV 和 PROD 别名的 Lambda,我正在尝试在 Lambda 上设置 API 端点以指向我的 API 网关的 DEV 和 PROD 阶段的 PUT。我可以成功添加和测试 DEV/PUT 端点,但是当我尝试在 PROD lambda 上添加端点并选择 PROD API 阶段时,它不会让我为端点选择 PUT 方法?我认为这是因为我已经分配了 DEV/PUT?我可以理解不要让一种方法指向多个 lambda,但这是针对两个不同的阶段?我做错了吗?

【问题讨论】:

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


    【解决方案1】:

    好的,所以看起来这可能只是一个 UI 限制。我能够使用 CLI 为我的 API 端点“aws lambda add-permission”,每个 lambda 函数:允许它们调用 lambda 函数的别名组合。

    例如。

    aws lambda add-permission --function-name arn:aws:lambda:<REGION>:<ID>:function:<LAMBDA_NAME>:${stageVariables.lambdaAlias} --source-arn arn:aws:execute-api:<REGION>:<ID>:<API_ID>/*/GET/* --principal apigateway.amazonaws.com --statement-id <STATEMENT_ID> --action lambda:InvokeFunction
    

    当我在 API 网关方法上编辑集成请求并插入 ${stageVariables.lambdaAlias} 时,UI 建议了这一点。

    【讨论】:

    • 是的,这只是一个 UI 问题。您发布的 CLI 命令很好,除了我认为源 arn 可能有一个额外的 * 字符?不是 --source-arn arn:aws:execute-api:::/*/GET/* 表示任何阶段 API_ID 中的任何 GET 方法。最后一段是资源路径,因此除非某些部分是静态的,否则不需要多级通配符。
    • 就我而言,这反映了资源的深度,例如。 /entity/{var}/{var} 作为我的有效 API 端点,它实际上生成了“/GET/entity/*/”。不过,总的来说,您是正确的,很高兴知道(仍在学习这些东西)。我会编辑答案。
    猜你喜欢
    • 2017-05-16
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多