diff --git a/amazonka-emr.cabal b/amazonka-emr.cabal
--- a/amazonka-emr.cabal
+++ b/amazonka-emr.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-emr
-version:               0.2.1
+version:               0.2.2
 synopsis:              Amazon Elastic MapReduce SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -60,5 +60,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.2.1.*
+          amazonka-core == 0.2.2.*
         , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/EMR/AddInstanceGroups.hs b/gen/Network/AWS/EMR/AddInstanceGroups.hs
--- a/gen/Network/AWS/EMR/AddInstanceGroups.hs
+++ b/gen/Network/AWS/EMR/AddInstanceGroups.hs
@@ -52,7 +52,7 @@
 data AddInstanceGroups = AddInstanceGroups
     { _aigInstanceGroups :: List "InstanceGroups" InstanceGroupConfig
     , _aigJobFlowId      :: Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'AddInstanceGroups' constructor.
 --
@@ -82,7 +82,7 @@
 data AddInstanceGroupsResponse = AddInstanceGroupsResponse
     { _aigrInstanceGroupIds :: List "InstanceGroupIds" Text
     , _aigrJobFlowId        :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'AddInstanceGroupsResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/AddJobFlowSteps.hs b/gen/Network/AWS/EMR/AddJobFlowSteps.hs
--- a/gen/Network/AWS/EMR/AddJobFlowSteps.hs
+++ b/gen/Network/AWS/EMR/AddJobFlowSteps.hs
@@ -73,7 +73,7 @@
 data AddJobFlowSteps = AddJobFlowSteps
     { _ajfsJobFlowId :: Text
     , _ajfsSteps     :: List "Steps" StepConfig
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'AddJobFlowSteps' constructor.
 --
@@ -101,7 +101,7 @@
 
 newtype AddJobFlowStepsResponse = AddJobFlowStepsResponse
     { _ajfsrStepIds :: List "StepIds" Text
-    } deriving (Eq, Ord, Show, Monoid, Semigroup)
+    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
 
 instance GHC.Exts.IsList AddJobFlowStepsResponse where
     type Item AddJobFlowStepsResponse = Text
diff --git a/gen/Network/AWS/EMR/AddTags.hs b/gen/Network/AWS/EMR/AddTags.hs
--- a/gen/Network/AWS/EMR/AddTags.hs
+++ b/gen/Network/AWS/EMR/AddTags.hs
@@ -51,7 +51,7 @@
 data AddTags = AddTags
     { _atResourceId :: Text
     , _atTags       :: List "Tags" Tag
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'AddTags' constructor.
 --
@@ -81,7 +81,7 @@
 atTags = lens _atTags (\s a -> s { _atTags = a }) . _List
 
 data AddTagsResponse = AddTagsResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'AddTagsResponse' constructor.
 addTagsResponse :: AddTagsResponse
diff --git a/gen/Network/AWS/EMR/DescribeCluster.hs b/gen/Network/AWS/EMR/DescribeCluster.hs
--- a/gen/Network/AWS/EMR/DescribeCluster.hs
+++ b/gen/Network/AWS/EMR/DescribeCluster.hs
@@ -51,7 +51,7 @@
 
 newtype DescribeCluster = DescribeCluster
     { _dcClusterId :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'DescribeCluster' constructor.
 --
@@ -71,7 +71,7 @@
 
 newtype DescribeClusterResponse = DescribeClusterResponse
     { _dcrCluster :: Cluster
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'DescribeClusterResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/DescribeJobFlows.hs b/gen/Network/AWS/EMR/DescribeJobFlows.hs
--- a/gen/Network/AWS/EMR/DescribeJobFlows.hs
+++ b/gen/Network/AWS/EMR/DescribeJobFlows.hs
@@ -70,7 +70,7 @@
     , _djfCreatedBefore :: Maybe POSIX
     , _djfJobFlowIds    :: List "JobFlowIds" Text
     , _djfJobFlowStates :: List "JobFlowStates" JobFlowExecutionState
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'DescribeJobFlows' constructor.
 --
@@ -110,7 +110,7 @@
 
 newtype DescribeJobFlowsResponse = DescribeJobFlowsResponse
     { _djfrJobFlows :: List "JobFlows" JobFlowDetail
-    } deriving (Eq, Show, Monoid, Semigroup)
+    } deriving (Eq, Read, Show, Monoid, Semigroup)
 
 instance GHC.Exts.IsList DescribeJobFlowsResponse where
     type Item DescribeJobFlowsResponse = JobFlowDetail
diff --git a/gen/Network/AWS/EMR/DescribeStep.hs b/gen/Network/AWS/EMR/DescribeStep.hs
--- a/gen/Network/AWS/EMR/DescribeStep.hs
+++ b/gen/Network/AWS/EMR/DescribeStep.hs
@@ -51,7 +51,7 @@
 data DescribeStep = DescribeStep
     { _dsClusterId :: Text
     , _dsStepId    :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'DescribeStep' constructor.
 --
@@ -79,7 +79,7 @@
 
 newtype DescribeStepResponse = DescribeStepResponse
     { _dsrStep :: Maybe Step
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'DescribeStepResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/ListBootstrapActions.hs b/gen/Network/AWS/EMR/ListBootstrapActions.hs
--- a/gen/Network/AWS/EMR/ListBootstrapActions.hs
+++ b/gen/Network/AWS/EMR/ListBootstrapActions.hs
@@ -52,7 +52,7 @@
 data ListBootstrapActions = ListBootstrapActions
     { _lbaClusterId :: Text
     , _lbaMarker    :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListBootstrapActions' constructor.
 --
@@ -80,7 +80,7 @@
 data ListBootstrapActionsResponse = ListBootstrapActionsResponse
     { _lbarBootstrapActions :: List "BootstrapActions" Command
     , _lbarMarker           :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListBootstrapActionsResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/ListClusters.hs b/gen/Network/AWS/EMR/ListClusters.hs
--- a/gen/Network/AWS/EMR/ListClusters.hs
+++ b/gen/Network/AWS/EMR/ListClusters.hs
@@ -60,7 +60,7 @@
     , _lcCreatedAfter  :: Maybe POSIX
     , _lcCreatedBefore :: Maybe POSIX
     , _lcMarker        :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListClusters' constructor.
 --
@@ -101,7 +101,7 @@
 data ListClustersResponse = ListClustersResponse
     { _lcrClusters :: List "Clusters" ClusterSummary
     , _lcrMarker   :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListClustersResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/ListInstanceGroups.hs b/gen/Network/AWS/EMR/ListInstanceGroups.hs
--- a/gen/Network/AWS/EMR/ListInstanceGroups.hs
+++ b/gen/Network/AWS/EMR/ListInstanceGroups.hs
@@ -52,7 +52,7 @@
 data ListInstanceGroups = ListInstanceGroups
     { _ligClusterId :: Text
     , _ligMarker    :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ListInstanceGroups' constructor.
 --
@@ -80,7 +80,7 @@
 data ListInstanceGroupsResponse = ListInstanceGroupsResponse
     { _ligrInstanceGroups :: List "InstanceGroups" InstanceGroup
     , _ligrMarker         :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListInstanceGroupsResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/ListInstances.hs b/gen/Network/AWS/EMR/ListInstances.hs
--- a/gen/Network/AWS/EMR/ListInstances.hs
+++ b/gen/Network/AWS/EMR/ListInstances.hs
@@ -60,7 +60,7 @@
     , _liInstanceGroupId    :: Maybe Text
     , _liInstanceGroupTypes :: List "InstanceGroupTypes" InstanceGroupType
     , _liMarker             :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListInstances' constructor.
 --
@@ -105,7 +105,7 @@
 data ListInstancesResponse = ListInstancesResponse
     { _lirInstances :: List "Instances" Instance
     , _lirMarker    :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListInstancesResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/ListSteps.hs b/gen/Network/AWS/EMR/ListSteps.hs
--- a/gen/Network/AWS/EMR/ListSteps.hs
+++ b/gen/Network/AWS/EMR/ListSteps.hs
@@ -56,7 +56,7 @@
     , _lsMarker     :: Maybe Text
     , _lsStepIds    :: List "StepIds" Text
     , _lsStepStates :: List "StepStates" StepState
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListSteps' constructor.
 --
@@ -98,7 +98,7 @@
 data ListStepsResponse = ListStepsResponse
     { _lsrMarker :: Maybe Text
     , _lsrSteps  :: List "Steps" StepSummary
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ListStepsResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/ModifyInstanceGroups.hs b/gen/Network/AWS/EMR/ModifyInstanceGroups.hs
--- a/gen/Network/AWS/EMR/ModifyInstanceGroups.hs
+++ b/gen/Network/AWS/EMR/ModifyInstanceGroups.hs
@@ -50,7 +50,7 @@
 
 newtype ModifyInstanceGroups = ModifyInstanceGroups
     { _migInstanceGroups :: List "InstanceGroups" InstanceGroupModifyConfig
-    } deriving (Eq, Show, Monoid, Semigroup)
+    } deriving (Eq, Read, Show, Monoid, Semigroup)
 
 instance GHC.Exts.IsList ModifyInstanceGroups where
     type Item ModifyInstanceGroups = InstanceGroupModifyConfig
@@ -76,7 +76,7 @@
         . _List
 
 data ModifyInstanceGroupsResponse = ModifyInstanceGroupsResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'ModifyInstanceGroupsResponse' constructor.
 modifyInstanceGroupsResponse :: ModifyInstanceGroupsResponse
diff --git a/gen/Network/AWS/EMR/RemoveTags.hs b/gen/Network/AWS/EMR/RemoveTags.hs
--- a/gen/Network/AWS/EMR/RemoveTags.hs
+++ b/gen/Network/AWS/EMR/RemoveTags.hs
@@ -53,7 +53,7 @@
 data RemoveTags = RemoveTags
     { _rtResourceId :: Text
     , _rtTagKeys    :: List "TagKeys" Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'RemoveTags' constructor.
 --
@@ -80,7 +80,7 @@
 rtTagKeys = lens _rtTagKeys (\s a -> s { _rtTagKeys = a }) . _List
 
 data RemoveTagsResponse = RemoveTagsResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'RemoveTagsResponse' constructor.
 removeTagsResponse :: RemoveTagsResponse
diff --git a/gen/Network/AWS/EMR/RunJobFlow.hs b/gen/Network/AWS/EMR/RunJobFlow.hs
--- a/gen/Network/AWS/EMR/RunJobFlow.hs
+++ b/gen/Network/AWS/EMR/RunJobFlow.hs
@@ -92,7 +92,7 @@
     , _rjfSupportedProducts    :: List "SupportedProducts" Text
     , _rjfTags                 :: List "Tags" Tag
     , _rjfVisibleToAllUsers    :: Maybe Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'RunJobFlow' constructor.
 --
@@ -238,7 +238,7 @@
 
 newtype RunJobFlowResponse = RunJobFlowResponse
     { _rjfrJobFlowId :: Maybe Text
-    } deriving (Eq, Ord, Show, Monoid)
+    } deriving (Eq, Ord, Read, Show, Monoid)
 
 -- | 'RunJobFlowResponse' constructor.
 --
diff --git a/gen/Network/AWS/EMR/SetTerminationProtection.hs b/gen/Network/AWS/EMR/SetTerminationProtection.hs
--- a/gen/Network/AWS/EMR/SetTerminationProtection.hs
+++ b/gen/Network/AWS/EMR/SetTerminationProtection.hs
@@ -64,7 +64,7 @@
 data SetTerminationProtection = SetTerminationProtection
     { _stpJobFlowIds           :: List "JobFlowIds" Text
     , _stpTerminationProtected :: Bool
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'SetTerminationProtection' constructor.
 --
@@ -94,7 +94,7 @@
     lens _stpTerminationProtected (\s a -> s { _stpTerminationProtected = a })
 
 data SetTerminationProtectionResponse = SetTerminationProtectionResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'SetTerminationProtectionResponse' constructor.
 setTerminationProtectionResponse :: SetTerminationProtectionResponse
diff --git a/gen/Network/AWS/EMR/SetVisibleToAllUsers.hs b/gen/Network/AWS/EMR/SetVisibleToAllUsers.hs
--- a/gen/Network/AWS/EMR/SetVisibleToAllUsers.hs
+++ b/gen/Network/AWS/EMR/SetVisibleToAllUsers.hs
@@ -54,7 +54,7 @@
 data SetVisibleToAllUsers = SetVisibleToAllUsers
     { _svtauJobFlowIds        :: List "JobFlowIds" Text
     , _svtauVisibleToAllUsers :: Bool
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'SetVisibleToAllUsers' constructor.
 --
@@ -85,7 +85,7 @@
     lens _svtauVisibleToAllUsers (\s a -> s { _svtauVisibleToAllUsers = a })
 
 data SetVisibleToAllUsersResponse = SetVisibleToAllUsersResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'SetVisibleToAllUsersResponse' constructor.
 setVisibleToAllUsersResponse :: SetVisibleToAllUsersResponse
diff --git a/gen/Network/AWS/EMR/TerminateJobFlows.hs b/gen/Network/AWS/EMR/TerminateJobFlows.hs
--- a/gen/Network/AWS/EMR/TerminateJobFlows.hs
+++ b/gen/Network/AWS/EMR/TerminateJobFlows.hs
@@ -56,7 +56,7 @@
 
 newtype TerminateJobFlows = TerminateJobFlows
     { _tjfJobFlowIds :: List "JobFlowIds" Text
-    } deriving (Eq, Ord, Show, Monoid, Semigroup)
+    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
 
 instance GHC.Exts.IsList TerminateJobFlows where
     type Item TerminateJobFlows = Text
@@ -80,7 +80,7 @@
 tjfJobFlowIds = lens _tjfJobFlowIds (\s a -> s { _tjfJobFlowIds = a }) . _List
 
 data TerminateJobFlowsResponse = TerminateJobFlowsResponse
-    deriving (Eq, Ord, Show, Generic)
+    deriving (Eq, Ord, Read, Show, Generic)
 
 -- | 'TerminateJobFlowsResponse' constructor.
 terminateJobFlowsResponse :: TerminateJobFlowsResponse
diff --git a/gen/Network/AWS/EMR/Types.hs b/gen/Network/AWS/EMR/Types.hs
--- a/gen/Network/AWS/EMR/Types.hs
+++ b/gen/Network/AWS/EMR/Types.hs
@@ -156,9 +156,13 @@
     -- * Ec2InstanceAttributes
     , Ec2InstanceAttributes
     , ec2InstanceAttributes
+    , eiaAdditionalMasterSecurityGroups
+    , eiaAdditionalSlaveSecurityGroups
     , eiaEc2AvailabilityZone
     , eiaEc2KeyName
     , eiaEc2SubnetId
+    , eiaEmrManagedMasterSecurityGroup
+    , eiaEmrManagedSlaveSecurityGroup
     , eiaIamInstanceProfile
 
     -- * StepStateChangeReasonCode
@@ -315,8 +319,12 @@
     -- * JobFlowInstancesConfig
     , JobFlowInstancesConfig
     , jobFlowInstancesConfig
+    , jficAdditionalMasterSecurityGroups
+    , jficAdditionalSlaveSecurityGroups
     , jficEc2KeyName
     , jficEc2SubnetId
+    , jficEmrManagedMasterSecurityGroup
+    , jficEmrManagedSlaveSecurityGroup
     , jficHadoopVersion
     , jficInstanceCount
     , jficInstanceGroups
@@ -464,7 +472,7 @@
 data MarketType
     = OnDemand -- ^ ON_DEMAND
     | Spot     -- ^ SPOT
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable MarketType
 
@@ -497,7 +505,7 @@
     , _igcInstanceType  :: Text
     , _igcMarket        :: Maybe MarketType
     , _igcName          :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'InstanceGroupConfig' constructor.
 --
@@ -575,7 +583,7 @@
 data InstanceStateChangeReason = InstanceStateChangeReason
     { _iscrCode    :: Maybe InstanceStateChangeReasonCode
     , _iscrMessage :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'InstanceStateChangeReason' constructor.
 --
@@ -623,7 +631,7 @@
     , _jfdSteps                 :: List "Steps" StepDetail
     , _jfdSupportedProducts     :: List "SupportedProducts" Text
     , _jfdVisibleToAllUsers     :: Maybe Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'JobFlowDetail' constructor.
 --
@@ -773,7 +781,7 @@
 data KeyValue = KeyValue
     { _kvKey   :: Maybe Text
     , _kvValue :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'KeyValue' constructor.
 --
@@ -811,7 +819,7 @@
 data SupportedProductConfig = SupportedProductConfig
     { _spcArgs :: List "Args" Text
     , _spcName :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'SupportedProductConfig' constructor.
 --
@@ -850,7 +858,7 @@
     { _cArgs       :: List "Args" Text
     , _cName       :: Maybe Text
     , _cScriptPath :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'Command' constructor.
 --
@@ -902,7 +910,7 @@
     | Interrupted -- ^ INTERRUPTED
     | Pending     -- ^ PENDING
     | Running     -- ^ RUNNING
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable StepExecutionState
 
@@ -943,7 +951,7 @@
     | AOFContinue         -- ^ CONTINUE
     | AOFTerminateCluster -- ^ TERMINATE_CLUSTER
     | AOFTerminateJobFlow -- ^ TERMINATE_JOB_FLOW
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable ActionOnFailure
 
@@ -976,7 +984,7 @@
 data ClusterStateChangeReason = ClusterStateChangeReason
     { _cscrCode    :: Maybe ClusterStateChangeReasonCode
     , _cscrMessage :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ClusterStateChangeReason' constructor.
 --
@@ -1014,7 +1022,7 @@
 data Tag = Tag
     { _tagKey   :: Maybe Text
     , _tagValue :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'Tag' constructor.
 --
@@ -1055,7 +1063,7 @@
     , _aArgs           :: List "Args" Text
     , _aName           :: Maybe Text
     , _aVersion        :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'Application' constructor.
 --
@@ -1116,7 +1124,7 @@
     , _jfesdReadyDateTime         :: Maybe POSIX
     , _jfesdStartDateTime         :: Maybe POSIX
     , _jfesdState                 :: JobFlowExecutionState
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'JobFlowExecutionStatusDetail' constructor.
 --
@@ -1202,7 +1210,7 @@
     { _igsState             :: Maybe InstanceGroupState
     , _igsStateChangeReason :: Maybe InstanceGroupStateChangeReason
     , _igsTimeline          :: Maybe InstanceGroupTimeline
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'InstanceGroupStatus' constructor.
 --
@@ -1263,7 +1271,7 @@
     , _c1Tags                    :: List "Tags" Tag
     , _c1TerminationProtected    :: Maybe Bool
     , _c1VisibleToAllUsers       :: Maybe Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'Cluster' constructor.
 --
@@ -1443,7 +1451,7 @@
     { _itCreationDateTime :: Maybe POSIX
     , _itEndDateTime      :: Maybe POSIX
     , _itReadyDateTime    :: Maybe POSIX
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'InstanceTimeline' constructor.
 --
@@ -1490,32 +1498,62 @@
         ]
 
 data Ec2InstanceAttributes = Ec2InstanceAttributes
-    { _eiaEc2AvailabilityZone :: Maybe Text
-    , _eiaEc2KeyName          :: Maybe Text
-    , _eiaEc2SubnetId         :: Maybe Text
-    , _eiaIamInstanceProfile  :: Maybe Text
-    } deriving (Eq, Ord, Show)
+    { _eiaAdditionalMasterSecurityGroups :: List "AdditionalMasterSecurityGroups" Text
+    , _eiaAdditionalSlaveSecurityGroups  :: List "AdditionalSlaveSecurityGroups" Text
+    , _eiaEc2AvailabilityZone            :: Maybe Text
+    , _eiaEc2KeyName                     :: Maybe Text
+    , _eiaEc2SubnetId                    :: Maybe Text
+    , _eiaEmrManagedMasterSecurityGroup  :: Maybe Text
+    , _eiaEmrManagedSlaveSecurityGroup   :: Maybe Text
+    , _eiaIamInstanceProfile             :: Maybe Text
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'Ec2InstanceAttributes' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
+-- * 'eiaAdditionalMasterSecurityGroups' @::@ ['Text']
+--
+-- * 'eiaAdditionalSlaveSecurityGroups' @::@ ['Text']
+--
 -- * 'eiaEc2AvailabilityZone' @::@ 'Maybe' 'Text'
 --
 -- * 'eiaEc2KeyName' @::@ 'Maybe' 'Text'
 --
 -- * 'eiaEc2SubnetId' @::@ 'Maybe' 'Text'
 --
+-- * 'eiaEmrManagedMasterSecurityGroup' @::@ 'Maybe' 'Text'
+--
+-- * 'eiaEmrManagedSlaveSecurityGroup' @::@ 'Maybe' 'Text'
+--
 -- * 'eiaIamInstanceProfile' @::@ 'Maybe' 'Text'
 --
 ec2InstanceAttributes :: Ec2InstanceAttributes
 ec2InstanceAttributes = Ec2InstanceAttributes
-    { _eiaEc2KeyName          = Nothing
-    , _eiaEc2SubnetId         = Nothing
-    , _eiaEc2AvailabilityZone = Nothing
-    , _eiaIamInstanceProfile  = Nothing
+    { _eiaEc2KeyName                     = Nothing
+    , _eiaEc2SubnetId                    = Nothing
+    , _eiaEc2AvailabilityZone            = Nothing
+    , _eiaIamInstanceProfile             = Nothing
+    , _eiaEmrManagedMasterSecurityGroup  = Nothing
+    , _eiaEmrManagedSlaveSecurityGroup   = Nothing
+    , _eiaAdditionalMasterSecurityGroups = mempty
+    , _eiaAdditionalSlaveSecurityGroups  = mempty
     }
 
+-- | A list of additional Amazon EC2 security group IDs for the master node.
+eiaAdditionalMasterSecurityGroups :: Lens' Ec2InstanceAttributes [Text]
+eiaAdditionalMasterSecurityGroups =
+    lens _eiaAdditionalMasterSecurityGroups
+        (\s a -> s { _eiaAdditionalMasterSecurityGroups = a })
+            . _List
+
+-- | A list of additional Amazon EC2 security group IDs for the slave nodes.
+eiaAdditionalSlaveSecurityGroups :: Lens' Ec2InstanceAttributes [Text]
+eiaAdditionalSlaveSecurityGroups =
+    lens _eiaAdditionalSlaveSecurityGroups
+        (\s a -> s { _eiaAdditionalSlaveSecurityGroups = a })
+            . _List
+
 -- | The Availability Zone in which the cluster will run.
 eiaEc2AvailabilityZone :: Lens' Ec2InstanceAttributes (Maybe Text)
 eiaEc2AvailabilityZone =
@@ -1537,6 +1575,20 @@
 eiaEc2SubnetId :: Lens' Ec2InstanceAttributes (Maybe Text)
 eiaEc2SubnetId = lens _eiaEc2SubnetId (\s a -> s { _eiaEc2SubnetId = a })
 
+-- | The identifier of the Amazon EC2 security group (managed by Amazon Elastic
+-- MapReduce) for the master node.
+eiaEmrManagedMasterSecurityGroup :: Lens' Ec2InstanceAttributes (Maybe Text)
+eiaEmrManagedMasterSecurityGroup =
+    lens _eiaEmrManagedMasterSecurityGroup
+        (\s a -> s { _eiaEmrManagedMasterSecurityGroup = a })
+
+-- | The identifier of the Amazon EC2 security group (managed by Amazon Elastic
+-- MapReduce) for the slave nodes.
+eiaEmrManagedSlaveSecurityGroup :: Lens' Ec2InstanceAttributes (Maybe Text)
+eiaEmrManagedSlaveSecurityGroup =
+    lens _eiaEmrManagedSlaveSecurityGroup
+        (\s a -> s { _eiaEmrManagedSlaveSecurityGroup = a })
+
 -- | The IAM role that was specified when the job flow was launched. The EC2
 -- instances of the job flow assume this role.
 eiaIamInstanceProfile :: Lens' Ec2InstanceAttributes (Maybe Text)
@@ -1545,22 +1597,30 @@
 
 instance FromJSON Ec2InstanceAttributes where
     parseJSON = withObject "Ec2InstanceAttributes" $ \o -> Ec2InstanceAttributes
-        <$> o .:? "Ec2AvailabilityZone"
+        <$> o .:? "AdditionalMasterSecurityGroups" .!= mempty
+        <*> o .:? "AdditionalSlaveSecurityGroups" .!= mempty
+        <*> o .:? "Ec2AvailabilityZone"
         <*> o .:? "Ec2KeyName"
         <*> o .:? "Ec2SubnetId"
+        <*> o .:? "EmrManagedMasterSecurityGroup"
+        <*> o .:? "EmrManagedSlaveSecurityGroup"
         <*> o .:? "IamInstanceProfile"
 
 instance ToJSON Ec2InstanceAttributes where
     toJSON Ec2InstanceAttributes{..} = object
-        [ "Ec2KeyName"          .= _eiaEc2KeyName
-        , "Ec2SubnetId"         .= _eiaEc2SubnetId
-        , "Ec2AvailabilityZone" .= _eiaEc2AvailabilityZone
-        , "IamInstanceProfile"  .= _eiaIamInstanceProfile
+        [ "Ec2KeyName"                     .= _eiaEc2KeyName
+        , "Ec2SubnetId"                    .= _eiaEc2SubnetId
+        , "Ec2AvailabilityZone"            .= _eiaEc2AvailabilityZone
+        , "IamInstanceProfile"             .= _eiaIamInstanceProfile
+        , "EmrManagedMasterSecurityGroup"  .= _eiaEmrManagedMasterSecurityGroup
+        , "EmrManagedSlaveSecurityGroup"   .= _eiaEmrManagedSlaveSecurityGroup
+        , "AdditionalMasterSecurityGroups" .= _eiaAdditionalMasterSecurityGroups
+        , "AdditionalSlaveSecurityGroups"  .= _eiaAdditionalSlaveSecurityGroups
         ]
 
 data StepStateChangeReasonCode
     = None -- ^ NONE
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable StepStateChangeReasonCode
 
@@ -1591,7 +1651,7 @@
     | CSTerminatedWithErrors -- ^ TERMINATED_WITH_ERRORS
     | CSTerminating          -- ^ TERMINATING
     | CSWaiting              -- ^ WAITING
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable ClusterState
 
@@ -1632,7 +1692,7 @@
     , _hscJar        :: Maybe Text
     , _hscMainClass  :: Maybe Text
     , _hscProperties :: Map Text Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'HadoopStepConfig' constructor.
 --
@@ -1697,7 +1757,7 @@
     | JFESStarting      -- ^ STARTING
     | JFESTerminated    -- ^ TERMINATED
     | JFESWaiting       -- ^ WAITING
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable JobFlowExecutionState
 
@@ -1738,7 +1798,7 @@
 data StepDetail = StepDetail
     { _sdExecutionStatusDetail :: StepExecutionStatusDetail
     , _sdStepConfig            :: StepConfig
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'StepDetail' constructor.
 --
@@ -1779,7 +1839,7 @@
 data InstanceGroupStateChangeReason = InstanceGroupStateChangeReason
     { _igscrCode    :: Maybe InstanceGroupStateChangeReasonCode
     , _igscrMessage :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'InstanceGroupStateChangeReason' constructor.
 --
@@ -1818,7 +1878,7 @@
     = Core   -- ^ CORE
     | Master -- ^ MASTER
     | Task   -- ^ TASK
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable InstanceGroupType
 
@@ -1851,7 +1911,7 @@
     | InstanceFailure   -- ^ INSTANCE_FAILURE
     | InternalError     -- ^ INTERNAL_ERROR
     | ValidationError   -- ^ VALIDATION_ERROR
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable InstanceGroupStateChangeReasonCode
 
@@ -1885,7 +1945,7 @@
     { _ssState             :: Maybe StepState
     , _ssStateChangeReason :: Maybe StepStateChangeReason
     , _ssTimeline          :: Maybe StepTimeline
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'StepStatus' constructor.
 --
@@ -1936,7 +1996,7 @@
     , _ssId              :: Maybe Text
     , _ssName            :: Maybe Text
     , _ssStatus          :: Maybe StepStatus
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'StepSummary' constructor.
 --
@@ -2011,7 +2071,7 @@
     | IGSSuspended     -- ^ SUSPENDED
     | IGSTerminated    -- ^ TERMINATED
     | IGSTerminating   -- ^ TERMINATING
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable InstanceGroupState
 
@@ -2057,7 +2117,7 @@
     { _stCreationDateTime :: Maybe POSIX
     , _stEndDateTime      :: Maybe POSIX
     , _stStartDateTime    :: Maybe POSIX
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'StepTimeline' constructor.
 --
@@ -2105,7 +2165,7 @@
 
 newtype PlacementType = PlacementType
     { _ptAvailabilityZone :: Text
-    } deriving (Eq, Ord, Show, Monoid, IsString)
+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
 
 -- | 'PlacementType' constructor.
 --
@@ -2138,7 +2198,7 @@
     , _hjscJar        :: Text
     , _hjscMainClass  :: Maybe Text
     , _hjscProperties :: List "Properties" KeyValue
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'HadoopJarStepConfig' constructor.
 --
@@ -2199,7 +2259,7 @@
     { _igmcEC2InstanceIdsToTerminate :: List "EC2InstanceIdsToTerminate" Text
     , _igmcInstanceCount             :: Maybe Int
     , _igmcInstanceGroupId           :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'InstanceGroupModifyConfig' constructor.
 --
@@ -2266,7 +2326,7 @@
     , _igdReadyDateTime         :: Maybe POSIX
     , _igdStartDateTime         :: Maybe POSIX
     , _igdState                 :: InstanceGroupState
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'InstanceGroupDetail' constructor.
 --
@@ -2428,7 +2488,7 @@
 data StepStateChangeReason = StepStateChangeReason
     { _sscrCode    :: Maybe StepStateChangeReasonCode
     , _sscrMessage :: Maybe Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'StepStateChangeReason' constructor.
 --
@@ -2471,7 +2531,7 @@
     | CSCRCStepFailure       -- ^ STEP_FAILURE
     | CSCRCUserRequest       -- ^ USER_REQUEST
     | CSCRCValidationError   -- ^ VALIDATION_ERROR
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable ClusterStateChangeReasonCode
 
@@ -2513,7 +2573,7 @@
     , _sId              :: Maybe Text
     , _sName            :: Maybe Text
     , _sStatus          :: Maybe StepStatus
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'Step' constructor.
 --
@@ -2583,7 +2643,7 @@
     | SSInterrupted -- ^ INTERRUPTED
     | SSPending     -- ^ PENDING
     | SSRunning     -- ^ RUNNING
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable StepState
 
@@ -2621,7 +2681,7 @@
     { _igtCreationDateTime :: Maybe POSIX
     , _igtEndDateTime      :: Maybe POSIX
     , _igtReadyDateTime    :: Maybe POSIX
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'InstanceGroupTimeline' constructor.
 --
@@ -2669,7 +2729,7 @@
 
 newtype BootstrapActionDetail = BootstrapActionDetail
     { _badBootstrapActionConfig :: Maybe BootstrapActionConfig
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'BootstrapActionDetail' constructor.
 --
@@ -2703,7 +2763,7 @@
     , _sesdLastStateChangeReason :: Maybe Text
     , _sesdStartDateTime         :: Maybe POSIX
     , _sesdState                 :: StepExecutionState
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'StepExecutionStatusDetail' constructor.
 --
@@ -2777,7 +2837,7 @@
     { _isState             :: Maybe InstanceState
     , _isStateChangeReason :: Maybe InstanceStateChangeReason
     , _isTimeline          :: Maybe InstanceTimeline
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'InstanceStatus' constructor.
 --
@@ -2826,7 +2886,7 @@
     = IRTCore   -- ^ CORE
     | IRTMaster -- ^ MASTER
     | IRTTask   -- ^ TASK
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable InstanceRoleType
 
@@ -2855,26 +2915,38 @@
     toJSON = toJSONText
 
 data JobFlowInstancesConfig = JobFlowInstancesConfig
-    { _jficEc2KeyName                  :: Maybe Text
-    , _jficEc2SubnetId                 :: Maybe Text
-    , _jficHadoopVersion               :: Maybe Text
-    , _jficInstanceCount               :: Maybe Int
-    , _jficInstanceGroups              :: List "InstanceGroups" InstanceGroupConfig
-    , _jficKeepJobFlowAliveWhenNoSteps :: Maybe Bool
-    , _jficMasterInstanceType          :: Maybe Text
-    , _jficPlacement                   :: Maybe PlacementType
-    , _jficSlaveInstanceType           :: Maybe Text
-    , _jficTerminationProtected        :: Maybe Bool
-    } deriving (Eq, Show)
+    { _jficAdditionalMasterSecurityGroups :: List "AdditionalMasterSecurityGroups" Text
+    , _jficAdditionalSlaveSecurityGroups  :: List "AdditionalSlaveSecurityGroups" Text
+    , _jficEc2KeyName                     :: Maybe Text
+    , _jficEc2SubnetId                    :: Maybe Text
+    , _jficEmrManagedMasterSecurityGroup  :: Maybe Text
+    , _jficEmrManagedSlaveSecurityGroup   :: Maybe Text
+    , _jficHadoopVersion                  :: Maybe Text
+    , _jficInstanceCount                  :: Maybe Int
+    , _jficInstanceGroups                 :: List "InstanceGroups" InstanceGroupConfig
+    , _jficKeepJobFlowAliveWhenNoSteps    :: Maybe Bool
+    , _jficMasterInstanceType             :: Maybe Text
+    , _jficPlacement                      :: Maybe PlacementType
+    , _jficSlaveInstanceType              :: Maybe Text
+    , _jficTerminationProtected           :: Maybe Bool
+    } deriving (Eq, Read, Show)
 
 -- | 'JobFlowInstancesConfig' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
+-- * 'jficAdditionalMasterSecurityGroups' @::@ ['Text']
+--
+-- * 'jficAdditionalSlaveSecurityGroups' @::@ ['Text']
+--
 -- * 'jficEc2KeyName' @::@ 'Maybe' 'Text'
 --
 -- * 'jficEc2SubnetId' @::@ 'Maybe' 'Text'
 --
+-- * 'jficEmrManagedMasterSecurityGroup' @::@ 'Maybe' 'Text'
+--
+-- * 'jficEmrManagedSlaveSecurityGroup' @::@ 'Maybe' 'Text'
+--
 -- * 'jficHadoopVersion' @::@ 'Maybe' 'Text'
 --
 -- * 'jficInstanceCount' @::@ 'Maybe' 'Int'
@@ -2893,18 +2965,36 @@
 --
 jobFlowInstancesConfig :: JobFlowInstancesConfig
 jobFlowInstancesConfig = JobFlowInstancesConfig
-    { _jficMasterInstanceType          = Nothing
-    , _jficSlaveInstanceType           = Nothing
-    , _jficInstanceCount               = Nothing
-    , _jficInstanceGroups              = mempty
-    , _jficEc2KeyName                  = Nothing
-    , _jficPlacement                   = Nothing
-    , _jficKeepJobFlowAliveWhenNoSteps = Nothing
-    , _jficTerminationProtected        = Nothing
-    , _jficHadoopVersion               = Nothing
-    , _jficEc2SubnetId                 = Nothing
+    { _jficMasterInstanceType             = Nothing
+    , _jficSlaveInstanceType              = Nothing
+    , _jficInstanceCount                  = Nothing
+    , _jficInstanceGroups                 = mempty
+    , _jficEc2KeyName                     = Nothing
+    , _jficPlacement                      = Nothing
+    , _jficKeepJobFlowAliveWhenNoSteps    = Nothing
+    , _jficTerminationProtected           = Nothing
+    , _jficHadoopVersion                  = Nothing
+    , _jficEc2SubnetId                    = Nothing
+    , _jficEmrManagedMasterSecurityGroup  = Nothing
+    , _jficEmrManagedSlaveSecurityGroup   = Nothing
+    , _jficAdditionalMasterSecurityGroups = mempty
+    , _jficAdditionalSlaveSecurityGroups  = mempty
     }
 
+-- | A list of additional Amazon EC2 security group IDs for the master node.
+jficAdditionalMasterSecurityGroups :: Lens' JobFlowInstancesConfig [Text]
+jficAdditionalMasterSecurityGroups =
+    lens _jficAdditionalMasterSecurityGroups
+        (\s a -> s { _jficAdditionalMasterSecurityGroups = a })
+            . _List
+
+-- | A list of additional Amazon EC2 security group IDs for the slave nodes.
+jficAdditionalSlaveSecurityGroups :: Lens' JobFlowInstancesConfig [Text]
+jficAdditionalSlaveSecurityGroups =
+    lens _jficAdditionalSlaveSecurityGroups
+        (\s a -> s { _jficAdditionalSlaveSecurityGroups = a })
+            . _List
+
 -- | The name of the Amazon EC2 key pair that can be used to ssh to the master
 -- node as the user called "hadoop."
 jficEc2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)
@@ -2921,6 +3011,20 @@
 jficEc2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)
 jficEc2SubnetId = lens _jficEc2SubnetId (\s a -> s { _jficEc2SubnetId = a })
 
+-- | The identifier of the Amazon EC2 security group (managed by Amazon
+-- ElasticMapReduce) for the master node.
+jficEmrManagedMasterSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)
+jficEmrManagedMasterSecurityGroup =
+    lens _jficEmrManagedMasterSecurityGroup
+        (\s a -> s { _jficEmrManagedMasterSecurityGroup = a })
+
+-- | The identifier of the Amazon EC2 security group (managed by Amazon
+-- ElasticMapReduce) for the slave nodes.
+jficEmrManagedSlaveSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)
+jficEmrManagedSlaveSecurityGroup =
+    lens _jficEmrManagedSlaveSecurityGroup
+        (\s a -> s { _jficEmrManagedSlaveSecurityGroup = a })
+
 -- | The Hadoop version for the job flow. Valid inputs are "0.18", "0.20",
 -- "0.20.205", "1.0.3", "2.2.0", or "2.4.0". If you do not set this value, the
 -- default of 0.18 is used, unless the AmiVersion parameter is set in the
@@ -2971,8 +3075,12 @@
 
 instance FromJSON JobFlowInstancesConfig where
     parseJSON = withObject "JobFlowInstancesConfig" $ \o -> JobFlowInstancesConfig
-        <$> o .:? "Ec2KeyName"
+        <$> o .:? "AdditionalMasterSecurityGroups" .!= mempty
+        <*> o .:? "AdditionalSlaveSecurityGroups" .!= mempty
+        <*> o .:? "Ec2KeyName"
         <*> o .:? "Ec2SubnetId"
+        <*> o .:? "EmrManagedMasterSecurityGroup"
+        <*> o .:? "EmrManagedSlaveSecurityGroup"
         <*> o .:? "HadoopVersion"
         <*> o .:? "InstanceCount"
         <*> o .:? "InstanceGroups" .!= mempty
@@ -2984,23 +3092,27 @@
 
 instance ToJSON JobFlowInstancesConfig where
     toJSON JobFlowInstancesConfig{..} = object
-        [ "MasterInstanceType"          .= _jficMasterInstanceType
-        , "SlaveInstanceType"           .= _jficSlaveInstanceType
-        , "InstanceCount"               .= _jficInstanceCount
-        , "InstanceGroups"              .= _jficInstanceGroups
-        , "Ec2KeyName"                  .= _jficEc2KeyName
-        , "Placement"                   .= _jficPlacement
-        , "KeepJobFlowAliveWhenNoSteps" .= _jficKeepJobFlowAliveWhenNoSteps
-        , "TerminationProtected"        .= _jficTerminationProtected
-        , "HadoopVersion"               .= _jficHadoopVersion
-        , "Ec2SubnetId"                 .= _jficEc2SubnetId
+        [ "MasterInstanceType"             .= _jficMasterInstanceType
+        , "SlaveInstanceType"              .= _jficSlaveInstanceType
+        , "InstanceCount"                  .= _jficInstanceCount
+        , "InstanceGroups"                 .= _jficInstanceGroups
+        , "Ec2KeyName"                     .= _jficEc2KeyName
+        , "Placement"                      .= _jficPlacement
+        , "KeepJobFlowAliveWhenNoSteps"    .= _jficKeepJobFlowAliveWhenNoSteps
+        , "TerminationProtected"           .= _jficTerminationProtected
+        , "HadoopVersion"                  .= _jficHadoopVersion
+        , "Ec2SubnetId"                    .= _jficEc2SubnetId
+        , "EmrManagedMasterSecurityGroup"  .= _jficEmrManagedMasterSecurityGroup
+        , "EmrManagedSlaveSecurityGroup"   .= _jficEmrManagedSlaveSecurityGroup
+        , "AdditionalMasterSecurityGroups" .= _jficAdditionalMasterSecurityGroups
+        , "AdditionalSlaveSecurityGroups"  .= _jficAdditionalSlaveSecurityGroups
         ]
 
 data StepConfig = StepConfig
     { _scActionOnFailure :: Maybe ActionOnFailure
     , _scHadoopJarStep   :: HadoopJarStepConfig
     , _scName            :: Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'StepConfig' constructor.
 --
@@ -3057,7 +3169,7 @@
     , _igRequestedInstanceCount :: Maybe Int
     , _igRunningInstanceCount   :: Maybe Int
     , _igStatus                 :: Maybe InstanceGroupStatus
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'InstanceGroup' constructor.
 --
@@ -3164,7 +3276,7 @@
 data BootstrapActionConfig = BootstrapActionConfig
     { _bacName                  :: Text
     , _bacScriptBootstrapAction :: ScriptBootstrapActionConfig
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'BootstrapActionConfig' constructor.
 --
@@ -3208,7 +3320,7 @@
     , _csName                    :: Maybe Text
     , _csNormalizedInstanceHours :: Maybe Int
     , _csStatus                  :: Maybe ClusterStatus
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ClusterSummary' constructor.
 --
@@ -3282,7 +3394,7 @@
     , _jfidPlacement                   :: Maybe PlacementType
     , _jfidSlaveInstanceType           :: Text
     , _jfidTerminationProtected        :: Maybe Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'JobFlowInstancesDetail' constructor.
 --
@@ -3449,7 +3561,7 @@
     { _csState             :: Maybe ClusterState
     , _csStateChangeReason :: Maybe ClusterStateChangeReason
     , _csTimeline          :: Maybe ClusterTimeline
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'ClusterStatus' constructor.
 --
@@ -3501,7 +3613,7 @@
     | ISProvisioning        -- ^ PROVISIONING
     | ISRunning             -- ^ RUNNING
     | ISTerminated          -- ^ TERMINATED
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable InstanceState
 
@@ -3537,7 +3649,7 @@
     { _ctCreationDateTime :: Maybe POSIX
     , _ctEndDateTime      :: Maybe POSIX
     , _ctReadyDateTime    :: Maybe POSIX
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ClusterTimeline' constructor.
 --
@@ -3589,7 +3701,7 @@
     | ISCRCInstanceFailure   -- ^ INSTANCE_FAILURE
     | ISCRCInternalError     -- ^ INTERNAL_ERROR
     | ISCRCValidationError   -- ^ VALIDATION_ERROR
-      deriving (Eq, Ord, Show, Generic, Enum)
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
 
 instance Hashable InstanceStateChangeReasonCode
 
@@ -3629,7 +3741,7 @@
     , _iPublicDnsName    :: Maybe Text
     , _iPublicIpAddress  :: Maybe Text
     , _iStatus           :: Maybe InstanceStatus
-    } deriving (Eq, Show)
+    } deriving (Eq, Read, Show)
 
 -- | 'Instance' constructor.
 --
@@ -3713,7 +3825,7 @@
 data ScriptBootstrapActionConfig = ScriptBootstrapActionConfig
     { _sbacArgs :: List "Args" Text
     , _sbacPath :: Text
-    } deriving (Eq, Ord, Show)
+    } deriving (Eq, Ord, Read, Show)
 
 -- | 'ScriptBootstrapActionConfig' constructor.
 --
