gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:35:34 25 4
gpt4 key购买 nike

问题:

我想通过 SDK 以编程方式获取 quicksight 仪表板 URL(区域中的仪表板:eu-west-1)但是,每当我使用以下区域时,当我使用以下区域时,都会出现以下错误:

  • eu-west-1 :错误:Operation is being called from endpoint eu-west-1, but your identity region is us-east-1. Please use the us-east-1 endpoint.
  • us-east-1 :没有错误,但嵌入的 url 是 us-east-1 并导致 us-east-1.quicksight.aws.amazon.com refused to connect浏览器中的错误,例如:https://us-east-1.quicksight.aws.amazon.com/embed/XXXXXX&identityprovider=quicksight&isauthcode=true ',

  • 示例代码:

    注意:为简洁起见添加了凭据,但从配置文件加载。也曾在 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()

    命令行界面:

    当我通过 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 中得到了一个完全有效的嵌入 url,它通过浏览器完美嵌入:
    https://eu-west-1.quicksight.aws.amazon.com/embed/XXXXXXXX&identityprovider=quicksight&isauthcode=true
    所以:

    我想象 SDK 的行为不像 CLI 在承担角色方面那样,但我尝试过这一点,但收效甚微,并指出了快速观察区域端点。

    在我进入兔子洞之前,最好看看是否有人遇到过同样的情况以及他们是如何解决的。

    谢谢!

    最佳答案

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

    // Previous code blocks..
    quicksight = new AWS.QuickSight({ region: targetRegion })
    quicksight.getDashboardEmbedUrl(Params,function (error, embeddedLink){})
    此外,您必须将每个区域的域列入白名单,因为 quicksight 将每个区域视为单独的实体

    关于aws-sdk - Quicksight 仪表板嵌入 url 显示 us-east-1 而不是 eu-west-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62222781/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com