{-# 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-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.OpsWorks.Types.Instance where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
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 instance\'s private DNS name.
    Instance -> Maybe Text
privateDns :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s reported AWS OpsWorks Stacks agent version.
    Instance -> Maybe Text
reportedAgentVersion :: Prelude.Maybe Prelude.Text,
    -- | The instance ID.
    Instance -> Maybe Text
instanceId :: 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 private IP address.
    Instance -> Maybe Text
privateIp :: 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\'s virtualization type: @paravirtual@ or @hvm@.
    Instance -> Maybe VirtualizationType
virtualizationType :: Prelude.Maybe VirtualizationType,
    -- | 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\'s platform.
    Instance -> Maybe Text
platform :: Prelude.Maybe Prelude.Text,
    -- | The instance host name.
    Instance -> Maybe Text
hostname :: Prelude.Maybe Prelude.Text,
    -- | The SSH key\'s RSA fingerprint.
    Instance -> Maybe Text
sshHostRsaKeyFingerprint :: Prelude.Maybe Prelude.Text,
    -- | An array containing the instance security group IDs.
    Instance -> Maybe [Text]
securityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | For container instances, the Amazon ECS cluster\'s ARN.
    Instance -> Maybe Text
ecsClusterArn :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s Amazon Resource Number (ARN).
    Instance -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The time that the instance was created.
    Instance -> Maybe Text
createdAt :: Prelude.Maybe Prelude.Text,
    -- | The ID of the associated Amazon EC2 instance.
    Instance -> Maybe Text
ec2InstanceId :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s Amazon EC2 key-pair name.
    Instance -> Maybe Text
sshKeyName :: Prelude.Maybe Prelude.Text,
    -- | 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,
    -- | The root device volume ID.
    Instance -> Maybe Text
rootDeviceVolumeId :: 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,
    -- | For registered instances, the infrastructure class: @ec2@ or
    -- @on-premises@.
    Instance -> Maybe Text
infrastructureClass :: Prelude.Maybe Prelude.Text,
    -- | The SSH key\'s Deep Security Agent (DSA) fingerprint.
    Instance -> Maybe Text
sshHostDsaKeyFingerprint :: Prelude.Maybe Prelude.Text,
    -- | The instance type, such as @t2.micro@.
    Instance -> Maybe Text
instanceType :: Prelude.Maybe Prelude.Text,
    -- | Whether this is an Amazon EBS-optimized instance.
    Instance -> Maybe Bool
ebsOptimized :: Prelude.Maybe Prelude.Bool,
    -- | 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\'s operating system.
    Instance -> Maybe Text
os :: Prelude.Maybe Prelude.Text,
    -- | 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,
    -- | The ID of the last service error. For more information, call
    -- DescribeServiceErrors.
    Instance -> Maybe Text
lastServiceErrorId :: Prelude.Maybe Prelude.Text,
    -- | The instance\'s tenancy option, such as @dedicated@ or @host@.
    Instance -> Maybe Text
tenancy :: Prelude.Maybe Prelude.Text,
    -- | For load-based or time-based instances, the type.
    Instance -> Maybe AutoScalingType
autoScalingType :: Prelude.Maybe AutoScalingType,
    -- | An array containing the instance layer IDs.
    Instance -> Maybe [Text]
layerIds :: Prelude.Maybe [Prelude.Text],
    -- | The instance architecture: \"i386\" or \"x86_64\".
    Instance -> Maybe Architecture
architecture :: Prelude.Maybe Architecture,
    -- | The instance public DNS name.
    Instance -> Maybe Text
publicDns :: 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 public IP address.
    Instance -> Maybe Text
publicIp :: Prelude.Maybe Prelude.Text,
    -- | For registered instances, the reported operating system.
    Instance -> Maybe ReportedOs
reportedOs :: Prelude.Maybe ReportedOs,
    -- | For registered instances, who performed the registration.
    Instance -> Maybe Text
registeredBy :: Prelude.Maybe Prelude.Text,
    -- | The stack ID.
    Instance -> Maybe Text
stackId :: Prelude.Maybe Prelude.Text,
    -- | 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,
    -- | For container instances, the instance\'s ARN.
    Instance -> Maybe Text
ecsContainerInstanceArn :: Prelude.Maybe Prelude.Text,
    -- | An array of @BlockDeviceMapping@ objects that specify the instance\'s
    -- block device mappings.
    Instance -> Maybe [BlockDeviceMapping]
blockDeviceMappings :: Prelude.Maybe [BlockDeviceMapping]
  }
  deriving (Instance -> Instance -> Bool
(Instance -> Instance -> Bool)
-> (Instance -> Instance -> Bool) -> Eq Instance
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]
(Int -> ReadS Instance)
-> ReadS [Instance]
-> ReadPrec Instance
-> ReadPrec [Instance]
-> Read 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
(Int -> Instance -> ShowS)
-> (Instance -> String) -> ([Instance] -> ShowS) -> Show Instance
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. Instance -> Rep Instance x)
-> (forall x. Rep Instance x -> Instance) -> Generic Instance
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:
--
-- 'privateDns', 'instance_privateDns' - The instance\'s private DNS name.
--
-- 'reportedAgentVersion', 'instance_reportedAgentVersion' - The instance\'s reported AWS OpsWorks Stacks agent version.
--
-- 'instanceId', 'instance_instanceId' - The instance 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@
--
-- 'privateIp', 'instance_privateIp' - The instance\'s private IP address.
--
-- '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.
--
-- 'virtualizationType', 'instance_virtualizationType' - The instance\'s virtualization type: @paravirtual@ or @hvm@.
--
-- '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>.
--
-- 'platform', 'instance_platform' - The instance\'s platform.
--
-- 'hostname', 'instance_hostname' - The instance host name.
--
-- 'sshHostRsaKeyFingerprint', 'instance_sshHostRsaKeyFingerprint' - The SSH key\'s RSA fingerprint.
--
-- 'securityGroupIds', 'instance_securityGroupIds' - An array containing the instance security group IDs.
--
-- 'ecsClusterArn', 'instance_ecsClusterArn' - For container instances, the Amazon ECS cluster\'s ARN.
--
-- 'arn', 'instance_arn' - The instance\'s Amazon Resource Number (ARN).
--
-- 'createdAt', 'instance_createdAt' - The time that the instance was created.
--
-- 'ec2InstanceId', 'instance_ec2InstanceId' - The ID of the associated Amazon EC2 instance.
--
-- 'sshKeyName', 'instance_sshKeyName' - The instance\'s Amazon EC2 key-pair name.
--
-- '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.
--
-- 'rootDeviceVolumeId', 'instance_rootDeviceVolumeId' - The root device volume ID.
--
-- 'subnetId', 'instance_subnetId' - The instance\'s subnet ID; applicable only if the stack is running in a
-- VPC.
--
-- 'infrastructureClass', 'instance_infrastructureClass' - For registered instances, the infrastructure class: @ec2@ or
-- @on-premises@.
--
-- 'sshHostDsaKeyFingerprint', 'instance_sshHostDsaKeyFingerprint' - The SSH key\'s Deep Security Agent (DSA) fingerprint.
--
-- 'instanceType', 'instance_instanceType' - The instance type, such as @t2.micro@.
--
-- 'ebsOptimized', 'instance_ebsOptimized' - Whether this is an Amazon EBS-optimized instance.
--
-- 'elasticIp', 'instance_elasticIp' - The instance
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>
-- .
--
-- 'os', 'instance_os' - The instance\'s operating system.
--
-- 'availabilityZone', 'instance_availabilityZone' - The instance Availability Zone. For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
--
-- 'lastServiceErrorId', 'instance_lastServiceErrorId' - The ID of the last service error. For more information, call
-- DescribeServiceErrors.
--
-- 'tenancy', 'instance_tenancy' - The instance\'s tenancy option, such as @dedicated@ or @host@.
--
-- 'autoScalingType', 'instance_autoScalingType' - For load-based or time-based instances, the type.
--
-- 'layerIds', 'instance_layerIds' - An array containing the instance layer IDs.
--
-- 'architecture', 'instance_architecture' - The instance architecture: \"i386\" or \"x86_64\".
--
-- 'publicDns', 'instance_publicDns' - The instance public DNS name.
--
-- '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>
--
-- 'publicIp', 'instance_publicIp' - The instance public IP address.
--
-- 'reportedOs', 'instance_reportedOs' - For registered instances, the reported operating system.
--
-- 'registeredBy', 'instance_registeredBy' - For registered instances, who performed the registration.
--
-- 'stackId', 'instance_stackId' - The stack ID.
--
-- '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>.
--
-- 'ecsContainerInstanceArn', 'instance_ecsContainerInstanceArn' - For container instances, the instance\'s ARN.
--
-- 'blockDeviceMappings', 'instance_blockDeviceMappings' - An array of @BlockDeviceMapping@ objects that specify the instance\'s
-- block device mappings.
newInstance ::
  Instance
newInstance :: Instance
newInstance =
  Instance' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe VirtualizationType
-> 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 Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AutoScalingType
-> Maybe [Text]
-> Maybe Architecture
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ReportedOs
-> Maybe Text
-> Maybe Text
-> Maybe RootDeviceType
-> Maybe Text
-> Maybe [BlockDeviceMapping]
-> Instance
Instance'
    { $sel:privateDns:Instance' :: Maybe Text
privateDns = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:reportedAgentVersion:Instance' :: Maybe Text
reportedAgentVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceId:Instance' :: Maybe Text
instanceId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:status:Instance' :: Maybe Text
status = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:privateIp:Instance' :: Maybe Text
privateIp = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:installUpdatesOnBoot:Instance' :: Maybe Bool
installUpdatesOnBoot = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:virtualizationType:Instance' :: Maybe VirtualizationType
virtualizationType = Maybe VirtualizationType
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceProfileArn:Instance' :: Maybe Text
instanceProfileArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platform:Instance' :: Maybe Text
platform = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hostname:Instance' :: Maybe Text
hostname = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sshHostRsaKeyFingerprint:Instance' :: Maybe Text
sshHostRsaKeyFingerprint = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroupIds:Instance' :: Maybe [Text]
securityGroupIds = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:ecsClusterArn:Instance' :: Maybe Text
ecsClusterArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Instance' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:Instance' :: Maybe Text
createdAt = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ec2InstanceId:Instance' :: Maybe Text
ec2InstanceId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sshKeyName:Instance' :: Maybe Text
sshKeyName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:agentVersion:Instance' :: Maybe Text
agentVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:rootDeviceVolumeId:Instance' :: Maybe Text
rootDeviceVolumeId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:Instance' :: Maybe Text
subnetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:infrastructureClass:Instance' :: Maybe Text
infrastructureClass = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sshHostDsaKeyFingerprint:Instance' :: Maybe Text
sshHostDsaKeyFingerprint = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:Instance' :: Maybe Text
instanceType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ebsOptimized:Instance' :: Maybe Bool
ebsOptimized = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:elasticIp:Instance' :: Maybe Text
elasticIp = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:os:Instance' :: Maybe Text
os = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:Instance' :: Maybe Text
availabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastServiceErrorId:Instance' :: Maybe Text
lastServiceErrorId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tenancy:Instance' :: Maybe Text
tenancy = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:autoScalingType:Instance' :: Maybe AutoScalingType
autoScalingType = Maybe AutoScalingType
forall a. Maybe a
Prelude.Nothing,
      $sel:layerIds:Instance' :: Maybe [Text]
layerIds = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:architecture:Instance' :: Maybe Architecture
architecture = Maybe Architecture
forall a. Maybe a
Prelude.Nothing,
      $sel:publicDns:Instance' :: Maybe Text
publicDns = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:amiId:Instance' :: Maybe Text
amiId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:publicIp:Instance' :: Maybe Text
publicIp = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:reportedOs:Instance' :: Maybe ReportedOs
reportedOs = Maybe ReportedOs
forall a. Maybe a
Prelude.Nothing,
      $sel:registeredBy:Instance' :: Maybe Text
registeredBy = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stackId:Instance' :: Maybe Text
stackId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:rootDeviceType:Instance' :: Maybe RootDeviceType
rootDeviceType = Maybe RootDeviceType
forall a. Maybe a
Prelude.Nothing,
      $sel:ecsContainerInstanceArn:Instance' :: Maybe Text
ecsContainerInstanceArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:blockDeviceMappings:Instance' :: Maybe [BlockDeviceMapping]
blockDeviceMappings = Maybe [BlockDeviceMapping]
forall a. Maybe a
Prelude.Nothing
    }

-- | The instance\'s private DNS name.
instance_privateDns :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_privateDns :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_privateDns = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 reported AWS OpsWorks Stacks agent version.
instance_reportedAgentVersion :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_reportedAgentVersion :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_reportedAgentVersion = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The instance ID.
instance_instanceId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_instanceId :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_instanceId = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 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 :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_status = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 private IP address.
instance_privateIp :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_privateIp :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_privateIp = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | 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 :: (Maybe Bool -> f (Maybe Bool)) -> Instance -> f Instance
instance_installUpdatesOnBoot = (Instance -> Maybe Bool)
-> (Instance -> Maybe Bool -> Instance)
-> Lens Instance Instance (Maybe Bool) (Maybe Bool)
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\'s virtualization type: @paravirtual@ or @hvm@.
instance_virtualizationType :: Lens.Lens' Instance (Prelude.Maybe VirtualizationType)
instance_virtualizationType :: (Maybe VirtualizationType -> f (Maybe VirtualizationType))
-> Instance -> f Instance
instance_virtualizationType = (Instance -> Maybe VirtualizationType)
-> (Instance -> Maybe VirtualizationType -> Instance)
-> Lens
     Instance
     Instance
     (Maybe VirtualizationType)
     (Maybe 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)

-- | 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 :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_instanceProfileArn = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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\'s platform.
instance_platform :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_platform :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_platform = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 host name.
instance_hostname :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_hostname :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_hostname = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The SSH key\'s RSA fingerprint.
instance_sshHostRsaKeyFingerprint :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_sshHostRsaKeyFingerprint :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_sshHostRsaKeyFingerprint = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | An array containing the instance security group IDs.
instance_securityGroupIds :: Lens.Lens' Instance (Prelude.Maybe [Prelude.Text])
instance_securityGroupIds :: (Maybe [Text] -> f (Maybe [Text])) -> Instance -> f Instance
instance_securityGroupIds = (Instance -> Maybe [Text])
-> (Instance -> Maybe [Text] -> Instance)
-> Lens Instance Instance (Maybe [Text]) (Maybe [Text])
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) ((Maybe [Text] -> f (Maybe [Text])) -> Instance -> f Instance)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> Instance
-> f Instance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | For container instances, the Amazon ECS cluster\'s ARN.
instance_ecsClusterArn :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_ecsClusterArn :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_ecsClusterArn = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The instance\'s Amazon Resource Number (ARN).
instance_arn :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_arn :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_arn = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The time that the instance was created.
instance_createdAt :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_createdAt :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_createdAt = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The ID of the associated Amazon EC2 instance.
instance_ec2InstanceId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_ec2InstanceId :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_ec2InstanceId = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The instance\'s Amazon EC2 key-pair name.
instance_sshKeyName :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_sshKeyName :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_sshKeyName = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 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 :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_agentVersion = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The root device volume ID.
instance_rootDeviceVolumeId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_rootDeviceVolumeId :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_rootDeviceVolumeId = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | 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 :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_subnetId = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | For registered instances, the infrastructure class: @ec2@ or
-- @on-premises@.
instance_infrastructureClass :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_infrastructureClass :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_infrastructureClass = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The SSH key\'s Deep Security Agent (DSA) fingerprint.
instance_sshHostDsaKeyFingerprint :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_sshHostDsaKeyFingerprint :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_sshHostDsaKeyFingerprint = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 instance type, such as @t2.micro@.
instance_instanceType :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_instanceType :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_instanceType = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | Whether this is an Amazon EBS-optimized instance.
instance_ebsOptimized :: Lens.Lens' Instance (Prelude.Maybe Prelude.Bool)
instance_ebsOptimized :: (Maybe Bool -> f (Maybe Bool)) -> Instance -> f Instance
instance_ebsOptimized = (Instance -> Maybe Bool)
-> (Instance -> Maybe Bool -> Instance)
-> Lens Instance Instance (Maybe Bool) (Maybe Bool)
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 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 :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_elasticIp = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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\'s operating system.
instance_os :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_os :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_os = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 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 :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_availabilityZone = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The ID of the last service error. For more information, call
-- DescribeServiceErrors.
instance_lastServiceErrorId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_lastServiceErrorId :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_lastServiceErrorId = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | The instance\'s tenancy option, such as @dedicated@ or @host@.
instance_tenancy :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_tenancy :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_tenancy = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | For load-based or time-based instances, the type.
instance_autoScalingType :: Lens.Lens' Instance (Prelude.Maybe AutoScalingType)
instance_autoScalingType :: (Maybe AutoScalingType -> f (Maybe AutoScalingType))
-> Instance -> f Instance
instance_autoScalingType = (Instance -> Maybe AutoScalingType)
-> (Instance -> Maybe AutoScalingType -> Instance)
-> Lens
     Instance Instance (Maybe AutoScalingType) (Maybe 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)

-- | An array containing the instance layer IDs.
instance_layerIds :: Lens.Lens' Instance (Prelude.Maybe [Prelude.Text])
instance_layerIds :: (Maybe [Text] -> f (Maybe [Text])) -> Instance -> f Instance
instance_layerIds = (Instance -> Maybe [Text])
-> (Instance -> Maybe [Text] -> Instance)
-> Lens Instance Instance (Maybe [Text]) (Maybe [Text])
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) ((Maybe [Text] -> f (Maybe [Text])) -> Instance -> f Instance)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> Instance
-> f Instance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The instance architecture: \"i386\" or \"x86_64\".
instance_architecture :: Lens.Lens' Instance (Prelude.Maybe Architecture)
instance_architecture :: (Maybe Architecture -> f (Maybe Architecture))
-> Instance -> f Instance
instance_architecture = (Instance -> Maybe Architecture)
-> (Instance -> Maybe Architecture -> Instance)
-> Lens Instance Instance (Maybe Architecture) (Maybe 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 public DNS name.
instance_publicDns :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_publicDns :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_publicDns = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | 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 :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_amiId = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 public IP address.
instance_publicIp :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_publicIp :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_publicIp = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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, the reported operating system.
instance_reportedOs :: Lens.Lens' Instance (Prelude.Maybe ReportedOs)
instance_reportedOs :: (Maybe ReportedOs -> f (Maybe ReportedOs))
-> Instance -> f Instance
instance_reportedOs = (Instance -> Maybe ReportedOs)
-> (Instance -> Maybe ReportedOs -> Instance)
-> Lens Instance Instance (Maybe ReportedOs) (Maybe 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)

-- | For registered instances, who performed the registration.
instance_registeredBy :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_registeredBy :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_registeredBy = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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 stack ID.
instance_stackId :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_stackId :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_stackId = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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\'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 :: (Maybe RootDeviceType -> f (Maybe RootDeviceType))
-> Instance -> f Instance
instance_rootDeviceType = (Instance -> Maybe RootDeviceType)
-> (Instance -> Maybe RootDeviceType -> Instance)
-> Lens
     Instance Instance (Maybe RootDeviceType) (Maybe 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)

-- | For container instances, the instance\'s ARN.
instance_ecsContainerInstanceArn :: Lens.Lens' Instance (Prelude.Maybe Prelude.Text)
instance_ecsContainerInstanceArn :: (Maybe Text -> f (Maybe Text)) -> Instance -> f Instance
instance_ecsContainerInstanceArn = (Instance -> Maybe Text)
-> (Instance -> Maybe Text -> Instance)
-> Lens Instance Instance (Maybe Text) (Maybe Text)
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)

-- | An array of @BlockDeviceMapping@ objects that specify the instance\'s
-- block device mappings.
instance_blockDeviceMappings :: Lens.Lens' Instance (Prelude.Maybe [BlockDeviceMapping])
instance_blockDeviceMappings :: (Maybe [BlockDeviceMapping] -> f (Maybe [BlockDeviceMapping]))
-> Instance -> f Instance
instance_blockDeviceMappings = (Instance -> Maybe [BlockDeviceMapping])
-> (Instance -> Maybe [BlockDeviceMapping] -> Instance)
-> Lens
     Instance
     Instance
     (Maybe [BlockDeviceMapping])
     (Maybe [BlockDeviceMapping])
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) ((Maybe [BlockDeviceMapping] -> f (Maybe [BlockDeviceMapping]))
 -> Instance -> f Instance)
-> ((Maybe [BlockDeviceMapping] -> f (Maybe [BlockDeviceMapping]))
    -> Maybe [BlockDeviceMapping] -> f (Maybe [BlockDeviceMapping]))
-> (Maybe [BlockDeviceMapping] -> f (Maybe [BlockDeviceMapping]))
-> Instance
-> f Instance
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [BlockDeviceMapping]
  [BlockDeviceMapping]
  [BlockDeviceMapping]
  [BlockDeviceMapping]
-> Iso
     (Maybe [BlockDeviceMapping])
     (Maybe [BlockDeviceMapping])
     (Maybe [BlockDeviceMapping])
     (Maybe [BlockDeviceMapping])
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 AnIso
  [BlockDeviceMapping]
  [BlockDeviceMapping]
  [BlockDeviceMapping]
  [BlockDeviceMapping]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance Prelude.Hashable Instance

instance Prelude.NFData Instance