Чтобы создать URL-адрес защищенной панели мониторинга Quicksight, выполните следующие действия:
Шаг 1: Создайте новый пул удостоверений.Перейдите к https://console.aws.amazon.com/cognito/home?region=us-east-1, нажмите «Создать новый пул удостоверений»
Дайте соответствующее имя.Перейдите в раздел Поставщик аутентификации s, выберите Cognito. Дайте идентификатор пула пользователей (ваш идентификатор пула пользователей) и идентификатор клиента приложения (перейдите в раздел Клиенты приложений в пуле пользователей и скопируйте идентификатор).Нажмите «Создать пул» .Затем нажмите 'Разрешить' , чтобы создать роли пула удостоверений в 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"
}
]
}
Примечание: Если вы хотите ограничить пользователя только одной панелью мониторинга, замените * на панель инструментов ARN имя в quicksight: GetDashboardEmbedUrl ,
затем перейдите к ролям в IAM.выберите роль IAM пула удостоверений и назначьте для нее настраиваемую политику.
Шаг 3: Конфигурация для создания временного пользователя IAM (STS)
Войдите в свойприложение с учетными данными пользователя.Для создания временного пользователя IAM мы используем учетные данные Cognito.Когда пользователь входит в систему, Cognito генерирует 3 идентификатора токена - IDToken, AccessToken, RefreshToken .Эти токены будут отправлены на ваш сервер приложений.
Для создания временного пользователя IAM мы используем токен Cognito Access, а учетные данные будут выглядеть следующим образом.
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
С помощью тех же учетных данных Cognito, которые использовались в Шаг 3 , мы зарегистрируем пользователя в режиме быстрой видимости, используя метод quicksight.registerUser со следующими параметрами
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-адрес для встраивания для панели мониторинга.
Вызовите QuickSightEmbedding.embedПанель инструментов от внешнего интерфейса с помощью сгенерированного выше URL.Результатом будет встроенная в ваше приложение панель управления фильтрами.