Cognito 和 API 网关最近区域
Cognito and API Gateway closest region
为了让给定用户使用 Cognito 登录,我需要使用 aws-sdk 向特定区域执行请求,即
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'eu-west-1:id',
Logins: {
'accounts.google.com': idToken
}
});
假设我有 2 个 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 存储桶,其中包含应用的已部署版本和区域信息
- 每个 s3 存储桶一个云端分发
- 使用 Route53 的延迟或地理路由重定向到最近的云端分布。
对于 API 网关,目前无法设置到最近区域的任何类型的自动路由。这是一个普遍要求的功能,它在我们的积压工作中,最终将被实施。现在,您可以将区域选择逻辑构建到客户端应用程序中,或者将不同版本的客户端分发到不同区域。
为了让给定用户使用 Cognito 登录,我需要使用 aws-sdk 向特定区域执行请求,即
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'eu-west-1:id',
Logins: {
'accounts.google.com': idToken
}
});
假设我有 2 个 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 存储桶,其中包含应用的已部署版本和区域信息
- 每个 s3 存储桶一个云端分发
- 使用 Route53 的延迟或地理路由重定向到最近的云端分布。
对于 API 网关,目前无法设置到最近区域的任何类型的自动路由。这是一个普遍要求的功能,它在我们的积压工作中,最终将被实施。现在,您可以将区域选择逻辑构建到客户端应用程序中,或者将不同版本的客户端分发到不同区域。