我有一个使用 AWS Amplify 创建的 AppSync API。该 API 有一个名为
createSpeaker
的突变,它连接到管道解析器。 Amplify 创建了 4 个由解析器触发的 AppSync 函数。
我想修改此解析器以添加一个额外的 appSync 函数,该函数在用户调用
createSpeaker
突变时触发。这个新函数应该处理在单独的数据库中自动创建日志的逻辑。
我陷入了尝试将新的 AppSync 功能添加到解析器管道的步骤,因为我不知道如何将现有管道解析器导入 CDK。
有人知道该怎么做吗?
在新的 CDK 应用程序中,我正在导入 API
/** importing the existing api */
const api = appsync.GraphqlApi.fromGraphqlApiAttributes(this, 'api', {
graphqlApiId: props.appSyncId,
});
/** adding a lambda fn created earlier in this code as data source */
const lambdaDataSource = api.addLambdaDataSource(props.appName + ' - ' + props.appEnv + '-lambdaLoggerDataSource', props.createLoggLambdaFn);
/**
* creating a new Appsync fn with js as runtime, that will invoke the lambda function (which is supposed to handle the logic)
* I want to connect this appSync fn to other resolvers, so that I can log data to DynamoDB
*/
const appSyncFunction = new appsync.AppsyncFunction(this, props.appName + ' - ' + props.appEnv + '-CreateLoggResolverFn', {
api: api,
runtime: appsync.FunctionRuntime.JS_1_0_0,
dataSource: lambdaDataSource,
name: props.appName + ' - ' + props.appEnv + '-CreateLoggResolverFn',
code: appsync.Code.fromAsset('lib/appsync/resolver'),
description: 'This function should be part of other resolvers to logg data to dynamoDB',
});
/** Next step, where I am stuck, is how to import the resolver from the api and add appSyncFunction to it */
我已经通过单击控制台成功创建了此逻辑,但我想在创建新环境时自动执行此操作。
最后我想连接应用程序中的所有突变来创建此日志。日志既是安全功能又是实用功能(可读可查询日志)。目前,这是一个单独的 CDK 应用程序,但我也会将其添加为 Amplify 添加自定义功能的一部分。
与其使用附加函数更新解析器(随后增加所有解析器调用的运行时间),为什么不将 Lambda 解析器添加为对要添加日志记录的模型更新的订阅呢?这应该会触发您的日志记录 Lambda,而不会影响您的实际解析器响应时间或对这些解析器本身进行更改以添加额外的管道功能。