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 一起分发的前端,所以执行所有这些操作的最佳方法是什么?

我想出的唯一解决办法是:

对于 API 网关,目前无法设置到最近区域的任何类型的自动路由。这是一个普遍要求的功能,它在我们的积压工作中,最终将被实施。现在,您可以将区域选择逻辑构建到客户端应用程序中,或者将不同版本的客户端分发到不同区域。