public static ExportJournalToS3Result createJournalExportAndAwaitCompletion()

in src/main/java/software/amazon/qldb/tutorial/ExportJournal.java [203:230]


    public static ExportJournalToS3Result createJournalExportAndAwaitCompletion(
            String ledgerName, String s3BucketName,
            String s3Prefix, String roleArn,
            S3EncryptionConfiguration encryptionConfiguration,
            long awaitTimeoutMs) throws InterruptedException {
        AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
        createS3BucketIfNotExists(s3BucketName, s3Client);
        if (roleArn == null) {
            roleArn = createExportRole(EXPORT_ROLE_NAME, AmazonIdentityManagementClientBuilder.defaultClient(),
                    s3BucketName, encryptionConfiguration.getKmsKeyArn(), EXPORT_ROLE_POLICY_NAME);
        }

        try {
            Date startTime = Date.from(Instant.now().minus(JOURNAL_EXPORT_TIME_WINDOW_MINUTES, ChronoUnit.MINUTES));
            Date endTime = Date.from(Instant.now());

            ExportJournalToS3Result exportJournalToS3Result = createExport(ledgerName, startTime, endTime, s3BucketName,
                    s3Prefix, encryptionConfiguration, roleArn);

            // Wait for export to complete.
            waitForExportToComplete(Constants.LEDGER_NAME, exportJournalToS3Result.getExportId(), awaitTimeoutMs);
            log.info("JournalS3Export for exportId " + exportJournalToS3Result.getExportId() + " is completed.");
            return exportJournalToS3Result;
        } catch (Exception e) {
            log.error("Unable to create an export!", e);
            throw e;
        }
    }