TriggerArgs

data class TriggerArgs(val config: Output<String>? = null, val configMns: Output<String>? = null, val function: Output<String>? = null, val name: Output<String>? = null, val namePrefix: Output<String>? = null, val role: Output<String>? = null, val service: Output<String>? = null, val sourceArn: Output<String>? = null, val type: Output<String>? = null) : ConvertibleToJava<TriggerArgs>

Provides an Alicloud Function Compute Trigger resource. Based on trigger, execute your code in response to events in Alibaba Cloud. For information about Service and how to use it, see What is Function Compute.

NOTE: The resource requires a provider field 'account_id'. See account_id. NOTE: Available since v1.93.0.

Example Usage

Basic Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetRegionsArgs;
import com.pulumi.random.RandomInteger;
import com.pulumi.random.RandomIntegerArgs;
import com.pulumi.alicloud.log.Project;
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.Trigger;
import com.pulumi.alicloud.fc.TriggerArgs;
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) {
final var defaultAccount = AlicloudFunctions.getAccount();
final var defaultRegions = AlicloudFunctions.getRegions(GetRegionsArgs.builder()
.current(true)
.build());
var defaultRandomInteger = new RandomInteger("defaultRandomInteger", RandomIntegerArgs.builder()
.max(99999)
.min(10000)
.build());
var defaultProject = new Project("defaultProject");
var defaultStore = new Store("defaultStore", StoreArgs.builder()
.project(defaultProject.name())
.build());
var sourceStore = new Store("sourceStore", StoreArgs.builder()
.project(defaultProject.name())
.build());
var defaultRole = new Role("defaultRole", RoleArgs.builder()
.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()
.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(defaultRandomInteger.result().applyValue(result -> String.format("terraform-example-%s", result)))
.build());
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())
.description("example")
.ossBucket(defaultBucket.id())
.ossKey(defaultBucketObject.key())
.memorySize("512")
.runtime("python3.10")
.handler("hello.handler")
.build());
var defaultTrigger = new Trigger("defaultTrigger", TriggerArgs.builder()
.service(defaultService.name())
.function(defaultFunction.name())
.role(defaultRole.arn())
.sourceArn(defaultProject.name().applyValue(name -> String.format("acs:log:%s:%s:project/%s", defaultRegions.applyValue(getRegionsResult -> getRegionsResult.regions()[0].id()),defaultAccount.applyValue(getAccountResult -> getAccountResult.id()),name)))
.type("log")
.config(Output.tuple(sourceStore.name(), defaultProject.name(), defaultStore.name()).applyValue(values -> {
var sourceStoreName = values.t1;
var defaultProjectName = values.t2;
var defaultStoreName = values.t3;
return """
{
"sourceConfig": {
"logstore": "%s",
"startTime": null
},
"jobConfig": {
"maxRetryTime": 3,
"triggerInterval": 60
},
"functionParameter": {
"a": "b",
"c": "d"
},
"logConfig": {
"project": "%s",
"logstore": "%s"
},
"targetConfig": null,
"enable": true
}
", sourceStoreName,defaultProjectName,defaultStoreName);
}))
.build());
}
}

Module Support

You can use to the existing fc module to create several triggers quickly.

Import

Function Compute trigger can be imported using the id, e.g.

$ pulumi import alicloud:fc/trigger:Trigger foo my-fc-service:hello-world:hello-trigger

Constructors

Link copied to clipboard
fun TriggerArgs(config: Output<String>? = null, configMns: Output<String>? = null, function: Output<String>? = null, name: Output<String>? = null, namePrefix: Output<String>? = null, role: Output<String>? = null, service: Output<String>? = null, sourceArn: Output<String>? = null, type: Output<String>? = null)

Functions

Link copied to clipboard
open override fun toJava(): TriggerArgs

Properties

Link copied to clipboard
val config: Output<String>? = null

The config of Function Compute trigger.It is valid when type is not "mns_topic".See Configure triggers and events for more details.

Link copied to clipboard
val configMns: Output<String>? = null

The config of Function Compute trigger when the type is "mns_topic".It is conflict with config.

Link copied to clipboard
val function: Output<String>? = null

The Function Compute function name.

Link copied to clipboard
val name: Output<String>? = null

The Function Compute trigger name. It is the only in one service and is conflict with "name_prefix".

Link copied to clipboard
val namePrefix: Output<String>? = null

Setting a prefix to get a only trigger name. It is conflict with "name".

Link copied to clipboard
val role: Output<String>? = null

RAM role arn attached to the Function Compute trigger. Role used by the event source to call the function. The value format is "acs:ram::$account-id:role/$role-name". See Create a trigger for more details.

Link copied to clipboard
val service: Output<String>? = null

The Function Compute service name.

Link copied to clipboard
val sourceArn: Output<String>? = null

Event source resource address. See Create a trigger for more details.

Link copied to clipboard
val type: Output<String>? = null

The Type of the trigger. Valid values: "oss", "log", "timer", "http", "mns_topic", "cdn_events", "eventbridge".