Class TaskDefinition


  • public class TaskDefinition
    extends com.pulumi.resources.CustomResource
    Manages a revision of an ECS task definition to be used in `aws.ecs.Service`. ## Example Usage ### Basic Example
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ecs.TaskDefinition;
     import com.pulumi.aws.ecs.TaskDefinitionArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionPlacementConstraintArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs;
     import static com.pulumi.codegen.internal.Serialization.*;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 service = new TaskDefinition("service", TaskDefinitionArgs.builder()
                 .placementConstraints(TaskDefinitionPlacementConstraintArgs.builder()
                     .type("memberOf")
                     .expression("attribute:ecs.availability-zone in [us-west-2a, us-west-2b]")
                     .build())
                 .volumes(TaskDefinitionVolumeArgs.builder()
                     .name("service-storage")
                     .hostPath("/ecs/service-storage")
                     .build())
                 .family("service")
                 .containerDefinitions(serializeJson(
                     jsonArray(
                         jsonObject(
                             jsonProperty("name", "first"),
                             jsonProperty("image", "service-first"),
                             jsonProperty("cpu", 10),
                             jsonProperty("memory", 512),
                             jsonProperty("essential", true),
                             jsonProperty("portMappings", jsonArray(jsonObject(
                                 jsonProperty("containerPort", 80),
                                 jsonProperty("hostPort", 80)
                             )))
                         ), 
                         jsonObject(
                             jsonProperty("name", "second"),
                             jsonProperty("image", "service-second"),
                             jsonProperty("cpu", 10),
                             jsonProperty("memory", 256),
                             jsonProperty("essential", true),
                             jsonProperty("portMappings", jsonArray(jsonObject(
                                 jsonProperty("containerPort", 443),
                                 jsonProperty("hostPort", 443)
                             )))
                         )
                     )))
                 .build());
     
         }
     }
     
     
    ### With App Mesh Proxy
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ecs.TaskDefinition;
     import com.pulumi.aws.ecs.TaskDefinitionArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionProxyConfigurationArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.FileArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 service = new TaskDefinition("service", TaskDefinitionArgs.builder()
                 .proxyConfiguration(TaskDefinitionProxyConfigurationArgs.builder()
                     .type("APPMESH")
                     .containerName("applicationContainerName")
                     .properties(Map.ofEntries(
                         Map.entry("AppPorts", "8080"),
                         Map.entry("EgressIgnoredIPs", "169.254.170.2,169.254.169.254"),
                         Map.entry("IgnoredUID", "1337"),
                         Map.entry("ProxyEgressPort", "15001"),
                         Map.entry("ProxyIngressPort", "15000")
                     ))
                     .build())
                 .family("service")
                 .containerDefinitions(StdFunctions.file(FileArgs.builder()
                     .input("task-definitions/service.json")
                     .build()).result())
                 .build());
     
         }
     }
     
     
    ### Example Using `dockerVolumeConfiguration`
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ecs.TaskDefinition;
     import com.pulumi.aws.ecs.TaskDefinitionArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeDockerVolumeConfigurationArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.FileArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 service = new TaskDefinition("service", TaskDefinitionArgs.builder()
                 .volumes(TaskDefinitionVolumeArgs.builder()
                     .dockerVolumeConfiguration(TaskDefinitionVolumeDockerVolumeConfigurationArgs.builder()
                         .scope("shared")
                         .autoprovision(true)
                         .driver("local")
                         .driverOpts(Map.ofEntries(
                             Map.entry("type", "nfs"),
                             Map.entry("device", String.format("%s:/", fs.dnsName())),
                             Map.entry("o", String.format("addr=%s,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport", fs.dnsName()))
                         ))
                         .build())
                     .name("service-storage")
                     .build())
                 .family("service")
                 .containerDefinitions(StdFunctions.file(FileArgs.builder()
                     .input("task-definitions/service.json")
                     .build()).result())
                 .build());
     
         }
     }
     
     
    ### Example Using `efsVolumeConfiguration`
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ecs.TaskDefinition;
     import com.pulumi.aws.ecs.TaskDefinitionArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeEfsVolumeConfigurationArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.FileArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 service = new TaskDefinition("service", TaskDefinitionArgs.builder()
                 .volumes(TaskDefinitionVolumeArgs.builder()
                     .efsVolumeConfiguration(TaskDefinitionVolumeEfsVolumeConfigurationArgs.builder()
                         .authorizationConfig(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs.builder()
                             .accessPointId(test.id())
                             .iam("ENABLED")
                             .build())
                         .fileSystemId(fs.id())
                         .rootDirectory("/opt/data")
                         .transitEncryption("ENABLED")
                         .transitEncryptionPort(2999)
                         .build())
                     .name("service-storage")
                     .build())
                 .family("service")
                 .containerDefinitions(StdFunctions.file(FileArgs.builder()
                     .input("task-definitions/service.json")
                     .build()).result())
                 .build());
     
         }
     }
     
     
    ### Example Using `fsxWindowsFileServerVolumeConfiguration`
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.secretsmanager.SecretVersion;
     import com.pulumi.aws.secretsmanager.SecretVersionArgs;
     import com.pulumi.aws.ecs.TaskDefinition;
     import com.pulumi.aws.ecs.TaskDefinitionArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.FileArgs;
     import static com.pulumi.codegen.internal.Serialization.*;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 test = new SecretVersion("test", SecretVersionArgs.builder()
                 .secretId(testAwsSecretsmanagerSecret.id())
                 .secretString(serializeJson(
                     jsonObject(
                         jsonProperty("username", "admin"),
                         jsonProperty("password", testAwsDirectoryServiceDirectory.password())
                     )))
                 .build());
     
             var service = new TaskDefinition("service", TaskDefinitionArgs.builder()
                 .volumes(TaskDefinitionVolumeArgs.builder()
                     .fsxWindowsFileServerVolumeConfiguration(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs.builder()
                         .authorizationConfig(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs.builder()
                             .credentialsParameter(test.arn())
                             .domain(testAwsDirectoryServiceDirectory.name())
                             .build())
                         .fileSystemId(testAwsFsxWindowsFileSystem.id())
                         .rootDirectory("\\data")
                         .build())
                     .name("service-storage")
                     .build())
                 .family("service")
                 .containerDefinitions(StdFunctions.file(FileArgs.builder()
                     .input("task-definitions/service.json")
                     .build()).result())
                 .build());
     
         }
     }
     
     
    ### Example Using `containerDefinitions`
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ecs.TaskDefinition;
     import com.pulumi.aws.ecs.TaskDefinitionArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 test = new TaskDefinition("test", TaskDefinitionArgs.builder()
                 .family("test")
                 .containerDefinitions("""
     [
       {
         "cpu": 10,
         "command": ["sleep", "10"],
         "entryPoint": ["/"],
         "environment": [
           {"name": "VARNAME", "value": "VARVAL"}
         ],
         "essential": true,
         "image": "jenkins",
         "memory": 128,
         "name": "jenkins",
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 8080
           }
         ]
       }
     ]
                 """)
                 .build());
     
         }
     }
     
     
    ### Example Using `runtimePlatform` and `fargate`
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.ecs.TaskDefinition;
     import com.pulumi.aws.ecs.TaskDefinitionArgs;
     import com.pulumi.aws.ecs.inputs.TaskDefinitionRuntimePlatformArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 test = new TaskDefinition("test", TaskDefinitionArgs.builder()
                 .runtimePlatform(TaskDefinitionRuntimePlatformArgs.builder()
                     .operatingSystemFamily("WINDOWS_SERVER_2019_CORE")
                     .cpuArchitecture("X86_64")
                     .build())
                 .family("test")
                 .requiresCompatibilities("FARGATE")
                 .networkMode("awsvpc")
                 .cpu("1024")
                 .memory("2048")
                 .containerDefinitions("""
     [
       {
         "name": "iis",
         "image": "mcr.microsoft.com/windows/servercore/iis",
         "cpu": 1024,
         "memory": 2048,
         "essential": true
       }
     ]
                 """)
                 .build());
     
         }
     }
     
     
    ## Import ### Identity Schema #### Required * `family` (String) The unique name for your task definition. * `revision` (Integer) The revision of the task in a particular family. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import ECS Task Definitions using their ARNs. For example: ```sh $ pulumi import aws:ecs/taskDefinition:TaskDefinition example arn:aws:ecs:us-east-1:012345678910:task-definition/mytaskfamily:123 ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.lang.String> arn()  
      com.pulumi.core.Output<java.lang.String> arnWithoutRevision()  
      com.pulumi.core.Output<java.lang.String> containerDefinitions()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> cpu()  
      com.pulumi.core.Output<java.lang.Boolean> enableFaultInjection()  
      com.pulumi.core.Output<java.util.Optional<TaskDefinitionEphemeralStorage>> ephemeralStorage()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> executionRoleArn()  
      com.pulumi.core.Output<java.lang.String> family()  
      static TaskDefinition get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, TaskDefinitionState state, com.pulumi.resources.CustomResourceOptions options)
      Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> ipcMode()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> memory()  
      com.pulumi.core.Output<java.lang.String> networkMode()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> pidMode()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionPlacementConstraint>>> placementConstraints()  
      com.pulumi.core.Output<java.util.Optional<TaskDefinitionProxyConfiguration>> proxyConfiguration()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> requiresCompatibilities()  
      com.pulumi.core.Output<java.lang.Integer> revision()  
      com.pulumi.core.Output<java.util.Optional<TaskDefinitionRuntimePlatform>> runtimePlatform()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> skipDestroy()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()  
      com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> taskRoleArn()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> trackLatest()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionVolume>>> volumes()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • TaskDefinition

        public TaskDefinition​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • TaskDefinition

        public TaskDefinition​(java.lang.String name,
                              TaskDefinitionArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • TaskDefinition

        public TaskDefinition​(java.lang.String name,
                              TaskDefinitionArgs args,
                              @Nullable
                              com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        Full ARN of the Task Definition (including both `family` and `revision`).
      • arnWithoutRevision

        public com.pulumi.core.Output<java.lang.String> arnWithoutRevision()
        Returns:
        ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details.
      • containerDefinitions

        public com.pulumi.core.Output<java.lang.String> containerDefinitions()
        Returns:
        List of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide).
      • cpu

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> cpu()
        Returns:
        Number of CPU units used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required.
      • enableFaultInjection

        public com.pulumi.core.Output<java.lang.Boolean> enableFaultInjection()
        Returns:
        Enables fault injection and allows for fault injection requests to be accepted from the task's containers. Default is `false`.
      • ephemeralStorage

        public com.pulumi.core.Output<java.util.Optional<TaskDefinitionEphemeralStorage>> ephemeralStorage()
        Returns:
        Amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage.
      • executionRoleArn

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> executionRoleArn()
        Returns:
        ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume.
      • family

        public com.pulumi.core.Output<java.lang.String> family()
        Returns:
        Unique name for your task definition. The following arguments are optional:
      • ipcMode

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> ipcMode()
        Returns:
        IPC resource namespace to be used for the containers in the task. Valid values: `host`, `task`, `none`.
      • memory

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> memory()
        Returns:
        Amount (in MiB) of memory used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required.
      • networkMode

        public com.pulumi.core.Output<java.lang.String> networkMode()
        Returns:
        Docker networking mode to use for the containers in the task. Valid values: `awsvpc`, `bridge`, `host`, and `none`.
      • pidMode

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> pidMode()
        Returns:
        Process namespace to use for the containers in the task. Valid values: host` , `task`.
      • placementConstraints

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionPlacementConstraint>>> placementConstraints()
        Returns:
        Configuration block for rules that are taken into consideration during task placement. Maximum number of `placementConstraints` is `10`. Detailed below.
      • proxyConfiguration

        public com.pulumi.core.Output<java.util.Optional<TaskDefinitionProxyConfiguration>> proxyConfiguration()
        Returns:
        Configuration block for the App Mesh proxy. Detailed below.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • requiresCompatibilities

        public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> requiresCompatibilities()
        Returns:
        Set of launch types required by the task. Valid values: `EC2`, `EXTERNAL`, `FARGATE`, `MANAGED_INSTANCES`.
      • revision

        public com.pulumi.core.Output<java.lang.Integer> revision()
        Returns:
        Revision of the task in a particular family.
      • runtimePlatform

        public com.pulumi.core.Output<java.util.Optional<TaskDefinitionRuntimePlatform>> runtimePlatform()
        Returns:
        Configuration block for runtimePlatform that containers in your task may use.
      • skipDestroy

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> skipDestroy()
        Returns:
        Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • taskRoleArn

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> taskRoleArn()
        Returns:
        ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services.
      • trackLatest

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> trackLatest()
        Returns:
        Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource.
      • volumes

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TaskDefinitionVolume>>> volumes()
        Returns:
        Repeatable configuration block for volumes that containers in your task may use. Detailed below. > **NOTE:** Proper escaping is required for JSON field values containing quotes (`"`) such as `environment` values. If directly setting the JSON, they should be escaped as `\"` in the JSON, e.g., `"value": "I \"love\" escaped quotes"`. If using a variable value, they should be escaped as `\\\"` in the variable, e.g., `value = "I \\\"love\\\" escaped quotes"` in the variable and `"value": "${var.myvariable}"` in the JSON. > **Note:** Fault injection only works with tasks using the `awsvpc` or `host` network modes. Fault injection isn't available on Windows.
      • get

        public static TaskDefinition get​(java.lang.String name,
                                         com.pulumi.core.Output<java.lang.String> id,
                                         @Nullable
                                         TaskDefinitionState state,
                                         @Nullable
                                         com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.