lambda 函数中 api 键的 aws appsync 环境变量
Posted
技术标签:
【中文标题】lambda 函数中 api 键的 aws appsync 环境变量【英文标题】:aws appsync environment variable for api key in lambda function 【发布时间】:2020-09-02 18:40:21 【问题描述】:我有一个使用 aws amplify 构建其后端的反应网络应用程序。该后端包含一个带有 dynamodb 表作为数据源的 graphql api(由我的 graphql 模式中声明的模型创建)和一个 lambda 函数,该函数从第 3 方 api 获取信息并将结果保存到 dynamodb 表中以使其可用于应用程序。
按照本教程:
https://docs.amplify.aws/cli/function#graphql-from-lambda
我创建了运行“放大添加函数”命令的 lambda 函数。当我被问及 lambda 是否应该有权访问其他放大资源时,我回答“是”,我为 lambda 提供了对我的 graphql api 的写入和更新访问权限,以便我可以从 lambda 执行突变。
当我完成创建过程时,放大通知我在 lambda 中有两个可用的新环境变量:
API_<MY_APP>_GRAPHQLAPIENDPOINTOUTPUT
API_<MY_APP>_GRAPHQLAPIIDOUTPUT
但是,问题是,我还需要 api 密钥才能执行突变(我的 graphql api 有“api key”作为主要 id 方法)。
本教程使用了 process.env.API_KEY。但是他们没有解释这个变量的来源,因为在我的例子中它的值是未定义的。
你知道如何让 api 密钥对我的 lambda 可用吗?
P.S.:硬编码不是一个选项,因为我有几个后端环境。
【问题讨论】:
【参考方案1】:环境变量称为API_<APP_NAME>_GRAPHQLAPIKEYOUTPUT
。仅当您为 GraphQL API 启用 API KEY 身份验证时才会显示。
以下是您为 Lambda 函数添加访问权限以访问 GraphQL API 时打印到控制台的示例:
You can access the following resource attributes as environment variables from your Lambda function
API_AMPLIFYTEST_GRAPHQLAPIENDPOINTOUTPUT
API_AMPLIFYTEST_GRAPHQLAPIIDOUTPUT
API_AMPLIFYTEST_GRAPHQLAPIKEYOUTPUT
此外,Amplify CLI 会在您的 Lambda 函数索引文件顶部生成一个注释,其中包含有用的环境变量列表。
我使用 Amplify CLI 4.36.0 版对此进行了测试。
【讨论】:
以上是关于lambda 函数中 api 键的 aws appsync 环境变量的主要内容,如果未能解决你的问题,请参考以下文章
如何将AWS API网关阶段指向特定的lambda函数别名?
从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数
是否可以使用 AWS API 为 Lambda 函数设置 AWS API Gateway 端点?