packages feed

stratosphere-ec2-1.0.0: gen/Stratosphere/EC2/Instance.hs

module Stratosphere.EC2.Instance (
        module Exports, Instance(..), mkInstance
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.EC2.Instance.BlockDeviceMappingProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.CpuOptionsProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.CreditSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.ElasticGpuSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.ElasticInferenceAcceleratorProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.EnclaveOptionsProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.HibernationOptionsProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.InstanceIpv6AddressProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.LaunchTemplateSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.LicenseSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.MetadataOptionsProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.NetworkInterfaceProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.PrivateDnsNameOptionsProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.SsmAssociationProperty as Exports
import {-# SOURCE #-} Stratosphere.EC2.Instance.VolumeProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Tag
import Stratosphere.Value
data Instance
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html>
    Instance {haddock_workaround_ :: (),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-additionalinfo>
              additionalInfo :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-affinity>
              affinity :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-availabilityzone>
              availabilityZone :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-blockdevicemappings>
              blockDeviceMappings :: (Prelude.Maybe [BlockDeviceMappingProperty]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-cpuoptions>
              cpuOptions :: (Prelude.Maybe CpuOptionsProperty),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-creditspecification>
              creditSpecification :: (Prelude.Maybe CreditSpecificationProperty),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-disableapitermination>
              disableApiTermination :: (Prelude.Maybe (Value Prelude.Bool)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ebsoptimized>
              ebsOptimized :: (Prelude.Maybe (Value Prelude.Bool)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-elasticgpuspecifications>
              elasticGpuSpecifications :: (Prelude.Maybe [ElasticGpuSpecificationProperty]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-elasticinferenceaccelerators>
              elasticInferenceAccelerators :: (Prelude.Maybe [ElasticInferenceAcceleratorProperty]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-enclaveoptions>
              enclaveOptions :: (Prelude.Maybe EnclaveOptionsProperty),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-hibernationoptions>
              hibernationOptions :: (Prelude.Maybe HibernationOptionsProperty),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-hostid>
              hostId :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-hostresourcegrouparn>
              hostResourceGroupArn :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-iaminstanceprofile>
              iamInstanceProfile :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-imageid>
              imageId :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-instanceinitiatedshutdownbehavior>
              instanceInitiatedShutdownBehavior :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-instancetype>
              instanceType :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ipv6addresscount>
              ipv6AddressCount :: (Prelude.Maybe (Value Prelude.Integer)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ipv6addresses>
              ipv6Addresses :: (Prelude.Maybe [InstanceIpv6AddressProperty]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-kernelid>
              kernelId :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-keyname>
              keyName :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-launchtemplate>
              launchTemplate :: (Prelude.Maybe LaunchTemplateSpecificationProperty),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-licensespecifications>
              licenseSpecifications :: (Prelude.Maybe [LicenseSpecificationProperty]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-metadataoptions>
              metadataOptions :: (Prelude.Maybe MetadataOptionsProperty),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-monitoring>
              monitoring :: (Prelude.Maybe (Value Prelude.Bool)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-networkinterfaces>
              networkInterfaces :: (Prelude.Maybe [NetworkInterfaceProperty]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-placementgroupname>
              placementGroupName :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-privatednsnameoptions>
              privateDnsNameOptions :: (Prelude.Maybe PrivateDnsNameOptionsProperty),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-privateipaddress>
              privateIpAddress :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-propagatetagstovolumeoncreation>
              propagateTagsToVolumeOnCreation :: (Prelude.Maybe (Value Prelude.Bool)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ramdiskid>
              ramdiskId :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroupids>
              securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-securitygroups>
              securityGroups :: (Prelude.Maybe (ValueList Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-sourcedestcheck>
              sourceDestCheck :: (Prelude.Maybe (Value Prelude.Bool)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-ssmassociations>
              ssmAssociations :: (Prelude.Maybe [SsmAssociationProperty]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-subnetid>
              subnetId :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-tags>
              tags :: (Prelude.Maybe [Tag]),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-tenancy>
              tenancy :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-userdata>
              userData :: (Prelude.Maybe (Value Prelude.Text)),
              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-volumes>
              volumes :: (Prelude.Maybe [VolumeProperty])}
  deriving stock (Prelude.Eq, Prelude.Show)
mkInstance :: Instance
mkInstance
  = Instance
      {haddock_workaround_ = (), additionalInfo = Prelude.Nothing,
       affinity = Prelude.Nothing, availabilityZone = Prelude.Nothing,
       blockDeviceMappings = Prelude.Nothing,
       cpuOptions = Prelude.Nothing,
       creditSpecification = Prelude.Nothing,
       disableApiTermination = Prelude.Nothing,
       ebsOptimized = Prelude.Nothing,
       elasticGpuSpecifications = Prelude.Nothing,
       elasticInferenceAccelerators = Prelude.Nothing,
       enclaveOptions = Prelude.Nothing,
       hibernationOptions = Prelude.Nothing, hostId = Prelude.Nothing,
       hostResourceGroupArn = Prelude.Nothing,
       iamInstanceProfile = Prelude.Nothing, imageId = Prelude.Nothing,
       instanceInitiatedShutdownBehavior = Prelude.Nothing,
       instanceType = Prelude.Nothing, ipv6AddressCount = Prelude.Nothing,
       ipv6Addresses = Prelude.Nothing, kernelId = Prelude.Nothing,
       keyName = Prelude.Nothing, launchTemplate = Prelude.Nothing,
       licenseSpecifications = Prelude.Nothing,
       metadataOptions = Prelude.Nothing, monitoring = Prelude.Nothing,
       networkInterfaces = Prelude.Nothing,
       placementGroupName = Prelude.Nothing,
       privateDnsNameOptions = Prelude.Nothing,
       privateIpAddress = Prelude.Nothing,
       propagateTagsToVolumeOnCreation = Prelude.Nothing,
       ramdiskId = Prelude.Nothing, securityGroupIds = Prelude.Nothing,
       securityGroups = Prelude.Nothing,
       sourceDestCheck = Prelude.Nothing,
       ssmAssociations = Prelude.Nothing, subnetId = Prelude.Nothing,
       tags = Prelude.Nothing, tenancy = Prelude.Nothing,
       userData = Prelude.Nothing, volumes = Prelude.Nothing}
instance ToResourceProperties Instance where
  toResourceProperties Instance {..}
    = ResourceProperties
        {awsType = "AWS::EC2::Instance", supportsTags = Prelude.True,
         properties = Prelude.fromList
                        (Prelude.catMaybes
                           [(JSON..=) "AdditionalInfo" Prelude.<$> additionalInfo,
                            (JSON..=) "Affinity" Prelude.<$> affinity,
                            (JSON..=) "AvailabilityZone" Prelude.<$> availabilityZone,
                            (JSON..=) "BlockDeviceMappings" Prelude.<$> blockDeviceMappings,
                            (JSON..=) "CpuOptions" Prelude.<$> cpuOptions,
                            (JSON..=) "CreditSpecification" Prelude.<$> creditSpecification,
                            (JSON..=) "DisableApiTermination"
                              Prelude.<$> disableApiTermination,
                            (JSON..=) "EbsOptimized" Prelude.<$> ebsOptimized,
                            (JSON..=) "ElasticGpuSpecifications"
                              Prelude.<$> elasticGpuSpecifications,
                            (JSON..=) "ElasticInferenceAccelerators"
                              Prelude.<$> elasticInferenceAccelerators,
                            (JSON..=) "EnclaveOptions" Prelude.<$> enclaveOptions,
                            (JSON..=) "HibernationOptions" Prelude.<$> hibernationOptions,
                            (JSON..=) "HostId" Prelude.<$> hostId,
                            (JSON..=) "HostResourceGroupArn" Prelude.<$> hostResourceGroupArn,
                            (JSON..=) "IamInstanceProfile" Prelude.<$> iamInstanceProfile,
                            (JSON..=) "ImageId" Prelude.<$> imageId,
                            (JSON..=) "InstanceInitiatedShutdownBehavior"
                              Prelude.<$> instanceInitiatedShutdownBehavior,
                            (JSON..=) "InstanceType" Prelude.<$> instanceType,
                            (JSON..=) "Ipv6AddressCount" Prelude.<$> ipv6AddressCount,
                            (JSON..=) "Ipv6Addresses" Prelude.<$> ipv6Addresses,
                            (JSON..=) "KernelId" Prelude.<$> kernelId,
                            (JSON..=) "KeyName" Prelude.<$> keyName,
                            (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate,
                            (JSON..=) "LicenseSpecifications"
                              Prelude.<$> licenseSpecifications,
                            (JSON..=) "MetadataOptions" Prelude.<$> metadataOptions,
                            (JSON..=) "Monitoring" Prelude.<$> monitoring,
                            (JSON..=) "NetworkInterfaces" Prelude.<$> networkInterfaces,
                            (JSON..=) "PlacementGroupName" Prelude.<$> placementGroupName,
                            (JSON..=) "PrivateDnsNameOptions"
                              Prelude.<$> privateDnsNameOptions,
                            (JSON..=) "PrivateIpAddress" Prelude.<$> privateIpAddress,
                            (JSON..=) "PropagateTagsToVolumeOnCreation"
                              Prelude.<$> propagateTagsToVolumeOnCreation,
                            (JSON..=) "RamdiskId" Prelude.<$> ramdiskId,
                            (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
                            (JSON..=) "SecurityGroups" Prelude.<$> securityGroups,
                            (JSON..=) "SourceDestCheck" Prelude.<$> sourceDestCheck,
                            (JSON..=) "SsmAssociations" Prelude.<$> ssmAssociations,
                            (JSON..=) "SubnetId" Prelude.<$> subnetId,
                            (JSON..=) "Tags" Prelude.<$> tags,
                            (JSON..=) "Tenancy" Prelude.<$> tenancy,
                            (JSON..=) "UserData" Prelude.<$> userData,
                            (JSON..=) "Volumes" Prelude.<$> volumes])}
instance JSON.ToJSON Instance where
  toJSON Instance {..}
    = JSON.object
        (Prelude.fromList
           (Prelude.catMaybes
              [(JSON..=) "AdditionalInfo" Prelude.<$> additionalInfo,
               (JSON..=) "Affinity" Prelude.<$> affinity,
               (JSON..=) "AvailabilityZone" Prelude.<$> availabilityZone,
               (JSON..=) "BlockDeviceMappings" Prelude.<$> blockDeviceMappings,
               (JSON..=) "CpuOptions" Prelude.<$> cpuOptions,
               (JSON..=) "CreditSpecification" Prelude.<$> creditSpecification,
               (JSON..=) "DisableApiTermination"
                 Prelude.<$> disableApiTermination,
               (JSON..=) "EbsOptimized" Prelude.<$> ebsOptimized,
               (JSON..=) "ElasticGpuSpecifications"
                 Prelude.<$> elasticGpuSpecifications,
               (JSON..=) "ElasticInferenceAccelerators"
                 Prelude.<$> elasticInferenceAccelerators,
               (JSON..=) "EnclaveOptions" Prelude.<$> enclaveOptions,
               (JSON..=) "HibernationOptions" Prelude.<$> hibernationOptions,
               (JSON..=) "HostId" Prelude.<$> hostId,
               (JSON..=) "HostResourceGroupArn" Prelude.<$> hostResourceGroupArn,
               (JSON..=) "IamInstanceProfile" Prelude.<$> iamInstanceProfile,
               (JSON..=) "ImageId" Prelude.<$> imageId,
               (JSON..=) "InstanceInitiatedShutdownBehavior"
                 Prelude.<$> instanceInitiatedShutdownBehavior,
               (JSON..=) "InstanceType" Prelude.<$> instanceType,
               (JSON..=) "Ipv6AddressCount" Prelude.<$> ipv6AddressCount,
               (JSON..=) "Ipv6Addresses" Prelude.<$> ipv6Addresses,
               (JSON..=) "KernelId" Prelude.<$> kernelId,
               (JSON..=) "KeyName" Prelude.<$> keyName,
               (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate,
               (JSON..=) "LicenseSpecifications"
                 Prelude.<$> licenseSpecifications,
               (JSON..=) "MetadataOptions" Prelude.<$> metadataOptions,
               (JSON..=) "Monitoring" Prelude.<$> monitoring,
               (JSON..=) "NetworkInterfaces" Prelude.<$> networkInterfaces,
               (JSON..=) "PlacementGroupName" Prelude.<$> placementGroupName,
               (JSON..=) "PrivateDnsNameOptions"
                 Prelude.<$> privateDnsNameOptions,
               (JSON..=) "PrivateIpAddress" Prelude.<$> privateIpAddress,
               (JSON..=) "PropagateTagsToVolumeOnCreation"
                 Prelude.<$> propagateTagsToVolumeOnCreation,
               (JSON..=) "RamdiskId" Prelude.<$> ramdiskId,
               (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
               (JSON..=) "SecurityGroups" Prelude.<$> securityGroups,
               (JSON..=) "SourceDestCheck" Prelude.<$> sourceDestCheck,
               (JSON..=) "SsmAssociations" Prelude.<$> ssmAssociations,
               (JSON..=) "SubnetId" Prelude.<$> subnetId,
               (JSON..=) "Tags" Prelude.<$> tags,
               (JSON..=) "Tenancy" Prelude.<$> tenancy,
               (JSON..=) "UserData" Prelude.<$> userData,
               (JSON..=) "Volumes" Prelude.<$> volumes]))
instance Property "AdditionalInfo" Instance where
  type PropertyType "AdditionalInfo" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {additionalInfo = Prelude.pure newValue, ..}
instance Property "Affinity" Instance where
  type PropertyType "Affinity" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {affinity = Prelude.pure newValue, ..}
instance Property "AvailabilityZone" Instance where
  type PropertyType "AvailabilityZone" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {availabilityZone = Prelude.pure newValue, ..}
instance Property "BlockDeviceMappings" Instance where
  type PropertyType "BlockDeviceMappings" Instance = [BlockDeviceMappingProperty]
  set newValue Instance {..}
    = Instance {blockDeviceMappings = Prelude.pure newValue, ..}
instance Property "CpuOptions" Instance where
  type PropertyType "CpuOptions" Instance = CpuOptionsProperty
  set newValue Instance {..}
    = Instance {cpuOptions = Prelude.pure newValue, ..}
instance Property "CreditSpecification" Instance where
  type PropertyType "CreditSpecification" Instance = CreditSpecificationProperty
  set newValue Instance {..}
    = Instance {creditSpecification = Prelude.pure newValue, ..}
instance Property "DisableApiTermination" Instance where
  type PropertyType "DisableApiTermination" Instance = Value Prelude.Bool
  set newValue Instance {..}
    = Instance {disableApiTermination = Prelude.pure newValue, ..}
instance Property "EbsOptimized" Instance where
  type PropertyType "EbsOptimized" Instance = Value Prelude.Bool
  set newValue Instance {..}
    = Instance {ebsOptimized = Prelude.pure newValue, ..}
instance Property "ElasticGpuSpecifications" Instance where
  type PropertyType "ElasticGpuSpecifications" Instance = [ElasticGpuSpecificationProperty]
  set newValue Instance {..}
    = Instance {elasticGpuSpecifications = Prelude.pure newValue, ..}
instance Property "ElasticInferenceAccelerators" Instance where
  type PropertyType "ElasticInferenceAccelerators" Instance = [ElasticInferenceAcceleratorProperty]
  set newValue Instance {..}
    = Instance
        {elasticInferenceAccelerators = Prelude.pure newValue, ..}
instance Property "EnclaveOptions" Instance where
  type PropertyType "EnclaveOptions" Instance = EnclaveOptionsProperty
  set newValue Instance {..}
    = Instance {enclaveOptions = Prelude.pure newValue, ..}
instance Property "HibernationOptions" Instance where
  type PropertyType "HibernationOptions" Instance = HibernationOptionsProperty
  set newValue Instance {..}
    = Instance {hibernationOptions = Prelude.pure newValue, ..}
instance Property "HostId" Instance where
  type PropertyType "HostId" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {hostId = Prelude.pure newValue, ..}
instance Property "HostResourceGroupArn" Instance where
  type PropertyType "HostResourceGroupArn" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {hostResourceGroupArn = Prelude.pure newValue, ..}
instance Property "IamInstanceProfile" Instance where
  type PropertyType "IamInstanceProfile" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {iamInstanceProfile = Prelude.pure newValue, ..}
instance Property "ImageId" Instance where
  type PropertyType "ImageId" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {imageId = Prelude.pure newValue, ..}
instance Property "InstanceInitiatedShutdownBehavior" Instance where
  type PropertyType "InstanceInitiatedShutdownBehavior" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance
        {instanceInitiatedShutdownBehavior = Prelude.pure newValue, ..}
instance Property "InstanceType" Instance where
  type PropertyType "InstanceType" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {instanceType = Prelude.pure newValue, ..}
instance Property "Ipv6AddressCount" Instance where
  type PropertyType "Ipv6AddressCount" Instance = Value Prelude.Integer
  set newValue Instance {..}
    = Instance {ipv6AddressCount = Prelude.pure newValue, ..}
instance Property "Ipv6Addresses" Instance where
  type PropertyType "Ipv6Addresses" Instance = [InstanceIpv6AddressProperty]
  set newValue Instance {..}
    = Instance {ipv6Addresses = Prelude.pure newValue, ..}
instance Property "KernelId" Instance where
  type PropertyType "KernelId" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {kernelId = Prelude.pure newValue, ..}
instance Property "KeyName" Instance where
  type PropertyType "KeyName" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {keyName = Prelude.pure newValue, ..}
instance Property "LaunchTemplate" Instance where
  type PropertyType "LaunchTemplate" Instance = LaunchTemplateSpecificationProperty
  set newValue Instance {..}
    = Instance {launchTemplate = Prelude.pure newValue, ..}
instance Property "LicenseSpecifications" Instance where
  type PropertyType "LicenseSpecifications" Instance = [LicenseSpecificationProperty]
  set newValue Instance {..}
    = Instance {licenseSpecifications = Prelude.pure newValue, ..}
instance Property "MetadataOptions" Instance where
  type PropertyType "MetadataOptions" Instance = MetadataOptionsProperty
  set newValue Instance {..}
    = Instance {metadataOptions = Prelude.pure newValue, ..}
instance Property "Monitoring" Instance where
  type PropertyType "Monitoring" Instance = Value Prelude.Bool
  set newValue Instance {..}
    = Instance {monitoring = Prelude.pure newValue, ..}
instance Property "NetworkInterfaces" Instance where
  type PropertyType "NetworkInterfaces" Instance = [NetworkInterfaceProperty]
  set newValue Instance {..}
    = Instance {networkInterfaces = Prelude.pure newValue, ..}
instance Property "PlacementGroupName" Instance where
  type PropertyType "PlacementGroupName" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {placementGroupName = Prelude.pure newValue, ..}
instance Property "PrivateDnsNameOptions" Instance where
  type PropertyType "PrivateDnsNameOptions" Instance = PrivateDnsNameOptionsProperty
  set newValue Instance {..}
    = Instance {privateDnsNameOptions = Prelude.pure newValue, ..}
instance Property "PrivateIpAddress" Instance where
  type PropertyType "PrivateIpAddress" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {privateIpAddress = Prelude.pure newValue, ..}
instance Property "PropagateTagsToVolumeOnCreation" Instance where
  type PropertyType "PropagateTagsToVolumeOnCreation" Instance = Value Prelude.Bool
  set newValue Instance {..}
    = Instance
        {propagateTagsToVolumeOnCreation = Prelude.pure newValue, ..}
instance Property "RamdiskId" Instance where
  type PropertyType "RamdiskId" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {ramdiskId = Prelude.pure newValue, ..}
instance Property "SecurityGroupIds" Instance where
  type PropertyType "SecurityGroupIds" Instance = ValueList Prelude.Text
  set newValue Instance {..}
    = Instance {securityGroupIds = Prelude.pure newValue, ..}
instance Property "SecurityGroups" Instance where
  type PropertyType "SecurityGroups" Instance = ValueList Prelude.Text
  set newValue Instance {..}
    = Instance {securityGroups = Prelude.pure newValue, ..}
instance Property "SourceDestCheck" Instance where
  type PropertyType "SourceDestCheck" Instance = Value Prelude.Bool
  set newValue Instance {..}
    = Instance {sourceDestCheck = Prelude.pure newValue, ..}
instance Property "SsmAssociations" Instance where
  type PropertyType "SsmAssociations" Instance = [SsmAssociationProperty]
  set newValue Instance {..}
    = Instance {ssmAssociations = Prelude.pure newValue, ..}
instance Property "SubnetId" Instance where
  type PropertyType "SubnetId" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {subnetId = Prelude.pure newValue, ..}
instance Property "Tags" Instance where
  type PropertyType "Tags" Instance = [Tag]
  set newValue Instance {..}
    = Instance {tags = Prelude.pure newValue, ..}
instance Property "Tenancy" Instance where
  type PropertyType "Tenancy" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {tenancy = Prelude.pure newValue, ..}
instance Property "UserData" Instance where
  type PropertyType "UserData" Instance = Value Prelude.Text
  set newValue Instance {..}
    = Instance {userData = Prelude.pure newValue, ..}
instance Property "Volumes" Instance where
  type PropertyType "Volumes" Instance = [VolumeProperty]
  set newValue Instance {..}
    = Instance {volumes = Prelude.pure newValue, ..}