{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.CloudFormation.Types.Product -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Network.AWS.CloudFormation.Types.Product where import Network.AWS.CloudFormation.Types.Sum import Network.AWS.Lens import Network.AWS.Prelude -- | The AccountLimit data type. -- -- -- -- /See:/ 'accountLimit' smart constructor. data AccountLimit = AccountLimit' { _alValue :: !(Maybe Int) , _alName :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'AccountLimit' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'alValue' - The value that is associated with the account limit name. -- -- * 'alName' - The name of the account limit. Currently, the only account limit is @StackLimit@ . accountLimit :: AccountLimit accountLimit = AccountLimit' { _alValue = Nothing , _alName = Nothing } -- | The value that is associated with the account limit name. alValue :: Lens' AccountLimit (Maybe Int) alValue = lens _alValue (\ s a -> s{_alValue = a}); -- | The name of the account limit. Currently, the only account limit is @StackLimit@ . alName :: Lens' AccountLimit (Maybe Text) alName = lens _alName (\ s a -> s{_alName = a}); instance FromXML AccountLimit where parseXML x = AccountLimit' <$> (x .@? "Value") <*> (x .@? "Name") instance Hashable AccountLimit instance NFData AccountLimit -- | The @Change@ structure describes the changes AWS CloudFormation will perform if you execute the change set. -- -- -- -- /See:/ 'change' smart constructor. data Change = Change' { _cResourceChange :: !(Maybe ResourceChange) , _cType :: !(Maybe ChangeType) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Change' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cResourceChange' - A @ResourceChange@ structure that describes the resource and action that AWS CloudFormation will perform. -- -- * 'cType' - The type of entity that AWS CloudFormation changes. Currently, the only entity type is @Resource@ . change :: Change change = Change' { _cResourceChange = Nothing , _cType = Nothing } -- | A @ResourceChange@ structure that describes the resource and action that AWS CloudFormation will perform. cResourceChange :: Lens' Change (Maybe ResourceChange) cResourceChange = lens _cResourceChange (\ s a -> s{_cResourceChange = a}); -- | The type of entity that AWS CloudFormation changes. Currently, the only entity type is @Resource@ . cType :: Lens' Change (Maybe ChangeType) cType = lens _cType (\ s a -> s{_cType = a}); instance FromXML Change where parseXML x = Change' <$> (x .@? "ResourceChange") <*> (x .@? "Type") instance Hashable Change instance NFData Change -- | The @ChangeSetSummary@ structure describes a change set, its status, and the stack with which it's associated. -- -- -- -- /See:/ 'changeSetSummary' smart constructor. data ChangeSetSummary = ChangeSetSummary' { _cssCreationTime :: !(Maybe ISO8601) , _cssStatus :: !(Maybe ChangeSetStatus) , _cssChangeSetName :: !(Maybe Text) , _cssExecutionStatus :: !(Maybe ExecutionStatus) , _cssChangeSetId :: !(Maybe Text) , _cssStatusReason :: !(Maybe Text) , _cssStackId :: !(Maybe Text) , _cssDescription :: !(Maybe Text) , _cssStackName :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ChangeSetSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cssCreationTime' - The start time when the change set was created, in UTC. -- -- * 'cssStatus' - The state of the change set, such as @CREATE_IN_PROGRESS@ , @CREATE_COMPLETE@ , or @FAILED@ . -- -- * 'cssChangeSetName' - The name of the change set. -- -- * 'cssExecutionStatus' - If the change set execution status is @AVAILABLE@ , you can execute the change set. If you can’t execute the change set, the status indicates why. For example, a change set might be in an @UNAVAILABLE@ state because AWS CloudFormation is still creating it or in an @OBSOLETE@ state because the stack was already updated. -- -- * 'cssChangeSetId' - The ID of the change set. -- -- * 'cssStatusReason' - A description of the change set's status. For example, if your change set is in the @FAILED@ state, AWS CloudFormation shows the error message. -- -- * 'cssStackId' - The ID of the stack with which the change set is associated. -- -- * 'cssDescription' - Descriptive information about the change set. -- -- * 'cssStackName' - The name of the stack with which the change set is associated. changeSetSummary :: ChangeSetSummary changeSetSummary = ChangeSetSummary' { _cssCreationTime = Nothing , _cssStatus = Nothing , _cssChangeSetName = Nothing , _cssExecutionStatus = Nothing , _cssChangeSetId = Nothing , _cssStatusReason = Nothing , _cssStackId = Nothing , _cssDescription = Nothing , _cssStackName = Nothing } -- | The start time when the change set was created, in UTC. cssCreationTime :: Lens' ChangeSetSummary (Maybe UTCTime) cssCreationTime = lens _cssCreationTime (\ s a -> s{_cssCreationTime = a}) . mapping _Time; -- | The state of the change set, such as @CREATE_IN_PROGRESS@ , @CREATE_COMPLETE@ , or @FAILED@ . cssStatus :: Lens' ChangeSetSummary (Maybe ChangeSetStatus) cssStatus = lens _cssStatus (\ s a -> s{_cssStatus = a}); -- | The name of the change set. cssChangeSetName :: Lens' ChangeSetSummary (Maybe Text) cssChangeSetName = lens _cssChangeSetName (\ s a -> s{_cssChangeSetName = a}); -- | If the change set execution status is @AVAILABLE@ , you can execute the change set. If you can’t execute the change set, the status indicates why. For example, a change set might be in an @UNAVAILABLE@ state because AWS CloudFormation is still creating it or in an @OBSOLETE@ state because the stack was already updated. cssExecutionStatus :: Lens' ChangeSetSummary (Maybe ExecutionStatus) cssExecutionStatus = lens _cssExecutionStatus (\ s a -> s{_cssExecutionStatus = a}); -- | The ID of the change set. cssChangeSetId :: Lens' ChangeSetSummary (Maybe Text) cssChangeSetId = lens _cssChangeSetId (\ s a -> s{_cssChangeSetId = a}); -- | A description of the change set's status. For example, if your change set is in the @FAILED@ state, AWS CloudFormation shows the error message. cssStatusReason :: Lens' ChangeSetSummary (Maybe Text) cssStatusReason = lens _cssStatusReason (\ s a -> s{_cssStatusReason = a}); -- | The ID of the stack with which the change set is associated. cssStackId :: Lens' ChangeSetSummary (Maybe Text) cssStackId = lens _cssStackId (\ s a -> s{_cssStackId = a}); -- | Descriptive information about the change set. cssDescription :: Lens' ChangeSetSummary (Maybe Text) cssDescription = lens _cssDescription (\ s a -> s{_cssDescription = a}); -- | The name of the stack with which the change set is associated. cssStackName :: Lens' ChangeSetSummary (Maybe Text) cssStackName = lens _cssStackName (\ s a -> s{_cssStackName = a}); instance FromXML ChangeSetSummary where parseXML x = ChangeSetSummary' <$> (x .@? "CreationTime") <*> (x .@? "Status") <*> (x .@? "ChangeSetName") <*> (x .@? "ExecutionStatus") <*> (x .@? "ChangeSetId") <*> (x .@? "StatusReason") <*> (x .@? "StackId") <*> (x .@? "Description") <*> (x .@? "StackName") instance Hashable ChangeSetSummary instance NFData ChangeSetSummary -- | The @Export@ structure describes the exported output values for a stack. -- -- -- -- /See:/ 'export'' smart constructor. data Export = Export' { _eValue :: !(Maybe Text) , _eExportingStackId :: !(Maybe Text) , _eName :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Export' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'eValue' - The value of the exported output, such as a resource physical ID. This value is defined in the @Export@ field in the associated stack's @Outputs@ section. -- -- * 'eExportingStackId' - The stack that contains the exported output name and value. -- -- * 'eName' - The name of exported output value. Use this name and the @Fn::ImportValue@ function to import the associated value into other stacks. The name is defined in the @Export@ field in the associated stack's @Outputs@ section. export' :: Export export' = Export' { _eValue = Nothing , _eExportingStackId = Nothing , _eName = Nothing } -- | The value of the exported output, such as a resource physical ID. This value is defined in the @Export@ field in the associated stack's @Outputs@ section. eValue :: Lens' Export (Maybe Text) eValue = lens _eValue (\ s a -> s{_eValue = a}); -- | The stack that contains the exported output name and value. eExportingStackId :: Lens' Export (Maybe Text) eExportingStackId = lens _eExportingStackId (\ s a -> s{_eExportingStackId = a}); -- | The name of exported output value. Use this name and the @Fn::ImportValue@ function to import the associated value into other stacks. The name is defined in the @Export@ field in the associated stack's @Outputs@ section. eName :: Lens' Export (Maybe Text) eName = lens _eName (\ s a -> s{_eName = a}); instance FromXML Export where parseXML x = Export' <$> (x .@? "Value") <*> (x .@? "ExportingStackId") <*> (x .@? "Name") instance Hashable Export instance NFData Export -- | The Output data type. -- -- -- -- /See:/ 'output' smart constructor. data Output = Output' { _oOutputValue :: !(Maybe Text) , _oOutputKey :: !(Maybe Text) , _oDescription :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Output' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'oOutputValue' - The value associated with the output. -- -- * 'oOutputKey' - The key associated with the output. -- -- * 'oDescription' - User defined description associated with the output. output :: Output output = Output' { _oOutputValue = Nothing , _oOutputKey = Nothing , _oDescription = Nothing } -- | The value associated with the output. oOutputValue :: Lens' Output (Maybe Text) oOutputValue = lens _oOutputValue (\ s a -> s{_oOutputValue = a}); -- | The key associated with the output. oOutputKey :: Lens' Output (Maybe Text) oOutputKey = lens _oOutputKey (\ s a -> s{_oOutputKey = a}); -- | User defined description associated with the output. oDescription :: Lens' Output (Maybe Text) oDescription = lens _oDescription (\ s a -> s{_oDescription = a}); instance FromXML Output where parseXML x = Output' <$> (x .@? "OutputValue") <*> (x .@? "OutputKey") <*> (x .@? "Description") instance Hashable Output instance NFData Output -- | The Parameter data type. -- -- -- -- /See:/ 'parameter' smart constructor. data Parameter = Parameter' { _pParameterValue :: !(Maybe Text) , _pParameterKey :: !(Maybe Text) , _pUsePreviousValue :: !(Maybe Bool) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Parameter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pParameterValue' - The value associated with the parameter. -- -- * 'pParameterKey' - The key associated with the parameter. If you don't specify a key and value for a particular parameter, AWS CloudFormation uses the default value that is specified in your template. -- -- * 'pUsePreviousValue' - During a stack update, use the existing parameter value that the stack is using for a given parameter key. If you specify @true@ , do not specify a parameter value. parameter :: Parameter parameter = Parameter' { _pParameterValue = Nothing , _pParameterKey = Nothing , _pUsePreviousValue = Nothing } -- | The value associated with the parameter. pParameterValue :: Lens' Parameter (Maybe Text) pParameterValue = lens _pParameterValue (\ s a -> s{_pParameterValue = a}); -- | The key associated with the parameter. If you don't specify a key and value for a particular parameter, AWS CloudFormation uses the default value that is specified in your template. pParameterKey :: Lens' Parameter (Maybe Text) pParameterKey = lens _pParameterKey (\ s a -> s{_pParameterKey = a}); -- | During a stack update, use the existing parameter value that the stack is using for a given parameter key. If you specify @true@ , do not specify a parameter value. pUsePreviousValue :: Lens' Parameter (Maybe Bool) pUsePreviousValue = lens _pUsePreviousValue (\ s a -> s{_pUsePreviousValue = a}); instance FromXML Parameter where parseXML x = Parameter' <$> (x .@? "ParameterValue") <*> (x .@? "ParameterKey") <*> (x .@? "UsePreviousValue") instance Hashable Parameter instance NFData Parameter instance ToQuery Parameter where toQuery Parameter'{..} = mconcat ["ParameterValue" =: _pParameterValue, "ParameterKey" =: _pParameterKey, "UsePreviousValue" =: _pUsePreviousValue] -- | A set of criteria that AWS CloudFormation uses to validate parameter values. Although other constraints might be defined in the stack template, AWS CloudFormation returns only the @AllowedValues@ property. -- -- -- -- /See:/ 'parameterConstraints' smart constructor. newtype ParameterConstraints = ParameterConstraints' { _pcAllowedValues :: Maybe [Text] } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ParameterConstraints' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pcAllowedValues' - A list of values that are permitted for a parameter. parameterConstraints :: ParameterConstraints parameterConstraints = ParameterConstraints' { _pcAllowedValues = Nothing } -- | A list of values that are permitted for a parameter. pcAllowedValues :: Lens' ParameterConstraints [Text] pcAllowedValues = lens _pcAllowedValues (\ s a -> s{_pcAllowedValues = a}) . _Default . _Coerce; instance FromXML ParameterConstraints where parseXML x = ParameterConstraints' <$> (x .@? "AllowedValues" .!@ mempty >>= may (parseXMLList "member")) instance Hashable ParameterConstraints instance NFData ParameterConstraints -- | The ParameterDeclaration data type. -- -- -- -- /See:/ 'parameterDeclaration' smart constructor. data ParameterDeclaration = ParameterDeclaration' { _pdParameterKey :: !(Maybe Text) , _pdParameterType :: !(Maybe Text) , _pdParameterConstraints :: !(Maybe ParameterConstraints) , _pdDefaultValue :: !(Maybe Text) , _pdNoEcho :: !(Maybe Bool) , _pdDescription :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ParameterDeclaration' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pdParameterKey' - The name that is associated with the parameter. -- -- * 'pdParameterType' - The type of parameter. -- -- * 'pdParameterConstraints' - The criteria that AWS CloudFormation uses to validate parameter values. -- -- * 'pdDefaultValue' - The default value of the parameter. -- -- * 'pdNoEcho' - Flag that indicates whether the parameter value is shown as plain text in logs and in the AWS Management Console. -- -- * 'pdDescription' - The description that is associate with the parameter. parameterDeclaration :: ParameterDeclaration parameterDeclaration = ParameterDeclaration' { _pdParameterKey = Nothing , _pdParameterType = Nothing , _pdParameterConstraints = Nothing , _pdDefaultValue = Nothing , _pdNoEcho = Nothing , _pdDescription = Nothing } -- | The name that is associated with the parameter. pdParameterKey :: Lens' ParameterDeclaration (Maybe Text) pdParameterKey = lens _pdParameterKey (\ s a -> s{_pdParameterKey = a}); -- | The type of parameter. pdParameterType :: Lens' ParameterDeclaration (Maybe Text) pdParameterType = lens _pdParameterType (\ s a -> s{_pdParameterType = a}); -- | The criteria that AWS CloudFormation uses to validate parameter values. pdParameterConstraints :: Lens' ParameterDeclaration (Maybe ParameterConstraints) pdParameterConstraints = lens _pdParameterConstraints (\ s a -> s{_pdParameterConstraints = a}); -- | The default value of the parameter. pdDefaultValue :: Lens' ParameterDeclaration (Maybe Text) pdDefaultValue = lens _pdDefaultValue (\ s a -> s{_pdDefaultValue = a}); -- | Flag that indicates whether the parameter value is shown as plain text in logs and in the AWS Management Console. pdNoEcho :: Lens' ParameterDeclaration (Maybe Bool) pdNoEcho = lens _pdNoEcho (\ s a -> s{_pdNoEcho = a}); -- | The description that is associate with the parameter. pdDescription :: Lens' ParameterDeclaration (Maybe Text) pdDescription = lens _pdDescription (\ s a -> s{_pdDescription = a}); instance FromXML ParameterDeclaration where parseXML x = ParameterDeclaration' <$> (x .@? "ParameterKey") <*> (x .@? "ParameterType") <*> (x .@? "ParameterConstraints") <*> (x .@? "DefaultValue") <*> (x .@? "NoEcho") <*> (x .@? "Description") instance Hashable ParameterDeclaration instance NFData ParameterDeclaration -- | The @ResourceChange@ structure describes the resource and the action that AWS CloudFormation will perform on it if you execute this change set. -- -- -- -- /See:/ 'resourceChange' smart constructor. data ResourceChange = ResourceChange' { _rcLogicalResourceId :: !(Maybe Text) , _rcPhysicalResourceId :: !(Maybe Text) , _rcResourceType :: !(Maybe Text) , _rcAction :: !(Maybe ChangeAction) , _rcScope :: !(Maybe [ResourceAttribute]) , _rcDetails :: !(Maybe [ResourceChangeDetail]) , _rcReplacement :: !(Maybe Replacement) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ResourceChange' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rcLogicalResourceId' - The resource's logical ID, which is defined in the stack's template. -- -- * 'rcPhysicalResourceId' - The resource's physical ID (resource name). Resources that you are adding don't have physical IDs because they haven't been created. -- -- * 'rcResourceType' - The type of AWS CloudFormation resource, such as @AWS::S3::Bucket@ . -- -- * 'rcAction' - The action that AWS CloudFormation takes on the resource, such as @Add@ (adds a new resource), @Modify@ (changes a resource), or @Remove@ (deletes a resource). -- -- * 'rcScope' - For the @Modify@ action, indicates which resource attribute is triggering this update, such as a change in the resource attribute's @Metadata@ , @Properties@ , or @Tags@ . -- -- * 'rcDetails' - For the @Modify@ action, a list of @ResourceChangeDetail@ structures that describes the changes that AWS CloudFormation will make to the resource. -- -- * 'rcReplacement' - For the @Modify@ action, indicates whether AWS CloudFormation will replace the resource by creating a new one and deleting the old one. This value depends on the value of the @RequiresRecreation@ property in the @ResourceTargetDefinition@ structure. For example, if the @RequiresRecreation@ field is @Always@ and the @Evaluation@ field is @Static@ , @Replacement@ is @True@ . If the @RequiresRecreation@ field is @Always@ and the @Evaluation@ field is @Dynamic@ , @Replacement@ is @Conditionally@ . If you have multiple changes with different @RequiresRecreation@ values, the @Replacement@ value depends on the change with the most impact. A @RequiresRecreation@ value of @Always@ has the most impact, followed by @Conditionally@ , and then @Never@ . resourceChange :: ResourceChange resourceChange = ResourceChange' { _rcLogicalResourceId = Nothing , _rcPhysicalResourceId = Nothing , _rcResourceType = Nothing , _rcAction = Nothing , _rcScope = Nothing , _rcDetails = Nothing , _rcReplacement = Nothing } -- | The resource's logical ID, which is defined in the stack's template. rcLogicalResourceId :: Lens' ResourceChange (Maybe Text) rcLogicalResourceId = lens _rcLogicalResourceId (\ s a -> s{_rcLogicalResourceId = a}); -- | The resource's physical ID (resource name). Resources that you are adding don't have physical IDs because they haven't been created. rcPhysicalResourceId :: Lens' ResourceChange (Maybe Text) rcPhysicalResourceId = lens _rcPhysicalResourceId (\ s a -> s{_rcPhysicalResourceId = a}); -- | The type of AWS CloudFormation resource, such as @AWS::S3::Bucket@ . rcResourceType :: Lens' ResourceChange (Maybe Text) rcResourceType = lens _rcResourceType (\ s a -> s{_rcResourceType = a}); -- | The action that AWS CloudFormation takes on the resource, such as @Add@ (adds a new resource), @Modify@ (changes a resource), or @Remove@ (deletes a resource). rcAction :: Lens' ResourceChange (Maybe ChangeAction) rcAction = lens _rcAction (\ s a -> s{_rcAction = a}); -- | For the @Modify@ action, indicates which resource attribute is triggering this update, such as a change in the resource attribute's @Metadata@ , @Properties@ , or @Tags@ . rcScope :: Lens' ResourceChange [ResourceAttribute] rcScope = lens _rcScope (\ s a -> s{_rcScope = a}) . _Default . _Coerce; -- | For the @Modify@ action, a list of @ResourceChangeDetail@ structures that describes the changes that AWS CloudFormation will make to the resource. rcDetails :: Lens' ResourceChange [ResourceChangeDetail] rcDetails = lens _rcDetails (\ s a -> s{_rcDetails = a}) . _Default . _Coerce; -- | For the @Modify@ action, indicates whether AWS CloudFormation will replace the resource by creating a new one and deleting the old one. This value depends on the value of the @RequiresRecreation@ property in the @ResourceTargetDefinition@ structure. For example, if the @RequiresRecreation@ field is @Always@ and the @Evaluation@ field is @Static@ , @Replacement@ is @True@ . If the @RequiresRecreation@ field is @Always@ and the @Evaluation@ field is @Dynamic@ , @Replacement@ is @Conditionally@ . If you have multiple changes with different @RequiresRecreation@ values, the @Replacement@ value depends on the change with the most impact. A @RequiresRecreation@ value of @Always@ has the most impact, followed by @Conditionally@ , and then @Never@ . rcReplacement :: Lens' ResourceChange (Maybe Replacement) rcReplacement = lens _rcReplacement (\ s a -> s{_rcReplacement = a}); instance FromXML ResourceChange where parseXML x = ResourceChange' <$> (x .@? "LogicalResourceId") <*> (x .@? "PhysicalResourceId") <*> (x .@? "ResourceType") <*> (x .@? "Action") <*> (x .@? "Scope" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "Details" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "Replacement") instance Hashable ResourceChange instance NFData ResourceChange -- | For a resource with @Modify@ as the action, the @ResourceChange@ structure describes the changes AWS CloudFormation will make to that resource. -- -- -- -- /See:/ 'resourceChangeDetail' smart constructor. data ResourceChangeDetail = ResourceChangeDetail' { _rcdCausingEntity :: !(Maybe Text) , _rcdChangeSource :: !(Maybe ChangeSource) , _rcdEvaluation :: !(Maybe EvaluationType) , _rcdTarget :: !(Maybe ResourceTargetDefinition) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ResourceChangeDetail' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rcdCausingEntity' - The identity of the entity that triggered this change. This entity is a member of the group that is specified by the @ChangeSource@ field. For example, if you modified the value of the @KeyPairName@ parameter, the @CausingEntity@ is the name of the parameter (@KeyPairName@ ). If the @ChangeSource@ value is @DirectModification@ , no value is given for @CausingEntity@ . -- -- * 'rcdChangeSource' - The group to which the @CausingEntity@ value belongs. There are five entity groups: * @ResourceReference@ entities are @Ref@ intrinsic functions that refer to resources in the template, such as @{ "Ref" : "MyEC2InstanceResource" }@ . * @ParameterReference@ entities are @Ref@ intrinsic functions that get template parameter values, such as @{ "Ref" : "MyPasswordParameter" }@ . * @ResourceAttribute@ entities are @Fn::GetAtt@ intrinsic functions that get resource attribute values, such as @{ "Fn::GetAtt" : [ "MyEC2InstanceResource", "PublicDnsName" ] }@ . * @DirectModification@ entities are changes that are made directly to the template. * @Automatic@ entities are @AWS::CloudFormation::Stack@ resource types, which are also known as nested stacks. If you made no changes to the @AWS::CloudFormation::Stack@ resource, AWS CloudFormation sets the @ChangeSource@ to @Automatic@ because the nested stack's template might have changed. Changes to a nested stack's template aren't visible to AWS CloudFormation until you run an update on the parent stack. -- -- * 'rcdEvaluation' - Indicates whether AWS CloudFormation can determine the target value, and whether the target value will change before you execute a change set. For @Static@ evaluations, AWS CloudFormation can determine that the target value will change, and its value. For example, if you directly modify the @InstanceType@ property of an EC2 instance, AWS CloudFormation knows that this property value will change, and its value, so this is a @Static@ evaluation. For @Dynamic@ evaluations, cannot determine the target value because it depends on the result of an intrinsic function, such as a @Ref@ or @Fn::GetAtt@ intrinsic function, when the stack is updated. For example, if your template includes a reference to a resource that is conditionally recreated, the value of the reference (the physical ID of the resource) might change, depending on if the resource is recreated. If the resource is recreated, it will have a new physical ID, so all references to that resource will also be updated. -- -- * 'rcdTarget' - A @ResourceTargetDefinition@ structure that describes the field that AWS CloudFormation will change and whether the resource will be recreated. resourceChangeDetail :: ResourceChangeDetail resourceChangeDetail = ResourceChangeDetail' { _rcdCausingEntity = Nothing , _rcdChangeSource = Nothing , _rcdEvaluation = Nothing , _rcdTarget = Nothing } -- | The identity of the entity that triggered this change. This entity is a member of the group that is specified by the @ChangeSource@ field. For example, if you modified the value of the @KeyPairName@ parameter, the @CausingEntity@ is the name of the parameter (@KeyPairName@ ). If the @ChangeSource@ value is @DirectModification@ , no value is given for @CausingEntity@ . rcdCausingEntity :: Lens' ResourceChangeDetail (Maybe Text) rcdCausingEntity = lens _rcdCausingEntity (\ s a -> s{_rcdCausingEntity = a}); -- | The group to which the @CausingEntity@ value belongs. There are five entity groups: * @ResourceReference@ entities are @Ref@ intrinsic functions that refer to resources in the template, such as @{ "Ref" : "MyEC2InstanceResource" }@ . * @ParameterReference@ entities are @Ref@ intrinsic functions that get template parameter values, such as @{ "Ref" : "MyPasswordParameter" }@ . * @ResourceAttribute@ entities are @Fn::GetAtt@ intrinsic functions that get resource attribute values, such as @{ "Fn::GetAtt" : [ "MyEC2InstanceResource", "PublicDnsName" ] }@ . * @DirectModification@ entities are changes that are made directly to the template. * @Automatic@ entities are @AWS::CloudFormation::Stack@ resource types, which are also known as nested stacks. If you made no changes to the @AWS::CloudFormation::Stack@ resource, AWS CloudFormation sets the @ChangeSource@ to @Automatic@ because the nested stack's template might have changed. Changes to a nested stack's template aren't visible to AWS CloudFormation until you run an update on the parent stack. rcdChangeSource :: Lens' ResourceChangeDetail (Maybe ChangeSource) rcdChangeSource = lens _rcdChangeSource (\ s a -> s{_rcdChangeSource = a}); -- | Indicates whether AWS CloudFormation can determine the target value, and whether the target value will change before you execute a change set. For @Static@ evaluations, AWS CloudFormation can determine that the target value will change, and its value. For example, if you directly modify the @InstanceType@ property of an EC2 instance, AWS CloudFormation knows that this property value will change, and its value, so this is a @Static@ evaluation. For @Dynamic@ evaluations, cannot determine the target value because it depends on the result of an intrinsic function, such as a @Ref@ or @Fn::GetAtt@ intrinsic function, when the stack is updated. For example, if your template includes a reference to a resource that is conditionally recreated, the value of the reference (the physical ID of the resource) might change, depending on if the resource is recreated. If the resource is recreated, it will have a new physical ID, so all references to that resource will also be updated. rcdEvaluation :: Lens' ResourceChangeDetail (Maybe EvaluationType) rcdEvaluation = lens _rcdEvaluation (\ s a -> s{_rcdEvaluation = a}); -- | A @ResourceTargetDefinition@ structure that describes the field that AWS CloudFormation will change and whether the resource will be recreated. rcdTarget :: Lens' ResourceChangeDetail (Maybe ResourceTargetDefinition) rcdTarget = lens _rcdTarget (\ s a -> s{_rcdTarget = a}); instance FromXML ResourceChangeDetail where parseXML x = ResourceChangeDetail' <$> (x .@? "CausingEntity") <*> (x .@? "ChangeSource") <*> (x .@? "Evaluation") <*> (x .@? "Target") instance Hashable ResourceChangeDetail instance NFData ResourceChangeDetail -- | The field that AWS CloudFormation will change, such as the name of a resource's property, and whether the resource will be recreated. -- -- -- -- /See:/ 'resourceTargetDefinition' smart constructor. data ResourceTargetDefinition = ResourceTargetDefinition' { _rtdAttribute :: !(Maybe ResourceAttribute) , _rtdRequiresRecreation :: !(Maybe RequiresRecreation) , _rtdName :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ResourceTargetDefinition' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rtdAttribute' - Indicates which resource attribute is triggering this update, such as a change in the resource attribute's @Metadata@ , @Properties@ , or @Tags@ . -- -- * 'rtdRequiresRecreation' - If the @Attribute@ value is @Properties@ , indicates whether a change to this property causes the resource to be recreated. The value can be @Never@ , @Always@ , or @Conditionally@ . To determine the conditions for a @Conditionally@ recreation, see the update behavior for that in the AWS CloudFormation User Guide. -- -- * 'rtdName' - If the @Attribute@ value is @Properties@ , the name of the property. For all other attributes, the value is null. resourceTargetDefinition :: ResourceTargetDefinition resourceTargetDefinition = ResourceTargetDefinition' { _rtdAttribute = Nothing , _rtdRequiresRecreation = Nothing , _rtdName = Nothing } -- | Indicates which resource attribute is triggering this update, such as a change in the resource attribute's @Metadata@ , @Properties@ , or @Tags@ . rtdAttribute :: Lens' ResourceTargetDefinition (Maybe ResourceAttribute) rtdAttribute = lens _rtdAttribute (\ s a -> s{_rtdAttribute = a}); -- | If the @Attribute@ value is @Properties@ , indicates whether a change to this property causes the resource to be recreated. The value can be @Never@ , @Always@ , or @Conditionally@ . To determine the conditions for a @Conditionally@ recreation, see the update behavior for that in the AWS CloudFormation User Guide. rtdRequiresRecreation :: Lens' ResourceTargetDefinition (Maybe RequiresRecreation) rtdRequiresRecreation = lens _rtdRequiresRecreation (\ s a -> s{_rtdRequiresRecreation = a}); -- | If the @Attribute@ value is @Properties@ , the name of the property. For all other attributes, the value is null. rtdName :: Lens' ResourceTargetDefinition (Maybe Text) rtdName = lens _rtdName (\ s a -> s{_rtdName = a}); instance FromXML ResourceTargetDefinition where parseXML x = ResourceTargetDefinition' <$> (x .@? "Attribute") <*> (x .@? "RequiresRecreation") <*> (x .@? "Name") instance Hashable ResourceTargetDefinition instance NFData ResourceTargetDefinition -- | The Stack data type. -- -- -- -- /See:/ 'stack' smart constructor. data Stack = Stack' { _sDisableRollback :: !(Maybe Bool) , _sLastUpdatedTime :: !(Maybe ISO8601) , _sNotificationARNs :: !(Maybe [Text]) , _sStackStatusReason :: !(Maybe Text) , _sChangeSetId :: !(Maybe Text) , _sOutputs :: !(Maybe [Output]) , _sParameters :: !(Maybe [Parameter]) , _sStackId :: !(Maybe Text) , _sDescription :: !(Maybe Text) , _sCapabilities :: !(Maybe [Capability]) , _sTags :: !(Maybe [Tag]) , _sTimeoutInMinutes :: !(Maybe Nat) , _sRoleARN :: !(Maybe Text) , _sStackName :: !Text , _sCreationTime :: !ISO8601 , _sStackStatus :: !StackStatus } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Stack' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sDisableRollback' - Boolean to enable or disable rollback on stack creation failures: * @true@ : disable rollback * @false@ : enable rollback -- -- * 'sLastUpdatedTime' - The time the stack was last updated. This field will only be returned if the stack has been updated at least once. -- -- * 'sNotificationARNs' - SNS topic ARNs to which stack related events are published. -- -- * 'sStackStatusReason' - Success/failure message associated with the stack status. -- -- * 'sChangeSetId' - The unique ID of the change set. -- -- * 'sOutputs' - A list of output structures. -- -- * 'sParameters' - A list of @Parameter@ structures. -- -- * 'sStackId' - Unique identifier of the stack. -- -- * 'sDescription' - A user-defined description associated with the stack. -- -- * 'sCapabilities' - The capabilities allowed in the stack. -- -- * 'sTags' - A list of @Tag@ s that specify information about the stack. -- -- * 'sTimeoutInMinutes' - The amount of time within which stack creation should complete. -- -- * 'sRoleARN' - The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that is associated with the stack. During a stack operation, AWS CloudFormation uses this role's credentials to make calls on your behalf. -- -- * 'sStackName' - The name associated with the stack. -- -- * 'sCreationTime' - The time at which the stack was created. -- -- * 'sStackStatus' - Current status of the stack. stack :: Text -- ^ 'sStackName' -> UTCTime -- ^ 'sCreationTime' -> StackStatus -- ^ 'sStackStatus' -> Stack stack pStackName_ pCreationTime_ pStackStatus_ = Stack' { _sDisableRollback = Nothing , _sLastUpdatedTime = Nothing , _sNotificationARNs = Nothing , _sStackStatusReason = Nothing , _sChangeSetId = Nothing , _sOutputs = Nothing , _sParameters = Nothing , _sStackId = Nothing , _sDescription = Nothing , _sCapabilities = Nothing , _sTags = Nothing , _sTimeoutInMinutes = Nothing , _sRoleARN = Nothing , _sStackName = pStackName_ , _sCreationTime = _Time # pCreationTime_ , _sStackStatus = pStackStatus_ } -- | Boolean to enable or disable rollback on stack creation failures: * @true@ : disable rollback * @false@ : enable rollback sDisableRollback :: Lens' Stack (Maybe Bool) sDisableRollback = lens _sDisableRollback (\ s a -> s{_sDisableRollback = a}); -- | The time the stack was last updated. This field will only be returned if the stack has been updated at least once. sLastUpdatedTime :: Lens' Stack (Maybe UTCTime) sLastUpdatedTime = lens _sLastUpdatedTime (\ s a -> s{_sLastUpdatedTime = a}) . mapping _Time; -- | SNS topic ARNs to which stack related events are published. sNotificationARNs :: Lens' Stack [Text] sNotificationARNs = lens _sNotificationARNs (\ s a -> s{_sNotificationARNs = a}) . _Default . _Coerce; -- | Success/failure message associated with the stack status. sStackStatusReason :: Lens' Stack (Maybe Text) sStackStatusReason = lens _sStackStatusReason (\ s a -> s{_sStackStatusReason = a}); -- | The unique ID of the change set. sChangeSetId :: Lens' Stack (Maybe Text) sChangeSetId = lens _sChangeSetId (\ s a -> s{_sChangeSetId = a}); -- | A list of output structures. sOutputs :: Lens' Stack [Output] sOutputs = lens _sOutputs (\ s a -> s{_sOutputs = a}) . _Default . _Coerce; -- | A list of @Parameter@ structures. sParameters :: Lens' Stack [Parameter] sParameters = lens _sParameters (\ s a -> s{_sParameters = a}) . _Default . _Coerce; -- | Unique identifier of the stack. sStackId :: Lens' Stack (Maybe Text) sStackId = lens _sStackId (\ s a -> s{_sStackId = a}); -- | A user-defined description associated with the stack. sDescription :: Lens' Stack (Maybe Text) sDescription = lens _sDescription (\ s a -> s{_sDescription = a}); -- | The capabilities allowed in the stack. sCapabilities :: Lens' Stack [Capability] sCapabilities = lens _sCapabilities (\ s a -> s{_sCapabilities = a}) . _Default . _Coerce; -- | A list of @Tag@ s that specify information about the stack. sTags :: Lens' Stack [Tag] sTags = lens _sTags (\ s a -> s{_sTags = a}) . _Default . _Coerce; -- | The amount of time within which stack creation should complete. sTimeoutInMinutes :: Lens' Stack (Maybe Natural) sTimeoutInMinutes = lens _sTimeoutInMinutes (\ s a -> s{_sTimeoutInMinutes = a}) . mapping _Nat; -- | The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that is associated with the stack. During a stack operation, AWS CloudFormation uses this role's credentials to make calls on your behalf. sRoleARN :: Lens' Stack (Maybe Text) sRoleARN = lens _sRoleARN (\ s a -> s{_sRoleARN = a}); -- | The name associated with the stack. sStackName :: Lens' Stack Text sStackName = lens _sStackName (\ s a -> s{_sStackName = a}); -- | The time at which the stack was created. sCreationTime :: Lens' Stack UTCTime sCreationTime = lens _sCreationTime (\ s a -> s{_sCreationTime = a}) . _Time; -- | Current status of the stack. sStackStatus :: Lens' Stack StackStatus sStackStatus = lens _sStackStatus (\ s a -> s{_sStackStatus = a}); instance FromXML Stack where parseXML x = Stack' <$> (x .@? "DisableRollback") <*> (x .@? "LastUpdatedTime") <*> (x .@? "NotificationARNs" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "StackStatusReason") <*> (x .@? "ChangeSetId") <*> (x .@? "Outputs" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "Parameters" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "StackId") <*> (x .@? "Description") <*> (x .@? "Capabilities" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "Tags" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "TimeoutInMinutes") <*> (x .@? "RoleARN") <*> (x .@ "StackName") <*> (x .@ "CreationTime") <*> (x .@ "StackStatus") instance Hashable Stack instance NFData Stack -- | The StackEvent data type. -- -- -- -- /See:/ 'stackEvent' smart constructor. data StackEvent = StackEvent' { _seLogicalResourceId :: !(Maybe Text) , _sePhysicalResourceId :: !(Maybe Text) , _seResourceType :: !(Maybe Text) , _seResourceStatusReason :: !(Maybe Text) , _seResourceProperties :: !(Maybe Text) , _seResourceStatus :: !(Maybe ResourceStatus) , _seStackId :: !Text , _seEventId :: !Text , _seStackName :: !Text , _seTimestamp :: !ISO8601 } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StackEvent' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'seLogicalResourceId' - The logical name of the resource specified in the template. -- -- * 'sePhysicalResourceId' - The name or unique identifier associated with the physical instance of the resource. -- -- * 'seResourceType' - Type of resource. (For more information, go to in the AWS CloudFormation User Guide.) -- -- * 'seResourceStatusReason' - Success/failure message associated with the resource. -- -- * 'seResourceProperties' - BLOB of the properties used to create the resource. -- -- * 'seResourceStatus' - Current status of the resource. -- -- * 'seStackId' - The unique ID name of the instance of the stack. -- -- * 'seEventId' - The unique ID of this event. -- -- * 'seStackName' - The name associated with a stack. -- -- * 'seTimestamp' - Time the status was updated. stackEvent :: Text -- ^ 'seStackId' -> Text -- ^ 'seEventId' -> Text -- ^ 'seStackName' -> UTCTime -- ^ 'seTimestamp' -> StackEvent stackEvent pStackId_ pEventId_ pStackName_ pTimestamp_ = StackEvent' { _seLogicalResourceId = Nothing , _sePhysicalResourceId = Nothing , _seResourceType = Nothing , _seResourceStatusReason = Nothing , _seResourceProperties = Nothing , _seResourceStatus = Nothing , _seStackId = pStackId_ , _seEventId = pEventId_ , _seStackName = pStackName_ , _seTimestamp = _Time # pTimestamp_ } -- | The logical name of the resource specified in the template. seLogicalResourceId :: Lens' StackEvent (Maybe Text) seLogicalResourceId = lens _seLogicalResourceId (\ s a -> s{_seLogicalResourceId = a}); -- | The name or unique identifier associated with the physical instance of the resource. sePhysicalResourceId :: Lens' StackEvent (Maybe Text) sePhysicalResourceId = lens _sePhysicalResourceId (\ s a -> s{_sePhysicalResourceId = a}); -- | Type of resource. (For more information, go to in the AWS CloudFormation User Guide.) seResourceType :: Lens' StackEvent (Maybe Text) seResourceType = lens _seResourceType (\ s a -> s{_seResourceType = a}); -- | Success/failure message associated with the resource. seResourceStatusReason :: Lens' StackEvent (Maybe Text) seResourceStatusReason = lens _seResourceStatusReason (\ s a -> s{_seResourceStatusReason = a}); -- | BLOB of the properties used to create the resource. seResourceProperties :: Lens' StackEvent (Maybe Text) seResourceProperties = lens _seResourceProperties (\ s a -> s{_seResourceProperties = a}); -- | Current status of the resource. seResourceStatus :: Lens' StackEvent (Maybe ResourceStatus) seResourceStatus = lens _seResourceStatus (\ s a -> s{_seResourceStatus = a}); -- | The unique ID name of the instance of the stack. seStackId :: Lens' StackEvent Text seStackId = lens _seStackId (\ s a -> s{_seStackId = a}); -- | The unique ID of this event. seEventId :: Lens' StackEvent Text seEventId = lens _seEventId (\ s a -> s{_seEventId = a}); -- | The name associated with a stack. seStackName :: Lens' StackEvent Text seStackName = lens _seStackName (\ s a -> s{_seStackName = a}); -- | Time the status was updated. seTimestamp :: Lens' StackEvent UTCTime seTimestamp = lens _seTimestamp (\ s a -> s{_seTimestamp = a}) . _Time; instance FromXML StackEvent where parseXML x = StackEvent' <$> (x .@? "LogicalResourceId") <*> (x .@? "PhysicalResourceId") <*> (x .@? "ResourceType") <*> (x .@? "ResourceStatusReason") <*> (x .@? "ResourceProperties") <*> (x .@? "ResourceStatus") <*> (x .@ "StackId") <*> (x .@ "EventId") <*> (x .@ "StackName") <*> (x .@ "Timestamp") instance Hashable StackEvent instance NFData StackEvent -- | The StackResource data type. -- -- -- -- /See:/ 'stackResource' smart constructor. data StackResource = StackResource' { _srPhysicalResourceId :: !(Maybe Text) , _srResourceStatusReason :: !(Maybe Text) , _srStackId :: !(Maybe Text) , _srDescription :: !(Maybe Text) , _srStackName :: !(Maybe Text) , _srLogicalResourceId :: !Text , _srResourceType :: !Text , _srTimestamp :: !ISO8601 , _srResourceStatus :: !ResourceStatus } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StackResource' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'srPhysicalResourceId' - The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation. -- -- * 'srResourceStatusReason' - Success/failure message associated with the resource. -- -- * 'srStackId' - Unique identifier of the stack. -- -- * 'srDescription' - User defined description associated with the resource. -- -- * 'srStackName' - The name associated with the stack. -- -- * 'srLogicalResourceId' - The logical name of the resource specified in the template. -- -- * 'srResourceType' - Type of resource. (For more information, go to in the AWS CloudFormation User Guide.) -- -- * 'srTimestamp' - Time the status was updated. -- -- * 'srResourceStatus' - Current status of the resource. stackResource :: Text -- ^ 'srLogicalResourceId' -> Text -- ^ 'srResourceType' -> UTCTime -- ^ 'srTimestamp' -> ResourceStatus -- ^ 'srResourceStatus' -> StackResource stackResource pLogicalResourceId_ pResourceType_ pTimestamp_ pResourceStatus_ = StackResource' { _srPhysicalResourceId = Nothing , _srResourceStatusReason = Nothing , _srStackId = Nothing , _srDescription = Nothing , _srStackName = Nothing , _srLogicalResourceId = pLogicalResourceId_ , _srResourceType = pResourceType_ , _srTimestamp = _Time # pTimestamp_ , _srResourceStatus = pResourceStatus_ } -- | The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation. srPhysicalResourceId :: Lens' StackResource (Maybe Text) srPhysicalResourceId = lens _srPhysicalResourceId (\ s a -> s{_srPhysicalResourceId = a}); -- | Success/failure message associated with the resource. srResourceStatusReason :: Lens' StackResource (Maybe Text) srResourceStatusReason = lens _srResourceStatusReason (\ s a -> s{_srResourceStatusReason = a}); -- | Unique identifier of the stack. srStackId :: Lens' StackResource (Maybe Text) srStackId = lens _srStackId (\ s a -> s{_srStackId = a}); -- | User defined description associated with the resource. srDescription :: Lens' StackResource (Maybe Text) srDescription = lens _srDescription (\ s a -> s{_srDescription = a}); -- | The name associated with the stack. srStackName :: Lens' StackResource (Maybe Text) srStackName = lens _srStackName (\ s a -> s{_srStackName = a}); -- | The logical name of the resource specified in the template. srLogicalResourceId :: Lens' StackResource Text srLogicalResourceId = lens _srLogicalResourceId (\ s a -> s{_srLogicalResourceId = a}); -- | Type of resource. (For more information, go to in the AWS CloudFormation User Guide.) srResourceType :: Lens' StackResource Text srResourceType = lens _srResourceType (\ s a -> s{_srResourceType = a}); -- | Time the status was updated. srTimestamp :: Lens' StackResource UTCTime srTimestamp = lens _srTimestamp (\ s a -> s{_srTimestamp = a}) . _Time; -- | Current status of the resource. srResourceStatus :: Lens' StackResource ResourceStatus srResourceStatus = lens _srResourceStatus (\ s a -> s{_srResourceStatus = a}); instance FromXML StackResource where parseXML x = StackResource' <$> (x .@? "PhysicalResourceId") <*> (x .@? "ResourceStatusReason") <*> (x .@? "StackId") <*> (x .@? "Description") <*> (x .@? "StackName") <*> (x .@ "LogicalResourceId") <*> (x .@ "ResourceType") <*> (x .@ "Timestamp") <*> (x .@ "ResourceStatus") instance Hashable StackResource instance NFData StackResource -- | Contains detailed information about the specified stack resource. -- -- -- -- /See:/ 'stackResourceDetail' smart constructor. data StackResourceDetail = StackResourceDetail' { _srdPhysicalResourceId :: !(Maybe Text) , _srdResourceStatusReason :: !(Maybe Text) , _srdMetadata :: !(Maybe Text) , _srdStackId :: !(Maybe Text) , _srdDescription :: !(Maybe Text) , _srdStackName :: !(Maybe Text) , _srdLogicalResourceId :: !Text , _srdResourceType :: !Text , _srdLastUpdatedTimestamp :: !ISO8601 , _srdResourceStatus :: !ResourceStatus } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StackResourceDetail' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'srdPhysicalResourceId' - The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation. -- -- * 'srdResourceStatusReason' - Success/failure message associated with the resource. -- -- * 'srdMetadata' - The content of the @Metadata@ attribute declared for the resource. For more information, see in the AWS CloudFormation User Guide. -- -- * 'srdStackId' - Unique identifier of the stack. -- -- * 'srdDescription' - User defined description associated with the resource. -- -- * 'srdStackName' - The name associated with the stack. -- -- * 'srdLogicalResourceId' - The logical name of the resource specified in the template. -- -- * 'srdResourceType' - Type of resource. ((For more information, go to in the AWS CloudFormation User Guide.) -- -- * 'srdLastUpdatedTimestamp' - Time the status was updated. -- -- * 'srdResourceStatus' - Current status of the resource. stackResourceDetail :: Text -- ^ 'srdLogicalResourceId' -> Text -- ^ 'srdResourceType' -> UTCTime -- ^ 'srdLastUpdatedTimestamp' -> ResourceStatus -- ^ 'srdResourceStatus' -> StackResourceDetail stackResourceDetail pLogicalResourceId_ pResourceType_ pLastUpdatedTimestamp_ pResourceStatus_ = StackResourceDetail' { _srdPhysicalResourceId = Nothing , _srdResourceStatusReason = Nothing , _srdMetadata = Nothing , _srdStackId = Nothing , _srdDescription = Nothing , _srdStackName = Nothing , _srdLogicalResourceId = pLogicalResourceId_ , _srdResourceType = pResourceType_ , _srdLastUpdatedTimestamp = _Time # pLastUpdatedTimestamp_ , _srdResourceStatus = pResourceStatus_ } -- | The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation. srdPhysicalResourceId :: Lens' StackResourceDetail (Maybe Text) srdPhysicalResourceId = lens _srdPhysicalResourceId (\ s a -> s{_srdPhysicalResourceId = a}); -- | Success/failure message associated with the resource. srdResourceStatusReason :: Lens' StackResourceDetail (Maybe Text) srdResourceStatusReason = lens _srdResourceStatusReason (\ s a -> s{_srdResourceStatusReason = a}); -- | The content of the @Metadata@ attribute declared for the resource. For more information, see in the AWS CloudFormation User Guide. srdMetadata :: Lens' StackResourceDetail (Maybe Text) srdMetadata = lens _srdMetadata (\ s a -> s{_srdMetadata = a}); -- | Unique identifier of the stack. srdStackId :: Lens' StackResourceDetail (Maybe Text) srdStackId = lens _srdStackId (\ s a -> s{_srdStackId = a}); -- | User defined description associated with the resource. srdDescription :: Lens' StackResourceDetail (Maybe Text) srdDescription = lens _srdDescription (\ s a -> s{_srdDescription = a}); -- | The name associated with the stack. srdStackName :: Lens' StackResourceDetail (Maybe Text) srdStackName = lens _srdStackName (\ s a -> s{_srdStackName = a}); -- | The logical name of the resource specified in the template. srdLogicalResourceId :: Lens' StackResourceDetail Text srdLogicalResourceId = lens _srdLogicalResourceId (\ s a -> s{_srdLogicalResourceId = a}); -- | Type of resource. ((For more information, go to in the AWS CloudFormation User Guide.) srdResourceType :: Lens' StackResourceDetail Text srdResourceType = lens _srdResourceType (\ s a -> s{_srdResourceType = a}); -- | Time the status was updated. srdLastUpdatedTimestamp :: Lens' StackResourceDetail UTCTime srdLastUpdatedTimestamp = lens _srdLastUpdatedTimestamp (\ s a -> s{_srdLastUpdatedTimestamp = a}) . _Time; -- | Current status of the resource. srdResourceStatus :: Lens' StackResourceDetail ResourceStatus srdResourceStatus = lens _srdResourceStatus (\ s a -> s{_srdResourceStatus = a}); instance FromXML StackResourceDetail where parseXML x = StackResourceDetail' <$> (x .@? "PhysicalResourceId") <*> (x .@? "ResourceStatusReason") <*> (x .@? "Metadata") <*> (x .@? "StackId") <*> (x .@? "Description") <*> (x .@? "StackName") <*> (x .@ "LogicalResourceId") <*> (x .@ "ResourceType") <*> (x .@ "LastUpdatedTimestamp") <*> (x .@ "ResourceStatus") instance Hashable StackResourceDetail instance NFData StackResourceDetail -- | Contains high-level information about the specified stack resource. -- -- -- -- /See:/ 'stackResourceSummary' smart constructor. data StackResourceSummary = StackResourceSummary' { _srsPhysicalResourceId :: !(Maybe Text) , _srsResourceStatusReason :: !(Maybe Text) , _srsLogicalResourceId :: !Text , _srsResourceType :: !Text , _srsLastUpdatedTimestamp :: !ISO8601 , _srsResourceStatus :: !ResourceStatus } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StackResourceSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'srsPhysicalResourceId' - The name or unique identifier that corresponds to a physical instance ID of the resource. -- -- * 'srsResourceStatusReason' - Success/failure message associated with the resource. -- -- * 'srsLogicalResourceId' - The logical name of the resource specified in the template. -- -- * 'srsResourceType' - Type of resource. (For more information, go to in the AWS CloudFormation User Guide.) -- -- * 'srsLastUpdatedTimestamp' - Time the status was updated. -- -- * 'srsResourceStatus' - Current status of the resource. stackResourceSummary :: Text -- ^ 'srsLogicalResourceId' -> Text -- ^ 'srsResourceType' -> UTCTime -- ^ 'srsLastUpdatedTimestamp' -> ResourceStatus -- ^ 'srsResourceStatus' -> StackResourceSummary stackResourceSummary pLogicalResourceId_ pResourceType_ pLastUpdatedTimestamp_ pResourceStatus_ = StackResourceSummary' { _srsPhysicalResourceId = Nothing , _srsResourceStatusReason = Nothing , _srsLogicalResourceId = pLogicalResourceId_ , _srsResourceType = pResourceType_ , _srsLastUpdatedTimestamp = _Time # pLastUpdatedTimestamp_ , _srsResourceStatus = pResourceStatus_ } -- | The name or unique identifier that corresponds to a physical instance ID of the resource. srsPhysicalResourceId :: Lens' StackResourceSummary (Maybe Text) srsPhysicalResourceId = lens _srsPhysicalResourceId (\ s a -> s{_srsPhysicalResourceId = a}); -- | Success/failure message associated with the resource. srsResourceStatusReason :: Lens' StackResourceSummary (Maybe Text) srsResourceStatusReason = lens _srsResourceStatusReason (\ s a -> s{_srsResourceStatusReason = a}); -- | The logical name of the resource specified in the template. srsLogicalResourceId :: Lens' StackResourceSummary Text srsLogicalResourceId = lens _srsLogicalResourceId (\ s a -> s{_srsLogicalResourceId = a}); -- | Type of resource. (For more information, go to in the AWS CloudFormation User Guide.) srsResourceType :: Lens' StackResourceSummary Text srsResourceType = lens _srsResourceType (\ s a -> s{_srsResourceType = a}); -- | Time the status was updated. srsLastUpdatedTimestamp :: Lens' StackResourceSummary UTCTime srsLastUpdatedTimestamp = lens _srsLastUpdatedTimestamp (\ s a -> s{_srsLastUpdatedTimestamp = a}) . _Time; -- | Current status of the resource. srsResourceStatus :: Lens' StackResourceSummary ResourceStatus srsResourceStatus = lens _srsResourceStatus (\ s a -> s{_srsResourceStatus = a}); instance FromXML StackResourceSummary where parseXML x = StackResourceSummary' <$> (x .@? "PhysicalResourceId") <*> (x .@? "ResourceStatusReason") <*> (x .@ "LogicalResourceId") <*> (x .@ "ResourceType") <*> (x .@ "LastUpdatedTimestamp") <*> (x .@ "ResourceStatus") instance Hashable StackResourceSummary instance NFData StackResourceSummary -- | The StackSummary Data Type -- -- -- -- /See:/ 'stackSummary' smart constructor. data StackSummary = StackSummary' { _ssLastUpdatedTime :: !(Maybe ISO8601) , _ssStackStatusReason :: !(Maybe Text) , _ssTemplateDescription :: !(Maybe Text) , _ssDeletionTime :: !(Maybe ISO8601) , _ssStackId :: !(Maybe Text) , _ssStackName :: !Text , _ssCreationTime :: !ISO8601 , _ssStackStatus :: !StackStatus } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StackSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ssLastUpdatedTime' - The time the stack was last updated. This field will only be returned if the stack has been updated at least once. -- -- * 'ssStackStatusReason' - Success/Failure message associated with the stack status. -- -- * 'ssTemplateDescription' - The template description of the template used to create the stack. -- -- * 'ssDeletionTime' - The time the stack was deleted. -- -- * 'ssStackId' - Unique stack identifier. -- -- * 'ssStackName' - The name associated with the stack. -- -- * 'ssCreationTime' - The time the stack was created. -- -- * 'ssStackStatus' - The current status of the stack. stackSummary :: Text -- ^ 'ssStackName' -> UTCTime -- ^ 'ssCreationTime' -> StackStatus -- ^ 'ssStackStatus' -> StackSummary stackSummary pStackName_ pCreationTime_ pStackStatus_ = StackSummary' { _ssLastUpdatedTime = Nothing , _ssStackStatusReason = Nothing , _ssTemplateDescription = Nothing , _ssDeletionTime = Nothing , _ssStackId = Nothing , _ssStackName = pStackName_ , _ssCreationTime = _Time # pCreationTime_ , _ssStackStatus = pStackStatus_ } -- | The time the stack was last updated. This field will only be returned if the stack has been updated at least once. ssLastUpdatedTime :: Lens' StackSummary (Maybe UTCTime) ssLastUpdatedTime = lens _ssLastUpdatedTime (\ s a -> s{_ssLastUpdatedTime = a}) . mapping _Time; -- | Success/Failure message associated with the stack status. ssStackStatusReason :: Lens' StackSummary (Maybe Text) ssStackStatusReason = lens _ssStackStatusReason (\ s a -> s{_ssStackStatusReason = a}); -- | The template description of the template used to create the stack. ssTemplateDescription :: Lens' StackSummary (Maybe Text) ssTemplateDescription = lens _ssTemplateDescription (\ s a -> s{_ssTemplateDescription = a}); -- | The time the stack was deleted. ssDeletionTime :: Lens' StackSummary (Maybe UTCTime) ssDeletionTime = lens _ssDeletionTime (\ s a -> s{_ssDeletionTime = a}) . mapping _Time; -- | Unique stack identifier. ssStackId :: Lens' StackSummary (Maybe Text) ssStackId = lens _ssStackId (\ s a -> s{_ssStackId = a}); -- | The name associated with the stack. ssStackName :: Lens' StackSummary Text ssStackName = lens _ssStackName (\ s a -> s{_ssStackName = a}); -- | The time the stack was created. ssCreationTime :: Lens' StackSummary UTCTime ssCreationTime = lens _ssCreationTime (\ s a -> s{_ssCreationTime = a}) . _Time; -- | The current status of the stack. ssStackStatus :: Lens' StackSummary StackStatus ssStackStatus = lens _ssStackStatus (\ s a -> s{_ssStackStatus = a}); instance FromXML StackSummary where parseXML x = StackSummary' <$> (x .@? "LastUpdatedTime") <*> (x .@? "StackStatusReason") <*> (x .@? "TemplateDescription") <*> (x .@? "DeletionTime") <*> (x .@? "StackId") <*> (x .@ "StackName") <*> (x .@ "CreationTime") <*> (x .@ "StackStatus") instance Hashable StackSummary instance NFData StackSummary -- | The Tag type enables you to specify a key-value pair that can be used to store information about an AWS CloudFormation stack. -- -- -- -- /See:/ 'tag' smart constructor. data Tag = Tag' { _tagValue :: !(Maybe Text) , _tagKey :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Tag' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'tagValue' - /Required/ . A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value. -- -- * 'tagKey' - /Required/ . A string used to identify this tag. You can specify a maximum of 128 characters for a tag key. Tags owned by Amazon Web Services (AWS) have the reserved prefix: @aws:@ . tag :: Tag tag = Tag' { _tagValue = Nothing , _tagKey = Nothing } -- | /Required/ . A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value. tagValue :: Lens' Tag (Maybe Text) tagValue = lens _tagValue (\ s a -> s{_tagValue = a}); -- | /Required/ . A string used to identify this tag. You can specify a maximum of 128 characters for a tag key. Tags owned by Amazon Web Services (AWS) have the reserved prefix: @aws:@ . tagKey :: Lens' Tag (Maybe Text) tagKey = lens _tagKey (\ s a -> s{_tagKey = a}); instance FromXML Tag where parseXML x = Tag' <$> (x .@? "Value") <*> (x .@? "Key") instance Hashable Tag instance NFData Tag instance ToQuery Tag where toQuery Tag'{..} = mconcat ["Value" =: _tagValue, "Key" =: _tagKey] -- | The TemplateParameter data type. -- -- -- -- /See:/ 'templateParameter' smart constructor. data TemplateParameter = TemplateParameter' { _tpParameterKey :: !(Maybe Text) , _tpDefaultValue :: !(Maybe Text) , _tpNoEcho :: !(Maybe Bool) , _tpDescription :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'TemplateParameter' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'tpParameterKey' - The name associated with the parameter. -- -- * 'tpDefaultValue' - The default value associated with the parameter. -- -- * 'tpNoEcho' - Flag indicating whether the parameter should be displayed as plain text in logs and UIs. -- -- * 'tpDescription' - User defined description associated with the parameter. templateParameter :: TemplateParameter templateParameter = TemplateParameter' { _tpParameterKey = Nothing , _tpDefaultValue = Nothing , _tpNoEcho = Nothing , _tpDescription = Nothing } -- | The name associated with the parameter. tpParameterKey :: Lens' TemplateParameter (Maybe Text) tpParameterKey = lens _tpParameterKey (\ s a -> s{_tpParameterKey = a}); -- | The default value associated with the parameter. tpDefaultValue :: Lens' TemplateParameter (Maybe Text) tpDefaultValue = lens _tpDefaultValue (\ s a -> s{_tpDefaultValue = a}); -- | Flag indicating whether the parameter should be displayed as plain text in logs and UIs. tpNoEcho :: Lens' TemplateParameter (Maybe Bool) tpNoEcho = lens _tpNoEcho (\ s a -> s{_tpNoEcho = a}); -- | User defined description associated with the parameter. tpDescription :: Lens' TemplateParameter (Maybe Text) tpDescription = lens _tpDescription (\ s a -> s{_tpDescription = a}); instance FromXML TemplateParameter where parseXML x = TemplateParameter' <$> (x .@? "ParameterKey") <*> (x .@? "DefaultValue") <*> (x .@? "NoEcho") <*> (x .@? "Description") instance Hashable TemplateParameter instance NFData TemplateParameter