Quicksight 仪表板嵌入 url 显示 us-east-1 而不是 eu-west-1

dan*_*eld 5 aws-sdk amazon-quicksight quicksight-embedding assume-role

问题:

我想通过 SDK 以编程方式获取 Quicksight 仪表板 URL(仪表板位于区域:eu-west-1),但是每当我使用以下区域时,我都会收到以下错误:

示例代码:

注意:为了简洁起见,添加了凭据,但这些凭据是从配置文件中加载的。在Java SDK中也尝试过。

const AWS = require('aws-sdk')
const dotenv = require('dotenv').config()

const init = async () => {
  AWS.config.credentials = {accessKeyId: process.env.ACCESS_KEY_ID, secretAccessKey: process.env.SECRET_ACCESS_KEY}
  AWS.config.region = 'us-east-1'
  // AWS.config.region = 'eu-west-1'

  const quicksight = new AWS.QuickSight()

  const embedUrlParams = {
    AwsAccountId: '111122223333',
    DashboardId: '11111111-2222-3333-4444-555555555555',
    IdentityType: 'QUICKSIGHT',
    UserArn: 'arn:aws:quicksight:us-east-1:111122223333:user/default/quicksight-user-1111'
  }
  const embedUrlRes = await quicksight.getDashboardEmbedUrl(embedUrlParams).promise()
  console.log('embedUrlRes', embedUrlRes)
}

init()
Run Code Online (Sandbox Code Playgroud)

命令行界面:

当我通过 CLI 调用完全相同的内容时,例如:

aws quicksight get-dashboard-embed-url --aws-account-id 111122223333 --dashboard-id 11111111-2222-3333-4444-555555555555 --identity-type QUICKSIGHT --user-arn "arn:aws:quicksight:us-east-1:111122223333:user/default/quicksight-user-1111" --profile my-quicksight-profile

我在 eu-west-1 中获得了一个完全有效的嵌入网址,它可以通过浏览器完美嵌入:

https://eu-west-1.quicksight.aws.amazon.com/embed/XXXXXXXX&identityprovider=quicksight&isauthcode=true

所以:

我认为 SDK 在承担角色方面的行为与 CLI 不同,但我已经尝试过这一点,但收效甚微,并且还指向 Quicksight 区域端点。

在我陷入兔子洞之前,很高兴看看是否有人经历过同样的事情以及他们是如何解决的。

谢谢!

小智 3

对于最终到达这里的人,在使用 sdk 生成和嵌入链接时,如果您的仪表板位于不同的区域,则必须将 sdk 的 Quicksight 参数更新到该区域

像下面这样的东西

// Previous code blocks..
quicksight = new AWS.QuickSight({ region: targetRegion })
quicksight.getDashboardEmbedUrl(Params,function (error, embeddedLink){})
Run Code Online (Sandbox Code Playgroud)

此外,您还必须将每个区域的域列入白名单,因为 Quicksight 将每个区域视为单独的实体