{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.OpsWorks.Types.Instance
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.OpsWorks.Types.Instance where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.OpsWorks.Types.Architecture
import Amazonka.OpsWorks.Types.AutoScalingType
import Amazonka.OpsWorks.Types.BlockDeviceMapping
import Amazonka.OpsWorks.Types.ReportedOs
import Amazonka.OpsWorks.Types.RootDeviceType
import Amazonka.OpsWorks.Types.VirtualizationType
import qualified Amazonka.Prelude as Prelude

-- | Describes an instance.
--
-- /See:/ 'newInstance' smart constructor.
data Instance = Instance'
  { -- | The agent version. This parameter is set to @INHERIT@ if the instance
    -- inherits the default stack setting or to a a version number for a fixed
    -- agent version.
    Instance -> Maybe Text
agentVersion :: Prelude.Maybe Prelude.Text,
    -- | A custom AMI ID to be used to create the instance. For more information,
    -- see
    -- <https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
    Instance -> Maybe Text
amiId :: Prelude.Maybe Prelude.Text,
    -- | The instance architecture: \"i386\" or \"x86_64\".
    Instance -> Maybe Architecture
architecture :: Prelude.Maybe Architecture,
    -- | The instance\'s Amazon Resource Number (ARN).
    Instance -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | For load-based or time-based instances, the type.
    Instance -> Maybe AutoScalingType
autoScalingType :: Prelude.Maybe AutoScalingType,
    -- | The instance Availability Zone. For more information, see
    -- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
    Instance -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | An array of @BlockDeviceMapping@ objects that specify the instance\'s
    -- block device mappings.
    Instance -> Maybe [BlockDeviceMapping]
blockDeviceMappings :: Prelude.Maybe [BlockDeviceMapping],
    -- | The time that the instance was created.
    Instance -> Maybe Text
createdAt :: Prelude.Maybe Prelude.Text,
    -- | Whether this is an Amazon EBS-optimized instance.
    Instance -> Maybe Bool
ebsOptimized :: Prelude.Maybe Prelude.Bool,
    -- | The ID of the associated Amazon EC2 instance.
    Instance -> Maybe Text
ec2InstanceId :: Prelude.Maybe Prelude.Text,
    -- | For container instances, the Amazon ECS cluster\'s ARN.
    Instance -> Maybe Text
ecsClusterArn :: Prelude.Maybe Prelude.Text,
    -- | For container instances, the instance\'s ARN.
    Instance -> Maybe Text
ecsContainerInstanceArn :: Prelude.Maybe Prelude.Text,
    -- | The instance
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>
    -- .
    Instance -> Maybe Text
elasticIp :: Prelude.Maybe Prelude.Text,
    -- | The instance host name.
    Instance -> Maybe Text
hostname :: Prelude.Maybe Prelude.Text,
    -- | For registered instances, the infrastructure class: @ec2@ or
    -- @on-premises@.
    Instance -> Maybe Text
infrastructureClass :: Prelude.Maybe Prelude.Text,
    -- | Whether to install operating system and package updates when the
    -- instance boots. The default value is @true@. If this value is set to
    -- @false@, you must then update your instances manually by using
    -- CreateDeployment to run the @update_dependencies@ stack command or by
    -- manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the
    -- instances.
    --
    -- We strongly recommend using the default value of @true@, to ensure that
    -- your instances have the latest security updates.
    Instance -> Maybe Bool
installUpdatesOnBoot :: Prelude.Maybe Prelude.Bool,
    -- | The instance ID.
    Instance -> Maybe Text
instanceId :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the instance\'s IAM profile. For more information about IAM
    -- ARNs, see
    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
    Instance -> Maybe Text
instanceProfileArn :: Prelude.Maybe Prelude.Text,
    -- | The instance type, such as @t2.micro@.
    Instance -> Maybe Text
instanceType :: Prelude.Maybe Prelude.Text,
    -- | The ID of the last service error. For more information, call
    -- DescribeServiceErrors.
    Instance -> Maybe Text
lastServiceErrorId :: Prelude.Maybe Prelude.Text,
    -- | An array containing the instance layer IDs.
    Instance -> Maybe [Text]
layerIds :: Prelude.Maybe [Prelude.Text],
    -- | The instance\'s operating system.
    Instance -> Maybe Text
os :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s platform.
    Instance -> Maybe Text
platform :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s private DNS name.
    Instance -> Maybe Text
privateDns :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s private IP address.
    Instance -> Maybe Text
privateIp :: Prelude.Maybe Prelude.Text,
    -- | The instance public DNS name.
    Instance -> Maybe Text
publicDns :: Prelude.Maybe Prelude.Text,
    -- | The instance public IP address.
    Instance -> Maybe Text
publicIp :: Prelude.Maybe Prelude.Text,
    -- | For registered instances, who performed the registration.
    Instance -> Maybe Text
registeredBy :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s reported AWS OpsWorks Stacks agent version.
    Instance -> Maybe Text
reportedAgentVersion :: Prelude.Maybe Prelude.Text,
    -- | For registered instances, the reported operating system.
    Instance -> Maybe ReportedOs
reportedOs :: Prelude.Maybe ReportedOs,
    -- | The instance\'s root device type. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
    Instance -> Maybe RootDeviceType
rootDeviceType :: Prelude.Maybe RootDeviceType,
    -- | The root device volume ID.
    Instance -> Maybe Text
rootDeviceVolumeId :: Prelude.Maybe Prelude.Text,
    -- | An array containing the instance security group IDs.
    Instance -> Maybe [Text]
securityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | The SSH key\'s Deep Security Agent (DSA) fingerprint.
    Instance -> Maybe Text
sshHostDsaKeyFingerprint :: Prelude.Maybe Prelude.Text,
    -- | The SSH key\'s RSA fingerprint.
    Instance -> Maybe Text
sshHostRsaKeyFingerprint :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s Amazon EC2 key-pair name.
    Instance -> Maybe Text
sshKeyName :: Prelude.Maybe Prelude.Text,
    -- | The stack ID.
    Instance -> Maybe Text
stackId :: Prelude.Maybe Prelude.Text,
    -- | The instance status:
    --
    -- -   @booting@
    --
    -- -   @connection_lost@
    --
    -- -   @online@
    --
    -- -   @pending@
    --
    -- -   @rebooting@
    --
    -- -   @requested@
    --
    -- -   @running_setup@
    --
    -- -   @setup_failed@
    --
    -- -   @shutting_down@
    --
    -- -   @start_failed@
    --
    -- -   @stop_failed@
    --
    -- -   @stopped@
    --
    -- -   @stopping@
    --
    -- -   @terminated@
    --
    -- -   @terminating@
    Instance -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s subnet ID; applicable only if the stack is running in a
    -- VPC.
    Instance -> Maybe Text
subnetId :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s tenancy option, such as @dedicated@ or @host@.
    Instance -> Maybe Text
tenancy :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s virtualization type: @paravirtual@ or @hvm@.
    Instance -> Maybe VirtualizationType
virtualizationType :: Prelude.Maybe VirtualizationType
  }
  deriving (Instance -> Instance -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Instance -> Instance -> Bool
$c/= :: Instance -> Instance -> Bool
== :: Instance -> Instance -> Bool
$c== :: Instance -> Instance -> Bool
Prelude.Eq, ReadPrec [Instance]
ReadPrec Instance
Int -> ReadS Instance
ReadS [Instance]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Instance]
$creadListPrec :: ReadPrec [Instance]
readPrec :: ReadPrec Instance
$creadPrec :: ReadPrec Instance
readList :: ReadS [Instance]
$creadList :: ReadS [Instance]
readsPrec :: Int -> ReadS Instance
$creadsPrec :: Int -> ReadS Instance
Prelude.Read, Int -> Instance -> ShowS
[Instance] -> ShowS
Instance -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Instance] -> ShowS
$cshowList :: [Instance] -> ShowS
show :: Instance -> String
$cshow :: Instance -> String
showsPrec :: Int -> Instance -> ShowS
$cshowsPrec :: Int -> Instance -> ShowS
Prelude.Show, forall x. Rep Instance x -> Instance
forall x. Instance -> Rep Instance x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Instance x -> Instance
$cfrom :: forall x. Instance -> Rep Instance x
Prelude.Generic)

-- |
-- Create a value of 'Instance' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'agentVersion', 'instance_agentVersion' - The agent version. This parameter is set to @INHERIT@ if the instance
-- inherits the default stack setting or to a a version number for a fixed
-- agent version.
--
-- 'amiId', 'instance_amiId' - A custom AMI ID to be used to create the instance. For more information,
-- see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
--
-- 'architecture', 'instance_architecture' - The instance architecture: \"i386\" or \"x86_64\".
--
-- 'arn', 'instance_arn' - The instance\'s Amazon Resource Number (ARN).
--
-- 'autoScalingType', 'instance_autoScalingType' - For load-based or time-based instances, the type.
--
-- 'availabilityZone', 'instance_availabilityZone' - The instance Availability Zone. For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
--
-- 'blockDeviceMappings', 'instance_blockDeviceMappings' - An array of @BlockDeviceMapping@ objects that specify the instance\'s
-- block device mappings.
--
-- 'createdAt', 'instance_createdAt' - The time that the instance was created.
--
-- 'ebsOptimized', 'instance_ebsOptimized' - Whether this is an Amazon EBS-optimized instance.
--
-- 'ec2InstanceId', 'instance_ec2InstanceId' - The ID of the associated Amazon EC2 instance.
--
-- 'ecsClusterArn', 'instance_ecsClusterArn' - For container instances, the Amazon ECS cluster\'s ARN.
--
-- 'ecsContainerInstanceArn', 'instance_ecsContainerInstanceArn' - For container instances, the instance\'s ARN.
--
-- 'elasticIp', 'instance_elasticIp' - The instance
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>
-- .
--
-- 'hostname', 'instance_hostname' - The instance host name.
--
-- 'infrastructureClass', 'instance_infrastructureClass' - For registered instances, the infrastructure class: @ec2@ or
-- @on-premises@.
--
-- 'installUpdatesOnBoot', 'instance_installUpdatesOnBoot' - Whether to install operating system and package updates when the
-- instance boots. The default value is @true@. If this value is set to
-- @false@, you must then update your instances manually by using
-- CreateDeployment to run the @update_dependencies@ stack command or by
-- manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the
-- instances.
--
-- We strongly recommend using the default value of @true@, to ensure that
-- your instances have the latest security updates.
--
-- 'instanceId', 'instance_instanceId' - The instance ID.
--
-- 'instanceProfileArn', 'instance_instanceProfileArn' - The ARN of the instance\'s IAM profile. For more information about IAM
-- ARNs, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
--
-- 'instanceType', 'instance_instanceType' - The instance type, such as @t2.micro@.
--
-- 'lastServiceErrorId', 'instance_lastServiceErrorId' - The ID of the last service error. For more information, call
-- DescribeServiceErrors.
--
-- 'layerIds', 'instance_layerIds' - An array containing the instance layer IDs.
--
-- 'os', 'instance_os' - The instance\'s operating system.
--
-- 'platform', 'instance_platform' - The instance\'s platform.
--
-- 'privateDns', 'instance_privateDns' - The instance\'s private DNS name.
--
-- 'privateIp', 'instance_privateIp' - The instance\'s private IP address.
--
-- 'publicDns', 'instance_publicDns' - The instance public DNS name.
--
-- 'publicIp', 'instance_publicIp' - The instance public IP address.
--
-- 'registeredBy', 'instance_registeredBy' - For registered instances, who performed the registration.
--
-- 'reportedAgentVersion', 'instance_reportedAgentVersion' - The instance\'s reported AWS OpsWorks Stacks agent version.
--
-- 'reportedOs', 'instance_reportedOs' - For registered instances, the reported operating system.
--
-- 'rootDeviceType', 'instance_rootDeviceType' - The instance\'s root device type. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
--
-- 'rootDeviceVolumeId', 'instance_rootDeviceVolumeId' - The root device volume ID.
--
-- 'securityGroupIds', 'instance_securityGroupIds' - An array containing the instance security group IDs.
--
-- 'sshHostDsaKeyFingerprint', 'instance_sshHostDsaKeyFingerprint' - The SSH key\'s Deep Security Agent (DSA) fingerprint.
--
-- 'sshHostRsaKeyFingerprint', 'instance_sshHostRsaKeyFingerprint' - The SSH key\'s RSA fingerprint.
--
-- 'sshKeyName', 'instance_sshKeyName' - The instance\'s Amazon EC2 key-pair name.
--
-- 'stackId', 'instance_stackId' - The stack ID.
--
-- 'status', 'instance_status' - The instance status:
--
-- -   @booting@
--
-- -   @connection_lost@
--
-- -   @online@
--
-- -   @pending@
--
-- -   @rebooting@
--
-- -   @requested@
--
-- -   @running_setup@
--
-- -   @setup_failed@
--
-- -   @shutting_down@
--
-- -   @start_failed@
--
-- -   @stop_failed@
--
-- -   @stopped@
--
-- -   @stopping@
--
-- -   @terminated@
--
-- -   @terminating@
--
-- 'subnetId', 'instance_subnetId' - The instance\'s subnet ID; applicable only if the stack is running in a
-- VPC.
--
-- 'tenancy', 'instance_tenancy' - The instance\'s tenancy option, such as @dedicated@ or @host@.
--
-- 'virtualizationType', 'instance_virtualizationType' - The instance\'s virtualization type: @paravirtual@ or @hvm@.
newInstance ::
  Instance
newInstance :: Instance
newInstance =
  Instance'
    { $sel:agentVersion:Instance' :: Maybe Text
agentVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:amiId:Instance' :: Maybe Text
amiId = forall a. Maybe a
Prelude.Nothing,
      $sel:architecture:Instance' :: Maybe Architecture
architecture = forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Instance' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:autoScalingType:Instance' :: Maybe AutoScalingType
autoScalingType = forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:Instance' :: Maybe Text
availabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:blockDeviceMappings:Instance' :: Maybe [BlockDeviceMapping]
blockDeviceMappings = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:Instance' :: Maybe Text
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:ebsOptimized:Instance' :: Maybe Bool
ebsOptimized = forall a. Maybe a
Prelude.Nothing,
      $sel:ec2InstanceId:Instance' :: Maybe Text
ec2InstanceId = forall a. Maybe a
Prelude.Nothing,
      $sel:ecsClusterArn:Instance' :: Maybe Text
ecsClusterArn = forall a. Maybe a
Prelude.Nothing,
      $sel:ecsContainerInstanceArn:Instance' :: Maybe Text
ecsContainerInstanceArn = forall a. Maybe a
Prelude.Nothing,
      $sel:elasticIp:Instance' :: Maybe Text
elasticIp = forall a. Maybe a
Prelude.Nothing,
      $sel:hostname:Instance' :: Maybe Text
hostname = forall a. Maybe a
Prelude.Nothing,
      $sel:infrastructureClass:Instance' :: Maybe Text
infrastructureClass = forall a. Maybe a
Prelude.Nothing,
      $sel:installUpdatesOnBoot:Instance' :: Maybe Bool
installUpdatesOnBoot = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceId:Instance' :: Maybe Text
instanceId = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceProfileArn:Instance' :: Maybe Text
instanceProfileArn = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:Instance' :: Maybe Text
instanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:lastServiceErrorId:Instance' :: Maybe Text
lastServiceErrorId = forall a. Maybe a
Prelude.Nothing,
      $sel:layerIds:Instance' :: Maybe [Text]
layerIds = forall a. Maybe a
Prelude.Nothing,
      $sel:os:Instance' :: Maybe Text
os = forall a. Maybe a
Prelude.Nothing,
      $sel:platform:Instance' :: Maybe Text
platform = forall a. Maybe a
Prelude.Nothing,
      $sel:privateDns:Instance' :: Maybe Text
privateDns = forall a. Maybe a
Prelude.Nothing,
      $sel:privateIp:Instance' :: Maybe Text
privateIp = forall a. Maybe a
Prelude.Nothing,
      $sel:publicDns:Instance' :: Maybe Text
publicDns = forall a. Maybe a
Prelude.Nothing,
      $sel:publicIp:Instance' :: Maybe Text
publicIp = forall a. Maybe a
Prelude.Nothing,
      $sel:registeredBy:Instance' :: Maybe Text
registeredBy = forall a. Maybe a
Prelude.Nothing,
      $sel:reportedAgentVersion:Instance' :: Maybe Text
reportedAgentVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:reportedOs:Instance' :: Maybe ReportedOs
reportedOs = forall a. Maybe a
Prelude.Nothing,
      $sel:rootDeviceType:Instance' :: Maybe RootDeviceType
rootDeviceType = forall a. Maybe a
Prelude.Nothing,
      $sel:rootDeviceVolumeId:Instance' :: Maybe Text
rootDeviceVolumeId = forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroupIds:Instance' :: Maybe [Text]
securityGroupIds = forall a. Maybe a
Prelude.Nothing,
      $sel:sshHostDsaKeyFingerprint:Instance' :: Maybe Text
sshHostDsaKeyFingerprint = forall a. Maybe a
Prelude.Nothing,
      $sel:sshHostRsaKeyFingerprint:Instance' :: Maybe Text
sshHostRsaKeyFingerprint = forall a. Maybe a
Prelude.Nothing,
      $sel:sshKeyName:Instance' :: Maybe Text
sshKeyName = forall a. Maybe a
Prelude.Nothing,
      $sel:stackId:Instance' :: Maybe Text
stackId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:Instance' :: Maybe Text
status = forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:Instance' :: Maybe Text
subnetId = forall a. Maybe a
Prelude.Nothing,
      $sel:tenancy:Instance' :: Maybe Text
tenancy = forall a. Maybe a
Prelude.Nothing,
      $sel:virtualizationType:Instance' :: Maybe VirtualizationType
virtualizationType = forall a. Maybe a
Prelude.Nothing
    }

-- | The agent version. This parameter is set to @INHERIT@ if the instance
-- inherits the default stack setting or to a a version number for a fixed
-- agent version.
instance_agentVersion :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_agentVersion :: Lens' Instance (Maybe Text)
instance_agentVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
agentVersion :: Maybe Text
$sel:agentVersion:Instance' :: Instance -> Maybe Text
agentVersion} -> Maybe Text
agentVersion) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:agentVersion:Instance' :: Maybe Text
agentVersion = Maybe Text
a} :: Instance)

-- | A custom AMI ID to be used to create the instance. For more information,
-- see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
instance_amiId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_amiId :: Lens' Instance (Maybe Text)
instance_amiId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
amiId :: Maybe Text
$sel:amiId:Instance' :: Instance -> Maybe Text
amiId} -> Maybe Text
amiId) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:amiId:Instance' :: Maybe Text
amiId = Maybe Text
a} :: Instance)

-- | The instance architecture: \"i386\" or \"x86_64\".
instance_architecture :: Lens.Lens' Instance (Prelude.Maybe Architecture)
instance_architecture :: Lens' Instance (Maybe Architecture)
instance_architecture = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Architecture
architecture :: Maybe Architecture
$sel:architecture:Instance' :: Instance -> Maybe Architecture
architecture} -> Maybe Architecture
architecture) (\s :: Instance
s@Instance' {} Maybe Architecture
a -> Instance
s {$sel:architecture:Instance' :: Maybe Architecture
architecture = Maybe Architecture
a} :: Instance)

-- | The instance\'s Amazon Resource Number (ARN).
instance_arn :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_arn :: Lens' Instance (Maybe Text)
instance_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
arn :: Maybe Text
$sel:arn:Instance' :: Instance -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:arn:Instance' :: Maybe Text
arn = Maybe Text
a} :: Instance)

-- | For load-based or time-based instances, the type.
instance_autoScalingType :: Lens.Lens' Instance (Prelude.Maybe AutoScalingType)
instance_autoScalingType :: Lens' Instance (Maybe AutoScalingType)
instance_autoScalingType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe AutoScalingType
autoScalingType :: Maybe AutoScalingType
$sel:autoScalingType:Instance' :: Instance -> Maybe AutoScalingType
autoScalingType} -> Maybe AutoScalingType
autoScalingType) (\s :: Instance
s@Instance' {} Maybe AutoScalingType
a -> Instance
s {$sel:autoScalingType:Instance' :: Maybe AutoScalingType
autoScalingType = Maybe AutoScalingType
a} :: Instance)

-- | The instance Availability Zone. For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
instance_availabilityZone :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_availabilityZone :: Lens' Instance (Maybe Text)
instance_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:Instance' :: Instance -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:availabilityZone:Instance' :: Maybe Text
availabilityZone = Maybe Text
a} :: Instance)

-- | An array of @BlockDeviceMapping@ objects that specify the instance\'s
-- block device mappings.
instance_blockDeviceMappings :: Lens.Lens' Instance (Prelude.Maybe [BlockDeviceMapping])
instance_blockDeviceMappings :: Lens' Instance (Maybe [BlockDeviceMapping])
instance_blockDeviceMappings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe [BlockDeviceMapping]
blockDeviceMappings :: Maybe [BlockDeviceMapping]
$sel:blockDeviceMappings:Instance' :: Instance -> Maybe [BlockDeviceMapping]
blockDeviceMappings} -> Maybe [BlockDeviceMapping]
blockDeviceMappings) (\s :: Instance
s@Instance' {} Maybe [BlockDeviceMapping]
a -> Instance
s {$sel:blockDeviceMappings:Instance' :: Maybe [BlockDeviceMapping]
blockDeviceMappings = Maybe [BlockDeviceMapping]
a} :: Instance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The time that the instance was created.
instance_createdAt :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_createdAt :: Lens' Instance (Maybe Text)
instance_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
createdAt :: Maybe Text
$sel:createdAt:Instance' :: Instance -> Maybe Text
createdAt} -> Maybe Text
createdAt) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:createdAt:Instance' :: Maybe Text
createdAt = Maybe Text
a} :: Instance)

-- | Whether this is an Amazon EBS-optimized instance.
instance_ebsOptimized :: Lens.Lens' Instance (Prelude.Maybe Prelude.Bool)
instance_ebsOptimized :: Lens' Instance (Maybe Bool)
instance_ebsOptimized = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Bool
ebsOptimized :: Maybe Bool
$sel:ebsOptimized:Instance' :: Instance -> Maybe Bool
ebsOptimized} -> Maybe Bool
ebsOptimized) (\s :: Instance
s@Instance' {} Maybe Bool
a -> Instance
s {$sel:ebsOptimized:Instance' :: Maybe Bool
ebsOptimized = Maybe Bool
a} :: Instance)

-- | The ID of the associated Amazon EC2 instance.
instance_ec2InstanceId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_ec2InstanceId :: Lens' Instance (Maybe Text)
instance_ec2InstanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
ec2InstanceId :: Maybe Text
$sel:ec2InstanceId:Instance' :: Instance -> Maybe Text
ec2InstanceId} -> Maybe Text
ec2InstanceId) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:ec2InstanceId:Instance' :: Maybe Text
ec2InstanceId = Maybe Text
a} :: Instance)

-- | For container instances, the Amazon ECS cluster\'s ARN.
instance_ecsClusterArn :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_ecsClusterArn :: Lens' Instance (Maybe Text)
instance_ecsClusterArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
ecsClusterArn :: Maybe Text
$sel:ecsClusterArn:Instance' :: Instance -> Maybe Text
ecsClusterArn} -> Maybe Text
ecsClusterArn) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:ecsClusterArn:Instance' :: Maybe Text
ecsClusterArn = Maybe Text
a} :: Instance)

-- | For container instances, the instance\'s ARN.
instance_ecsContainerInstanceArn :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_ecsContainerInstanceArn :: Lens' Instance (Maybe Text)
instance_ecsContainerInstanceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
ecsContainerInstanceArn :: Maybe Text
$sel:ecsContainerInstanceArn:Instance' :: Instance -> Maybe Text
ecsContainerInstanceArn} -> Maybe Text
ecsContainerInstanceArn) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:ecsContainerInstanceArn:Instance' :: Maybe Text
ecsContainerInstanceArn = Maybe Text
a} :: Instance)

-- | The instance
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>
-- .
instance_elasticIp :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_elasticIp :: Lens' Instance (Maybe Text)
instance_elasticIp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
elasticIp :: Maybe Text
$sel:elasticIp:Instance' :: Instance -> Maybe Text
elasticIp} -> Maybe Text
elasticIp) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:elasticIp:Instance' :: Maybe Text
elasticIp = Maybe Text
a} :: Instance)

-- | The instance host name.
instance_hostname :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_hostname :: Lens' Instance (Maybe Text)
instance_hostname = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
hostname :: Maybe Text
$sel:hostname:Instance' :: Instance -> Maybe Text
hostname} -> Maybe Text
hostname) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:hostname:Instance' :: Maybe Text
hostname = Maybe Text
a} :: Instance)

-- | For registered instances, the infrastructure class: @ec2@ or
-- @on-premises@.
instance_infrastructureClass :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_infrastructureClass :: Lens' Instance (Maybe Text)
instance_infrastructureClass = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
infrastructureClass :: Maybe Text
$sel:infrastructureClass:Instance' :: Instance -> Maybe Text
infrastructureClass} -> Maybe Text
infrastructureClass) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:infrastructureClass:Instance' :: Maybe Text
infrastructureClass = Maybe Text
a} :: Instance)

-- | Whether to install operating system and package updates when the
-- instance boots. The default value is @true@. If this value is set to
-- @false@, you must then update your instances manually by using
-- CreateDeployment to run the @update_dependencies@ stack command or by
-- manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the
-- instances.
--
-- We strongly recommend using the default value of @true@, to ensure that
-- your instances have the latest security updates.
instance_installUpdatesOnBoot :: Lens.Lens' Instance (Prelude.Maybe Prelude.Bool)
instance_installUpdatesOnBoot :: Lens' Instance (Maybe Bool)
instance_installUpdatesOnBoot = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Bool
installUpdatesOnBoot :: Maybe Bool
$sel:installUpdatesOnBoot:Instance' :: Instance -> Maybe Bool
installUpdatesOnBoot} -> Maybe Bool
installUpdatesOnBoot) (\s :: Instance
s@Instance' {} Maybe Bool
a -> Instance
s {$sel:installUpdatesOnBoot:Instance' :: Maybe Bool
installUpdatesOnBoot = Maybe Bool
a} :: Instance)

-- | The instance ID.
instance_instanceId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_instanceId :: Lens' Instance (Maybe Text)
instance_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
instanceId :: Maybe Text
$sel:instanceId:Instance' :: Instance -> Maybe Text
instanceId} -> Maybe Text
instanceId) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:instanceId:Instance' :: Maybe Text
instanceId = Maybe Text
a} :: Instance)

-- | The ARN of the instance\'s IAM profile. For more information about IAM
-- ARNs, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
instance_instanceProfileArn :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_instanceProfileArn :: Lens' Instance (Maybe Text)
instance_instanceProfileArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
instanceProfileArn :: Maybe Text
$sel:instanceProfileArn:Instance' :: Instance -> Maybe Text
instanceProfileArn} -> Maybe Text
instanceProfileArn) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:instanceProfileArn:Instance' :: Maybe Text
instanceProfileArn = Maybe Text
a} :: Instance)

-- | The instance type, such as @t2.micro@.
instance_instanceType :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_instanceType :: Lens' Instance (Maybe Text)
instance_instanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
instanceType :: Maybe Text
$sel:instanceType:Instance' :: Instance -> Maybe Text
instanceType} -> Maybe Text
instanceType) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:instanceType:Instance' :: Maybe Text
instanceType = Maybe Text
a} :: Instance)

-- | The ID of the last service error. For more information, call
-- DescribeServiceErrors.
instance_lastServiceErrorId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_lastServiceErrorId :: Lens' Instance (Maybe Text)
instance_lastServiceErrorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
lastServiceErrorId :: Maybe Text
$sel:lastServiceErrorId:Instance' :: Instance -> Maybe Text
lastServiceErrorId} -> Maybe Text
lastServiceErrorId) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:lastServiceErrorId:Instance' :: Maybe Text
lastServiceErrorId = Maybe Text
a} :: Instance)

-- | An array containing the instance layer IDs.
instance_layerIds :: Lens.Lens' Instance (Prelude.Maybe [Prelude.Text])
instance_layerIds :: Lens' Instance (Maybe [Text])
instance_layerIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe [Text]
layerIds :: Maybe [Text]
$sel:layerIds:Instance' :: Instance -> Maybe [Text]
layerIds} -> Maybe [Text]
layerIds) (\s :: Instance
s@Instance' {} Maybe [Text]
a -> Instance
s {$sel:layerIds:Instance' :: Maybe [Text]
layerIds = Maybe [Text]
a} :: Instance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The instance\'s operating system.
instance_os :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_os :: Lens' Instance (Maybe Text)
instance_os = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
os :: Maybe Text
$sel:os:Instance' :: Instance -> Maybe Text
os} -> Maybe Text
os) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:os:Instance' :: Maybe Text
os = Maybe Text
a} :: Instance)

-- | The instance\'s platform.
instance_platform :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_platform :: Lens' Instance (Maybe Text)
instance_platform = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
platform :: Maybe Text
$sel:platform:Instance' :: Instance -> Maybe Text
platform} -> Maybe Text
platform) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:platform:Instance' :: Maybe Text
platform = Maybe Text
a} :: Instance)

-- | The instance\'s private DNS name.
instance_privateDns :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_privateDns :: Lens' Instance (Maybe Text)
instance_privateDns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
privateDns :: Maybe Text
$sel:privateDns:Instance' :: Instance -> Maybe Text
privateDns} -> Maybe Text
privateDns) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:privateDns:Instance' :: Maybe Text
privateDns = Maybe Text
a} :: Instance)

-- | The instance\'s private IP address.
instance_privateIp :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_privateIp :: Lens' Instance (Maybe Text)
instance_privateIp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
privateIp :: Maybe Text
$sel:privateIp:Instance' :: Instance -> Maybe Text
privateIp} -> Maybe Text
privateIp) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:privateIp:Instance' :: Maybe Text
privateIp = Maybe Text
a} :: Instance)

-- | The instance public DNS name.
instance_publicDns :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_publicDns :: Lens' Instance (Maybe Text)
instance_publicDns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
publicDns :: Maybe Text
$sel:publicDns:Instance' :: Instance -> Maybe Text
publicDns} -> Maybe Text
publicDns) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:publicDns:Instance' :: Maybe Text
publicDns = Maybe Text
a} :: Instance)

-- | The instance public IP address.
instance_publicIp :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_publicIp :: Lens' Instance (Maybe Text)
instance_publicIp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
publicIp :: Maybe Text
$sel:publicIp:Instance' :: Instance -> Maybe Text
publicIp} -> Maybe Text
publicIp) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:publicIp:Instance' :: Maybe Text
publicIp = Maybe Text
a} :: Instance)

-- | For registered instances, who performed the registration.
instance_registeredBy :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_registeredBy :: Lens' Instance (Maybe Text)
instance_registeredBy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
registeredBy :: Maybe Text
$sel:registeredBy:Instance' :: Instance -> Maybe Text
registeredBy} -> Maybe Text
registeredBy) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:registeredBy:Instance' :: Maybe Text
registeredBy = Maybe Text
a} :: Instance)

-- | The instance\'s reported AWS OpsWorks Stacks agent version.
instance_reportedAgentVersion :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_reportedAgentVersion :: Lens' Instance (Maybe Text)
instance_reportedAgentVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
reportedAgentVersion :: Maybe Text
$sel:reportedAgentVersion:Instance' :: Instance -> Maybe Text
reportedAgentVersion} -> Maybe Text
reportedAgentVersion) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:reportedAgentVersion:Instance' :: Maybe Text
reportedAgentVersion = Maybe Text
a} :: Instance)

-- | For registered instances, the reported operating system.
instance_reportedOs :: Lens.Lens' Instance (Prelude.Maybe ReportedOs)
instance_reportedOs :: Lens' Instance (Maybe ReportedOs)
instance_reportedOs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe ReportedOs
reportedOs :: Maybe ReportedOs
$sel:reportedOs:Instance' :: Instance -> Maybe ReportedOs
reportedOs} -> Maybe ReportedOs
reportedOs) (\s :: Instance
s@Instance' {} Maybe ReportedOs
a -> Instance
s {$sel:reportedOs:Instance' :: Maybe ReportedOs
reportedOs = Maybe ReportedOs
a} :: Instance)

-- | The instance\'s root device type. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
instance_rootDeviceType :: Lens.Lens' Instance (Prelude.Maybe RootDeviceType)
instance_rootDeviceType :: Lens' Instance (Maybe RootDeviceType)
instance_rootDeviceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe RootDeviceType
rootDeviceType :: Maybe RootDeviceType
$sel:rootDeviceType:Instance' :: Instance -> Maybe RootDeviceType
rootDeviceType} -> Maybe RootDeviceType
rootDeviceType) (\s :: Instance
s@Instance' {} Maybe RootDeviceType
a -> Instance
s {$sel:rootDeviceType:Instance' :: Maybe RootDeviceType
rootDeviceType = Maybe RootDeviceType
a} :: Instance)

-- | The root device volume ID.
instance_rootDeviceVolumeId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_rootDeviceVolumeId :: Lens' Instance (Maybe Text)
instance_rootDeviceVolumeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
rootDeviceVolumeId :: Maybe Text
$sel:rootDeviceVolumeId:Instance' :: Instance -> Maybe Text
rootDeviceVolumeId} -> Maybe Text
rootDeviceVolumeId) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:rootDeviceVolumeId:Instance' :: Maybe Text
rootDeviceVolumeId = Maybe Text
a} :: Instance)

-- | An array containing the instance security group IDs.
instance_securityGroupIds :: Lens.Lens' Instance (Prelude.Maybe [Prelude.Text])
instance_securityGroupIds :: Lens' Instance (Maybe [Text])
instance_securityGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe [Text]
securityGroupIds :: Maybe [Text]
$sel:securityGroupIds:Instance' :: Instance -> Maybe [Text]
securityGroupIds} -> Maybe [Text]
securityGroupIds) (\s :: Instance
s@Instance' {} Maybe [Text]
a -> Instance
s {$sel:securityGroupIds:Instance' :: Maybe [Text]
securityGroupIds = Maybe [Text]
a} :: Instance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The SSH key\'s Deep Security Agent (DSA) fingerprint.
instance_sshHostDsaKeyFingerprint :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_sshHostDsaKeyFingerprint :: Lens' Instance (Maybe Text)
instance_sshHostDsaKeyFingerprint = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
sshHostDsaKeyFingerprint :: Maybe Text
$sel:sshHostDsaKeyFingerprint:Instance' :: Instance -> Maybe Text
sshHostDsaKeyFingerprint} -> Maybe Text
sshHostDsaKeyFingerprint) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:sshHostDsaKeyFingerprint:Instance' :: Maybe Text
sshHostDsaKeyFingerprint = Maybe Text
a} :: Instance)

-- | The SSH key\'s RSA fingerprint.
instance_sshHostRsaKeyFingerprint :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_sshHostRsaKeyFingerprint :: Lens' Instance (Maybe Text)
instance_sshHostRsaKeyFingerprint = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
sshHostRsaKeyFingerprint :: Maybe Text
$sel:sshHostRsaKeyFingerprint:Instance' :: Instance -> Maybe Text
sshHostRsaKeyFingerprint} -> Maybe Text
sshHostRsaKeyFingerprint) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:sshHostRsaKeyFingerprint:Instance' :: Maybe Text
sshHostRsaKeyFingerprint = Maybe Text
a} :: Instance)

-- | The instance\'s Amazon EC2 key-pair name.
instance_sshKeyName :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_sshKeyName :: Lens' Instance (Maybe Text)
instance_sshKeyName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
sshKeyName :: Maybe Text
$sel:sshKeyName:Instance' :: Instance -> Maybe Text
sshKeyName} -> Maybe Text
sshKeyName) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:sshKeyName:Instance' :: Maybe Text
sshKeyName = Maybe Text
a} :: Instance)

-- | The stack ID.
instance_stackId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_stackId :: Lens' Instance (Maybe Text)
instance_stackId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
stackId :: Maybe Text
$sel:stackId:Instance' :: Instance -> Maybe Text
stackId} -> Maybe Text
stackId) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:stackId:Instance' :: Maybe Text
stackId = Maybe Text
a} :: Instance)

-- | The instance status:
--
-- -   @booting@
--
-- -   @connection_lost@
--
-- -   @online@
--
-- -   @pending@
--
-- -   @rebooting@
--
-- -   @requested@
--
-- -   @running_setup@
--
-- -   @setup_failed@
--
-- -   @shutting_down@
--
-- -   @start_failed@
--
-- -   @stop_failed@
--
-- -   @stopped@
--
-- -   @stopping@
--
-- -   @terminated@
--
-- -   @terminating@
instance_status :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_status :: Lens' Instance (Maybe Text)
instance_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
status :: Maybe Text
$sel:status:Instance' :: Instance -> Maybe Text
status} -> Maybe Text
status) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:status:Instance' :: Maybe Text
status = Maybe Text
a} :: Instance)

-- | The instance\'s subnet ID; applicable only if the stack is running in a
-- VPC.
instance_subnetId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_subnetId :: Lens' Instance (Maybe Text)
instance_subnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
subnetId :: Maybe Text
$sel:subnetId:Instance' :: Instance -> Maybe Text
subnetId} -> Maybe Text
subnetId) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:subnetId:Instance' :: Maybe Text
subnetId = Maybe Text
a} :: Instance)

-- | The instance\'s tenancy option, such as @dedicated@ or @host@.
instance_tenancy :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_tenancy :: Lens' Instance (Maybe Text)
instance_tenancy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe Text
tenancy :: Maybe Text
$sel:tenancy:Instance' :: Instance -> Maybe Text
tenancy} -> Maybe Text
tenancy) (\s :: Instance
s@Instance' {} Maybe Text
a -> Instance
s {$sel:tenancy:Instance' :: Maybe Text
tenancy = Maybe Text
a} :: Instance)

-- | The instance\'s virtualization type: @paravirtual@ or @hvm@.
instance_virtualizationType :: Lens.Lens' Instance (Prelude.Maybe VirtualizationType)
instance_virtualizationType :: Lens' Instance (Maybe VirtualizationType)
instance_virtualizationType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Instance' {Maybe VirtualizationType
virtualizationType :: Maybe VirtualizationType
$sel:virtualizationType:Instance' :: Instance -> Maybe VirtualizationType
virtualizationType} -> Maybe VirtualizationType
virtualizationType) (\s :: Instance
s@Instance' {} Maybe VirtualizationType
a -> Instance
s {$sel:virtualizationType:Instance' :: Maybe VirtualizationType
virtualizationType = Maybe VirtualizationType
a} :: Instance)

instance Data.FromJSON Instance where
  parseJSON :: Value -> Parser Instance
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Instance"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Architecture
-> Maybe Text
-> Maybe AutoScalingType
-> Maybe Text
-> Maybe [BlockDeviceMapping]
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ReportedOs
-> Maybe RootDeviceType
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe VirtualizationType
-> Instance
Instance'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AgentVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AmiId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Architecture")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AutoScalingType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AvailabilityZone")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BlockDeviceMappings"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EbsOptimized")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Ec2InstanceId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EcsClusterArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EcsContainerInstanceArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ElasticIp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Hostname")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InfrastructureClass")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InstallUpdatesOnBoot")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InstanceId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InstanceProfileArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InstanceType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastServiceErrorId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LayerIds" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Os")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Platform")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PrivateDns")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PrivateIp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PublicDns")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PublicIp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RegisteredBy")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ReportedAgentVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ReportedOs")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RootDeviceType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RootDeviceVolumeId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SecurityGroupIds"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SshHostDsaKeyFingerprint")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SshHostRsaKeyFingerprint")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SshKeyName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"StackId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SubnetId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Tenancy")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"VirtualizationType")
      )

instance Prelude.Hashable Instance where
  hashWithSalt :: Int -> Instance -> Int
hashWithSalt Int
_salt Instance' {Maybe Bool
Maybe [Text]
Maybe [BlockDeviceMapping]
Maybe Text
Maybe Architecture
Maybe AutoScalingType
Maybe ReportedOs
Maybe RootDeviceType
Maybe VirtualizationType
virtualizationType :: Maybe VirtualizationType
tenancy :: Maybe Text
subnetId :: Maybe Text
status :: Maybe Text
stackId :: Maybe Text
sshKeyName :: Maybe Text
sshHostRsaKeyFingerprint :: Maybe Text
sshHostDsaKeyFingerprint :: Maybe Text
securityGroupIds :: Maybe [Text]
rootDeviceVolumeId :: Maybe Text
rootDeviceType :: Maybe RootDeviceType
reportedOs :: Maybe ReportedOs
reportedAgentVersion :: Maybe Text
registeredBy :: Maybe Text
publicIp :: Maybe Text
publicDns :: Maybe Text
privateIp :: Maybe Text
privateDns :: Maybe Text
platform :: Maybe Text
os :: Maybe Text
layerIds :: Maybe [Text]
lastServiceErrorId :: Maybe Text
instanceType :: Maybe Text
instanceProfileArn :: Maybe Text
instanceId :: Maybe Text
installUpdatesOnBoot :: Maybe Bool
infrastructureClass :: Maybe Text
hostname :: Maybe Text
elasticIp :: Maybe Text
ecsContainerInstanceArn :: Maybe Text
ecsClusterArn :: Maybe Text
ec2InstanceId :: Maybe Text
ebsOptimized :: Maybe Bool
createdAt :: Maybe Text
blockDeviceMappings :: Maybe [BlockDeviceMapping]
availabilityZone :: Maybe Text
autoScalingType :: Maybe AutoScalingType
arn :: Maybe Text
architecture :: Maybe Architecture
amiId :: Maybe Text
agentVersion :: Maybe Text
$sel:virtualizationType:Instance' :: Instance -> Maybe VirtualizationType
$sel:tenancy:Instance' :: Instance -> Maybe Text
$sel:subnetId:Instance' :: Instance -> Maybe Text
$sel:status:Instance' :: Instance -> Maybe Text
$sel:stackId:Instance' :: Instance -> Maybe Text
$sel:sshKeyName:Instance' :: Instance -> Maybe Text
$sel:sshHostRsaKeyFingerprint:Instance' :: Instance -> Maybe Text
$sel:sshHostDsaKeyFingerprint:Instance' :: Instance -> Maybe Text
$sel:securityGroupIds:Instance' :: Instance -> Maybe [Text]
$sel:rootDeviceVolumeId:Instance' :: Instance -> Maybe Text
$sel:rootDeviceType:Instance' :: Instance -> Maybe RootDeviceType
$sel:reportedOs:Instance' :: Instance -> Maybe ReportedOs
$sel:reportedAgentVersion:Instance' :: Instance -> Maybe Text
$sel:registeredBy:Instance' :: Instance -> Maybe Text
$sel:publicIp:Instance' :: Instance -> Maybe Text
$sel:publicDns:Instance' :: Instance -> Maybe Text
$sel:privateIp:Instance' :: Instance -> Maybe Text
$sel:privateDns:Instance' :: Instance -> Maybe Text
$sel:platform:Instance' :: Instance -> Maybe Text
$sel:os:Instance' :: Instance -> Maybe Text
$sel:layerIds:Instance' :: Instance -> Maybe [Text]
$sel:lastServiceErrorId:Instance' :: Instance -> Maybe Text
$sel:instanceType:Instance' :: Instance -> Maybe Text
$sel:instanceProfileArn:Instance' :: Instance -> Maybe Text
$sel:instanceId:Instance' :: Instance -> Maybe Text
$sel:installUpdatesOnBoot:Instance' :: Instance -> Maybe Bool
$sel:infrastructureClass:Instance' :: Instance -> Maybe Text
$sel:hostname:Instance' :: Instance -> Maybe Text
$sel:elasticIp:Instance' :: Instance -> Maybe Text
$sel:ecsContainerInstanceArn:Instance' :: Instance -> Maybe Text
$sel:ecsClusterArn:Instance' :: Instance -> Maybe Text
$sel:ec2InstanceId:Instance' :: Instance -> Maybe Text
$sel:ebsOptimized:Instance' :: Instance -> Maybe Bool
$sel:createdAt:Instance' :: Instance -> Maybe Text
$sel:blockDeviceMappings:Instance' :: Instance -> Maybe [BlockDeviceMapping]
$sel:availabilityZone:Instance' :: Instance -> Maybe Text
$sel:autoScalingType:Instance' :: Instance -> Maybe AutoScalingType
$sel:arn:Instance' :: Instance -> Maybe Text
$sel:architecture:Instance' :: Instance -> Maybe Architecture
$sel:amiId:Instance' :: Instance -> Maybe Text
$sel:agentVersion:Instance' :: Instance -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
agentVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
amiId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Architecture
architecture
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutoScalingType
autoScalingType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [BlockDeviceMapping]
blockDeviceMappings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
ebsOptimized
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ec2InstanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ecsClusterArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ecsContainerInstanceArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
elasticIp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
hostname
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
infrastructureClass
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
installUpdatesOnBoot
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceProfileArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastServiceErrorId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
layerIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
os
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
platform
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
privateDns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
privateIp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
publicDns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
publicIp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
registeredBy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reportedAgentVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReportedOs
reportedOs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RootDeviceType
rootDeviceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
rootDeviceVolumeId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
securityGroupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sshHostDsaKeyFingerprint
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sshHostRsaKeyFingerprint
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sshKeyName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stackId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subnetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
tenancy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VirtualizationType
virtualizationType

instance Prelude.NFData Instance where
  rnf :: Instance -> ()
rnf Instance' {Maybe Bool
Maybe [Text]
Maybe [BlockDeviceMapping]
Maybe Text
Maybe Architecture
Maybe AutoScalingType
Maybe ReportedOs
Maybe RootDeviceType
Maybe VirtualizationType
virtualizationType :: Maybe VirtualizationType
tenancy :: Maybe Text
subnetId :: Maybe Text
status :: Maybe Text
stackId :: Maybe Text
sshKeyName :: Maybe Text
sshHostRsaKeyFingerprint :: Maybe Text
sshHostDsaKeyFingerprint :: Maybe Text
securityGroupIds :: Maybe [Text]
rootDeviceVolumeId :: Maybe Text
rootDeviceType :: Maybe RootDeviceType
reportedOs :: Maybe ReportedOs
reportedAgentVersion :: Maybe Text
registeredBy :: Maybe Text
publicIp :: Maybe Text
publicDns :: Maybe Text
privateIp :: Maybe Text
privateDns :: Maybe Text
platform :: Maybe Text
os :: Maybe Text
layerIds :: Maybe [Text]
lastServiceErrorId :: Maybe Text
instanceType :: Maybe Text
instanceProfileArn :: Maybe Text
instanceId :: Maybe Text
installUpdatesOnBoot :: Maybe Bool
infrastructureClass :: Maybe Text
hostname :: Maybe Text
elasticIp :: Maybe Text
ecsContainerInstanceArn :: Maybe Text
ecsClusterArn :: Maybe Text
ec2InstanceId :: Maybe Text
ebsOptimized :: Maybe Bool
createdAt :: Maybe Text
blockDeviceMappings :: Maybe [BlockDeviceMapping]
availabilityZone :: Maybe Text
autoScalingType :: Maybe AutoScalingType
arn :: Maybe Text
architecture :: Maybe Architecture
amiId :: Maybe Text
agentVersion :: Maybe Text
$sel:virtualizationType:Instance' :: Instance -> Maybe VirtualizationType
$sel:tenancy:Instance' :: Instance -> Maybe Text
$sel:subnetId:Instance' :: Instance -> Maybe Text
$sel:status:Instance' :: Instance -> Maybe Text
$sel:stackId:Instance' :: Instance -> Maybe Text
$sel:sshKeyName:Instance' :: Instance -> Maybe Text
$sel:sshHostRsaKeyFingerprint:Instance' :: Instance -> Maybe Text
$sel:sshHostDsaKeyFingerprint:Instance' :: Instance -> Maybe Text
$sel:securityGroupIds:Instance' :: Instance -> Maybe [Text]
$sel:rootDeviceVolumeId:Instance' :: Instance -> Maybe Text
$sel:rootDeviceType:Instance' :: Instance -> Maybe RootDeviceType
$sel:reportedOs:Instance' :: Instance -> Maybe ReportedOs
$sel:reportedAgentVersion:Instance' :: Instance -> Maybe Text
$sel:registeredBy:Instance' :: Instance -> Maybe Text
$sel:publicIp:Instance' :: Instance -> Maybe Text
$sel:publicDns:Instance' :: Instance -> Maybe Text
$sel:privateIp:Instance' :: Instance -> Maybe Text
$sel:privateDns:Instance' :: Instance -> Maybe Text
$sel:platform:Instance' :: Instance -> Maybe Text
$sel:os:Instance' :: Instance -> Maybe Text
$sel:layerIds:Instance' :: Instance -> Maybe [Text]
$sel:lastServiceErrorId:Instance' :: Instance -> Maybe Text
$sel:instanceType:Instance' :: Instance -> Maybe Text
$sel:instanceProfileArn:Instance' :: Instance -> Maybe Text
$sel:instanceId:Instance' :: Instance -> Maybe Text
$sel:installUpdatesOnBoot:Instance' :: Instance -> Maybe Bool
$sel:infrastructureClass:Instance' :: Instance -> Maybe Text
$sel:hostname:Instance' :: Instance -> Maybe Text
$sel:elasticIp:Instance' :: Instance -> Maybe Text
$sel:ecsContainerInstanceArn:Instance' :: Instance -> Maybe Text
$sel:ecsClusterArn:Instance' :: Instance -> Maybe Text
$sel:ec2InstanceId:Instance' :: Instance -> Maybe Text
$sel:ebsOptimized:Instance' :: Instance -> Maybe Bool
$sel:createdAt:Instance' :: Instance -> Maybe Text
$sel:blockDeviceMappings:Instance' :: Instance -> Maybe [BlockDeviceMapping]
$sel:availabilityZone:Instance' :: Instance -> Maybe Text
$sel:autoScalingType:Instance' :: Instance -> Maybe AutoScalingType
$sel:arn:Instance' :: Instance -> Maybe Text
$sel:architecture:Instance' :: Instance -> Maybe Architecture
$sel:amiId:Instance' :: Instance -> Maybe Text
$sel:agentVersion:Instance' :: Instance -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
agentVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
amiId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Architecture
architecture
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AutoScalingType
autoScalingType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [BlockDeviceMapping]
blockDeviceMappings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
ebsOptimized
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ec2InstanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ecsClusterArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ecsContainerInstanceArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
elasticIp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
hostname
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
infrastructureClass
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
installUpdatesOnBoot
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceProfileArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastServiceErrorId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
layerIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
os
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platform
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
privateDns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
privateIp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
publicDns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
publicIp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
registeredBy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
reportedAgentVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ReportedOs
reportedOs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe RootDeviceType
rootDeviceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
rootDeviceVolumeId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
securityGroupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
sshHostDsaKeyFingerprint
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
sshHostRsaKeyFingerprint
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
sshKeyName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
stackId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
subnetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
tenancy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe VirtualizationType
virtualizationType