Example usage for com.amazonaws.services.cloudfront.model CreateStreamingDistributionRequest CreateStreamingDistributionRequest

List of usage examples for com.amazonaws.services.cloudfront.model CreateStreamingDistributionRequest CreateStreamingDistributionRequest

Introduction

In this page you can find the example usage for com.amazonaws.services.cloudfront.model CreateStreamingDistributionRequest CreateStreamingDistributionRequest.

Prototype

public CreateStreamingDistributionRequest(StreamingDistributionConfig streamingDistributionConfig) 

Source Link

Document

Constructs a new CreateStreamingDistributionRequest object.

Usage

From source file:ch.cyberduck.core.cloudfront.CloudFrontDistributionConfiguration.java

License:Open Source License

/**
 * Amazon CloudFront Extension to create a new distribution configuration
 *
 * @return Distribution configuration// w  w  w.  ja v  a2  s .c  om
 */
protected StreamingDistribution createStreamingDistribution(final Path container,
        final Distribution distribution) throws BackgroundException {
    if (log.isDebugEnabled()) {
        log.debug(String.format("Create new %s distribution", distribution.getMethod().toString()));
    }
    final AmazonCloudFront client = client(container);
    final URI origin = this.getOrigin(container, distribution.getMethod());
    final String originId = String.format("%s-%s", preferences.getProperty("application.name"),
            new AlphanumericRandomStringService().random());
    final StreamingDistributionConfig config = new StreamingDistributionConfig(
            new AlphanumericRandomStringService().random(), new S3Origin(origin.getHost(), StringUtils.EMPTY),
            distribution.isEnabled()).withComment(originId)
                    .withTrustedSigners(new TrustedSigners().withEnabled(false).withQuantity(0))
                    .withAliases(new Aliases().withItems(distribution.getCNAMEs())
                            .withQuantity(distribution.getCNAMEs().length));
    // Make bucket name fully qualified
    final String loggingTarget = ServiceUtils.generateS3HostnameForBucket(distribution.getLoggingContainer(),
            false, new S3Protocol().getDefaultHostname());
    if (log.isDebugEnabled()) {
        log.debug(String.format("Set logging target for %s to %s", distribution, loggingTarget));
    }
    config.setLogging(new StreamingLoggingConfig().withEnabled(distribution.isLogging())
            .withBucket(loggingTarget).withPrefix(preferences.getProperty("cloudfront.logging.prefix")));
    return client.createStreamingDistribution(new CreateStreamingDistributionRequest(config))
            .getStreamingDistribution();
}

From source file:org.duracloud.s3task.streaming.EnableStreamingTaskRunner.java

License:Apache License

public String performTask(String taskParameters) {
    EnableStreamingTaskParameters taskParams = EnableStreamingTaskParameters.deserialize(taskParameters);

    String spaceId = taskParams.getSpaceId();
    boolean secure = taskParams.isSecure();

    log.info("Performing " + TASK_NAME + " task on space " + spaceId + ". Secure streaming set to " + secure);

    // Will throw if bucket does not exist
    String bucketName = unwrappedS3Provider.getBucketName(spaceId);

    String domainName = null;/*from w  ww.  jav a  2  s  . c o m*/
    String distId = null;
    String oaIdentityId = getOriginAccessId();
    EnableStreamingTaskResult taskResult = new EnableStreamingTaskResult();

    StreamingDistributionSummary existingDist = getExistingDistribution(bucketName);

    if (existingDist != null) { // There is an existing distribution
        // Ensure that this is not an attempt to change the security type
        // of this existing distribution
        boolean existingSecure = !existingDist.getTrustedSigners().getItems().isEmpty();
        if ((secure && !existingSecure) || (!secure && existingSecure)) {
            throw new UnsupportedTaskException(TASK_NAME,
                    "The space " + spaceId + " is already configured to stream as "
                            + (secure ? "OPEN" : "SECURE") + " and cannot be updated to stream as "
                            + (secure ? "SECURE" : "OPEN") + ". To do this, you must first execute the "
                            + StorageTaskConstants.DELETE_STREAMING_TASK_NAME + " task.");
        }

        distId = existingDist.getId();
        if (!existingDist.isEnabled()) { // Distribution is disabled, enable it
            setDistributionState(distId, true);
        }
        domainName = existingDist.getDomainName();
    } else { // No existing distribution, need to create one
        S3Origin origin = new S3Origin(bucketName + S3_ORIGIN_SUFFIX, S3_ORIGIN_OAI_PREFIX + oaIdentityId);

        // Only include trusted signers on secure distributions
        TrustedSigners signers = new TrustedSigners();
        if (secure) {
            signers.setItems(Collections.singletonList(cfAccountId));
            signers.setEnabled(true);
            signers.setQuantity(1);
        } else {
            signers.setEnabled(false);
            signers.setQuantity(0);
        }

        StreamingDistribution dist = cfClient
                .createStreamingDistribution(new CreateStreamingDistributionRequest(
                        new StreamingDistributionConfig().withCallerReference("" + System.currentTimeMillis())
                                .withS3Origin(origin).withEnabled(true)
                                .withComment("Streaming space: " + spaceId).withTrustedSigners(signers)))
                .getStreamingDistribution();
        domainName = dist.getDomainName();
    }

    // Set bucket policy to accept origin access identity
    setBucketAccessPolicy(bucketName, oaIdentityId);

    // Update bucket tags to include streaming host
    Map<String, String> spaceProps = s3Provider.getSpaceProperties(spaceId);
    spaceProps.put(STREAMING_HOST_PROP, domainName);
    spaceProps.put(STREAMING_TYPE_PROP, secure ? STREAMING_TYPE.SECURE.name() : STREAMING_TYPE.OPEN.name());
    unwrappedS3Provider.setNewSpaceProperties(spaceId, spaceProps);

    taskResult.setResult("Enable Streaming Task completed successfully");

    // Return results
    taskResult.setStreamingHost(domainName);
    String toReturn = taskResult.serialize();
    log.info("Result of " + TASK_NAME + " task: " + toReturn);
    return toReturn;
}