#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;
}
}