How to deploy using start-asset-bundle-import-job to several namespaces?

I am trying out asset-as-bundle (AAB) deployment. I have several namespaces and the dashboards for those namespaces are prefixed with the namespace-hash plus the dashboard-id. So the exported json will contain only the dashboard-id and it will be deployed to several namespaces where the dashboard-id will have the namespace_hash+dashboard_id.

How can I do that with the start-asset-bundle-import-job. I see the override-parameters args with the PrefixForAllResources but that looks like will apply to all resources.

@sagmukhe Do you have any thoughts on this? Thanks!

Hello @alltej, there is pretty good documentation on utilizing the StartAssetBundleImportJob and well as the CreateNamespace and ListNameSpaces functionalities for the AAB deployment. If there is a specific part of the process you are stuck on, I might be able to help a bit further.

1 Like

Here is the developer guide for the asset bundle APIs. Please have a look.

1 Like

Our source and target accounts have these asset-ids naming convention:

From: source-account assets/dashboard:
dashboard1
dashboard2

dashboard12

And we need to deploy to several namespaces:

1. namespace1:

namespace1-dashboard1
namespace1-dashboard2

namespace1-dashboard12

2. namespace2:

namespace2-dashboard1
namespace2-dashboard2

namespace2-dashboard12


200. namespace200:

namespace200-dashboard1
namespace200-dashboard2

namespace200-dashboard12

So how do I deploy these with asset-as-bundle(AAB) with the available AAB api?

@DylanM Did you get a chance to look at this?

1 Like

Hello @alltej, I apologize for the delay in the response. This required a bit of digging on my end but I found some awesome documentation related to namespaces. From what I can tell, bear with me here, it seems like the best solution will be to create user groups that will be linked to the users in a namespace. That group will contain the dashboard permissions and then that group can get set to the namespace.

This is the command I was seeing that might be the most relevant:

***Scenario 2: User Sharing Dashboard to Group***

aws quicksight update-dashboard-permissions --aws-account-id ############ --dashboard-id ‘123a6402-7c8e-4e50-8142-52a5bc46f4f4’ --grant-permissions Principal=‘arn:aws:quicksight:us-east-1:############:group/namespace-1/Group-4’,Actions=‘quicksight:DescribeDashboard,quicksight:QueryDashboard,quicksight:ListDashboardVersions’

I’ll link the rest of the article here because I think this will be really helpful to you. I hope this helps!

That is assigning permissions by group to dashboards within a namespace.

But I still need to create/deploy a dashboard to several namespaces with these id convention:
namespace#N-dashboard1

If I don’t provide the PrefixForAllResources optional arg, can I just populate the ID and it will apply to that ID to create or update in the target account?

...
"OverrideParameters": {
"Dashboards": [
            {
                "DashboardId": "namespace1-dashboard1",
                "Name": "namespace1 - Dashboard In Target Account"
            }
        ]
}

A namespace is a client. We cannot do cross-namespace or cross-client group/permission, hence we created assets in these naming convention : namespace1-dashboard1

I am gettting a SUCCESSFUL status from response in describe-import but I don’t see the dashboard updated. I am running in same account but I don’t think if that matters. The issue is I did not see dashboard updated or there are no new dashboards versions.

Since it is SUCCESSFUL status, Is there way to verify something is created? I don’t see any new versions created.

Helloi @alltej, I could be wrong about this but I don’t think it would create a new Dashboard, I just think it would make the dashboard viewable by people within that namespace. If you have access to the Dashboard while in an account linked to the namespace, then I think that means it worked.

Another possibility is you would need to create the Dashboard with the proper name for each Namespace and then you could assign them to a namespace.

Hello @alltej, did my response help you resolve your issue in QuickSight? If so, feel free to mark it as a solution. If not, please follow-up with some more details about the issue you are facing and I can try to guide you toward a solution. Thank you!