求教:Aws Apigateway 用于服务每天更新的数据

Seeking advice: Aws Apigateway for serving data that is updated every day

也许最简单的解决方案是从我的 API 调用此 public API。问题是这个 public API 每天有 1000 次调用的限制,但我们希望我们的客户更多地调用我的 API 方式。

我可以运行一个cronjob来获取每天上午10点的最新信息,但我不知道如何将这些信息传输到我在AWS环境中的API。

数据库显然有点矫枉过正,因为这个数据库只需要存储一个日常信息条目。

有人可以针对此用例提出更好的解决方案吗?

有很多方法可以实现这一点。通过 API 调用获取数据并使用以下任何一种方式存储它:

  • 以任何格式(txt、csv、json、yml 等)将数据存储在 S3 中。通过您的 API 调用

    从这个 S3 存储桶中读取数据
  • 如果您打算使用 API 网关,那么您可以缓存 API 调用。使用此缓存来提供数据,而不必将其保存在其他任何地方。很确定您不会在实施此缓存后达到 1k 限制。 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html

  • DynamoDB 也是存储此类数据的好地方。如果数据不是很大而且性能超强,它也会很便宜

  • Elastic Cache (Redis) 是另一个存储一天数据的地方

  • S3 前面的 CloudFront 也是处理不太动态数据的好方法。缓存一天的数据,直接从 CloudFront

    读取
  • SSM 参数存储也是一个选项,但 SSM 并不意味着是持久性数据库

存储到 S3 应该很容易。

let xr = 5.2838498;
await s3
    .putObject({
    Bucket: 'mybucket',
    Key: `mydataobject`,
    Body: xr.toString(),
    ContentType: 'text/plain;charset=utf-8'
    })
    .promise();

xr = Number((await s3.getObject({
    Bucket: 'mybucket',
    Key: 'mydataobject',
}).promise()).Body?.toString('utf-8'));