求教:Aws Apigateway 用于服务每天更新的数据
Seeking advice: Aws Apigateway for serving data that is updated every day
- 我的老板要我建立一个API,returns美元和日元之间的每日货币汇率。
- 对于此信息,我的老板想使用特定网站。本网站每天上午10点公布每日兑换比例,可从某publicAPI.
获取
也许最简单的解决方案是从我的 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'));
- 我的老板要我建立一个API,returns美元和日元之间的每日货币汇率。
- 对于此信息,我的老板想使用特定网站。本网站每天上午10点公布每日兑换比例,可从某publicAPI. 获取
也许最简单的解决方案是从我的 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'));