lambda 函数中 api 密钥的 aws appsync 环境变量

Jav*_*dez 5 amazon-web-services aws-lambda graphql aws-amplify

我有一个 React Web 应用程序,它使用 aws amplify 来构建其后端。该后端由一个 graphql api 和一个 dynamodb 表作为数据源(由我的 graphql 模式中声明的模型创建)和一个 lambda 函数组成,该函数从第 3 方 api 获取信息并将结果保存到 dynamodb 表中以使其可用于该应用程序。

按照本教程操作:

https://docs.amplify.aws/cli/function#graphql-from-lambda

我创建了运行“amplify add function”命令的 lambda 函数。当我被问及 lambda 是否应该有权访问其他放大资源时,我回答“是”,并且我为 lambda 提供了对我的 graphql api 的写入和更新访问权限,以便我可以从 lambda 执行突变。

当我完成创建过程时,amplify 通知我 lambda 中有两个可用的新环境变量:

API_<MY_APP>_GRAPHQLAPIENDPOINTOUTPUT
API_<MY_APP>_GRAPHQLAPIIDOUTPUT
Run Code Online (Sandbox Code Playgroud)

然而问题是,我还需要 api 密钥才能执行突变(我的 graphql api 将“api 密钥”作为主要 id 方法)。

本教程使用 process.env.API_KEY。然而他们没有解释这个变量来自哪里,因为在我的例子中它的值是未定义的。

您知道如何使 api 密钥可供我的 lambda 使用吗?

PS:硬编码不是一个选择,因为我有几个后端环境。

Pav*_*vel 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
Run Code Online (Sandbox Code Playgroud)

此外,Amplify CLI 会在 Lambda 函数索引文件顶部生成一条注释,其中包含有用的环境变量列表。

我使用 Amplify CLI 版本 4.36.0 对此进行了测试。