如何在 amplify gen 2 中从数据库模型读取的数据中应用缓存?

问题描述 投票:0回答:1

是否可以像 dynamodb dax 一样获取缓存,或者仅使用 amplify gen 2 来使用一些 redis,或者可能需要使用自定义资源?我主要关注的是阅读 dynamodb 表的成本。如果有人有这方面的经验,请注意。谢谢!

amazon-web-services caching amazon-dynamodb aws-amplify amplifyjs
1个回答
0
投票

可能吗?是的。但请注意您这样做的原因。让我解释一下:

Amplify(第 1 代和第 2 代)使用 App Sync 创建 GraphQL API,并且该服务具有缓存功能。请参阅AppSync 缓存文档。在 Amplify Gen2 上,您可以通过在您的

backend.ts

上添加类似的内容(尚未测试此代码,但应该可以工作)来做到这一点
import { defineBackend } from '@aws-amplify/backend';
import { auth } from './auth/resource';
import { data } from './data/resource';
import { aws_appsync as appsync } from 'aws-cdk-lib';

const backend = defineBackend({
  auth,
  data
});

const appSyncApi = backend.data.resources.graphqlApi;

const cfnApiCache = new appsync.CfnApiCache(appSyncApi.stack, 'MyCfnApiCache', {
  apiCachingBehavior: 'FULL_REQUEST_CACHING',
  apiId: appSyncApi.apiId,
  ttl: 300,
  type: 'SMALL',

  // the properties below are optional
  atRestEncryptionEnabled: false,
  healthMetricsConfig: 'DISABLED',
  transitEncryptionEnabled: false,
});

这将为您的 API 调用添加缓存,并根据 TTL,为您的后端保存一些请求。

对于小型应用程序来说,Dynamo 已经快速且便宜,根据您的预期吞吐量,不添加缓存并保持按需定价模型可能会更实惠。如果您遇到性能问题,请首先检查您的数据建模并确保避免数据扫描。

旁注:考虑仅将 DAX 用于超低延迟应用程序(< 1ms) queries. For most applications, DAX is an overkill.

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.