问题:
我想通过SDK以编程方式获取一个quicksight仪表板URL,(dashboard in region: 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.quicksight.aws.amazon.com refused to connect错误,例如:https://us-east-1.quicksight.aws.amazon.com/embed/XXXXXX&identityprovider=quicksight&isauthcode=true',。
示例代码:
注意:为简洁而添加的凭据,但是从概要文件加载的。在Java中也尝试过。
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:
当我通过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那样,但是我尝试了很少成功,并且指向quicksight区域端点。
在我进入兔子洞之前,看看是否有人经历过同样的事情,以及他们是如何解决的。
谢谢!
发布于 2021-02-09 08:38:31
对于在这里工作的人,在使用sdk生成和嵌入链接时,如果您的仪表板位于不同的区域,则必须将sdk的quicksight参数更新到该区域
如下所示
// Previous code blocks..
quicksight = new AWS.QuickSight({ region: targetRegion })
quicksight.getDashboardEmbedUrl(Params,function (error, embeddedLink){})还必须在每个区域上白名单域,因为quicksight将每个区域视为独立的实体
https://stackoverflow.com/questions/62222781
复制相似问题