We have successfully setup a Lambda function to return a URL via generate_embed_url_for_anonymous_user (using python sdk).
However, I cannot seem to find consistent documentation on how to include a parameter in the call to generate this URL. Any examples that are known to work?
You can achieve this using the embedding-sdk and passing parameters through contentOptions. An example of what this looks like is available in our Developer Portal, within the personalize dashboards for your user section.
I navigated to the example but not clear to me where they are setting the parameter to pass through to the dashboard. Here’s the code block from that example:
import json
import boto3
from botocore.exceptions import ClientError
# Create QuickSight and STS clients
qs = boto3.client('quicksight', region_name='us-east-1')
sts = boto3.client('sts')
# Function to generate embedded URL
# accountId: AWS account ID
# dashboardId: Dashboard ID to embed
# userArn: arn of registered user
# openIdToken: Token to assume role with roleArn
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, dashboardId, userArn, openIdToken, roleArn, sessionName):
try:
assumedRole = sts.assume_role(
RoleArn = roleArn,
RoleSessionName = sessionName,
WebIdentityToken = openIdToken
)
except ClientError as e:
return "Error assuming role: " + str(e)
else:
assumedRoleSession = boto3.Session(
aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
aws_session_token = assumedRole['Credentials']['SessionToken'],
)
try:
quickSight = assumedRoleSession.client('quicksight', region_name='us-east-1')
response = quickSight.generate_embed_url_for_registered_user(
"AwsAccountId" = accountId,
"ExperienceConfiguration" = {
"Dashboard" = {
"InitialDashboardId" = dashboardId
}
},
"UserArn" = userArn,
"SessionLifetimeInMinutes" = 600
)
return {
'statusCode': 200,
'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
'body': json.dumps(response),
'isBase64Encoded': bool('false')
}
except ClientError as e:
return "Error generating embedding url: " + str(e)