Function Async Invoke Config Args
data class FunctionAsyncInvokeConfigArgs(val destinationConfig: Output<FunctionAsyncInvokeConfigDestinationConfigArgs>? = null, val functionName: Output<String>? = null, val maximumEventAgeInSeconds: Output<Int>? = null, val maximumRetryAttempts: Output<Int>? = null, val qualifier: Output<String>? = null, val serviceName: Output<String>? = null, val statefulInvocation: Output<Boolean>? = null) : ConvertibleToJava<FunctionAsyncInvokeConfigArgs>
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
orfc: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());
}
}
Content copied to clipboard
Import
Function Compute Function Async Invoke Configs can be imported using the id, e.g.
$ pulumi import alicloud:fc/functionAsyncInvokeConfig:FunctionAsyncInvokeConfig example my_function
Content copied to clipboard
Constructors
Link copied to clipboard
fun FunctionAsyncInvokeConfigArgs(destinationConfig: Output<FunctionAsyncInvokeConfigDestinationConfigArgs>? = null, functionName: Output<String>? = null, maximumEventAgeInSeconds: Output<Int>? = null, maximumRetryAttempts: Output<Int>? = null, qualifier: Output<String>? = null, serviceName: Output<String>? = null, statefulInvocation: Output<Boolean>? = null)