Я пытаюсь использовать встроенную функцию URL панели мониторинга QuickSight в моем проекте ASP.NET MVC.Для тестирования я просто пытаюсь вывести встраиваемый URL в строку.Вот основная часть моего кода:
var awsCredentials = new BasicAWSCredentials("redacted", "redacted");
AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient(awsCredentials);
var tokenServiceRequest = stsClient.GetSessionToken();
var client = new AmazonQuickSightClient(
tokenServiceRequest.Credentials.AccessKeyId,
tokenServiceRequest.Credentials.SecretAccessKey,
tokenServiceRequest.Credentials.SessionToken,
Amazon.RegionEndpoint.APSoutheast2);
try
{
string machineTypeEmbedUrl =
client.GetDashboardEmbedUrlAsync(new GetDashboardEmbedUrlRequest
{
AwsAccountId = "redacted",
DashboardId = "redacted",
IdentityType = IdentityType.IAM,
ResetDisabled = true,
SessionLifetimeInMinutes = 100,
UndoRedoDisabled = false
}).Result.EmbedUrl;
}
catch (Exception ex)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest,ex.Message);
}
Для поддержки необходимых разрешений я настроил пользователя IAM с допустимой ролью STS следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1551593192075",
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::redacted:role/assume-quicksight-role"
}
]
}
Я настроил указанную выше роль со следующими разрешениями и настроил ее политику доверия, чтобы вышеупомянутый пользователь IAM мог ее принять.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "quicksight:RegisterUser",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "quicksight:GetDashboardEmbedUrl",
"Resource": "arn:aws:quicksight:ap-southeast-2:redacted:dashboard/redacted",
"Effect": "Allow"
}
]
}
Так что, насколько я могу судить, это должно работать.Отладка показывает, что я получаю токен сеанса, который передается в запрос embedUrl, однако я получаю следующую ошибку:
InnerException = {"Пользователь: arn: aws: iam ::: user / api-Пользователь dev-quicksight не авторизован для выполнения: quicksight: GetDashboardEmbedUrl на ресурсе: arn: aws: quicksight: ap-southeast-2 :: dashboard / "}
Я не уверен, почему этопроисходит?У меня есть пользователь, который может взять на себя правильную роль, и эта роль имеет необходимые разрешения для данной панели мониторинга.Что мне здесь не хватает?