Когда аналитик переносит дашборд из аккаунта разработки в продакшн через Asset Bundle APIs, ресурс получает новый ARN — потому что в адресе зашит ID аккаунта AWS. Все права доступа, настроенные в исходной среде, при этом не переезжают: они ссылаются на группы и пользователей другого аккаунта, которых в целевой среде попросту не существует.

Amazon Resource Name — это уникальный идентификатор любого ресурса в AWS. Его структура напоминает почтовый адрес: партиция (aws / aws-cn / aws-gov-us), сервис (quicksight), регион, ID аккаунта, тип ресурса и уникальный идентификатор самого ресурса. Пример: arn:aws:quicksight:us-east-1:123456789012:dashboard/sales-dash-001. Если перенести дашборд в другой аккаунт, изменится только сегмент с ID аккаунта — регион и Resource ID могут остаться прежними, но AWS будет считать это уже другим ресурсом.

Компонент ARNАналогияЧто означает
awsПланетаПартиция AWS: aws / aws-cn / aws-gov-us
quicksightСтранаСервис внутри партиции
us-east-1ШтатРегион AWS
111111111111ГородID аккаунта AWS
dashboardУлицаТип ресурса
sales-dash-001Номер домаУникальный идентификатор ресурса

На практике это выглядит так. Компания AnyCompany держит три аккаунта: Development (111111111111), QA (222222222222) и Production (333333333333). Аналитик Саанви создаёт дашборд продаж в Development — он получает ARN с идентификатором 111111111111. После миграции в QA тот же дашборд живёт по адресу с идентификатором 222222222222. Группа DataAnalysts из аккаунта разработки не имеет никакого отношения к одноимённой группе в QA: у каждой свой ARN, и разрешения не переносятся автоматически. Их нужно явно переустановить в целевой среде — либо во время импорта, либо сразу после.

Права доступа не переносятся автоматически — они привязаны к ARN конкретного аккаунта и должны быть переустановлены в целевой среде.

Diagram showing the components of an Amazon Quick ARN with each segment labeled: partition, service, region, account ID, resource type, and resource ID
Diagram showing the components of an Amazon Quick ARN with each segment labeled: partition, service, region, account ID, resource type, and resource ID · Источник: AWS Machine Learning Blog

Дашборд редко существует сам по себе: он ссылается на датасет, тот — на источник данных. У каждого объекта свой ARN. Asset Bundle APIs при импорте автоматически обновляют все внутренние ссылки на ARN, подставляя ID целевого аккаунта. Но это работает только для ресурсов, включённых в бандл. Если экспортировать дашборд без датасета и источника данных, в целевом аккаунте он будет ссылаться на несуществующие ресурсы. Поэтому при экспорте рекомендуется использовать параметр IncludeAllDependencies=True.

Ещё одна типичная ситуация: в QA уже настроен источник данных для QA-базы, и создавать дублирующий при импорте не нужно. Для этого в методе StartAssetBundleImportJob предусмотрен параметр OverrideParameters. Он позволяет переопределить параметры подключения и учётные данные для каждого источника данных прямо во время импорта. Поддерживаются три способа передачи credentials: пара логин/пароль (CredentialPair), копирование из существующего источника (CopySourceArn) и прямая ссылка на секрет в AWS Secrets Manager (SecretArn). Последний вариант предпочтителен, если организация централизованно хранит пароли к базам данных в Secrets Manager.

Отдельный нюанс касается именования. Сервис сегодня называется Amazon Quick, однако в ARN и во всех API-эндпоинтах по-прежнему используется строка quicksight. Это сделано намеренно: существующие IAM-политики, скрипты и интеграции продолжают работать без изменений. Менять ничего не нужно — идентификатор quicksight в ARN указывает на возможности Quick Sight внутри платформы Amazon Quick.