QuickSight Dashboard Image Display Issues with S3 Bucket Integration

I am building QuickSight dashboards (for website embedding) and want to display images from S3 bucket. For this I am using Object URL in HTTPS format. However, the problem is that those images are not getting displayed in the dashboards.

I tried the following:

  1. My S3 bucket is non-public, but I opened all the necessary permissions for QS role to access that bucket. Did not work.
  2. I made S3 bucket as public, but applied the following bucket policy to open the bucket for QS role:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<bucket-name>/*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalARN": "arn:aws:iam::<account-id>:role/aws-quicksight-service-role-manual"
                }
            }
        }
    ]
}

This solution did not work. It seems QuickSight is not using its role for accessing S3 bucket objects.

  1. I made S3 bucket as public without any bucket policies. This works, but we can’t afford this solution - our bucket shouldn’t be visible to the world.

Any suggestions?

Hello Haidar,

Welcome to the QS community!
In order to access the image from S3 in QuickSight you would need a bucket that is public. without S3 being public it wont work. If i am not mistaken QuickSight is not going to be the one accessing the image, it is the end user’s browser.

Nevertheless, you could use other site and where image is stored and can be accessible , make sure its image URL.

fore more info - see Using custom visual content - Amazon QuickSight

Hope this helps.

Cheers,
Deep

2 Likes