本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中使用环境变量 AWS AppSync
您可以使用环境变量来调整 AWS AppSync 解析器和函数的行为,而无需更新代码。环境变量是存储在您的 API 配置中的成对字符串,可供您的解析器和函数在运行时使用。对于必须引用仅在初始设置期间可用、但需要在运行期间由解析器和函数使用的配置数据,它们特别有用。环境变量在您的代码中公开配置数据,从而减少了对这些值进行硬编码的需求。
注意
为了提高数据库的安全性,我们建议您使用 S ecrets Manager 或 S AWS ystems Manager 参数存储来代替环境变量来存储凭据或敏感信息。要利用此功能,请参阅使用 AWS AppSync HTTP 数据源调用 AWS 服务。
环境变量必须遵循多种行为和规则才能正常运行:
-
JavaScript 解析器/函数和 VTL 模板都支持环境变量。
-
在调用函数之前,不会评估环境变量。
-
环境变量仅支持字符串值。
-
环境变量中任何已定义的值都被视为字符串字面值,不会被扩展。
-
理想情况下,应在函数代码中执行变量求值。
配置环境变量(控制台)
您可以通过创建变量并定义其键值对来为 AWS AppSync GraphQL API 配置环境变量。您的解析器和函数将在运行时使用环境变量的键名来检索该值。要在 AWS AppSync 控制台中设置环境变量,请执行以下操作:
-
登录 AWS Management Console 并打开AppSync控制台
。 -
在 API 页面上,选择一个 GraphQL API 的名称。
-
在您的 API 主页的导航窗格中,选择设置。
-
在环境变量下,选择添加环境变量。
-
选择 Add environment variable (添加环境变量)。
-
输入密钥和值。
-
如有必要,重复步骤 5 和 6 以添加更多键值。如果需要删除密钥值,请选择移除选项和要删除的密钥。
-
选择提交。
提示
创建键和值时必须遵循以下几条规则:
-
密钥必须以字母开头。
-
密钥长度必须至少为两个字符。
-
密钥只能包含字母、数字和下划线字符 (_)。
-
值的长度最多可为 512 个字符。
-
您最多可以在 GraphQL API 中配置 50 个键值对。
配置环境变量(API)
要使用 API 设置环境变量,可以使用PutGraphqlApiEnvironmentVariables
。相应的 CLI 命令是put-graphql-api-environment-variables
。
要使用 API 检索环境变量,可以使用GetGraphqlApiEnvironmentVariables
。相应的 CLI 命令是get-graphql-api-environment-variables
。
该命令必须包含 API ID 和环境变量列表:
aws appsync put-graphql-api-environment-variables \ --api-id "<api-id>" \ --environment-variables '{"key1":"value1","key2":"value2", …}'
以下示例在 API 中设置了两个环境变量,其ID为abcdefghijklmnopqrstuvwxyz
使用put-graphql-api-environment-variables
命令:
aws appsync put-graphql-api-environment-variables \ --api-id "
abcdefghijklmnopqrstuvwxyz
" \ --environment-variables '{"USER_TABLE
":"users_prod
","DEBUG
":"true
"}'
请注意,使用put-graphql-api-environment-variables
命令应用环境变量时,环境变量结构的内容将被覆盖;这意味着现有的环境变量将丢失。要在添加新环境变量时保留现有的环境变量,请在请求中包括所有现有的键值对以及新的键值对。使用上面的示例,如果你想添加"EMPTY":""
,你可以执行以下操作:
aws appsync put-graphql-api-environment-variables \ --api-id "
abcdefghijklmnopqrstuvwxyz
" \ --environment-variables '{"USER_TABLE
":"users_prod
","DEBUG
":"true
", "EMPTY
":""}'
要检索当前配置,请使用以下get-graphql-api-environment-variables
命令:
aws appsync get-graphql-api-environment-variables --api-id "<api-id>"
使用上面的示例,你可以使用以下命令:
aws appsync get-graphql-api-environment-variables --api-id "
abcdefghijklmnopqrstuvwxyz
"
结果将显示环境变量列表及其键值:
{ "environmentVariables": { "USER_TABLE": "users_prod", "DEBUG": "true", "EMPTY": "" } }
配置环境变量 (CFN)
您可以使用下面的模板来创建环境变量:
AWSTemplateFormatVersion: 2010-09-09 Resources: GraphQLApiWithEnvVariables: Type: "AWS::AppSync::GraphQLApi" Properties: Name: "
MyApiWithEnvVars
" AuthenticationType: "AWS_IAM
" EnvironmentVariables: EnvKey1: "non-empty
" EnvKey2: ""
环境变量和合并的 API
在源 API 中定义的环境变量也可在您的合并的 API 中使用。Merged API 中的环境变量是只读的,无法更新。请注意,您的环境变量密钥在所有 Source API 中必须是唯一的,合并才会成功;重复的密钥总是会导致合并失败。
检索环境变量
要检索函数代码中的环境变量,请从解析器和函数中的ctx.env
对象中检索该值。以下是一些实际应用示例。