为了让给定的用户使用Cognito登录,使用aws-sdk我需要执行对特定区域的请求,即
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'eu-west-1:id',
Logins: {
'accounts.google.com': idToken
}
});
假设我有两个Cognito池:一个在美国,一个在欧盟。我想做的是将此请求发送到最近的Cognito区域。
在向API网关发送请求时,我有同样的问题。已签名的签名必须使用区域创建。(我实际上是使用API自动生成的SDK为我做这件事)
const api = apigClientFactory.newClient({
accessKey: AWS.config.credentials.accessKeyId,
secretKey: AWS.config.credentials.secretAccessKey,
sessionToken: AWS.config.credentials.sessionToken,
region: AWS.config.region
});
看起来AWS强迫我知道我想在前端连接的区域。因为前端只是CloudFront的一个分布,那么实现这一切的最佳方式是什么呢?
我想到的唯一解决方案是:
- 每个区域有一个s3 bucket,包含应用的已部署版本和区域信息
- 每个s3桶一个云前端分布
- 重定向到最近的云前分布使用延迟或地理路由与Route53。
对于API网关,目前不可能设置到最近区域的任何类型的自动路由。这是一个经常被请求的特性,并且它在我们的待办事项列表中,最终将被实现。现在,您可以将区域选择逻辑构建到客户机应用程序中,或者将客户机的不同版本分发到不同的区域。