【发布时间】:2017-10-27 04:16:13
【问题描述】:
在我的 AWS API Gateway API 中,我设置了 2 个环境,“dev”和“prod”。我还有一个名为“dev”和“prod”的 AWS lambda 函数的别名。现在,我想将 API 的“dev”环境指向函数的“dev”别名,并将“prod”环境指向函数的“prod”别名。
我读到了一个暂时找不到的教程,在集成配置中,您可以以<functionName>:<alias>的形式指定功能,所以我将集成设置为指向:SlackCommands:${stageVariables.lambdaAlias} .
我在 API 的 prod 环境中添加了一个名为 lambdaAlias 且值为“prod”的阶段变量,并在 dev 环境中添加了一个具有相同名称的变量,其值为“dev”。但是当我将 APi 切换为使用最新部署时,它引入了从简单的 lambda 函数名称到名称到别名的这种变化,我在调用 API 时在 cloudWatch 中看到了这个错误:
由于配置错误导致执行失败:Lambda 函数的权限无效
这首先发生在 prod 和 dev 上。然后,我发现每个别名都设置了 lambda 触发器。所以我从 $LATEST 版本中删除了我的 API 触发器,并将其添加到“prod”别名:
然后我转到“dev”别名,并想添加相同的触发器,但由于某种原因,现在我无法从下拉列表中选择“dev”环境:
我假设这是因为 awzs 想要将集成设置为专门指向“dev”别名,但集成已经存在。如果我了解 AWS 的文档,我需要做的是设置一个 lambda 策略,授予我的 API 的“开发”环境访问此别名,但控制台只有一个“查看函数策略”部分,似乎没有地方手动设置。
那么我该如何按照我想要的方式进行设置呢?最好通过控制台,因为我不经常使用 AWS,也不想安装 CLI。
【问题讨论】:
标签: amazon-web-services aws-lambda aws-api-gateway