I am trying to embed a QuickSight console for a registered user in an iframe. Currently, I am stuck on this error
Embedding failed because of invalid URL or authorization code. Both of these must be valid and the authorization code must not be expired for embedding to work.
I have the sample code from AWS but can’t seem to get it running. I have everything for this code
var quicksightClient = new AmazonQuickSightClient(
AccessKey,
SecretKey,
SessionToken,
Amazon.RegionEndpoint.USEast1);
except for the Session Token which needs a string and not
AWS_STS = new AmazonSecurityTokenServiceClient(access_key, secret_key);
token = AWS_STS.GetSessionTokenAsync();
as I tried. What is this session token and is it mandatory for QuickSight embedded? AWS has other QuickSight Client constructors like
public AmazonQuickSightClient(AWSCredentials credentials);
public AmazonQuickSightClient(AWSCredentials credentials, RegionEndpoint region);
public AmazonQuickSightClient(string awsAccessKeyId, string awsSecretAccessKey);
which avoid the session token. When I tried using them I still got the same error.
This is the example class from AWS.
using System;
using Amazon.QuickSight.Model;
using Amazon.QuickSight;
using System.Collections.Generic;
namespace QuickSight
{
public class GenerateDashboardEmbedUrl
{
public string doAll() {
var amazonBase = new AmazonBase();
var quicksightClient = new AmazonQuickSightClient(
amazonBase.getAccessKey(),
amazonBase.getSecretKey(),
// SessionToken,
Amazon.RegionEndpoint.USEast1);
try
{
RegisteredUserQuickSightConsoleEmbeddingConfiguration registeredUserQuickSightConsoleEmbeddingConfiguration
= new RegisteredUserQuickSightConsoleEmbeddingConfiguration
{
InitialPath = "/start"
};
RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
= new RegisteredUserEmbeddingExperienceConfiguration
{
QuickSightConsole = registeredUserQuickSightConsoleEmbeddingConfiguration
};
return
quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
{
AwsAccountId = amazonBase.getAccountId(),
ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
UserArn = MyArn,
//AllowedDomains = null,
SessionLifetimeInMinutes = 100
}).Result.EmbedUrl;
} catch (Exception ex)
{
Console.WriteLine(ex.Message);
return ex.Message;
}
}
}
}
I also gave permissions in IAM for QuickSight with
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "quicksight:*",
"Resource": "*"
}
Thanks!