FunctionAsyncInvokeConfig

class FunctionAsyncInvokeConfig : KotlinCustomResource

Manages an asynchronous invocation configuration for a FC Function or Alias. For the detailed information, please refer to the developer guide.

NOTE: Available since v1.100.0.

Example Usage

Destination Configuration

NOTE Ensure the FC Function RAM Role has necessary permissions for the destination, such as mns:SendMessage, mns:PublishMessage or fc:InvokeFunction, otherwise the API will return a generic error.

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.ram.Role;
import com.pulumi.alicloud.ram.RoleArgs;
import com.pulumi.alicloud.ram.Policy;
import com.pulumi.alicloud.ram.PolicyArgs;
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.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.mns.Queue;
import com.pulumi.alicloud.mns.Topic;
import com.pulumi.alicloud.fc.FunctionAsyncInvokeConfig;
import com.pulumi.alicloud.fc.FunctionAsyncInvokeConfigArgs;
import com.pulumi.alicloud.fc.inputs.FunctionAsyncInvokeConfigDestinationConfigArgs;
import com.pulumi.alicloud.fc.inputs.FunctionAsyncInvokeConfigDestinationConfigOnFailureArgs;
import com.pulumi.alicloud.fc.inputs.FunctionAsyncInvokeConfigDestinationConfigOnSuccessArgs;
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 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 defaultPolicy = new Policy("defaultPolicy", PolicyArgs.builder()
.policyName(defaultRandomInteger.result().applyValue(result -> String.format("examplepolicy%s", result)))
.policyDocument("""
{
"Version": "1",
"Statement": [
{
"Action": "mns:*",
"Resource": "*",
"Effect": "Allow"
}
]
}
""")
.build());
var defaultRolePolicyAttachment = new RolePolicyAttachment("defaultRolePolicyAttachment", RolePolicyAttachmentArgs.builder()
.roleName(defaultRole.name())
.policyName(defaultPolicy.name())
.policyType("Custom")
.build());
var defaultService = new Service("defaultService", ServiceArgs.builder()
.description("example-value")
.role(defaultRole.arn())
.internetAccess(false)
.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 defaultQueue = new Queue("defaultQueue");
var defaultTopic = new Topic("defaultTopic");
var defaultFunctionAsyncInvokeConfig = new FunctionAsyncInvokeConfig("defaultFunctionAsyncInvokeConfig", FunctionAsyncInvokeConfigArgs.builder()
.serviceName(defaultService.name())
.functionName(defaultFunction.name())
.destinationConfig(FunctionAsyncInvokeConfigDestinationConfigArgs.builder()
.onFailure(FunctionAsyncInvokeConfigDestinationConfigOnFailureArgs.builder()
.destination(defaultQueue.name().applyValue(name -> String.format("acs:mns:%s:%s:/queues/%s/messages", defaultRegions.applyValue(getRegionsResult -> getRegionsResult.regions()[0].id()),defaultAccount.applyValue(getAccountResult -> getAccountResult.id()),name)))
.build())
.onSuccess(FunctionAsyncInvokeConfigDestinationConfigOnSuccessArgs.builder()
.destination(defaultTopic.name().applyValue(name -> String.format("acs:mns:%s:%s:/topics/%s/messages", defaultRegions.applyValue(getRegionsResult -> getRegionsResult.regions()[0].id()),defaultAccount.applyValue(getAccountResult -> getAccountResult.id()),name)))
.build())
.build())
.maximumEventAgeInSeconds(60)
.maximumRetryAttempts(0)
.statefulInvocation(true)
.qualifier("LATEST")
.build());
}
}

Import

Function Compute Function Async Invoke Configs can be imported using the id, e.g.

$ pulumi import alicloud:fc/functionAsyncInvokeConfig:FunctionAsyncInvokeConfig example my_function

Properties

Link copied to clipboard
val createdTime: Output<String>

The date this resource was created.

Link copied to clipboard

Configuration block with destination configuration. See destination_config below.

Link copied to clipboard
val functionName: Output<String>

Name of the Function Compute Function.

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

The date this resource was last modified.

Link copied to clipboard

Maximum age of a request that Function Compute sends to a function for processing in seconds. Valid values between 1 and 2592000 (between 60 and 21600 before v1.167.0).

Link copied to clipboard

Maximum number of times to retry when the function returns an error. Valid values between 0 and 8 (between 0 and 2 before v1.167.0). Defaults to 2.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val qualifier: Output<String>?

Function Compute Function published version, LATEST, or Function Compute Alias name. The default value is LATEST.

Link copied to clipboard
val serviceName: Output<String>

Name of the Function Compute Function, omitting any version or alias qualifier.

Link copied to clipboard

Function Compute async job configuration(also known as Task Mode). valid values true or false, default false

Link copied to clipboard
val urn: Output<String>