![JAR search and dependency download from the Maven repository](/logo.png)
com.pulumi.digitalocean.kotlin.Cdn.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-digitalocean-kotlin Show documentation
Show all versions of pulumi-digitalocean-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.digitalocean.kotlin
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
/**
* Builder for [Cdn].
*/
@PulumiTagMarker
public class CdnResourceBuilder internal constructor() {
public var name: String? = null
public var args: CdnArgs = CdnArgs()
public var opts: CustomResourceOptions = CustomResourceOptions()
/**
* @param name The _unique_ name of the resulting resource.
*/
public fun name(`value`: String) {
this.name = value
}
/**
* @param block The arguments to use to populate this resource's properties.
*/
public suspend fun args(block: suspend CdnArgsBuilder.() -> Unit) {
val builder = CdnArgsBuilder()
block(builder)
this.args = builder.build()
}
/**
* @param block A bag of options that control this resource's behavior.
*/
public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
}
internal fun build(): Cdn {
val builtJavaResource = com.pulumi.digitalocean.Cdn(
this.name,
this.args.toJava(),
this.opts.toJava(),
)
return Cdn(builtJavaResource)
}
}
/**
* Provides a DigitalOcean CDN Endpoint resource for use with Spaces.
* ## Example Usage
* ### Basic Example
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as digitalocean from "@pulumi/digitalocean";
* // Create a new Spaces Bucket
* const mybucket = new digitalocean.SpacesBucket("mybucket", {
* name: "example",
* region: digitalocean.Region.SFO2,
* acl: "public-read",
* });
* // Add a CDN endpoint to the Spaces Bucket
* const mycdn = new digitalocean.Cdn("mycdn", {origin: mybucket.bucketDomainName});
* export const fqdn = mycdn.endpoint;
* ```
* ```python
* import pulumi
* import pulumi_digitalocean as digitalocean
* # Create a new Spaces Bucket
* mybucket = digitalocean.SpacesBucket("mybucket",
* name="example",
* region=digitalocean.Region.SFO2,
* acl="public-read")
* # Add a CDN endpoint to the Spaces Bucket
* mycdn = digitalocean.Cdn("mycdn", origin=mybucket.bucket_domain_name)
* pulumi.export("fqdn", mycdn.endpoint)
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using DigitalOcean = Pulumi.DigitalOcean;
* return await Deployment.RunAsync(() =>
* {
* // Create a new Spaces Bucket
* var mybucket = new DigitalOcean.SpacesBucket("mybucket", new()
* {
* Name = "example",
* Region = DigitalOcean.Region.SFO2,
* Acl = "public-read",
* });
* // Add a CDN endpoint to the Spaces Bucket
* var mycdn = new DigitalOcean.Cdn("mycdn", new()
* {
* Origin = mybucket.BucketDomainName,
* });
* return new Dictionary
* {
* ["fqdn"] = mycdn.Endpoint,
* };
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* // Create a new Spaces Bucket
* mybucket, err := digitalocean.NewSpacesBucket(ctx, "mybucket", &digitalocean.SpacesBucketArgs{
* Name: pulumi.String("example"),
* Region: pulumi.String(digitalocean.RegionSFO2),
* Acl: pulumi.String("public-read"),
* })
* if err != nil {
* return err
* }
* // Add a CDN endpoint to the Spaces Bucket
* mycdn, err := digitalocean.NewCdn(ctx, "mycdn", &digitalocean.CdnArgs{
* Origin: mybucket.BucketDomainName,
* })
* if err != nil {
* return err
* }
* ctx.Export("fqdn", mycdn.Endpoint)
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.digitalocean.SpacesBucket;
* import com.pulumi.digitalocean.SpacesBucketArgs;
* import com.pulumi.digitalocean.Cdn;
* import com.pulumi.digitalocean.CdnArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* // Create a new Spaces Bucket
* var mybucket = new SpacesBucket("mybucket", SpacesBucketArgs.builder()
* .name("example")
* .region("sfo2")
* .acl("public-read")
* .build());
* // Add a CDN endpoint to the Spaces Bucket
* var mycdn = new Cdn("mycdn", CdnArgs.builder()
* .origin(mybucket.bucketDomainName())
* .build());
* ctx.export("fqdn", mycdn.endpoint());
* }
* }
* ```
* ```yaml
* resources:
* # Create a new Spaces Bucket
* mybucket:
* type: digitalocean:SpacesBucket
* properties:
* name: example
* region: sfo2
* acl: public-read
* # Add a CDN endpoint to the Spaces Bucket
* mycdn:
* type: digitalocean:Cdn
* properties:
* origin: ${mybucket.bucketDomainName}
* outputs:
* # Output the endpoint for the CDN resource
* fqdn: ${mycdn.endpoint}
* ```
*
* ### Custom Sub-Domain Example
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as digitalocean from "@pulumi/digitalocean";
* // Create a new Spaces Bucket
* const mybucket = new digitalocean.SpacesBucket("mybucket", {
* name: "example",
* region: digitalocean.Region.SFO2,
* acl: "public-read",
* });
* // Create a DigitalOcean managed Let's Encrypt Certificate
* const cert = new digitalocean.Certificate("cert", {
* name: "cdn-cert",
* type: digitalocean.CertificateType.LetsEncrypt,
* domains: ["static.example.com"],
* });
* // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket
* const mycdn = new digitalocean.Cdn("mycdn", {
* origin: mybucket.bucketDomainName,
* customDomain: "static.example.com",
* certificateName: cert.name,
* });
* ```
* ```python
* import pulumi
* import pulumi_digitalocean as digitalocean
* # Create a new Spaces Bucket
* mybucket = digitalocean.SpacesBucket("mybucket",
* name="example",
* region=digitalocean.Region.SFO2,
* acl="public-read")
* # Create a DigitalOcean managed Let's Encrypt Certificate
* cert = digitalocean.Certificate("cert",
* name="cdn-cert",
* type=digitalocean.CertificateType.LETS_ENCRYPT,
* domains=["static.example.com"])
* # Add a CDN endpoint with a custom sub-domain to the Spaces Bucket
* mycdn = digitalocean.Cdn("mycdn",
* origin=mybucket.bucket_domain_name,
* custom_domain="static.example.com",
* certificate_name=cert.name)
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using DigitalOcean = Pulumi.DigitalOcean;
* return await Deployment.RunAsync(() =>
* {
* // Create a new Spaces Bucket
* var mybucket = new DigitalOcean.SpacesBucket("mybucket", new()
* {
* Name = "example",
* Region = DigitalOcean.Region.SFO2,
* Acl = "public-read",
* });
* // Create a DigitalOcean managed Let's Encrypt Certificate
* var cert = new DigitalOcean.Certificate("cert", new()
* {
* Name = "cdn-cert",
* Type = DigitalOcean.CertificateType.LetsEncrypt,
* Domains = new[]
* {
* "static.example.com",
* },
* });
* // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket
* var mycdn = new DigitalOcean.Cdn("mycdn", new()
* {
* Origin = mybucket.BucketDomainName,
* CustomDomain = "static.example.com",
* CertificateName = cert.Name,
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* // Create a new Spaces Bucket
* mybucket, err := digitalocean.NewSpacesBucket(ctx, "mybucket", &digitalocean.SpacesBucketArgs{
* Name: pulumi.String("example"),
* Region: pulumi.String(digitalocean.RegionSFO2),
* Acl: pulumi.String("public-read"),
* })
* if err != nil {
* return err
* }
* // Create a DigitalOcean managed Let's Encrypt Certificate
* cert, err := digitalocean.NewCertificate(ctx, "cert", &digitalocean.CertificateArgs{
* Name: pulumi.String("cdn-cert"),
* Type: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),
* Domains: pulumi.StringArray{
* pulumi.String("static.example.com"),
* },
* })
* if err != nil {
* return err
* }
* // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket
* _, err = digitalocean.NewCdn(ctx, "mycdn", &digitalocean.CdnArgs{
* Origin: mybucket.BucketDomainName,
* CustomDomain: pulumi.String("static.example.com"),
* CertificateName: cert.Name,
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.digitalocean.SpacesBucket;
* import com.pulumi.digitalocean.SpacesBucketArgs;
* import com.pulumi.digitalocean.Certificate;
* import com.pulumi.digitalocean.CertificateArgs;
* import com.pulumi.digitalocean.Cdn;
* import com.pulumi.digitalocean.CdnArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* // Create a new Spaces Bucket
* var mybucket = new SpacesBucket("mybucket", SpacesBucketArgs.builder()
* .name("example")
* .region("sfo2")
* .acl("public-read")
* .build());
* // Create a DigitalOcean managed Let's Encrypt Certificate
* var cert = new Certificate("cert", CertificateArgs.builder()
* .name("cdn-cert")
* .type("lets_encrypt")
* .domains("static.example.com")
* .build());
* // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket
* var mycdn = new Cdn("mycdn", CdnArgs.builder()
* .origin(mybucket.bucketDomainName())
* .customDomain("static.example.com")
* .certificateName(cert.name())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* # Create a new Spaces Bucket
* mybucket:
* type: digitalocean:SpacesBucket
* properties:
* name: example
* region: sfo2
* acl: public-read
* # Create a DigitalOcean managed Let's Encrypt Certificate
* cert:
* type: digitalocean:Certificate
* properties:
* name: cdn-cert
* type: lets_encrypt
* domains:
* - static.example.com
* # Add a CDN endpoint with a custom sub-domain to the Spaces Bucket
* mycdn:
* type: digitalocean:Cdn
* properties:
* origin: ${mybucket.bucketDomainName}
* customDomain: static.example.com
* certificateName: ${cert.name}
* ```
*
* ## Import
* CDN Endpoints can be imported using the CDN `id`, e.g.
* ```sh
* $ pulumi import digitalocean:index/cdn:Cdn mycdn fb06ad00-351f-45c8-b5eb-13523c438661
* ```
*/
public class Cdn internal constructor(
override val javaResource: com.pulumi.digitalocean.Cdn,
) : KotlinCustomResource(javaResource, CdnMapper) {
/**
* **Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.
*/
@Deprecated(
message = """
Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please
specify 'certificate_name' instead.
""",
)
public val certificateId: Output
get() = javaResource.certificateId().applyValue({ args0 -> args0 })
/**
* The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.
*/
public val certificateName: Output
get() = javaResource.certificateName().applyValue({ args0 -> args0 })
/**
* The date and time when the CDN Endpoint was created.
*/
public val createdAt: Output
get() = javaResource.createdAt().applyValue({ args0 -> args0 })
/**
* The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint.
*/
public val customDomain: Output?
get() = javaResource.customDomain().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The fully qualified domain name (FQDN) from which the CDN-backed content is served.
*/
public val endpoint: Output
get() = javaResource.endpoint().applyValue({ args0 -> args0 })
/**
* The fully qualified domain name, (FQDN) for a Space.
*/
public val origin: Output
get() = javaResource.origin().applyValue({ args0 -> args0 })
/**
* The time to live for the CDN Endpoint, in seconds. Default is 3600 seconds.
*/
public val ttl: Output
get() = javaResource.ttl().applyValue({ args0 -> args0 })
}
public object CdnMapper : ResourceMapper {
override fun supportsMappingOfType(javaResource: Resource): Boolean =
com.pulumi.digitalocean.Cdn::class == javaResource::class
override fun map(javaResource: Resource): Cdn = Cdn(javaResource as com.pulumi.digitalocean.Cdn)
}
/**
* @see [Cdn].
* @param name The _unique_ name of the resulting resource.
* @param block Builder for [Cdn].
*/
public suspend fun cdn(name: String, block: suspend CdnResourceBuilder.() -> Unit): Cdn {
val builder = CdnResourceBuilder()
builder.name(name)
block(builder)
return builder.build()
}
/**
* @see [Cdn].
* @param name The _unique_ name of the resulting resource.
*/
public fun cdn(name: String): Cdn {
val builder = CdnResourceBuilder()
builder.name(name)
return builder.build()
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy