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_&lt;APP_NAME&gt;_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 端点?

如何在AWS Lambda函数中进行外部api调用

AWS Lambda函数对在EC2中部署的api进行rest api调用

我的带有 lambda 函数的 AWS API Gateway REST API 返回 Null,如何解决这个问题?