CustomDomain

class CustomDomain : KotlinCustomResource

Provides an Alicloud Function Compute custom domain resource. For the detailed information, please refer to the developer guide.

NOTE: Available since v1.98.0.

Example Usage

Basic Usage

import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
import * as random from "@pulumi/random";
const _default = new random.index.Integer("default", {
max: 99999,
min: 10000,
});
const defaultProject = new alicloud.log.Project("default", {name: `example-value-${_default.result}`});
const defaultStore = new alicloud.log.Store("default", {
project: defaultProject.name,
name: "example-value",
});
const defaultRole = new alicloud.ram.Role("default", {
name: `fcservicerole-${_default.result}`,
document: ` {
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"fc.aliyuncs.com"
]
}
}
],
"Version": "1"
}
`,
description: "this is a example",
force: true,
});
const defaultRolePolicyAttachment = new alicloud.ram.RolePolicyAttachment("default", {
roleName: defaultRole.name,
policyName: "AliyunLogFullAccess",
policyType: "System",
});
const defaultService = new alicloud.fc.Service("default", {
name: `example-value-${_default.result}`,
description: "example-value",
role: defaultRole.arn,
logConfig: {
project: defaultProject.name,
logstore: defaultStore.name,
enableInstanceMetrics: true,
enableRequestMetrics: true,
},
});
const defaultBucket = new alicloud.oss.Bucket("default", {bucket: `terraform-example-${_default.result}`});
// If you upload the function by OSS Bucket, you need to specify path can't upload by content.
const defaultBucketObject = new alicloud.oss.BucketObject("default", {
bucket: defaultBucket.id,
key: "index.py",
content: `import logging
def handler(event, context):
logger = logging.getLogger()
logger.info('hello world')
return 'hello world'`,
});
const defaultFunction = new alicloud.fc.Function("default", {
service: defaultService.name,
name: "terraform-example",
description: "example",
ossBucket: defaultBucket.id,
ossKey: defaultBucketObject.key,
memorySize: 512,
runtime: "python3.9",
handler: "hello.handler",
});
const defaultCustomDomain = new alicloud.fc.CustomDomain("default", {
domainName: "terraform.functioncompute.com",
protocol: "HTTP",
routeConfigs: [{
path: "/login/*",
serviceName: defaultService.name,
functionName: defaultFunction.name,
qualifier: "?query",
methods: [
"GET",
"POST",
],
}],
certConfig: {
certName: "example",
certificate: `-----BEGIN CERTIFICATE-----
MIICWD****-----END CERTIFICATE-----`,
privateKey: `-----BEGIN RSA PRIVATE KEY-----
MIICX****n-----END RSA PRIVATE KEY-----`,
},
});
import pulumi
import pulumi_alicloud as alicloud
import pulumi_random as random
default = random.index.Integer("default",
max=99999,
min=10000)
default_project = alicloud.log.Project("default", name=f"example-value-{default['result']}")
default_store = alicloud.log.Store("default",
project=default_project.name,
name="example-value")
default_role = alicloud.ram.Role("default",
name=f"fcservicerole-{default['result']}",
document=""" {
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"fc.aliyuncs.com"
]
}
}
],
"Version": "1"
}
""",
description="this is a example",
force=True)
default_role_policy_attachment = alicloud.ram.RolePolicyAttachment("default",
role_name=default_role.name,
policy_name="AliyunLogFullAccess",
policy_type="System")
default_service = alicloud.fc.Service("default",
name=f"example-value-{default['result']}",
description="example-value",
role=default_role.arn,
log_config={
"project": default_project.name,
"logstore": default_store.name,
"enable_instance_metrics": True,
"enable_request_metrics": True,
})
default_bucket = alicloud.oss.Bucket("default", bucket=f"terraform-example-{default['result']}")
# If you upload the function by OSS Bucket, you need to specify path can't upload by content.
default_bucket_object = alicloud.oss.BucketObject("default",
bucket=default_bucket.id,
key="index.py",
content="""import logging
def handler(event, context):
logger = logging.getLogger()
logger.info('hello world')
return 'hello world'""")
default_function = alicloud.fc.Function("default",
service=default_service.name,
name="terraform-example",
description="example",
oss_bucket=default_bucket.id,
oss_key=default_bucket_object.key,
memory_size=512,
runtime="python3.9",
handler="hello.handler")
default_custom_domain = alicloud.fc.CustomDomain("default",
domain_name="terraform.functioncompute.com",
protocol="HTTP",
route_configs=[{
"path": "/login/*",
"service_name": default_service.name,
"function_name": default_function.name,
"qualifier": "?query",
"methods": [
"GET",
"POST",
],
}],
cert_config={
"cert_name": "example",
"certificate": """-----BEGIN CERTIFICATE-----
MIICWD****-----END CERTIFICATE-----""",
"private_key": """-----BEGIN RSA PRIVATE KEY-----
MIICX****n-----END RSA PRIVATE KEY-----""",
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
using Random = Pulumi.Random;
return await Deployment.RunAsync(() =>
{
var @default = new Random.Index.Integer("default", new()
{
Max = 99999,
Min = 10000,
});
var defaultProject = new AliCloud.Log.Project("default", new()
{
Name = $"example-value-{@default.Result}",
});
var defaultStore = new AliCloud.Log.Store("default", new()
{
Project = defaultProject.Name,
Name = "example-value",
});
var defaultRole = new AliCloud.Ram.Role("default", new()
{
Name = $"fcservicerole-{@default.Result}",
Document = @" {
""Statement"": [
{
""Action"": ""sts:AssumeRole"",
""Effect"": ""Allow"",
""Principal"": {
""Service"": [
""fc.aliyuncs.com""
]
}
}
],
""Version"": ""1""
}
",
Description = "this is a example",
Force = true,
});
var defaultRolePolicyAttachment = new AliCloud.Ram.RolePolicyAttachment("default", new()
{
RoleName = defaultRole.Name,
PolicyName = "AliyunLogFullAccess",
PolicyType = "System",
});
var defaultService = new AliCloud.FC.Service("default", new()
{
Name = $"example-value-{@default.Result}",
Description = "example-value",
Role = defaultRole.Arn,
LogConfig = new AliCloud.FC.Inputs.ServiceLogConfigArgs
{
Project = defaultProject.Name,
Logstore = defaultStore.Name,
EnableInstanceMetrics = true,
EnableRequestMetrics = true,
},
});
var defaultBucket = new AliCloud.Oss.Bucket("default", new()
{
BucketName = $"terraform-example-{@default.Result}",
});
// If you upload the function by OSS Bucket, you need to specify path can't upload by content.
var defaultBucketObject = new AliCloud.Oss.BucketObject("default", new()
{
Bucket = defaultBucket.Id,
Key = "index.py",
Content = @"import logging
def handler(event, context):
logger = logging.getLogger()
logger.info('hello world')
return 'hello world'",
});
var defaultFunction = new AliCloud.FC.Function("default", new()
{
Service = defaultService.Name,
Name = "terraform-example",
Description = "example",
OssBucket = defaultBucket.Id,
OssKey = defaultBucketObject.Key,
MemorySize = 512,
Runtime = "python3.9",
Handler = "hello.handler",
});
var defaultCustomDomain = new AliCloud.FC.CustomDomain("default", new()
{
DomainName = "terraform.functioncompute.com",
Protocol = "HTTP",
RouteConfigs = new[]
{
new AliCloud.FC.Inputs.CustomDomainRouteConfigArgs
{
Path = "/login/*",
ServiceName = defaultService.Name,
FunctionName = defaultFunction.Name,
Qualifier = "?query",
Methods = new[]
{
"GET",
"POST",
},
},
},
CertConfig = new AliCloud.FC.Inputs.CustomDomainCertConfigArgs
{
CertName = "example",
Certificate = @"-----BEGIN CERTIFICATE-----
MIICWD****-----END CERTIFICATE-----",
PrivateKey = @"-----BEGIN RSA PRIVATE KEY-----
MIICX****n-----END RSA PRIVATE KEY-----",
},
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/fc"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/log"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/oss"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ram"
"github.com/pulumi/pulumi-random/sdk/v4/go/random"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_default, err := random.NewInteger(ctx, "default", &random.IntegerArgs{
Max: 99999,
Min: 10000,
})
if err != nil {
return err
}
defaultProject, err := log.NewProject(ctx, "default", &log.ProjectArgs{
Name: pulumi.Sprintf("example-value-%v", _default.Result),
})
if err != nil {
return err
}
defaultStore, err := log.NewStore(ctx, "default", &log.StoreArgs{
Project: defaultProject.Name,
Name: pulumi.String("example-value"),
})
if err != nil {
return err
}
defaultRole, err := ram.NewRole(ctx, "default", &ram.RoleArgs{
Name: pulumi.Sprintf("fcservicerole-%v", _default.Result),
Document: pulumi.String(` {
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"fc.aliyuncs.com"
]
}
}
],
"Version": "1"
}
`),
Description: pulumi.String("this is a example"),
Force: pulumi.Bool(true),
})
if err != nil {
return err
}
_, err = ram.NewRolePolicyAttachment(ctx, "default", &ram.RolePolicyAttachmentArgs{
RoleName: defaultRole.Name,
PolicyName: pulumi.String("AliyunLogFullAccess"),
PolicyType: pulumi.String("System"),
})
if err != nil {
return err
}
defaultService, err := fc.NewService(ctx, "default", &fc.ServiceArgs{
Name: pulumi.Sprintf("example-value-%v", _default.Result),
Description: pulumi.String("example-value"),
Role: defaultRole.Arn,
LogConfig: &fc.ServiceLogConfigArgs{
Project: defaultProject.Name,
Logstore: defaultStore.Name,
EnableInstanceMetrics: pulumi.Bool(true),
EnableRequestMetrics: pulumi.Bool(true),
},
})
if err != nil {
return err
}
defaultBucket, err := oss.NewBucket(ctx, "default", &oss.BucketArgs{
Bucket: pulumi.Sprintf("terraform-example-%v", _default.Result),
})
if err != nil {
return err
}
// If you upload the function by OSS Bucket, you need to specify path can't upload by content.
defaultBucketObject, err := oss.NewBucketObject(ctx, "default", &oss.BucketObjectArgs{
Bucket: defaultBucket.ID(),
Key: pulumi.String("index.py"),
Content: pulumi.String("import logging \ndef handler(event, context): \nlogger = logging.getLogger() \nlogger.info('hello world') \nreturn 'hello world'"),
})
if err != nil {
return err
}
defaultFunction, err := fc.NewFunction(ctx, "default", &fc.FunctionArgs{
Service: defaultService.Name,
Name: pulumi.String("terraform-example"),
Description: pulumi.String("example"),
OssBucket: defaultBucket.ID(),
OssKey: defaultBucketObject.Key,
MemorySize: pulumi.Int(512),
Runtime: pulumi.String("python3.9"),
Handler: pulumi.String("hello.handler"),
})
if err != nil {
return err
}
_, err = fc.NewCustomDomain(ctx, "default", &fc.CustomDomainArgs{
DomainName: pulumi.String("terraform.functioncompute.com"),
Protocol: pulumi.String("HTTP"),
RouteConfigs: fc.CustomDomainRouteConfigArray{
&fc.CustomDomainRouteConfigArgs{
Path: pulumi.String("/login/*"),
ServiceName: defaultService.Name,
FunctionName: defaultFunction.Name,
Qualifier: pulumi.String("?query"),
Methods: pulumi.StringArray{
pulumi.String("GET"),
pulumi.String("POST"),
},
},
},
CertConfig: &fc.CustomDomainCertConfigArgs{
CertName: pulumi.String("example"),
Certificate: pulumi.String("-----BEGIN CERTIFICATE-----\nMIICWD****-----END CERTIFICATE-----"),
PrivateKey: pulumi.String("-----BEGIN RSA PRIVATE KEY-----\nMIICX****n-----END RSA PRIVATE KEY-----"),
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.random.integer;
import com.pulumi.random.integerArgs;
import com.pulumi.alicloud.log.Project;
import com.pulumi.alicloud.log.ProjectArgs;
import com.pulumi.alicloud.log.Store;
import com.pulumi.alicloud.log.StoreArgs;
import com.pulumi.alicloud.ram.Role;
import com.pulumi.alicloud.ram.RoleArgs;
import com.pulumi.alicloud.ram.RolePolicyAttachment;
import com.pulumi.alicloud.ram.RolePolicyAttachmentArgs;
import com.pulumi.alicloud.fc.Service;
import com.pulumi.alicloud.fc.ServiceArgs;
import com.pulumi.alicloud.fc.inputs.ServiceLogConfigArgs;
import com.pulumi.alicloud.oss.Bucket;
import com.pulumi.alicloud.oss.BucketArgs;
import com.pulumi.alicloud.oss.BucketObject;
import com.pulumi.alicloud.oss.BucketObjectArgs;
import com.pulumi.alicloud.fc.Function;
import com.pulumi.alicloud.fc.FunctionArgs;
import com.pulumi.alicloud.fc.CustomDomain;
import com.pulumi.alicloud.fc.CustomDomainArgs;
import com.pulumi.alicloud.fc.inputs.CustomDomainRouteConfigArgs;
import com.pulumi.alicloud.fc.inputs.CustomDomainCertConfigArgs;
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) {
var default_ = new Integer("default", IntegerArgs.builder()
.max(99999)
.min(10000)
.build());
var defaultProject = new Project("defaultProject", ProjectArgs.builder()
.name(String.format("example-value-%s", default_.result()))
.build());
var defaultStore = new Store("defaultStore", StoreArgs.builder()
.project(defaultProject.name())
.name("example-value")
.build());
var defaultRole = new Role("defaultRole", RoleArgs.builder()
.name(String.format("fcservicerole-%s", default_.result()))
.document("""
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"fc.aliyuncs.com"
]
}
}
],
"Version": "1"
}
""")
.description("this is a example")
.force(true)
.build());
var defaultRolePolicyAttachment = new RolePolicyAttachment("defaultRolePolicyAttachment", RolePolicyAttachmentArgs.builder()
.roleName(defaultRole.name())
.policyName("AliyunLogFullAccess")
.policyType("System")
.build());
var defaultService = new Service("defaultService", ServiceArgs.builder()
.name(String.format("example-value-%s", default_.result()))
.description("example-value")
.role(defaultRole.arn())
.logConfig(ServiceLogConfigArgs.builder()
.project(defaultProject.name())
.logstore(defaultStore.name())
.enableInstanceMetrics(true)
.enableRequestMetrics(true)
.build())
.build());
var defaultBucket = new Bucket("defaultBucket", BucketArgs.builder()
.bucket(String.format("terraform-example-%s", default_.result()))
.build());
// If you upload the function by OSS Bucket, you need to specify path can't upload by content.
var defaultBucketObject = new BucketObject("defaultBucketObject", BucketObjectArgs.builder()
.bucket(defaultBucket.id())
.key("index.py")
.content("""
import logging
def handler(event, context):
logger = logging.getLogger()
logger.info('hello world')
return 'hello world' """)
.build());
var defaultFunction = new Function("defaultFunction", FunctionArgs.builder()
.service(defaultService.name())
.name("terraform-example")
.description("example")
.ossBucket(defaultBucket.id())
.ossKey(defaultBucketObject.key())
.memorySize(512)
.runtime("python3.9")
.handler("hello.handler")
.build());
var defaultCustomDomain = new CustomDomain("defaultCustomDomain", CustomDomainArgs.builder()
.domainName("terraform.functioncompute.com")
.protocol("HTTP")
.routeConfigs(CustomDomainRouteConfigArgs.builder()
.path("/login/*")
.serviceName(defaultService.name())
.functionName(defaultFunction.name())
.qualifier("?query")
.methods(
"GET",
"POST")
.build())
.certConfig(CustomDomainCertConfigArgs.builder()
.certName("example")
.certificate("""
-----BEGIN CERTIFICATE-----
MIICWD****-----END CERTIFICATE----- """)
.privateKey("""
-----BEGIN RSA PRIVATE KEY-----
MIICX****n-----END RSA PRIVATE KEY----- """)
.build())
.build());
}
}
resources:
default:
type: random:integer
properties:
max: 99999
min: 10000
defaultProject:
type: alicloud:log:Project
name: default
properties:
name: example-value-${default.result}
defaultStore:
type: alicloud:log:Store
name: default
properties:
project: ${defaultProject.name}
name: example-value
defaultRole:
type: alicloud:ram:Role
name: default
properties:
name: fcservicerole-${default.result}
document: |2
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"fc.aliyuncs.com"
]
}
}
],
"Version": "1"
}
description: this is a example
force: true
defaultRolePolicyAttachment:
type: alicloud:ram:RolePolicyAttachment
name: default
properties:
roleName: ${defaultRole.name}
policyName: AliyunLogFullAccess
policyType: System
defaultService:
type: alicloud:fc:Service
name: default
properties:
name: example-value-${default.result}
description: example-value
role: ${defaultRole.arn}
logConfig:
project: ${defaultProject.name}
logstore: ${defaultStore.name}
enableInstanceMetrics: true
enableRequestMetrics: true
defaultBucket:
type: alicloud:oss:Bucket
name: default
properties:
bucket: terraform-example-${default.result}
# If you upload the function by OSS Bucket, you need to specify path can't upload by content.
defaultBucketObject:
type: alicloud:oss:BucketObject
name: default
properties:
bucket: ${defaultBucket.id}
key: index.py
content: "import logging \ndef handler(event, context): \nlogger = logging.getLogger() \nlogger.info('hello world') \nreturn 'hello world'"
defaultFunction:
type: alicloud:fc:Function
name: default
properties:
service: ${defaultService.name}
name: terraform-example
description: example
ossBucket: ${defaultBucket.id}
ossKey: ${defaultBucketObject.key}
memorySize: '512'
runtime: python3.9
handler: hello.handler
defaultCustomDomain:
type: alicloud:fc:CustomDomain
name: default
properties:
domainName: terraform.functioncompute.com
protocol: HTTP
routeConfigs:
- path: /login/*
serviceName: ${defaultService.name}
functionName: ${defaultFunction.name}
qualifier: ?query
methods:
- GET
- POST
certConfig:
certName: example
certificate: |-
-----BEGIN CERTIFICATE-----
MIICWD****-----END CERTIFICATE-----
privateKey: |-
-----BEGIN RSA PRIVATE KEY-----
MIICX****n-----END RSA PRIVATE KEY-----

Import

Function Compute custom domain can be imported using the id or the domain name, e.g.

$ pulumi import alicloud:fc/customDomain:CustomDomain foo my-fc-custom-domain

//////

Properties

Link copied to clipboard
val accountId: Output<String>

The account id.

Link copied to clipboard
val apiVersion: Output<String>

The api version of Function Compute.

Link copied to clipboard

The configuration of HTTPS certificate.See cert_config below.

Link copied to clipboard
val createdTime: Output<String>

The date this resource was created.

Link copied to clipboard
val domainName: Output<String>

The custom domain name. For example, "example.com".

Link copied to clipboard
val id: Output<String>
Link copied to clipboard

The date this resource was last modified.

Link copied to clipboard
val protocol: Output<String>

The protocol, HTTP or HTTP,HTTPS.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

The configuration of domain route, mapping the path and Function Compute function.See route_config below.

Link copied to clipboard
val urn: Output<String>