【发布时间】:2020-04-08 04:06:10
【问题描述】:
我想将 Quicksight 仪表板嵌入到应用程序中。我浏览了 AWS quicksight 文档,但没有找到安全签名的仪表板网址。
【问题讨论】:
标签: amazon-web-services amazon-quicksight
我想将 Quicksight 仪表板嵌入到应用程序中。我浏览了 AWS quicksight 文档,但没有找到安全签名的仪表板网址。
【问题讨论】:
标签: amazon-web-services amazon-quicksight
要生成 Quicksight 安全仪表板 URL,请按照以下步骤操作:
第 1 步:创建一个新的身份池。转到https://console.aws.amazon.com/cognito/home?region=us-east-1,点击‘创建新身份池’
给一个合适的名字。 转到 Authentication Provider 部分,选择 Cognito。 提供用户池 ID(您的用户池 ID)和应用程序客户端 ID(转到用户池中的应用程序客户端并复制 id)。 点击“创建池”。然后点击‘允许’在IAM中创建身份池的角色。
第 2 步:将自定义策略分配给身份池角色
使用以下 JSON 创建自定义策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "quicksight:RegisterUser",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "quicksight:GetDashboardEmbedUrl",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "sts:AssumeRole",
"Resource": "*",
"Effect": "Allow"
}
]
}
注意:如果您想将用户限制为只能使用一个仪表板,请将 * 替换为 quicksight:GetDashboardEmbedUrl 中的 dashboard ARN 名称,
然后转到 IAM 中的角色。 选择身份池的 IAM 角色并将自定义策略分配给该角色。
第 3 步:配置生成临时 IAM(STS) 用户
使用用户凭据登录您的应用程序。 为了创建临时 IAM 用户,我们使用 Cognito 凭证。 当用户登录时,Cognito 会生成 3 个令牌 ID - IDToken、AccessToken、RefreshToken。这些令牌将被发送到您的应用服务器。
为了创建临时 IAM 用户,我们使用 Cognito 访问令牌,凭证如下所示。
AWS.config.region = 'us-east-1';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId:"Identity pool ID",
Logins: {
'cognito-idp.us-east-1.amazonaws.com/UserPoolID': AccessToken
}
});
为了生成临时 IAM 凭证,我们使用以下参数调用 sts.assume 角色方法。
var params = {
RoleArn: "Cognito Identity role arn",
RoleSessionName: "Session name"
};
sts.assumeRole(params, function (err, data) {
if (err) console.log( err, err.stack); // an error occurred
else {
console.log(data);
})
您可以为用户添加其他参数,例如持续时间(以秒为单位)。 现在,我们将获取临时用户的AccessKeyId、SecretAccessKey和Session Token。
第 4 步:在 Quicksight 中注册用户
借助第 3 步中使用的相同 Cognito 凭据,我们将使用带有以下参数的 quicksight.registerUser 方法快速注册用户 p>
var params = {
AwsAccountId: “account id”,
Email: 'email',
IdentityType: 'IAM' ,
Namespace: 'default',
UserRole: ADMIN | AUTHOR | READER | RESTRICTED_AUTHOR | RESTRICTED_READER,
IamArn: 'Cognito Identity role arn',
SessionName: 'session name given in the assume role creation',
};
quicksight.registerUser(params, function (err, data1) {
if (err) console.log("err register user”); // an error occurred
else {
// console.log("Register User1”);
}
})
现在用户将在 quicksight 中注册。
第 5 步:使用新凭证更新 AWS 配置。
以下代码显示了如何使用生成的新凭证配置 AWS.config()第 3 步。
AWS.config.update({
accessKeyId: AccessToken,
secretAccessKey: SecretAccessKey ,
sessionToken: SessionToken,
"region": Region
});
第 6 步:为仪表板生成 EmbedURL:
通过使用在步骤 3 中生成的凭据,我们将使用以下参数调用 quicksight.getDashboardEmbedUrl
var params = {
AwsAccountId: "account ID",
DashboardId: "dashboard Id",
IdentityType: "IAM",
ResetDisabled: true,
SessionLifetimeInMinutes: between 15 to 600 minutes,
UndoRedoDisabled: True | False
}
quicksight.getDashboardEmbedUrl(params,
function (err, data) {
if (!err) {
console.log(data);
} else {
console.log(err);
}
});
现在,我们将获取仪表板的嵌入 url。
借助上面生成的 url 从前端调用 QuickSightEmbedding.embedDashboard。 结果将是嵌入在您的应用程序中的带有过滤器控件的仪表板。
【讨论】:
此链接将为您提供您需要的 aws cli https://aws.amazon.com/blogs/big-data/embed-interactive-dashboards-in-your-application-with-amazon-quicksight/
这是第 3 步 aws cli cmd 为您提供嵌入 URL(我能够执行)
aws quicksight get-dashboard-embed-url --aws-account-id (your account ID) --dashboard-id (your dashgboard ID) --identity-type IAM
还有许多其他依赖项来启用每个 aws 文件的嵌入式仪表板。我无法成功地做到这一点。 GL,如果你做到了,请告诉我!
【讨论】:
【讨论】: