Программный доступ AWS QuickSight

#amazon-web-services #api #amazon-quicksight #quicksight-embedding

#amazon-веб-сервисы #API #amazon-quicksight #quicksight- внедрение

Вопрос:

Недавно я участвовал в проекте, в котором мне нужно использовать API QuickSight и программно обновлять панель мониторинга. Я могу выполнить все другие действия, но я не могу обновить панель мониторинга из шаблона. Я попробовал несколько разных идей, но все напрасно. Есть ли кто-нибудь, кто уже работал с API UpdateDashboard или указал мне на какую-нибудь подробную документацию, где я могу понять, действительно ли я чего-то не хватает? Спасибо.

Ответ №1:

Я заставил это работать, используя AWS QuickSight Java V2 API. ЧТОБЫ это сработало, вам необходимо следовать приведенным здесь кратким инструкциям по запуску:

https://docs.aws.amazon.com/quicksight/latest/user/getting-started.html

Вам необходимо получить эти значения:

  • учетная запись — номер вашей учетной записи
  • dashboardId — значение идентификатора панели мониторинга
  • dataSetArn — значение идентификатора набора данных
  • analysisArn — значение Arn для анализа

После того, как вы пройдете через вышеуказанные разделы, у вас будут все эти ресурсы, и вы будете готовы вызвать UpdateDashboard . Вот пример Java, который обновляет панель мониторинга.

 package com.example.quicksight;

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.quicksight.QuickSightClient;
import software.amazon.awssdk.services.quicksight.model.*;

/*
    Before running this code example, follow the Getting Started with Data Analysis in Amazon QuickSight located here:

    https://docs.aws.amazon.com/quicksight/latest/user/getting-started.html

    This code example uses resources that you created by following that topic such as the DataSet Arn value.

 */

public class UpdateDashboard {

    public static void main(String[] args) {

        final String USAGE = "n"  
                "Usage: UpdateDashboard <account> <dashboardId> <>nn"  
                "Where:n"  
                "  account - the account to use.nn"  
                "  dashboardId - the dashboard id value to use.nn"  
                "  dataSetArn - the ARN of the dataset.nn"  
                "  analysisArn - the ARN of an existing analysis";


        String account = "<account id>";
        String dashboardId = "<dashboardId>";
        String dataSetArn = "<dataSetArn>";
        String analysisArn = "<Analysis Arn>";
        QuickSightClient qsClient = QuickSightClient.builder()
                .region(Region.US_EAST_1)
                .build();

        try {

            DataSetReference dataSetReference = DataSetReference.builder()
                    .dataSetArn(dataSetArn)
                    .dataSetPlaceholder("Dataset placeholder2")
                    .build();

            // Get a template ARN to use.
            String arn = getTemplateARN(qsClient, account, dataSetArn, analysisArn);
            DashboardSourceTemplate sourceTemplate = DashboardSourceTemplate.builder()
                    .dataSetReferences(dataSetReference)
                   .arn(arn)
                    .build();

            DashboardSourceEntity sourceEntity = DashboardSourceEntity.builder()
                    .sourceTemplate(sourceTemplate)
                    .build();


            UpdateDashboardRequest dashboardRequest = UpdateDashboardRequest.builder()
                    .awsAccountId(account)
                    .dashboardId(dashboardId)
                    .name("UpdateTest")
                     .sourceEntity(sourceEntity)
                    .themeArn("arn:aws:quicksight::aws:theme/SEASIDE")
                    .build();

            UpdateDashboardResponse response = qsClient.updateDashboard(dashboardRequest);
            System.out.println("Dashboard "   response.dashboardId()   " has been updated");

        } catch (QuickSightException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    private static String getTemplateARN(QuickSightClient qsClient, String account, String dataset, String analysisArn) {

        String arn = "";
        try {
            DataSetReference setReference = DataSetReference.builder()
                    .dataSetArn(dataset)
                    .dataSetPlaceholder("Dataset placeholder2")
                    .build();

            TemplateSourceAnalysis templateSourceAnalysis = TemplateSourceAnalysis.builder()
                    .dataSetReferences(setReference)
                    .arn(analysisArn)
                    .build();

            TemplateSourceEntity sourceEntity = TemplateSourceEntity.builder()
                    .sourceAnalysis(templateSourceAnalysis)
                    .build();

            CreateTemplateRequest createTemplateRequest = CreateTemplateRequest.builder()
                    .awsAccountId(account)
                    .name("NewTemplate")
                    .sourceEntity(sourceEntity)
                    .templateId("a9a277fb-7239-4890-bc7a-8a3e82d67a37") // Specify a GUID value
                    .build();

            CreateTemplateResponse response = qsClient.createTemplate(createTemplateRequest);
            arn = response.arn();

        } catch (QuickSightException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return arn;
    }
}