# coding=utf-8
# *** WARNING: this file was generated by the Pulumi SDK Generator. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'ConnectorDefinitionConnectorDefinitionVersionArgs',
    'ConnectorDefinitionConnectorArgs',
    'ConnectorDefinitionVersionConnectorArgs',
    'CoreDefinitionCoreDefinitionVersionArgs',
    'CoreDefinitionCoreArgs',
    'CoreDefinitionVersionCoreArgs',
    'DeviceDefinitionDeviceDefinitionVersionArgs',
    'DeviceDefinitionDeviceArgs',
    'DeviceDefinitionVersionDeviceArgs',
    'FunctionDefinitionDefaultConfigArgs',
    'FunctionDefinitionEnvironmentArgs',
    'FunctionDefinitionExecutionArgs',
    'FunctionDefinitionFunctionConfigurationArgs',
    'FunctionDefinitionFunctionDefinitionVersionArgs',
    'FunctionDefinitionFunctionArgs',
    'FunctionDefinitionResourceAccessPolicyArgs',
    'FunctionDefinitionRunAsArgs',
    'FunctionDefinitionVersionDefaultConfigArgs',
    'FunctionDefinitionVersionEnvironmentArgs',
    'FunctionDefinitionVersionExecutionArgs',
    'FunctionDefinitionVersionFunctionConfigurationArgs',
    'FunctionDefinitionVersionFunctionArgs',
    'FunctionDefinitionVersionResourceAccessPolicyArgs',
    'FunctionDefinitionVersionRunAsArgs',
    'GroupGroupVersionArgs',
    'LoggerDefinitionLoggerDefinitionVersionArgs',
    'LoggerDefinitionLoggerArgs',
    'LoggerDefinitionVersionLoggerArgs',
    'ResourceDefinitionGroupOwnerSettingArgs',
    'ResourceDefinitionLocalDeviceResourceDataArgs',
    'ResourceDefinitionLocalVolumeResourceDataArgs',
    'ResourceDefinitionResourceDataContainerArgs',
    'ResourceDefinitionResourceDefinitionVersionArgs',
    'ResourceDefinitionResourceDownloadOwnerSettingArgs',
    'ResourceDefinitionResourceInstanceArgs',
    'ResourceDefinitionS3MachineLearningModelResourceDataArgs',
    'ResourceDefinitionSageMakerMachineLearningModelResourceDataArgs',
    'ResourceDefinitionSecretsManagerSecretResourceDataArgs',
    'ResourceDefinitionVersionGroupOwnerSettingArgs',
    'ResourceDefinitionVersionLocalDeviceResourceDataArgs',
    'ResourceDefinitionVersionLocalVolumeResourceDataArgs',
    'ResourceDefinitionVersionResourceDataContainerArgs',
    'ResourceDefinitionVersionResourceDownloadOwnerSettingArgs',
    'ResourceDefinitionVersionResourceInstanceArgs',
    'ResourceDefinitionVersionS3MachineLearningModelResourceDataArgs',
    'ResourceDefinitionVersionSageMakerMachineLearningModelResourceDataArgs',
    'ResourceDefinitionVersionSecretsManagerSecretResourceDataArgs',
    'SubscriptionDefinitionSubscriptionDefinitionVersionArgs',
    'SubscriptionDefinitionSubscriptionArgs',
    'SubscriptionDefinitionVersionSubscriptionArgs',
]

@pulumi.input_type
class ConnectorDefinitionConnectorDefinitionVersionArgs:
    def __init__(__self__, *,
                 connectors: pulumi.Input[Sequence[pulumi.Input['ConnectorDefinitionConnectorArgs']]]):
        pulumi.set(__self__, "connectors", connectors)

    @property
    @pulumi.getter
    def connectors(self) -> pulumi.Input[Sequence[pulumi.Input['ConnectorDefinitionConnectorArgs']]]:
        return pulumi.get(self, "connectors")

    @connectors.setter
    def connectors(self, value: pulumi.Input[Sequence[pulumi.Input['ConnectorDefinitionConnectorArgs']]]):
        pulumi.set(self, "connectors", value)


@pulumi.input_type
class ConnectorDefinitionConnectorArgs:
    def __init__(__self__, *,
                 connector_arn: pulumi.Input[str],
                 id: pulumi.Input[str],
                 parameters: Optional[Any] = None):
        pulumi.set(__self__, "connector_arn", connector_arn)
        pulumi.set(__self__, "id", id)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="connectorArn")
    def connector_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "connector_arn")

    @connector_arn.setter
    def connector_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "connector_arn", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Any]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Any]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class ConnectorDefinitionVersionConnectorArgs:
    def __init__(__self__, *,
                 connector_arn: pulumi.Input[str],
                 id: pulumi.Input[str],
                 parameters: Optional[Any] = None):
        pulumi.set(__self__, "connector_arn", connector_arn)
        pulumi.set(__self__, "id", id)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @property
    @pulumi.getter(name="connectorArn")
    def connector_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "connector_arn")

    @connector_arn.setter
    def connector_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "connector_arn", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def parameters(self) -> Optional[Any]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[Any]):
        pulumi.set(self, "parameters", value)


@pulumi.input_type
class CoreDefinitionCoreDefinitionVersionArgs:
    def __init__(__self__, *,
                 cores: pulumi.Input[Sequence[pulumi.Input['CoreDefinitionCoreArgs']]]):
        pulumi.set(__self__, "cores", cores)

    @property
    @pulumi.getter
    def cores(self) -> pulumi.Input[Sequence[pulumi.Input['CoreDefinitionCoreArgs']]]:
        return pulumi.get(self, "cores")

    @cores.setter
    def cores(self, value: pulumi.Input[Sequence[pulumi.Input['CoreDefinitionCoreArgs']]]):
        pulumi.set(self, "cores", value)


@pulumi.input_type
class CoreDefinitionCoreArgs:
    def __init__(__self__, *,
                 certificate_arn: pulumi.Input[str],
                 id: pulumi.Input[str],
                 thing_arn: pulumi.Input[str],
                 sync_shadow: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "certificate_arn", certificate_arn)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "thing_arn", thing_arn)
        if sync_shadow is not None:
            pulumi.set(__self__, "sync_shadow", sync_shadow)

    @property
    @pulumi.getter(name="certificateArn")
    def certificate_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "certificate_arn")

    @certificate_arn.setter
    def certificate_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "certificate_arn", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="thingArn")
    def thing_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "thing_arn")

    @thing_arn.setter
    def thing_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "thing_arn", value)

    @property
    @pulumi.getter(name="syncShadow")
    def sync_shadow(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "sync_shadow")

    @sync_shadow.setter
    def sync_shadow(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "sync_shadow", value)


@pulumi.input_type
class CoreDefinitionVersionCoreArgs:
    def __init__(__self__, *,
                 certificate_arn: pulumi.Input[str],
                 id: pulumi.Input[str],
                 thing_arn: pulumi.Input[str],
                 sync_shadow: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "certificate_arn", certificate_arn)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "thing_arn", thing_arn)
        if sync_shadow is not None:
            pulumi.set(__self__, "sync_shadow", sync_shadow)

    @property
    @pulumi.getter(name="certificateArn")
    def certificate_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "certificate_arn")

    @certificate_arn.setter
    def certificate_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "certificate_arn", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="thingArn")
    def thing_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "thing_arn")

    @thing_arn.setter
    def thing_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "thing_arn", value)

    @property
    @pulumi.getter(name="syncShadow")
    def sync_shadow(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "sync_shadow")

    @sync_shadow.setter
    def sync_shadow(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "sync_shadow", value)


@pulumi.input_type
class DeviceDefinitionDeviceDefinitionVersionArgs:
    def __init__(__self__, *,
                 devices: pulumi.Input[Sequence[pulumi.Input['DeviceDefinitionDeviceArgs']]]):
        pulumi.set(__self__, "devices", devices)

    @property
    @pulumi.getter
    def devices(self) -> pulumi.Input[Sequence[pulumi.Input['DeviceDefinitionDeviceArgs']]]:
        return pulumi.get(self, "devices")

    @devices.setter
    def devices(self, value: pulumi.Input[Sequence[pulumi.Input['DeviceDefinitionDeviceArgs']]]):
        pulumi.set(self, "devices", value)


@pulumi.input_type
class DeviceDefinitionDeviceArgs:
    def __init__(__self__, *,
                 certificate_arn: pulumi.Input[str],
                 id: pulumi.Input[str],
                 thing_arn: pulumi.Input[str],
                 sync_shadow: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "certificate_arn", certificate_arn)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "thing_arn", thing_arn)
        if sync_shadow is not None:
            pulumi.set(__self__, "sync_shadow", sync_shadow)

    @property
    @pulumi.getter(name="certificateArn")
    def certificate_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "certificate_arn")

    @certificate_arn.setter
    def certificate_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "certificate_arn", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="thingArn")
    def thing_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "thing_arn")

    @thing_arn.setter
    def thing_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "thing_arn", value)

    @property
    @pulumi.getter(name="syncShadow")
    def sync_shadow(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "sync_shadow")

    @sync_shadow.setter
    def sync_shadow(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "sync_shadow", value)


@pulumi.input_type
class DeviceDefinitionVersionDeviceArgs:
    def __init__(__self__, *,
                 certificate_arn: pulumi.Input[str],
                 id: pulumi.Input[str],
                 thing_arn: pulumi.Input[str],
                 sync_shadow: Optional[pulumi.Input[bool]] = None):
        pulumi.set(__self__, "certificate_arn", certificate_arn)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "thing_arn", thing_arn)
        if sync_shadow is not None:
            pulumi.set(__self__, "sync_shadow", sync_shadow)

    @property
    @pulumi.getter(name="certificateArn")
    def certificate_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "certificate_arn")

    @certificate_arn.setter
    def certificate_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "certificate_arn", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="thingArn")
    def thing_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "thing_arn")

    @thing_arn.setter
    def thing_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "thing_arn", value)

    @property
    @pulumi.getter(name="syncShadow")
    def sync_shadow(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "sync_shadow")

    @sync_shadow.setter
    def sync_shadow(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "sync_shadow", value)


@pulumi.input_type
class FunctionDefinitionDefaultConfigArgs:
    def __init__(__self__, *,
                 execution: pulumi.Input['FunctionDefinitionExecutionArgs']):
        pulumi.set(__self__, "execution", execution)

    @property
    @pulumi.getter
    def execution(self) -> pulumi.Input['FunctionDefinitionExecutionArgs']:
        return pulumi.get(self, "execution")

    @execution.setter
    def execution(self, value: pulumi.Input['FunctionDefinitionExecutionArgs']):
        pulumi.set(self, "execution", value)


@pulumi.input_type
class FunctionDefinitionEnvironmentArgs:
    def __init__(__self__, *,
                 access_sysfs: Optional[pulumi.Input[bool]] = None,
                 execution: Optional[pulumi.Input['FunctionDefinitionExecutionArgs']] = None,
                 resource_access_policies: Optional[pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionResourceAccessPolicyArgs']]]] = None,
                 variables: Optional[Any] = None):
        if access_sysfs is not None:
            pulumi.set(__self__, "access_sysfs", access_sysfs)
        if execution is not None:
            pulumi.set(__self__, "execution", execution)
        if resource_access_policies is not None:
            pulumi.set(__self__, "resource_access_policies", resource_access_policies)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @property
    @pulumi.getter(name="accessSysfs")
    def access_sysfs(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "access_sysfs")

    @access_sysfs.setter
    def access_sysfs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "access_sysfs", value)

    @property
    @pulumi.getter
    def execution(self) -> Optional[pulumi.Input['FunctionDefinitionExecutionArgs']]:
        return pulumi.get(self, "execution")

    @execution.setter
    def execution(self, value: Optional[pulumi.Input['FunctionDefinitionExecutionArgs']]):
        pulumi.set(self, "execution", value)

    @property
    @pulumi.getter(name="resourceAccessPolicies")
    def resource_access_policies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionResourceAccessPolicyArgs']]]]:
        return pulumi.get(self, "resource_access_policies")

    @resource_access_policies.setter
    def resource_access_policies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionResourceAccessPolicyArgs']]]]):
        pulumi.set(self, "resource_access_policies", value)

    @property
    @pulumi.getter
    def variables(self) -> Optional[Any]:
        return pulumi.get(self, "variables")

    @variables.setter
    def variables(self, value: Optional[Any]):
        pulumi.set(self, "variables", value)


@pulumi.input_type
class FunctionDefinitionExecutionArgs:
    def __init__(__self__, *,
                 isolation_mode: Optional[pulumi.Input[str]] = None,
                 run_as: Optional[pulumi.Input['FunctionDefinitionRunAsArgs']] = None):
        if isolation_mode is not None:
            pulumi.set(__self__, "isolation_mode", isolation_mode)
        if run_as is not None:
            pulumi.set(__self__, "run_as", run_as)

    @property
    @pulumi.getter(name="isolationMode")
    def isolation_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "isolation_mode")

    @isolation_mode.setter
    def isolation_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "isolation_mode", value)

    @property
    @pulumi.getter(name="runAs")
    def run_as(self) -> Optional[pulumi.Input['FunctionDefinitionRunAsArgs']]:
        return pulumi.get(self, "run_as")

    @run_as.setter
    def run_as(self, value: Optional[pulumi.Input['FunctionDefinitionRunAsArgs']]):
        pulumi.set(self, "run_as", value)


@pulumi.input_type
class FunctionDefinitionFunctionConfigurationArgs:
    def __init__(__self__, *,
                 encoding_type: Optional[pulumi.Input[str]] = None,
                 environment: Optional[pulumi.Input['FunctionDefinitionEnvironmentArgs']] = None,
                 exec_args: Optional[pulumi.Input[str]] = None,
                 executable: Optional[pulumi.Input[str]] = None,
                 memory_size: Optional[pulumi.Input[int]] = None,
                 pinned: Optional[pulumi.Input[bool]] = None,
                 timeout: Optional[pulumi.Input[int]] = None):
        if encoding_type is not None:
            pulumi.set(__self__, "encoding_type", encoding_type)
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if exec_args is not None:
            pulumi.set(__self__, "exec_args", exec_args)
        if executable is not None:
            pulumi.set(__self__, "executable", executable)
        if memory_size is not None:
            pulumi.set(__self__, "memory_size", memory_size)
        if pinned is not None:
            pulumi.set(__self__, "pinned", pinned)
        if timeout is not None:
            pulumi.set(__self__, "timeout", timeout)

    @property
    @pulumi.getter(name="encodingType")
    def encoding_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encoding_type")

    @encoding_type.setter
    def encoding_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encoding_type", value)

    @property
    @pulumi.getter
    def environment(self) -> Optional[pulumi.Input['FunctionDefinitionEnvironmentArgs']]:
        return pulumi.get(self, "environment")

    @environment.setter
    def environment(self, value: Optional[pulumi.Input['FunctionDefinitionEnvironmentArgs']]):
        pulumi.set(self, "environment", value)

    @property
    @pulumi.getter(name="execArgs")
    def exec_args(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "exec_args")

    @exec_args.setter
    def exec_args(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "exec_args", value)

    @property
    @pulumi.getter
    def executable(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "executable")

    @executable.setter
    def executable(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "executable", value)

    @property
    @pulumi.getter(name="memorySize")
    def memory_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "memory_size")

    @memory_size.setter
    def memory_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "memory_size", value)

    @property
    @pulumi.getter
    def pinned(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "pinned")

    @pinned.setter
    def pinned(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "pinned", value)

    @property
    @pulumi.getter
    def timeout(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "timeout")

    @timeout.setter
    def timeout(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "timeout", value)


@pulumi.input_type
class FunctionDefinitionFunctionDefinitionVersionArgs:
    def __init__(__self__, *,
                 functions: pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionFunctionArgs']]],
                 default_config: Optional[pulumi.Input['FunctionDefinitionDefaultConfigArgs']] = None):
        pulumi.set(__self__, "functions", functions)
        if default_config is not None:
            pulumi.set(__self__, "default_config", default_config)

    @property
    @pulumi.getter
    def functions(self) -> pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionFunctionArgs']]]:
        return pulumi.get(self, "functions")

    @functions.setter
    def functions(self, value: pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionFunctionArgs']]]):
        pulumi.set(self, "functions", value)

    @property
    @pulumi.getter(name="defaultConfig")
    def default_config(self) -> Optional[pulumi.Input['FunctionDefinitionDefaultConfigArgs']]:
        return pulumi.get(self, "default_config")

    @default_config.setter
    def default_config(self, value: Optional[pulumi.Input['FunctionDefinitionDefaultConfigArgs']]):
        pulumi.set(self, "default_config", value)


@pulumi.input_type
class FunctionDefinitionFunctionArgs:
    def __init__(__self__, *,
                 function_arn: pulumi.Input[str],
                 function_configuration: pulumi.Input['FunctionDefinitionFunctionConfigurationArgs'],
                 id: pulumi.Input[str]):
        pulumi.set(__self__, "function_arn", function_arn)
        pulumi.set(__self__, "function_configuration", function_configuration)
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="functionArn")
    def function_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "function_arn")

    @function_arn.setter
    def function_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "function_arn", value)

    @property
    @pulumi.getter(name="functionConfiguration")
    def function_configuration(self) -> pulumi.Input['FunctionDefinitionFunctionConfigurationArgs']:
        return pulumi.get(self, "function_configuration")

    @function_configuration.setter
    def function_configuration(self, value: pulumi.Input['FunctionDefinitionFunctionConfigurationArgs']):
        pulumi.set(self, "function_configuration", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)


@pulumi.input_type
class FunctionDefinitionResourceAccessPolicyArgs:
    def __init__(__self__, *,
                 resource_id: pulumi.Input[str],
                 permission: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "resource_id", resource_id)
        if permission is not None:
            pulumi.set(__self__, "permission", permission)

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "resource_id")

    @resource_id.setter
    def resource_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "resource_id", value)

    @property
    @pulumi.getter
    def permission(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "permission")

    @permission.setter
    def permission(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "permission", value)


@pulumi.input_type
class FunctionDefinitionRunAsArgs:
    def __init__(__self__, *,
                 gid: Optional[pulumi.Input[int]] = None,
                 uid: Optional[pulumi.Input[int]] = None):
        if gid is not None:
            pulumi.set(__self__, "gid", gid)
        if uid is not None:
            pulumi.set(__self__, "uid", uid)

    @property
    @pulumi.getter
    def gid(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "gid")

    @gid.setter
    def gid(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "gid", value)

    @property
    @pulumi.getter
    def uid(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "uid")

    @uid.setter
    def uid(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "uid", value)


@pulumi.input_type
class FunctionDefinitionVersionDefaultConfigArgs:
    def __init__(__self__, *,
                 execution: pulumi.Input['FunctionDefinitionVersionExecutionArgs']):
        pulumi.set(__self__, "execution", execution)

    @property
    @pulumi.getter
    def execution(self) -> pulumi.Input['FunctionDefinitionVersionExecutionArgs']:
        return pulumi.get(self, "execution")

    @execution.setter
    def execution(self, value: pulumi.Input['FunctionDefinitionVersionExecutionArgs']):
        pulumi.set(self, "execution", value)


@pulumi.input_type
class FunctionDefinitionVersionEnvironmentArgs:
    def __init__(__self__, *,
                 access_sysfs: Optional[pulumi.Input[bool]] = None,
                 execution: Optional[pulumi.Input['FunctionDefinitionVersionExecutionArgs']] = None,
                 resource_access_policies: Optional[pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionVersionResourceAccessPolicyArgs']]]] = None,
                 variables: Optional[Any] = None):
        if access_sysfs is not None:
            pulumi.set(__self__, "access_sysfs", access_sysfs)
        if execution is not None:
            pulumi.set(__self__, "execution", execution)
        if resource_access_policies is not None:
            pulumi.set(__self__, "resource_access_policies", resource_access_policies)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @property
    @pulumi.getter(name="accessSysfs")
    def access_sysfs(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "access_sysfs")

    @access_sysfs.setter
    def access_sysfs(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "access_sysfs", value)

    @property
    @pulumi.getter
    def execution(self) -> Optional[pulumi.Input['FunctionDefinitionVersionExecutionArgs']]:
        return pulumi.get(self, "execution")

    @execution.setter
    def execution(self, value: Optional[pulumi.Input['FunctionDefinitionVersionExecutionArgs']]):
        pulumi.set(self, "execution", value)

    @property
    @pulumi.getter(name="resourceAccessPolicies")
    def resource_access_policies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionVersionResourceAccessPolicyArgs']]]]:
        return pulumi.get(self, "resource_access_policies")

    @resource_access_policies.setter
    def resource_access_policies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['FunctionDefinitionVersionResourceAccessPolicyArgs']]]]):
        pulumi.set(self, "resource_access_policies", value)

    @property
    @pulumi.getter
    def variables(self) -> Optional[Any]:
        return pulumi.get(self, "variables")

    @variables.setter
    def variables(self, value: Optional[Any]):
        pulumi.set(self, "variables", value)


@pulumi.input_type
class FunctionDefinitionVersionExecutionArgs:
    def __init__(__self__, *,
                 isolation_mode: Optional[pulumi.Input[str]] = None,
                 run_as: Optional[pulumi.Input['FunctionDefinitionVersionRunAsArgs']] = None):
        if isolation_mode is not None:
            pulumi.set(__self__, "isolation_mode", isolation_mode)
        if run_as is not None:
            pulumi.set(__self__, "run_as", run_as)

    @property
    @pulumi.getter(name="isolationMode")
    def isolation_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "isolation_mode")

    @isolation_mode.setter
    def isolation_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "isolation_mode", value)

    @property
    @pulumi.getter(name="runAs")
    def run_as(self) -> Optional[pulumi.Input['FunctionDefinitionVersionRunAsArgs']]:
        return pulumi.get(self, "run_as")

    @run_as.setter
    def run_as(self, value: Optional[pulumi.Input['FunctionDefinitionVersionRunAsArgs']]):
        pulumi.set(self, "run_as", value)


@pulumi.input_type
class FunctionDefinitionVersionFunctionConfigurationArgs:
    def __init__(__self__, *,
                 encoding_type: Optional[pulumi.Input[str]] = None,
                 environment: Optional[pulumi.Input['FunctionDefinitionVersionEnvironmentArgs']] = None,
                 exec_args: Optional[pulumi.Input[str]] = None,
                 executable: Optional[pulumi.Input[str]] = None,
                 memory_size: Optional[pulumi.Input[int]] = None,
                 pinned: Optional[pulumi.Input[bool]] = None,
                 timeout: Optional[pulumi.Input[int]] = None):
        if encoding_type is not None:
            pulumi.set(__self__, "encoding_type", encoding_type)
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if exec_args is not None:
            pulumi.set(__self__, "exec_args", exec_args)
        if executable is not None:
            pulumi.set(__self__, "executable", executable)
        if memory_size is not None:
            pulumi.set(__self__, "memory_size", memory_size)
        if pinned is not None:
            pulumi.set(__self__, "pinned", pinned)
        if timeout is not None:
            pulumi.set(__self__, "timeout", timeout)

    @property
    @pulumi.getter(name="encodingType")
    def encoding_type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "encoding_type")

    @encoding_type.setter
    def encoding_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "encoding_type", value)

    @property
    @pulumi.getter
    def environment(self) -> Optional[pulumi.Input['FunctionDefinitionVersionEnvironmentArgs']]:
        return pulumi.get(self, "environment")

    @environment.setter
    def environment(self, value: Optional[pulumi.Input['FunctionDefinitionVersionEnvironmentArgs']]):
        pulumi.set(self, "environment", value)

    @property
    @pulumi.getter(name="execArgs")
    def exec_args(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "exec_args")

    @exec_args.setter
    def exec_args(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "exec_args", value)

    @property
    @pulumi.getter
    def executable(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "executable")

    @executable.setter
    def executable(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "executable", value)

    @property
    @pulumi.getter(name="memorySize")
    def memory_size(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "memory_size")

    @memory_size.setter
    def memory_size(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "memory_size", value)

    @property
    @pulumi.getter
    def pinned(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "pinned")

    @pinned.setter
    def pinned(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "pinned", value)

    @property
    @pulumi.getter
    def timeout(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "timeout")

    @timeout.setter
    def timeout(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "timeout", value)


@pulumi.input_type
class FunctionDefinitionVersionFunctionArgs:
    def __init__(__self__, *,
                 function_arn: pulumi.Input[str],
                 function_configuration: pulumi.Input['FunctionDefinitionVersionFunctionConfigurationArgs'],
                 id: pulumi.Input[str]):
        pulumi.set(__self__, "function_arn", function_arn)
        pulumi.set(__self__, "function_configuration", function_configuration)
        pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="functionArn")
    def function_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "function_arn")

    @function_arn.setter
    def function_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "function_arn", value)

    @property
    @pulumi.getter(name="functionConfiguration")
    def function_configuration(self) -> pulumi.Input['FunctionDefinitionVersionFunctionConfigurationArgs']:
        return pulumi.get(self, "function_configuration")

    @function_configuration.setter
    def function_configuration(self, value: pulumi.Input['FunctionDefinitionVersionFunctionConfigurationArgs']):
        pulumi.set(self, "function_configuration", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)


@pulumi.input_type
class FunctionDefinitionVersionResourceAccessPolicyArgs:
    def __init__(__self__, *,
                 resource_id: pulumi.Input[str],
                 permission: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "resource_id", resource_id)
        if permission is not None:
            pulumi.set(__self__, "permission", permission)

    @property
    @pulumi.getter(name="resourceId")
    def resource_id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "resource_id")

    @resource_id.setter
    def resource_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "resource_id", value)

    @property
    @pulumi.getter
    def permission(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "permission")

    @permission.setter
    def permission(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "permission", value)


@pulumi.input_type
class FunctionDefinitionVersionRunAsArgs:
    def __init__(__self__, *,
                 gid: Optional[pulumi.Input[int]] = None,
                 uid: Optional[pulumi.Input[int]] = None):
        if gid is not None:
            pulumi.set(__self__, "gid", gid)
        if uid is not None:
            pulumi.set(__self__, "uid", uid)

    @property
    @pulumi.getter
    def gid(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "gid")

    @gid.setter
    def gid(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "gid", value)

    @property
    @pulumi.getter
    def uid(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "uid")

    @uid.setter
    def uid(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "uid", value)


@pulumi.input_type
class GroupGroupVersionArgs:
    def __init__(__self__, *,
                 connector_definition_version_arn: Optional[pulumi.Input[str]] = None,
                 core_definition_version_arn: Optional[pulumi.Input[str]] = None,
                 device_definition_version_arn: Optional[pulumi.Input[str]] = None,
                 function_definition_version_arn: Optional[pulumi.Input[str]] = None,
                 logger_definition_version_arn: Optional[pulumi.Input[str]] = None,
                 resource_definition_version_arn: Optional[pulumi.Input[str]] = None,
                 subscription_definition_version_arn: Optional[pulumi.Input[str]] = None):
        if connector_definition_version_arn is not None:
            pulumi.set(__self__, "connector_definition_version_arn", connector_definition_version_arn)
        if core_definition_version_arn is not None:
            pulumi.set(__self__, "core_definition_version_arn", core_definition_version_arn)
        if device_definition_version_arn is not None:
            pulumi.set(__self__, "device_definition_version_arn", device_definition_version_arn)
        if function_definition_version_arn is not None:
            pulumi.set(__self__, "function_definition_version_arn", function_definition_version_arn)
        if logger_definition_version_arn is not None:
            pulumi.set(__self__, "logger_definition_version_arn", logger_definition_version_arn)
        if resource_definition_version_arn is not None:
            pulumi.set(__self__, "resource_definition_version_arn", resource_definition_version_arn)
        if subscription_definition_version_arn is not None:
            pulumi.set(__self__, "subscription_definition_version_arn", subscription_definition_version_arn)

    @property
    @pulumi.getter(name="connectorDefinitionVersionArn")
    def connector_definition_version_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "connector_definition_version_arn")

    @connector_definition_version_arn.setter
    def connector_definition_version_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "connector_definition_version_arn", value)

    @property
    @pulumi.getter(name="coreDefinitionVersionArn")
    def core_definition_version_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "core_definition_version_arn")

    @core_definition_version_arn.setter
    def core_definition_version_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "core_definition_version_arn", value)

    @property
    @pulumi.getter(name="deviceDefinitionVersionArn")
    def device_definition_version_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "device_definition_version_arn")

    @device_definition_version_arn.setter
    def device_definition_version_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "device_definition_version_arn", value)

    @property
    @pulumi.getter(name="functionDefinitionVersionArn")
    def function_definition_version_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "function_definition_version_arn")

    @function_definition_version_arn.setter
    def function_definition_version_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "function_definition_version_arn", value)

    @property
    @pulumi.getter(name="loggerDefinitionVersionArn")
    def logger_definition_version_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "logger_definition_version_arn")

    @logger_definition_version_arn.setter
    def logger_definition_version_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "logger_definition_version_arn", value)

    @property
    @pulumi.getter(name="resourceDefinitionVersionArn")
    def resource_definition_version_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "resource_definition_version_arn")

    @resource_definition_version_arn.setter
    def resource_definition_version_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "resource_definition_version_arn", value)

    @property
    @pulumi.getter(name="subscriptionDefinitionVersionArn")
    def subscription_definition_version_arn(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "subscription_definition_version_arn")

    @subscription_definition_version_arn.setter
    def subscription_definition_version_arn(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "subscription_definition_version_arn", value)


@pulumi.input_type
class LoggerDefinitionLoggerDefinitionVersionArgs:
    def __init__(__self__, *,
                 loggers: pulumi.Input[Sequence[pulumi.Input['LoggerDefinitionLoggerArgs']]]):
        pulumi.set(__self__, "loggers", loggers)

    @property
    @pulumi.getter
    def loggers(self) -> pulumi.Input[Sequence[pulumi.Input['LoggerDefinitionLoggerArgs']]]:
        return pulumi.get(self, "loggers")

    @loggers.setter
    def loggers(self, value: pulumi.Input[Sequence[pulumi.Input['LoggerDefinitionLoggerArgs']]]):
        pulumi.set(self, "loggers", value)


@pulumi.input_type
class LoggerDefinitionLoggerArgs:
    def __init__(__self__, *,
                 component: pulumi.Input[str],
                 id: pulumi.Input[str],
                 level: pulumi.Input[str],
                 type: pulumi.Input[str],
                 space: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "component", component)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "level", level)
        pulumi.set(__self__, "type", type)
        if space is not None:
            pulumi.set(__self__, "space", space)

    @property
    @pulumi.getter
    def component(self) -> pulumi.Input[str]:
        return pulumi.get(self, "component")

    @component.setter
    def component(self, value: pulumi.Input[str]):
        pulumi.set(self, "component", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def level(self) -> pulumi.Input[str]:
        return pulumi.get(self, "level")

    @level.setter
    def level(self, value: pulumi.Input[str]):
        pulumi.set(self, "level", value)

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[str]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def space(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "space")

    @space.setter
    def space(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "space", value)


@pulumi.input_type
class LoggerDefinitionVersionLoggerArgs:
    def __init__(__self__, *,
                 component: pulumi.Input[str],
                 id: pulumi.Input[str],
                 level: pulumi.Input[str],
                 type: pulumi.Input[str],
                 space: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "component", component)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "level", level)
        pulumi.set(__self__, "type", type)
        if space is not None:
            pulumi.set(__self__, "space", space)

    @property
    @pulumi.getter
    def component(self) -> pulumi.Input[str]:
        return pulumi.get(self, "component")

    @component.setter
    def component(self, value: pulumi.Input[str]):
        pulumi.set(self, "component", value)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def level(self) -> pulumi.Input[str]:
        return pulumi.get(self, "level")

    @level.setter
    def level(self, value: pulumi.Input[str]):
        pulumi.set(self, "level", value)

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: pulumi.Input[str]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def space(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "space")

    @space.setter
    def space(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "space", value)


@pulumi.input_type
class ResourceDefinitionGroupOwnerSettingArgs:
    def __init__(__self__, *,
                 auto_add_group_owner: pulumi.Input[bool],
                 group_owner: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "auto_add_group_owner", auto_add_group_owner)
        if group_owner is not None:
            pulumi.set(__self__, "group_owner", group_owner)

    @property
    @pulumi.getter(name="autoAddGroupOwner")
    def auto_add_group_owner(self) -> pulumi.Input[bool]:
        return pulumi.get(self, "auto_add_group_owner")

    @auto_add_group_owner.setter
    def auto_add_group_owner(self, value: pulumi.Input[bool]):
        pulumi.set(self, "auto_add_group_owner", value)

    @property
    @pulumi.getter(name="groupOwner")
    def group_owner(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_owner")

    @group_owner.setter
    def group_owner(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_owner", value)


@pulumi.input_type
class ResourceDefinitionLocalDeviceResourceDataArgs:
    def __init__(__self__, *,
                 source_path: pulumi.Input[str],
                 group_owner_setting: Optional[pulumi.Input['ResourceDefinitionGroupOwnerSettingArgs']] = None):
        pulumi.set(__self__, "source_path", source_path)
        if group_owner_setting is not None:
            pulumi.set(__self__, "group_owner_setting", group_owner_setting)

    @property
    @pulumi.getter(name="sourcePath")
    def source_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "source_path")

    @source_path.setter
    def source_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "source_path", value)

    @property
    @pulumi.getter(name="groupOwnerSetting")
    def group_owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionGroupOwnerSettingArgs']]:
        return pulumi.get(self, "group_owner_setting")

    @group_owner_setting.setter
    def group_owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionGroupOwnerSettingArgs']]):
        pulumi.set(self, "group_owner_setting", value)


@pulumi.input_type
class ResourceDefinitionLocalVolumeResourceDataArgs:
    def __init__(__self__, *,
                 destination_path: pulumi.Input[str],
                 source_path: pulumi.Input[str],
                 group_owner_setting: Optional[pulumi.Input['ResourceDefinitionGroupOwnerSettingArgs']] = None):
        pulumi.set(__self__, "destination_path", destination_path)
        pulumi.set(__self__, "source_path", source_path)
        if group_owner_setting is not None:
            pulumi.set(__self__, "group_owner_setting", group_owner_setting)

    @property
    @pulumi.getter(name="destinationPath")
    def destination_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination_path")

    @destination_path.setter
    def destination_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_path", value)

    @property
    @pulumi.getter(name="sourcePath")
    def source_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "source_path")

    @source_path.setter
    def source_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "source_path", value)

    @property
    @pulumi.getter(name="groupOwnerSetting")
    def group_owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionGroupOwnerSettingArgs']]:
        return pulumi.get(self, "group_owner_setting")

    @group_owner_setting.setter
    def group_owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionGroupOwnerSettingArgs']]):
        pulumi.set(self, "group_owner_setting", value)


@pulumi.input_type
class ResourceDefinitionResourceDataContainerArgs:
    def __init__(__self__, *,
                 local_device_resource_data: Optional[pulumi.Input['ResourceDefinitionLocalDeviceResourceDataArgs']] = None,
                 local_volume_resource_data: Optional[pulumi.Input['ResourceDefinitionLocalVolumeResourceDataArgs']] = None,
                 s3_machine_learning_model_resource_data: Optional[pulumi.Input['ResourceDefinitionS3MachineLearningModelResourceDataArgs']] = None,
                 sage_maker_machine_learning_model_resource_data: Optional[pulumi.Input['ResourceDefinitionSageMakerMachineLearningModelResourceDataArgs']] = None,
                 secrets_manager_secret_resource_data: Optional[pulumi.Input['ResourceDefinitionSecretsManagerSecretResourceDataArgs']] = None):
        if local_device_resource_data is not None:
            pulumi.set(__self__, "local_device_resource_data", local_device_resource_data)
        if local_volume_resource_data is not None:
            pulumi.set(__self__, "local_volume_resource_data", local_volume_resource_data)
        if s3_machine_learning_model_resource_data is not None:
            pulumi.set(__self__, "s3_machine_learning_model_resource_data", s3_machine_learning_model_resource_data)
        if sage_maker_machine_learning_model_resource_data is not None:
            pulumi.set(__self__, "sage_maker_machine_learning_model_resource_data", sage_maker_machine_learning_model_resource_data)
        if secrets_manager_secret_resource_data is not None:
            pulumi.set(__self__, "secrets_manager_secret_resource_data", secrets_manager_secret_resource_data)

    @property
    @pulumi.getter(name="localDeviceResourceData")
    def local_device_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionLocalDeviceResourceDataArgs']]:
        return pulumi.get(self, "local_device_resource_data")

    @local_device_resource_data.setter
    def local_device_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionLocalDeviceResourceDataArgs']]):
        pulumi.set(self, "local_device_resource_data", value)

    @property
    @pulumi.getter(name="localVolumeResourceData")
    def local_volume_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionLocalVolumeResourceDataArgs']]:
        return pulumi.get(self, "local_volume_resource_data")

    @local_volume_resource_data.setter
    def local_volume_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionLocalVolumeResourceDataArgs']]):
        pulumi.set(self, "local_volume_resource_data", value)

    @property
    @pulumi.getter(name="s3MachineLearningModelResourceData")
    def s3_machine_learning_model_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionS3MachineLearningModelResourceDataArgs']]:
        return pulumi.get(self, "s3_machine_learning_model_resource_data")

    @s3_machine_learning_model_resource_data.setter
    def s3_machine_learning_model_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionS3MachineLearningModelResourceDataArgs']]):
        pulumi.set(self, "s3_machine_learning_model_resource_data", value)

    @property
    @pulumi.getter(name="sageMakerMachineLearningModelResourceData")
    def sage_maker_machine_learning_model_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionSageMakerMachineLearningModelResourceDataArgs']]:
        return pulumi.get(self, "sage_maker_machine_learning_model_resource_data")

    @sage_maker_machine_learning_model_resource_data.setter
    def sage_maker_machine_learning_model_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionSageMakerMachineLearningModelResourceDataArgs']]):
        pulumi.set(self, "sage_maker_machine_learning_model_resource_data", value)

    @property
    @pulumi.getter(name="secretsManagerSecretResourceData")
    def secrets_manager_secret_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionSecretsManagerSecretResourceDataArgs']]:
        return pulumi.get(self, "secrets_manager_secret_resource_data")

    @secrets_manager_secret_resource_data.setter
    def secrets_manager_secret_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionSecretsManagerSecretResourceDataArgs']]):
        pulumi.set(self, "secrets_manager_secret_resource_data", value)


@pulumi.input_type
class ResourceDefinitionResourceDefinitionVersionArgs:
    def __init__(__self__, *,
                 resources: pulumi.Input[Sequence[pulumi.Input['ResourceDefinitionResourceInstanceArgs']]]):
        pulumi.set(__self__, "resources", resources)

    @property
    @pulumi.getter
    def resources(self) -> pulumi.Input[Sequence[pulumi.Input['ResourceDefinitionResourceInstanceArgs']]]:
        return pulumi.get(self, "resources")

    @resources.setter
    def resources(self, value: pulumi.Input[Sequence[pulumi.Input['ResourceDefinitionResourceInstanceArgs']]]):
        pulumi.set(self, "resources", value)


@pulumi.input_type
class ResourceDefinitionResourceDownloadOwnerSettingArgs:
    def __init__(__self__, *,
                 group_owner: pulumi.Input[str],
                 group_permission: pulumi.Input[str]):
        pulumi.set(__self__, "group_owner", group_owner)
        pulumi.set(__self__, "group_permission", group_permission)

    @property
    @pulumi.getter(name="groupOwner")
    def group_owner(self) -> pulumi.Input[str]:
        return pulumi.get(self, "group_owner")

    @group_owner.setter
    def group_owner(self, value: pulumi.Input[str]):
        pulumi.set(self, "group_owner", value)

    @property
    @pulumi.getter(name="groupPermission")
    def group_permission(self) -> pulumi.Input[str]:
        return pulumi.get(self, "group_permission")

    @group_permission.setter
    def group_permission(self, value: pulumi.Input[str]):
        pulumi.set(self, "group_permission", value)


@pulumi.input_type
class ResourceDefinitionResourceInstanceArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 name: pulumi.Input[str],
                 resource_data_container: pulumi.Input['ResourceDefinitionResourceDataContainerArgs']):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "resource_data_container", resource_data_container)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="resourceDataContainer")
    def resource_data_container(self) -> pulumi.Input['ResourceDefinitionResourceDataContainerArgs']:
        return pulumi.get(self, "resource_data_container")

    @resource_data_container.setter
    def resource_data_container(self, value: pulumi.Input['ResourceDefinitionResourceDataContainerArgs']):
        pulumi.set(self, "resource_data_container", value)


@pulumi.input_type
class ResourceDefinitionS3MachineLearningModelResourceDataArgs:
    def __init__(__self__, *,
                 destination_path: pulumi.Input[str],
                 s3_uri: pulumi.Input[str],
                 owner_setting: Optional[pulumi.Input['ResourceDefinitionResourceDownloadOwnerSettingArgs']] = None):
        pulumi.set(__self__, "destination_path", destination_path)
        pulumi.set(__self__, "s3_uri", s3_uri)
        if owner_setting is not None:
            pulumi.set(__self__, "owner_setting", owner_setting)

    @property
    @pulumi.getter(name="destinationPath")
    def destination_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination_path")

    @destination_path.setter
    def destination_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_path", value)

    @property
    @pulumi.getter(name="s3Uri")
    def s3_uri(self) -> pulumi.Input[str]:
        return pulumi.get(self, "s3_uri")

    @s3_uri.setter
    def s3_uri(self, value: pulumi.Input[str]):
        pulumi.set(self, "s3_uri", value)

    @property
    @pulumi.getter(name="ownerSetting")
    def owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionResourceDownloadOwnerSettingArgs']]:
        return pulumi.get(self, "owner_setting")

    @owner_setting.setter
    def owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionResourceDownloadOwnerSettingArgs']]):
        pulumi.set(self, "owner_setting", value)


@pulumi.input_type
class ResourceDefinitionSageMakerMachineLearningModelResourceDataArgs:
    def __init__(__self__, *,
                 destination_path: pulumi.Input[str],
                 sage_maker_job_arn: pulumi.Input[str],
                 owner_setting: Optional[pulumi.Input['ResourceDefinitionResourceDownloadOwnerSettingArgs']] = None):
        pulumi.set(__self__, "destination_path", destination_path)
        pulumi.set(__self__, "sage_maker_job_arn", sage_maker_job_arn)
        if owner_setting is not None:
            pulumi.set(__self__, "owner_setting", owner_setting)

    @property
    @pulumi.getter(name="destinationPath")
    def destination_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination_path")

    @destination_path.setter
    def destination_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_path", value)

    @property
    @pulumi.getter(name="sageMakerJobArn")
    def sage_maker_job_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "sage_maker_job_arn")

    @sage_maker_job_arn.setter
    def sage_maker_job_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "sage_maker_job_arn", value)

    @property
    @pulumi.getter(name="ownerSetting")
    def owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionResourceDownloadOwnerSettingArgs']]:
        return pulumi.get(self, "owner_setting")

    @owner_setting.setter
    def owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionResourceDownloadOwnerSettingArgs']]):
        pulumi.set(self, "owner_setting", value)


@pulumi.input_type
class ResourceDefinitionSecretsManagerSecretResourceDataArgs:
    def __init__(__self__, *,
                 a_rn: pulumi.Input[str],
                 additional_staging_labels_to_download: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        pulumi.set(__self__, "a_rn", a_rn)
        if additional_staging_labels_to_download is not None:
            pulumi.set(__self__, "additional_staging_labels_to_download", additional_staging_labels_to_download)

    @property
    @pulumi.getter(name="aRN")
    def a_rn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "a_rn")

    @a_rn.setter
    def a_rn(self, value: pulumi.Input[str]):
        pulumi.set(self, "a_rn", value)

    @property
    @pulumi.getter(name="additionalStagingLabelsToDownload")
    def additional_staging_labels_to_download(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "additional_staging_labels_to_download")

    @additional_staging_labels_to_download.setter
    def additional_staging_labels_to_download(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "additional_staging_labels_to_download", value)


@pulumi.input_type
class ResourceDefinitionVersionGroupOwnerSettingArgs:
    def __init__(__self__, *,
                 auto_add_group_owner: pulumi.Input[bool],
                 group_owner: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "auto_add_group_owner", auto_add_group_owner)
        if group_owner is not None:
            pulumi.set(__self__, "group_owner", group_owner)

    @property
    @pulumi.getter(name="autoAddGroupOwner")
    def auto_add_group_owner(self) -> pulumi.Input[bool]:
        return pulumi.get(self, "auto_add_group_owner")

    @auto_add_group_owner.setter
    def auto_add_group_owner(self, value: pulumi.Input[bool]):
        pulumi.set(self, "auto_add_group_owner", value)

    @property
    @pulumi.getter(name="groupOwner")
    def group_owner(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_owner")

    @group_owner.setter
    def group_owner(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_owner", value)


@pulumi.input_type
class ResourceDefinitionVersionLocalDeviceResourceDataArgs:
    def __init__(__self__, *,
                 source_path: pulumi.Input[str],
                 group_owner_setting: Optional[pulumi.Input['ResourceDefinitionVersionGroupOwnerSettingArgs']] = None):
        pulumi.set(__self__, "source_path", source_path)
        if group_owner_setting is not None:
            pulumi.set(__self__, "group_owner_setting", group_owner_setting)

    @property
    @pulumi.getter(name="sourcePath")
    def source_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "source_path")

    @source_path.setter
    def source_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "source_path", value)

    @property
    @pulumi.getter(name="groupOwnerSetting")
    def group_owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionVersionGroupOwnerSettingArgs']]:
        return pulumi.get(self, "group_owner_setting")

    @group_owner_setting.setter
    def group_owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionVersionGroupOwnerSettingArgs']]):
        pulumi.set(self, "group_owner_setting", value)


@pulumi.input_type
class ResourceDefinitionVersionLocalVolumeResourceDataArgs:
    def __init__(__self__, *,
                 destination_path: pulumi.Input[str],
                 source_path: pulumi.Input[str],
                 group_owner_setting: Optional[pulumi.Input['ResourceDefinitionVersionGroupOwnerSettingArgs']] = None):
        pulumi.set(__self__, "destination_path", destination_path)
        pulumi.set(__self__, "source_path", source_path)
        if group_owner_setting is not None:
            pulumi.set(__self__, "group_owner_setting", group_owner_setting)

    @property
    @pulumi.getter(name="destinationPath")
    def destination_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination_path")

    @destination_path.setter
    def destination_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_path", value)

    @property
    @pulumi.getter(name="sourcePath")
    def source_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "source_path")

    @source_path.setter
    def source_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "source_path", value)

    @property
    @pulumi.getter(name="groupOwnerSetting")
    def group_owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionVersionGroupOwnerSettingArgs']]:
        return pulumi.get(self, "group_owner_setting")

    @group_owner_setting.setter
    def group_owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionVersionGroupOwnerSettingArgs']]):
        pulumi.set(self, "group_owner_setting", value)


@pulumi.input_type
class ResourceDefinitionVersionResourceDataContainerArgs:
    def __init__(__self__, *,
                 local_device_resource_data: Optional[pulumi.Input['ResourceDefinitionVersionLocalDeviceResourceDataArgs']] = None,
                 local_volume_resource_data: Optional[pulumi.Input['ResourceDefinitionVersionLocalVolumeResourceDataArgs']] = None,
                 s3_machine_learning_model_resource_data: Optional[pulumi.Input['ResourceDefinitionVersionS3MachineLearningModelResourceDataArgs']] = None,
                 sage_maker_machine_learning_model_resource_data: Optional[pulumi.Input['ResourceDefinitionVersionSageMakerMachineLearningModelResourceDataArgs']] = None,
                 secrets_manager_secret_resource_data: Optional[pulumi.Input['ResourceDefinitionVersionSecretsManagerSecretResourceDataArgs']] = None):
        if local_device_resource_data is not None:
            pulumi.set(__self__, "local_device_resource_data", local_device_resource_data)
        if local_volume_resource_data is not None:
            pulumi.set(__self__, "local_volume_resource_data", local_volume_resource_data)
        if s3_machine_learning_model_resource_data is not None:
            pulumi.set(__self__, "s3_machine_learning_model_resource_data", s3_machine_learning_model_resource_data)
        if sage_maker_machine_learning_model_resource_data is not None:
            pulumi.set(__self__, "sage_maker_machine_learning_model_resource_data", sage_maker_machine_learning_model_resource_data)
        if secrets_manager_secret_resource_data is not None:
            pulumi.set(__self__, "secrets_manager_secret_resource_data", secrets_manager_secret_resource_data)

    @property
    @pulumi.getter(name="localDeviceResourceData")
    def local_device_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionVersionLocalDeviceResourceDataArgs']]:
        return pulumi.get(self, "local_device_resource_data")

    @local_device_resource_data.setter
    def local_device_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionVersionLocalDeviceResourceDataArgs']]):
        pulumi.set(self, "local_device_resource_data", value)

    @property
    @pulumi.getter(name="localVolumeResourceData")
    def local_volume_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionVersionLocalVolumeResourceDataArgs']]:
        return pulumi.get(self, "local_volume_resource_data")

    @local_volume_resource_data.setter
    def local_volume_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionVersionLocalVolumeResourceDataArgs']]):
        pulumi.set(self, "local_volume_resource_data", value)

    @property
    @pulumi.getter(name="s3MachineLearningModelResourceData")
    def s3_machine_learning_model_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionVersionS3MachineLearningModelResourceDataArgs']]:
        return pulumi.get(self, "s3_machine_learning_model_resource_data")

    @s3_machine_learning_model_resource_data.setter
    def s3_machine_learning_model_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionVersionS3MachineLearningModelResourceDataArgs']]):
        pulumi.set(self, "s3_machine_learning_model_resource_data", value)

    @property
    @pulumi.getter(name="sageMakerMachineLearningModelResourceData")
    def sage_maker_machine_learning_model_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionVersionSageMakerMachineLearningModelResourceDataArgs']]:
        return pulumi.get(self, "sage_maker_machine_learning_model_resource_data")

    @sage_maker_machine_learning_model_resource_data.setter
    def sage_maker_machine_learning_model_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionVersionSageMakerMachineLearningModelResourceDataArgs']]):
        pulumi.set(self, "sage_maker_machine_learning_model_resource_data", value)

    @property
    @pulumi.getter(name="secretsManagerSecretResourceData")
    def secrets_manager_secret_resource_data(self) -> Optional[pulumi.Input['ResourceDefinitionVersionSecretsManagerSecretResourceDataArgs']]:
        return pulumi.get(self, "secrets_manager_secret_resource_data")

    @secrets_manager_secret_resource_data.setter
    def secrets_manager_secret_resource_data(self, value: Optional[pulumi.Input['ResourceDefinitionVersionSecretsManagerSecretResourceDataArgs']]):
        pulumi.set(self, "secrets_manager_secret_resource_data", value)


@pulumi.input_type
class ResourceDefinitionVersionResourceDownloadOwnerSettingArgs:
    def __init__(__self__, *,
                 group_owner: pulumi.Input[str],
                 group_permission: pulumi.Input[str]):
        pulumi.set(__self__, "group_owner", group_owner)
        pulumi.set(__self__, "group_permission", group_permission)

    @property
    @pulumi.getter(name="groupOwner")
    def group_owner(self) -> pulumi.Input[str]:
        return pulumi.get(self, "group_owner")

    @group_owner.setter
    def group_owner(self, value: pulumi.Input[str]):
        pulumi.set(self, "group_owner", value)

    @property
    @pulumi.getter(name="groupPermission")
    def group_permission(self) -> pulumi.Input[str]:
        return pulumi.get(self, "group_permission")

    @group_permission.setter
    def group_permission(self, value: pulumi.Input[str]):
        pulumi.set(self, "group_permission", value)


@pulumi.input_type
class ResourceDefinitionVersionResourceInstanceArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 name: pulumi.Input[str],
                 resource_data_container: pulumi.Input['ResourceDefinitionVersionResourceDataContainerArgs']):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "resource_data_container", resource_data_container)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="resourceDataContainer")
    def resource_data_container(self) -> pulumi.Input['ResourceDefinitionVersionResourceDataContainerArgs']:
        return pulumi.get(self, "resource_data_container")

    @resource_data_container.setter
    def resource_data_container(self, value: pulumi.Input['ResourceDefinitionVersionResourceDataContainerArgs']):
        pulumi.set(self, "resource_data_container", value)


@pulumi.input_type
class ResourceDefinitionVersionS3MachineLearningModelResourceDataArgs:
    def __init__(__self__, *,
                 destination_path: pulumi.Input[str],
                 s3_uri: pulumi.Input[str],
                 owner_setting: Optional[pulumi.Input['ResourceDefinitionVersionResourceDownloadOwnerSettingArgs']] = None):
        pulumi.set(__self__, "destination_path", destination_path)
        pulumi.set(__self__, "s3_uri", s3_uri)
        if owner_setting is not None:
            pulumi.set(__self__, "owner_setting", owner_setting)

    @property
    @pulumi.getter(name="destinationPath")
    def destination_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination_path")

    @destination_path.setter
    def destination_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_path", value)

    @property
    @pulumi.getter(name="s3Uri")
    def s3_uri(self) -> pulumi.Input[str]:
        return pulumi.get(self, "s3_uri")

    @s3_uri.setter
    def s3_uri(self, value: pulumi.Input[str]):
        pulumi.set(self, "s3_uri", value)

    @property
    @pulumi.getter(name="ownerSetting")
    def owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionVersionResourceDownloadOwnerSettingArgs']]:
        return pulumi.get(self, "owner_setting")

    @owner_setting.setter
    def owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionVersionResourceDownloadOwnerSettingArgs']]):
        pulumi.set(self, "owner_setting", value)


@pulumi.input_type
class ResourceDefinitionVersionSageMakerMachineLearningModelResourceDataArgs:
    def __init__(__self__, *,
                 destination_path: pulumi.Input[str],
                 sage_maker_job_arn: pulumi.Input[str],
                 owner_setting: Optional[pulumi.Input['ResourceDefinitionVersionResourceDownloadOwnerSettingArgs']] = None):
        pulumi.set(__self__, "destination_path", destination_path)
        pulumi.set(__self__, "sage_maker_job_arn", sage_maker_job_arn)
        if owner_setting is not None:
            pulumi.set(__self__, "owner_setting", owner_setting)

    @property
    @pulumi.getter(name="destinationPath")
    def destination_path(self) -> pulumi.Input[str]:
        return pulumi.get(self, "destination_path")

    @destination_path.setter
    def destination_path(self, value: pulumi.Input[str]):
        pulumi.set(self, "destination_path", value)

    @property
    @pulumi.getter(name="sageMakerJobArn")
    def sage_maker_job_arn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "sage_maker_job_arn")

    @sage_maker_job_arn.setter
    def sage_maker_job_arn(self, value: pulumi.Input[str]):
        pulumi.set(self, "sage_maker_job_arn", value)

    @property
    @pulumi.getter(name="ownerSetting")
    def owner_setting(self) -> Optional[pulumi.Input['ResourceDefinitionVersionResourceDownloadOwnerSettingArgs']]:
        return pulumi.get(self, "owner_setting")

    @owner_setting.setter
    def owner_setting(self, value: Optional[pulumi.Input['ResourceDefinitionVersionResourceDownloadOwnerSettingArgs']]):
        pulumi.set(self, "owner_setting", value)


@pulumi.input_type
class ResourceDefinitionVersionSecretsManagerSecretResourceDataArgs:
    def __init__(__self__, *,
                 a_rn: pulumi.Input[str],
                 additional_staging_labels_to_download: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        pulumi.set(__self__, "a_rn", a_rn)
        if additional_staging_labels_to_download is not None:
            pulumi.set(__self__, "additional_staging_labels_to_download", additional_staging_labels_to_download)

    @property
    @pulumi.getter(name="aRN")
    def a_rn(self) -> pulumi.Input[str]:
        return pulumi.get(self, "a_rn")

    @a_rn.setter
    def a_rn(self, value: pulumi.Input[str]):
        pulumi.set(self, "a_rn", value)

    @property
    @pulumi.getter(name="additionalStagingLabelsToDownload")
    def additional_staging_labels_to_download(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "additional_staging_labels_to_download")

    @additional_staging_labels_to_download.setter
    def additional_staging_labels_to_download(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "additional_staging_labels_to_download", value)


@pulumi.input_type
class SubscriptionDefinitionSubscriptionDefinitionVersionArgs:
    def __init__(__self__, *,
                 subscriptions: pulumi.Input[Sequence[pulumi.Input['SubscriptionDefinitionSubscriptionArgs']]]):
        pulumi.set(__self__, "subscriptions", subscriptions)

    @property
    @pulumi.getter
    def subscriptions(self) -> pulumi.Input[Sequence[pulumi.Input['SubscriptionDefinitionSubscriptionArgs']]]:
        return pulumi.get(self, "subscriptions")

    @subscriptions.setter
    def subscriptions(self, value: pulumi.Input[Sequence[pulumi.Input['SubscriptionDefinitionSubscriptionArgs']]]):
        pulumi.set(self, "subscriptions", value)


@pulumi.input_type
class SubscriptionDefinitionSubscriptionArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 source: pulumi.Input[str],
                 subject: pulumi.Input[str],
                 target: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "source", source)
        pulumi.set(__self__, "subject", subject)
        pulumi.set(__self__, "target", target)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def source(self) -> pulumi.Input[str]:
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: pulumi.Input[str]):
        pulumi.set(self, "source", value)

    @property
    @pulumi.getter
    def subject(self) -> pulumi.Input[str]:
        return pulumi.get(self, "subject")

    @subject.setter
    def subject(self, value: pulumi.Input[str]):
        pulumi.set(self, "subject", value)

    @property
    @pulumi.getter
    def target(self) -> pulumi.Input[str]:
        return pulumi.get(self, "target")

    @target.setter
    def target(self, value: pulumi.Input[str]):
        pulumi.set(self, "target", value)


@pulumi.input_type
class SubscriptionDefinitionVersionSubscriptionArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[str],
                 source: pulumi.Input[str],
                 subject: pulumi.Input[str],
                 target: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "source", source)
        pulumi.set(__self__, "subject", subject)
        pulumi.set(__self__, "target", target)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[str]:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: pulumi.Input[str]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def source(self) -> pulumi.Input[str]:
        return pulumi.get(self, "source")

    @source.setter
    def source(self, value: pulumi.Input[str]):
        pulumi.set(self, "source", value)

    @property
    @pulumi.getter
    def subject(self) -> pulumi.Input[str]:
        return pulumi.get(self, "subject")

    @subject.setter
    def subject(self, value: pulumi.Input[str]):
        pulumi.set(self, "subject", value)

    @property
    @pulumi.getter
    def target(self) -> pulumi.Input[str]:
        return pulumi.get(self, "target")

    @target.setter
    def target(self, value: pulumi.Input[str]):
        pulumi.set(self, "target", value)


