-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon Elastic File System SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.EFS</a> or <a>the AWS documentation</a> to get
--   started.
@package amazonka-efs
@version 1.6.1


module Network.AWS.EFS.Types

-- | API version <tt>2015-02-01</tt> of the Amazon Elastic File System SDK
--   configuration.
efs :: Service

-- | Returned if there is no mount target with the specified ID found in
--   the caller's account.
_MountTargetNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the size of <tt>SecurityGroups</tt> specified in the
--   request is greater than five.
_SecurityGroupLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if one of the specified security groups does not exist in the
--   subnet's VPC.
_SecurityGroupNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the mount target would violate one of the specified
--   restrictions based on the file system's existing mount targets.
_MountTargetConflict :: AsError a => Getting (First ServiceError) a ServiceError

_UnsupportedAvailabilityZone :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the AWS account has already created maximum number of file
--   systems allowed per account.
_FileSystemLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | The calling account has reached the ENI limit for the specific AWS
--   region. Client should try to delete some ENIs or get its account limit
--   raised. For more information, see <a>Amazon VPC Limits</a> in the
--   Amazon Virtual Private Cloud User Guide (see the Network interfaces
--   per VPC entry in the table).
_NetworkInterfaceLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the file system you are trying to create already exists,
--   with the creation token you provided.
_FileSystemAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if there is no subnet with ID <tt>SubnetId</tt> provided in
--   the request.
_SubnetNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the specified <tt>FileSystemId</tt> does not exist in the
--   requester's AWS account.
_FileSystemNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the file system's life cycle state is not "created".
_IncorrectFileSystemLifeCycleState :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the request is malformed or contains an error such as an
--   invalid parameter value or a missing required parameter.
_BadRequest :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if <tt>IpAddress</tt> was not specified in the request and
--   there are no free IP addresses in the subnet.
_NoFreeAddressesInSubnet :: AsError a => Getting (First ServiceError) a ServiceError

-- | The service timed out trying to fulfill the request, and the client
--   should try the call again.
_DependencyTimeout :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if a file system has mount targets.
_FileSystemInUse :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the mount target is not in the correct state for the
--   operation.
_IncorrectMountTargetState :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if an error occurred on the server side.
_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the request specified an <tt>IpAddress</tt> that is
--   already in use in the subnet.
_IPAddressInUse :: AsError a => Getting (First ServiceError) a ServiceError
data LifeCycleState
Available :: LifeCycleState
Creating :: LifeCycleState
Deleted :: LifeCycleState
Deleting :: LifeCycleState
data PerformanceMode
GeneralPurpose :: PerformanceMode
MaxIO :: PerformanceMode

-- | Description of the file system.
--   
--   <i>See:</i> <a>fileSystemDescription</a> smart constructor.
data FileSystemDescription

-- | Creates a value of <a>FileSystemDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fsdEncrypted</a> - A boolean value that, if true, indicates
--   that the file system is encrypted.</li>
--   <li><a>fsdKMSKeyId</a> - The id of an AWS Key Management Service (AWS
--   KMS) customer master key (CMK) that was used to protect the encrypted
--   file system.</li>
--   <li><a>fsdName</a> - You can add tags to a file system, including a
--   <tt>Name</tt> tag. For more information, see <tt>CreateTags</tt> . If
--   the file system has a <tt>Name</tt> tag, Amazon EFS returns the value
--   in this field.</li>
--   <li><a>fsdOwnerId</a> - AWS account that created the file system. If
--   the file system was created by an IAM user, the parent account to
--   which the user belongs is the owner.</li>
--   <li><a>fsdCreationToken</a> - Opaque string specified in the
--   request.</li>
--   <li><a>fsdFileSystemId</a> - ID of the file system, assigned by Amazon
--   EFS.</li>
--   <li><a>fsdCreationTime</a> - Time that the file system was created, in
--   seconds (since 1970-01-01T00:00:00Z).</li>
--   <li><a>fsdLifeCycleState</a> - Lifecycle phase of the file
--   system.</li>
--   <li><a>fsdNumberOfMountTargets</a> - Current number of mount targets
--   that the file system has. For more information, see
--   <tt>CreateMountTarget</tt> .</li>
--   <li><a>fsdSizeInBytes</a> - Latest known metered size (in bytes) of
--   data stored in the file system, in bytes, in its <tt>Value</tt> field,
--   and the time at which that size was determined in its
--   <tt>Timestamp</tt> field. The <tt>Timestamp</tt> value is the integer
--   number of seconds since 1970-01-01T00:00:00Z. Note that the value does
--   not represent the size of a consistent snapshot of the file system,
--   but it is eventually consistent when there are no writes to the file
--   system. That is, the value will represent actual size only if the file
--   system is not modified for a period longer than a couple of hours.
--   Otherwise, the value is not the exact size the file system was at any
--   instant in time.</li>
--   <li><a>fsdPerformanceMode</a> - The <tt>PerformanceMode</tt> of the
--   file system.</li>
--   </ul>
fileSystemDescription :: Text -> Text -> Text -> UTCTime -> LifeCycleState -> Natural -> FileSystemSize -> PerformanceMode -> FileSystemDescription

-- | A boolean value that, if true, indicates that the file system is
--   encrypted.
fsdEncrypted :: Lens' FileSystemDescription (Maybe Bool)

-- | The id of an AWS Key Management Service (AWS KMS) customer master key
--   (CMK) that was used to protect the encrypted file system.
fsdKMSKeyId :: Lens' FileSystemDescription (Maybe Text)

-- | You can add tags to a file system, including a <tt>Name</tt> tag. For
--   more information, see <tt>CreateTags</tt> . If the file system has a
--   <tt>Name</tt> tag, Amazon EFS returns the value in this field.
fsdName :: Lens' FileSystemDescription (Maybe Text)

-- | AWS account that created the file system. If the file system was
--   created by an IAM user, the parent account to which the user belongs
--   is the owner.
fsdOwnerId :: Lens' FileSystemDescription Text

-- | Opaque string specified in the request.
fsdCreationToken :: Lens' FileSystemDescription Text

-- | ID of the file system, assigned by Amazon EFS.
fsdFileSystemId :: Lens' FileSystemDescription Text

-- | Time that the file system was created, in seconds (since
--   1970-01-01T00:00:00Z).
fsdCreationTime :: Lens' FileSystemDescription UTCTime

-- | Lifecycle phase of the file system.
fsdLifeCycleState :: Lens' FileSystemDescription LifeCycleState

-- | Current number of mount targets that the file system has. For more
--   information, see <tt>CreateMountTarget</tt> .
fsdNumberOfMountTargets :: Lens' FileSystemDescription Natural

-- | Latest known metered size (in bytes) of data stored in the file
--   system, in bytes, in its <tt>Value</tt> field, and the time at which
--   that size was determined in its <tt>Timestamp</tt> field. The
--   <tt>Timestamp</tt> value is the integer number of seconds since
--   1970-01-01T00:00:00Z. Note that the value does not represent the size
--   of a consistent snapshot of the file system, but it is eventually
--   consistent when there are no writes to the file system. That is, the
--   value will represent actual size only if the file system is not
--   modified for a period longer than a couple of hours. Otherwise, the
--   value is not the exact size the file system was at any instant in
--   time.
fsdSizeInBytes :: Lens' FileSystemDescription FileSystemSize

-- | The <tt>PerformanceMode</tt> of the file system.
fsdPerformanceMode :: Lens' FileSystemDescription PerformanceMode

-- | Latest known metered size (in bytes) of data stored in the file
--   system, in its <tt>Value</tt> field, and the time at which that size
--   was determined in its <tt>Timestamp</tt> field. Note that the value
--   does not represent the size of a consistent snapshot of the file
--   system, but it is eventually consistent when there are no writes to
--   the file system. That is, the value will represent the actual size
--   only if the file system is not modified for a period longer than a
--   couple of hours. Otherwise, the value is not necessarily the exact
--   size the file system was at any instant in time.
--   
--   <i>See:</i> <a>fileSystemSize</a> smart constructor.
data FileSystemSize

-- | Creates a value of <a>FileSystemSize</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fssTimestamp</a> - Time at which the size of data, returned in
--   the <tt>Value</tt> field, was determined. The value is the integer
--   number of seconds since 1970-01-01T00:00:00Z.</li>
--   <li><a>fssValue</a> - Latest known metered size (in bytes) of data
--   stored in the file system.</li>
--   </ul>
fileSystemSize :: Natural -> FileSystemSize

-- | Time at which the size of data, returned in the <tt>Value</tt> field,
--   was determined. The value is the integer number of seconds since
--   1970-01-01T00:00:00Z.
fssTimestamp :: Lens' FileSystemSize (Maybe UTCTime)

-- | Latest known metered size (in bytes) of data stored in the file
--   system.
fssValue :: Lens' FileSystemSize Natural

-- | Provides a description of a mount target.
--   
--   <i>See:</i> <a>mountTargetDescription</a> smart constructor.
data MountTargetDescription

-- | Creates a value of <a>MountTargetDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtdIPAddress</a> - Address at which the file system may be
--   mounted via the mount target.</li>
--   <li><a>mtdNetworkInterfaceId</a> - ID of the network interface that
--   Amazon EFS created when it created the mount target.</li>
--   <li><a>mtdOwnerId</a> - AWS account ID that owns the resource.</li>
--   <li><a>mtdMountTargetId</a> - System-assigned mount target ID.</li>
--   <li><a>mtdFileSystemId</a> - ID of the file system for which the mount
--   target is intended.</li>
--   <li><a>mtdSubnetId</a> - ID of the mount target's subnet.</li>
--   <li><a>mtdLifeCycleState</a> - Lifecycle state of the mount
--   target.</li>
--   </ul>
mountTargetDescription :: Text -> Text -> Text -> LifeCycleState -> MountTargetDescription

-- | Address at which the file system may be mounted via the mount target.
mtdIPAddress :: Lens' MountTargetDescription (Maybe Text)

-- | ID of the network interface that Amazon EFS created when it created
--   the mount target.
mtdNetworkInterfaceId :: Lens' MountTargetDescription (Maybe Text)

-- | AWS account ID that owns the resource.
mtdOwnerId :: Lens' MountTargetDescription (Maybe Text)

-- | System-assigned mount target ID.
mtdMountTargetId :: Lens' MountTargetDescription Text

-- | ID of the file system for which the mount target is intended.
mtdFileSystemId :: Lens' MountTargetDescription Text

-- | ID of the mount target's subnet.
mtdSubnetId :: Lens' MountTargetDescription Text

-- | Lifecycle state of the mount target.
mtdLifeCycleState :: Lens' MountTargetDescription LifeCycleState

-- | A tag is a key-value pair. Allowed characters: letters, whitespace,
--   and numbers, representable in UTF-8, and the following
--   characters:<tt>+ - = . _ : /</tt>
--   
--   <i>See:</i> <a>tag</a> smart constructor.
data Tag

-- | Creates a value of <a>Tag</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tagKey</a> - Tag key (String). The key can't start with
--   <tt>aws:</tt> .</li>
--   <li><a>tagValue</a> - Value of the tag key.</li>
--   </ul>
tag :: Text -> Text -> Tag

-- | Tag key (String). The key can't start with <tt>aws:</tt> .
tagKey :: Lens' Tag Text

-- | Value of the tag key.
tagValue :: Lens' Tag Text


-- | Modifies the set of security groups in effect for a mount target.
--   
--   When you create a mount target, Amazon EFS also creates a new network
--   interface. For more information, see <tt>CreateMountTarget</tt> . This
--   operation replaces the security groups in effect for the network
--   interface associated with a mount target, with the
--   <tt>SecurityGroups</tt> provided in the request. This operation
--   requires that the network interface of the mount target has been
--   created and the lifecycle state of the mount target is not
--   <tt>deleted</tt> .
--   
--   The operation requires permissions for the following actions:
--   
--   <ul>
--   <li><tt>elasticfilesystem:ModifyMountTargetSecurityGroups</tt> action
--   on the mount target's file system.</li>
--   <li><tt>ec2:ModifyNetworkInterfaceAttribute</tt> action on the mount
--   target's network interface.</li>
--   </ul>
module Network.AWS.EFS.ModifyMountTargetSecurityGroups

-- | Creates a value of <a>ModifyMountTargetSecurityGroups</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mmtsgSecurityGroups</a> - Array of up to five VPC security
--   group IDs.</li>
--   <li><a>mmtsgMountTargetId</a> - ID of the mount target whose security
--   groups you want to modify.</li>
--   </ul>
modifyMountTargetSecurityGroups :: Text -> ModifyMountTargetSecurityGroups

-- | <i>See:</i> <a>modifyMountTargetSecurityGroups</a> smart constructor.
data ModifyMountTargetSecurityGroups

-- | Array of up to five VPC security group IDs.
mmtsgSecurityGroups :: Lens' ModifyMountTargetSecurityGroups [Text]

-- | ID of the mount target whose security groups you want to modify.
mmtsgMountTargetId :: Lens' ModifyMountTargetSecurityGroups Text

-- | Creates a value of <a>ModifyMountTargetSecurityGroupsResponse</a> with
--   the minimum fields required to make a request.
modifyMountTargetSecurityGroupsResponse :: ModifyMountTargetSecurityGroupsResponse

-- | <i>See:</i> <a>modifyMountTargetSecurityGroupsResponse</a> smart
--   constructor.
data ModifyMountTargetSecurityGroupsResponse
instance GHC.Generics.Generic Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroupsResponse
instance Data.Data.Data Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroupsResponse
instance GHC.Show.Show Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroupsResponse
instance GHC.Read.Read Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroupsResponse
instance GHC.Classes.Eq Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroupsResponse
instance GHC.Generics.Generic Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Data.Data.Data Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance GHC.Show.Show Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance GHC.Read.Read Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance GHC.Classes.Eq Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Control.DeepSeq.NFData Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroupsResponse
instance Data.Hashable.Class.Hashable Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Control.DeepSeq.NFData Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.ModifyMountTargetSecurityGroups.ModifyMountTargetSecurityGroups


-- | Returns the tags associated with a file system. The order of tags
--   returned in the response of one <tt>DescribeTags</tt> call and the
--   order of tags returned across the responses of a multi-call iteration
--   (when using pagination) is unspecified.
--   
--   This operation requires permissions for the
--   <tt>elasticfilesystem:DescribeTags</tt> action.
--   
--   This operation returns paginated results.
module Network.AWS.EFS.DescribeTags

-- | Creates a value of <a>DescribeTags</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtMarker</a> - (Optional) Opaque pagination token returned from
--   a previous <tt>DescribeTags</tt> operation (String). If present, it
--   specifies to continue the list from where the previous call left
--   off.</li>
--   <li><a>dtMaxItems</a> - (Optional) Maximum number of file system tags
--   to return in the response. It must be an integer with a value greater
--   than zero.</li>
--   <li><a>dtFileSystemId</a> - ID of the file system whose tag set you
--   want to retrieve.</li>
--   </ul>
describeTags :: Text -> DescribeTags

-- | <i>See:</i> <a>describeTags</a> smart constructor.
data DescribeTags

-- | (Optional) Opaque pagination token returned from a previous
--   <tt>DescribeTags</tt> operation (String). If present, it specifies to
--   continue the list from where the previous call left off.
dtMarker :: Lens' DescribeTags (Maybe Text)

-- | (Optional) Maximum number of file system tags to return in the
--   response. It must be an integer with a value greater than zero.
dtMaxItems :: Lens' DescribeTags (Maybe Natural)

-- | ID of the file system whose tag set you want to retrieve.
dtFileSystemId :: Lens' DescribeTags Text

-- | Creates a value of <a>DescribeTagsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtrsMarker</a> - If the request included a <tt>Marker</tt> ,
--   the response returns that value in this field.</li>
--   <li><a>dtrsNextMarker</a> - If a value is present, there are more tags
--   to return. In a subsequent request, you can provide the value of
--   <tt>NextMarker</tt> as the value of the <tt>Marker</tt> parameter in
--   your next request to retrieve the next set of tags.</li>
--   <li><a>dtrsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>dtrsTags</a> - Returns tags associated with the file system as
--   an array of <tt>Tag</tt> objects.</li>
--   </ul>
describeTagsResponse :: Int -> DescribeTagsResponse

-- | <i>See:</i> <a>describeTagsResponse</a> smart constructor.
data DescribeTagsResponse

-- | If the request included a <tt>Marker</tt> , the response returns that
--   value in this field.
dtrsMarker :: Lens' DescribeTagsResponse (Maybe Text)

-- | If a value is present, there are more tags to return. In a subsequent
--   request, you can provide the value of <tt>NextMarker</tt> as the value
--   of the <tt>Marker</tt> parameter in your next request to retrieve the
--   next set of tags.
dtrsNextMarker :: Lens' DescribeTagsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dtrsResponseStatus :: Lens' DescribeTagsResponse Int

-- | Returns tags associated with the file system as an array of
--   <tt>Tag</tt> objects.
dtrsTags :: Lens' DescribeTagsResponse [Tag]
instance GHC.Generics.Generic Network.AWS.EFS.DescribeTags.DescribeTagsResponse
instance Data.Data.Data Network.AWS.EFS.DescribeTags.DescribeTagsResponse
instance GHC.Show.Show Network.AWS.EFS.DescribeTags.DescribeTagsResponse
instance GHC.Read.Read Network.AWS.EFS.DescribeTags.DescribeTagsResponse
instance GHC.Classes.Eq Network.AWS.EFS.DescribeTags.DescribeTagsResponse
instance GHC.Generics.Generic Network.AWS.EFS.DescribeTags.DescribeTags
instance Data.Data.Data Network.AWS.EFS.DescribeTags.DescribeTags
instance GHC.Show.Show Network.AWS.EFS.DescribeTags.DescribeTags
instance GHC.Read.Read Network.AWS.EFS.DescribeTags.DescribeTags
instance GHC.Classes.Eq Network.AWS.EFS.DescribeTags.DescribeTags
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.DescribeTags.DescribeTags
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeTags.DescribeTagsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.EFS.DescribeTags.DescribeTags
instance Data.Hashable.Class.Hashable Network.AWS.EFS.DescribeTags.DescribeTags
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeTags.DescribeTags
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.DescribeTags.DescribeTags
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.DescribeTags.DescribeTags
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.DescribeTags.DescribeTags


-- | Returns the descriptions of all the current mount targets, or a
--   specific mount target, for a file system. When requesting all of the
--   current mount targets, the order of mount targets returned in the
--   response is unspecified.
--   
--   This operation requires permissions for the
--   <tt>elasticfilesystem:DescribeMountTargets</tt> action, on either the
--   file system ID that you specify in <tt>FileSystemId</tt> , or on the
--   file system of the mount target that you specify in
--   <tt>MountTargetId</tt> .
--   
--   This operation returns paginated results.
module Network.AWS.EFS.DescribeMountTargets

-- | Creates a value of <a>DescribeMountTargets</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dmtFileSystemId</a> - (Optional) ID of the file system whose
--   mount targets you want to list (String). It must be included in your
--   request if <tt>MountTargetId</tt> is not included.</li>
--   <li><a>dmtMarker</a> - (Optional) Opaque pagination token returned
--   from a previous <tt>DescribeMountTargets</tt> operation (String). If
--   present, it specifies to continue the list from where the previous
--   returning call left off.</li>
--   <li><a>dmtMaxItems</a> - (Optional) Maximum number of mount targets to
--   return in the response. It must be an integer with a value greater
--   than zero.</li>
--   <li><a>dmtMountTargetId</a> - (Optional) ID of the mount target that
--   you want to have described (String). It must be included in your
--   request if <tt>FileSystemId</tt> is not included.</li>
--   </ul>
describeMountTargets :: DescribeMountTargets

-- | <i>See:</i> <a>describeMountTargets</a> smart constructor.
data DescribeMountTargets

-- | (Optional) ID of the file system whose mount targets you want to list
--   (String). It must be included in your request if
--   <tt>MountTargetId</tt> is not included.
dmtFileSystemId :: Lens' DescribeMountTargets (Maybe Text)

-- | (Optional) Opaque pagination token returned from a previous
--   <tt>DescribeMountTargets</tt> operation (String). If present, it
--   specifies to continue the list from where the previous returning call
--   left off.
dmtMarker :: Lens' DescribeMountTargets (Maybe Text)

-- | (Optional) Maximum number of mount targets to return in the response.
--   It must be an integer with a value greater than zero.
dmtMaxItems :: Lens' DescribeMountTargets (Maybe Natural)

-- | (Optional) ID of the mount target that you want to have described
--   (String). It must be included in your request if <tt>FileSystemId</tt>
--   is not included.
dmtMountTargetId :: Lens' DescribeMountTargets (Maybe Text)

-- | Creates a value of <a>DescribeMountTargetsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dmtrsMountTargets</a> - Returns the file system's mount targets
--   as an array of <tt>MountTargetDescription</tt> objects.</li>
--   <li><a>dmtrsMarker</a> - If the request included the <tt>Marker</tt> ,
--   the response returns that value in this field.</li>
--   <li><a>dmtrsNextMarker</a> - If a value is present, there are more
--   mount targets to return. In a subsequent request, you can provide
--   <tt>Marker</tt> in your request with this value to retrieve the next
--   set of mount targets.</li>
--   <li><a>dmtrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeMountTargetsResponse :: Int -> DescribeMountTargetsResponse

-- | <i>See:</i> <a>describeMountTargetsResponse</a> smart constructor.
data DescribeMountTargetsResponse

-- | Returns the file system's mount targets as an array of
--   <tt>MountTargetDescription</tt> objects.
dmtrsMountTargets :: Lens' DescribeMountTargetsResponse [MountTargetDescription]

-- | If the request included the <tt>Marker</tt> , the response returns
--   that value in this field.
dmtrsMarker :: Lens' DescribeMountTargetsResponse (Maybe Text)

-- | If a value is present, there are more mount targets to return. In a
--   subsequent request, you can provide <tt>Marker</tt> in your request
--   with this value to retrieve the next set of mount targets.
dmtrsNextMarker :: Lens' DescribeMountTargetsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dmtrsResponseStatus :: Lens' DescribeMountTargetsResponse Int
instance GHC.Generics.Generic Network.AWS.EFS.DescribeMountTargets.DescribeMountTargetsResponse
instance Data.Data.Data Network.AWS.EFS.DescribeMountTargets.DescribeMountTargetsResponse
instance GHC.Show.Show Network.AWS.EFS.DescribeMountTargets.DescribeMountTargetsResponse
instance GHC.Read.Read Network.AWS.EFS.DescribeMountTargets.DescribeMountTargetsResponse
instance GHC.Classes.Eq Network.AWS.EFS.DescribeMountTargets.DescribeMountTargetsResponse
instance GHC.Generics.Generic Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Data.Data.Data Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance GHC.Show.Show Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance GHC.Read.Read Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance GHC.Classes.Eq Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeMountTargets.DescribeMountTargetsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Data.Hashable.Class.Hashable Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.DescribeMountTargets.DescribeMountTargets


-- | Returns the security groups currently in effect for a mount target.
--   This operation requires that the network interface of the mount target
--   has been created and the lifecycle state of the mount target is not
--   <tt>deleted</tt> .
--   
--   This operation requires permissions for the following actions:
--   
--   <ul>
--   <li><tt>elasticfilesystem:DescribeMountTargetSecurityGroups</tt>
--   action on the mount target's file system.</li>
--   <li><tt>ec2:DescribeNetworkInterfaceAttribute</tt> action on the mount
--   target's network interface.</li>
--   </ul>
module Network.AWS.EFS.DescribeMountTargetSecurityGroups

-- | Creates a value of <a>DescribeMountTargetSecurityGroups</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dmtsgMountTargetId</a> - ID of the mount target whose security
--   groups you want to retrieve.</li>
--   </ul>
describeMountTargetSecurityGroups :: Text -> DescribeMountTargetSecurityGroups

-- | <i>See:</i> <a>describeMountTargetSecurityGroups</a> smart
--   constructor.
data DescribeMountTargetSecurityGroups

-- | ID of the mount target whose security groups you want to retrieve.
dmtsgMountTargetId :: Lens' DescribeMountTargetSecurityGroups Text

-- | Creates a value of <a>DescribeMountTargetSecurityGroupsResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dmtsgrsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>dmtsgrsSecurityGroups</a> - Array of security groups.</li>
--   </ul>
describeMountTargetSecurityGroupsResponse :: Int -> DescribeMountTargetSecurityGroupsResponse

-- | <i>See:</i> <a>describeMountTargetSecurityGroupsResponse</a> smart
--   constructor.
data DescribeMountTargetSecurityGroupsResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dmtsgrsResponseStatus :: Lens' DescribeMountTargetSecurityGroupsResponse Int

-- | Array of security groups.
dmtsgrsSecurityGroups :: Lens' DescribeMountTargetSecurityGroupsResponse [Text]
instance GHC.Generics.Generic Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroupsResponse
instance Data.Data.Data Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroupsResponse
instance GHC.Show.Show Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroupsResponse
instance GHC.Read.Read Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroupsResponse
instance GHC.Classes.Eq Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroupsResponse
instance GHC.Generics.Generic Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance Data.Data.Data Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance GHC.Show.Show Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance GHC.Read.Read Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance GHC.Classes.Eq Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroupsResponse
instance Data.Hashable.Class.Hashable Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.DescribeMountTargetSecurityGroups.DescribeMountTargetSecurityGroups


-- | Returns the description of a specific Amazon EFS file system if either
--   the file system <tt>CreationToken</tt> or the <tt>FileSystemId</tt> is
--   provided. Otherwise, it returns descriptions of all file systems owned
--   by the caller's AWS account in the AWS Region of the endpoint that
--   you're calling.
--   
--   When retrieving all file system descriptions, you can optionally
--   specify the <tt>MaxItems</tt> parameter to limit the number of
--   descriptions in a response. If more file system descriptions remain,
--   Amazon EFS returns a <tt>NextMarker</tt> , an opaque token, in the
--   response. In this case, you should send a subsequent request with the
--   <tt>Marker</tt> request parameter set to the value of
--   <tt>NextMarker</tt> .
--   
--   To retrieve a list of your file system descriptions, this operation is
--   used in an iterative process, where <tt>DescribeFileSystems</tt> is
--   called first without the <tt>Marker</tt> and then the operation
--   continues to call it with the <tt>Marker</tt> parameter set to the
--   value of the <tt>NextMarker</tt> from the previous response until the
--   response has no <tt>NextMarker</tt> .
--   
--   The implementation may return fewer than <tt>MaxItems</tt> file system
--   descriptions while still including a <tt>NextMarker</tt> value.
--   
--   The order of file systems returned in the response of one
--   <tt>DescribeFileSystems</tt> call and the order of file systems
--   returned across the responses of a multi-call iteration is
--   unspecified.
--   
--   This operation requires permissions for the
--   <tt>elasticfilesystem:DescribeFileSystems</tt> action.
--   
--   This operation returns paginated results.
module Network.AWS.EFS.DescribeFileSystems

-- | Creates a value of <a>DescribeFileSystems</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfsFileSystemId</a> - (Optional) ID of the file system whose
--   description you want to retrieve (String).</li>
--   <li><a>dfsCreationToken</a> - (Optional) Restricts the list to the
--   file system with this creation token (String). You specify a creation
--   token when you create an Amazon EFS file system.</li>
--   <li><a>dfsMarker</a> - (Optional) Opaque pagination token returned
--   from a previous <tt>DescribeFileSystems</tt> operation (String). If
--   present, specifies to continue the list from where the returning call
--   had left off.</li>
--   <li><a>dfsMaxItems</a> - (Optional) Specifies the maximum number of
--   file systems to return in the response (integer). This parameter value
--   must be greater than 0. The number of items that Amazon EFS returns is
--   the minimum of the <tt>MaxItems</tt> parameter specified in the
--   request and the service's internal maximum number of items per
--   page.</li>
--   </ul>
describeFileSystems :: DescribeFileSystems

-- | <i>See:</i> <a>describeFileSystems</a> smart constructor.
data DescribeFileSystems

-- | (Optional) ID of the file system whose description you want to
--   retrieve (String).
dfsFileSystemId :: Lens' DescribeFileSystems (Maybe Text)

-- | (Optional) Restricts the list to the file system with this creation
--   token (String). You specify a creation token when you create an Amazon
--   EFS file system.
dfsCreationToken :: Lens' DescribeFileSystems (Maybe Text)

-- | (Optional) Opaque pagination token returned from a previous
--   <tt>DescribeFileSystems</tt> operation (String). If present, specifies
--   to continue the list from where the returning call had left off.
dfsMarker :: Lens' DescribeFileSystems (Maybe Text)

-- | (Optional) Specifies the maximum number of file systems to return in
--   the response (integer). This parameter value must be greater than 0.
--   The number of items that Amazon EFS returns is the minimum of the
--   <tt>MaxItems</tt> parameter specified in the request and the service's
--   internal maximum number of items per page.
dfsMaxItems :: Lens' DescribeFileSystems (Maybe Natural)

-- | Creates a value of <a>DescribeFileSystemsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfsrsFileSystems</a> - Array of file system descriptions.</li>
--   <li><a>dfsrsMarker</a> - Present if provided by caller in the request
--   (String).</li>
--   <li><a>dfsrsNextMarker</a> - Present if there are more file systems
--   than returned in the response (String). You can use the
--   <tt>NextMarker</tt> in the subsequent request to fetch the
--   descriptions.</li>
--   <li><a>dfsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeFileSystemsResponse :: Int -> DescribeFileSystemsResponse

-- | <i>See:</i> <a>describeFileSystemsResponse</a> smart constructor.
data DescribeFileSystemsResponse

-- | Array of file system descriptions.
dfsrsFileSystems :: Lens' DescribeFileSystemsResponse [FileSystemDescription]

-- | Present if provided by caller in the request (String).
dfsrsMarker :: Lens' DescribeFileSystemsResponse (Maybe Text)

-- | Present if there are more file systems than returned in the response
--   (String). You can use the <tt>NextMarker</tt> in the subsequent
--   request to fetch the descriptions.
dfsrsNextMarker :: Lens' DescribeFileSystemsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dfsrsResponseStatus :: Lens' DescribeFileSystemsResponse Int
instance GHC.Generics.Generic Network.AWS.EFS.DescribeFileSystems.DescribeFileSystemsResponse
instance Data.Data.Data Network.AWS.EFS.DescribeFileSystems.DescribeFileSystemsResponse
instance GHC.Show.Show Network.AWS.EFS.DescribeFileSystems.DescribeFileSystemsResponse
instance GHC.Read.Read Network.AWS.EFS.DescribeFileSystems.DescribeFileSystemsResponse
instance GHC.Classes.Eq Network.AWS.EFS.DescribeFileSystems.DescribeFileSystemsResponse
instance GHC.Generics.Generic Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Data.Data.Data Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance GHC.Show.Show Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance GHC.Read.Read Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance GHC.Classes.Eq Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeFileSystems.DescribeFileSystemsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Data.Hashable.Class.Hashable Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Control.DeepSeq.NFData Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.DescribeFileSystems.DescribeFileSystems


-- | Deletes the specified tags from a file system. If the
--   <tt>DeleteTags</tt> request includes a tag key that does not exist,
--   Amazon EFS ignores it and doesn't cause an error. For more information
--   about tags and related restrictions, see <a>Tag Restrictions</a> in
--   the <i>AWS Billing and Cost Management User Guide</i> .
--   
--   This operation requires permissions for the
--   <tt>elasticfilesystem:DeleteTags</tt> action.
module Network.AWS.EFS.DeleteTags

-- | Creates a value of <a>DeleteTags</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dFileSystemId</a> - ID of the file system whose tags you want
--   to delete (String).</li>
--   <li><a>dTagKeys</a> - List of tag keys to delete.</li>
--   </ul>
deleteTags :: Text -> DeleteTags

-- | <i>See:</i> <a>deleteTags</a> smart constructor.
data DeleteTags

-- | ID of the file system whose tags you want to delete (String).
dFileSystemId :: Lens' DeleteTags Text

-- | List of tag keys to delete.
dTagKeys :: Lens' DeleteTags [Text]

-- | Creates a value of <a>DeleteTagsResponse</a> with the minimum fields
--   required to make a request.
deleteTagsResponse :: DeleteTagsResponse

-- | <i>See:</i> <a>deleteTagsResponse</a> smart constructor.
data DeleteTagsResponse
instance GHC.Generics.Generic Network.AWS.EFS.DeleteTags.DeleteTagsResponse
instance Data.Data.Data Network.AWS.EFS.DeleteTags.DeleteTagsResponse
instance GHC.Show.Show Network.AWS.EFS.DeleteTags.DeleteTagsResponse
instance GHC.Read.Read Network.AWS.EFS.DeleteTags.DeleteTagsResponse
instance GHC.Classes.Eq Network.AWS.EFS.DeleteTags.DeleteTagsResponse
instance GHC.Generics.Generic Network.AWS.EFS.DeleteTags.DeleteTags
instance Data.Data.Data Network.AWS.EFS.DeleteTags.DeleteTags
instance GHC.Show.Show Network.AWS.EFS.DeleteTags.DeleteTags
instance GHC.Read.Read Network.AWS.EFS.DeleteTags.DeleteTags
instance GHC.Classes.Eq Network.AWS.EFS.DeleteTags.DeleteTags
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.DeleteTags.DeleteTags
instance Control.DeepSeq.NFData Network.AWS.EFS.DeleteTags.DeleteTagsResponse
instance Data.Hashable.Class.Hashable Network.AWS.EFS.DeleteTags.DeleteTags
instance Control.DeepSeq.NFData Network.AWS.EFS.DeleteTags.DeleteTags
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.DeleteTags.DeleteTags
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EFS.DeleteTags.DeleteTags
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.DeleteTags.DeleteTags
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.DeleteTags.DeleteTags


-- | Deletes the specified mount target.
--   
--   This operation forcibly breaks any mounts of the file system via the
--   mount target that is being deleted, which might disrupt instances or
--   applications using those mounts. To avoid applications getting cut off
--   abruptly, you might consider unmounting any mounts of the mount
--   target, if feasible. The operation also deletes the associated network
--   interface. Uncommitted writes may be lost, but breaking a mount target
--   using this operation does not corrupt the file system itself. The file
--   system you created remains. You can mount an EC2 instance in your VPC
--   via another mount target.
--   
--   This operation requires permissions for the following action on the
--   file system:
--   
--   <ul>
--   <li><pre>elasticfilesystem:DeleteMountTarget</pre></li>
--   </ul>
--   
--   The operation also requires permissions for the following Amazon EC2
--   action on the mount target's network interface:
--   
--   <ul>
--   <li><pre>ec2:DeleteNetworkInterface</pre></li>
--   </ul>
module Network.AWS.EFS.DeleteMountTarget

-- | Creates a value of <a>DeleteMountTarget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dMountTargetId</a> - ID of the mount target to delete
--   (String).</li>
--   </ul>
deleteMountTarget :: Text -> DeleteMountTarget

-- | <i>See:</i> <a>deleteMountTarget</a> smart constructor.
data DeleteMountTarget

-- | ID of the mount target to delete (String).
dMountTargetId :: Lens' DeleteMountTarget Text

-- | Creates a value of <a>DeleteMountTargetResponse</a> with the minimum
--   fields required to make a request.
deleteMountTargetResponse :: DeleteMountTargetResponse

-- | <i>See:</i> <a>deleteMountTargetResponse</a> smart constructor.
data DeleteMountTargetResponse
instance GHC.Generics.Generic Network.AWS.EFS.DeleteMountTarget.DeleteMountTargetResponse
instance Data.Data.Data Network.AWS.EFS.DeleteMountTarget.DeleteMountTargetResponse
instance GHC.Show.Show Network.AWS.EFS.DeleteMountTarget.DeleteMountTargetResponse
instance GHC.Read.Read Network.AWS.EFS.DeleteMountTarget.DeleteMountTargetResponse
instance GHC.Classes.Eq Network.AWS.EFS.DeleteMountTarget.DeleteMountTargetResponse
instance GHC.Generics.Generic Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance Data.Data.Data Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance GHC.Show.Show Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance GHC.Read.Read Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance GHC.Classes.Eq Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance Control.DeepSeq.NFData Network.AWS.EFS.DeleteMountTarget.DeleteMountTargetResponse
instance Data.Hashable.Class.Hashable Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance Control.DeepSeq.NFData Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.DeleteMountTarget.DeleteMountTarget


-- | Deletes a file system, permanently severing access to its contents.
--   Upon return, the file system no longer exists and you can't access any
--   contents of the deleted file system.
--   
--   You can't delete a file system that is in use. That is, if the file
--   system has any mount targets, you must first delete them. For more
--   information, see <tt>DescribeMountTargets</tt> and
--   <tt>DeleteMountTarget</tt> .
--   
--   This operation requires permissions for the
--   <tt>elasticfilesystem:DeleteFileSystem</tt> action.
module Network.AWS.EFS.DeleteFileSystem

-- | Creates a value of <a>DeleteFileSystem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>delFileSystemId</a> - ID of the file system you want to
--   delete.</li>
--   </ul>
deleteFileSystem :: Text -> DeleteFileSystem

-- | <i>See:</i> <a>deleteFileSystem</a> smart constructor.
data DeleteFileSystem

-- | ID of the file system you want to delete.
delFileSystemId :: Lens' DeleteFileSystem Text

-- | Creates a value of <a>DeleteFileSystemResponse</a> with the minimum
--   fields required to make a request.
deleteFileSystemResponse :: DeleteFileSystemResponse

-- | <i>See:</i> <a>deleteFileSystemResponse</a> smart constructor.
data DeleteFileSystemResponse
instance GHC.Generics.Generic Network.AWS.EFS.DeleteFileSystem.DeleteFileSystemResponse
instance Data.Data.Data Network.AWS.EFS.DeleteFileSystem.DeleteFileSystemResponse
instance GHC.Show.Show Network.AWS.EFS.DeleteFileSystem.DeleteFileSystemResponse
instance GHC.Read.Read Network.AWS.EFS.DeleteFileSystem.DeleteFileSystemResponse
instance GHC.Classes.Eq Network.AWS.EFS.DeleteFileSystem.DeleteFileSystemResponse
instance GHC.Generics.Generic Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance Data.Data.Data Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance GHC.Show.Show Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance GHC.Read.Read Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance GHC.Classes.Eq Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance Control.DeepSeq.NFData Network.AWS.EFS.DeleteFileSystem.DeleteFileSystemResponse
instance Data.Hashable.Class.Hashable Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance Control.DeepSeq.NFData Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.DeleteFileSystem.DeleteFileSystem


-- | Creates or overwrites tags associated with a file system. Each tag is
--   a key-value pair. If a tag key specified in the request already exists
--   on the file system, this operation overwrites its value with the value
--   provided in the request. If you add the <tt>Name</tt> tag to your file
--   system, Amazon EFS returns it in the response to the
--   <tt>DescribeFileSystems</tt> operation.
--   
--   This operation requires permission for the
--   <tt>elasticfilesystem:CreateTags</tt> action.
module Network.AWS.EFS.CreateTags

-- | Creates a value of <a>CreateTags</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctFileSystemId</a> - ID of the file system whose tags you want
--   to modify (String). This operation modifies the tags only, not the
--   file system.</li>
--   <li><a>ctTags</a> - Array of <tt>Tag</tt> objects to add. Each
--   <tt>Tag</tt> object is a key-value pair.</li>
--   </ul>
createTags :: Text -> CreateTags

-- | <i>See:</i> <a>createTags</a> smart constructor.
data CreateTags

-- | ID of the file system whose tags you want to modify (String). This
--   operation modifies the tags only, not the file system.
ctFileSystemId :: Lens' CreateTags Text

-- | Array of <tt>Tag</tt> objects to add. Each <tt>Tag</tt> object is a
--   key-value pair.
ctTags :: Lens' CreateTags [Tag]

-- | Creates a value of <a>CreateTagsResponse</a> with the minimum fields
--   required to make a request.
createTagsResponse :: CreateTagsResponse

-- | <i>See:</i> <a>createTagsResponse</a> smart constructor.
data CreateTagsResponse
instance GHC.Generics.Generic Network.AWS.EFS.CreateTags.CreateTagsResponse
instance Data.Data.Data Network.AWS.EFS.CreateTags.CreateTagsResponse
instance GHC.Show.Show Network.AWS.EFS.CreateTags.CreateTagsResponse
instance GHC.Read.Read Network.AWS.EFS.CreateTags.CreateTagsResponse
instance GHC.Classes.Eq Network.AWS.EFS.CreateTags.CreateTagsResponse
instance GHC.Generics.Generic Network.AWS.EFS.CreateTags.CreateTags
instance Data.Data.Data Network.AWS.EFS.CreateTags.CreateTags
instance GHC.Show.Show Network.AWS.EFS.CreateTags.CreateTags
instance GHC.Read.Read Network.AWS.EFS.CreateTags.CreateTags
instance GHC.Classes.Eq Network.AWS.EFS.CreateTags.CreateTags
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.CreateTags.CreateTags
instance Control.DeepSeq.NFData Network.AWS.EFS.CreateTags.CreateTagsResponse
instance Data.Hashable.Class.Hashable Network.AWS.EFS.CreateTags.CreateTags
instance Control.DeepSeq.NFData Network.AWS.EFS.CreateTags.CreateTags
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.CreateTags.CreateTags
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EFS.CreateTags.CreateTags
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.CreateTags.CreateTags
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.CreateTags.CreateTags


-- | Creates a mount target for a file system. You can then mount the file
--   system on EC2 instances via the mount target.
--   
--   You can create one mount target in each Availability Zone in your VPC.
--   All EC2 instances in a VPC within a given Availability Zone share a
--   single mount target for a given file system. If you have multiple
--   subnets in an Availability Zone, you create a mount target in one of
--   the subnets. EC2 instances do not need to be in the same subnet as the
--   mount target in order to access their file system. For more
--   information, see <a>Amazon EFS: How it Works</a> .
--   
--   In the request, you also specify a file system ID for which you are
--   creating the mount target and the file system's lifecycle state must
--   be <tt>available</tt> . For more information, see
--   <tt>DescribeFileSystems</tt> .
--   
--   In the request, you also provide a subnet ID, which determines the
--   following:
--   
--   <ul>
--   <li>VPC in which Amazon EFS creates the mount target</li>
--   <li>Availability Zone in which Amazon EFS creates the mount
--   target</li>
--   <li>IP address range from which Amazon EFS selects the IP address of
--   the mount target (if you don't specify an IP address in the
--   request)</li>
--   </ul>
--   
--   After creating the mount target, Amazon EFS returns a response that
--   includes, a <tt>MountTargetId</tt> and an <tt>IpAddress</tt> . You use
--   this IP address when mounting the file system in an EC2 instance. You
--   can also use the mount target's DNS name when mounting the file
--   system. The EC2 instance on which you mount the file system via the
--   mount target can resolve the mount target's DNS name to its IP
--   address. For more information, see <a>How it Works: Implementation
--   Overview</a> .
--   
--   Note that you can create mount targets for a file system in only one
--   VPC, and there can be only one mount target per Availability Zone.
--   That is, if the file system already has one or more mount targets
--   created for it, the subnet specified in the request to add another
--   mount target must meet the following requirements:
--   
--   <ul>
--   <li>Must belong to the same VPC as the subnets of the existing mount
--   targets</li>
--   <li>Must not be in the same Availability Zone as any of the subnets of
--   the existing mount targets</li>
--   </ul>
--   
--   If the request satisfies the requirements, Amazon EFS does the
--   following:
--   
--   <ul>
--   <li>Creates a new mount target in the specified subnet.</li>
--   <li>Also creates a new network interface in the subnet as
--   follows:</li>
--   <li>If the request provides an <tt>IpAddress</tt> , Amazon EFS assigns
--   that IP address to the network interface. Otherwise, Amazon EFS
--   assigns a free address in the subnet (in the same way that the Amazon
--   EC2 <tt>CreateNetworkInterface</tt> call does when a request does not
--   specify a primary private IP address).</li>
--   <li>If the request provides <tt>SecurityGroups</tt> , this network
--   interface is associated with those security groups. Otherwise, it
--   belongs to the default security group for the subnet's VPC.</li>
--   <li>Assigns the description <tt>Mount target <i>fsmt-id</i> for file
--   system <i>fs-id</i> </tt> where <tt><i>fsmt-id</i> </tt> is the mount
--   target ID, and <tt><i>fs-id</i> </tt> is the <tt>FileSystemId</tt>
--   .</li>
--   <li>Sets the <tt>requesterManaged</tt> property of the network
--   interface to <tt>true</tt> , and the <tt>requesterId</tt> value to
--   <tt>EFS</tt> .</li>
--   </ul>
--   
--   Each Amazon EFS mount target has one corresponding requester-managed
--   EC2 network interface. After the network interface is created, Amazon
--   EFS sets the <tt>NetworkInterfaceId</tt> field in the mount target's
--   description to the network interface ID, and the <tt>IpAddress</tt>
--   field to its address. If network interface creation fails, the entire
--   <tt>CreateMountTarget</tt> operation fails.
--   
--   We recommend you create a mount target in each of the Availability
--   Zones. There are cost considerations for using a file system in an
--   Availability Zone through a mount target created in another
--   Availability Zone. For more information, see <a>Amazon EFS</a> . In
--   addition, by always using a mount target local to the instance's
--   Availability Zone, you eliminate a partial failure scenario. If the
--   Availability Zone in which your mount target is created goes down,
--   then you won't be able to access your file system through that mount
--   target.
--   
--   This operation requires permissions for the following action on the
--   file system:
--   
--   <ul>
--   <li><pre>elasticfilesystem:CreateMountTarget</pre></li>
--   </ul>
--   
--   This operation also requires permissions for the following Amazon EC2
--   actions:
--   
--   <ul>
--   <li><pre>ec2:DescribeSubnets</pre></li>
--   <li><pre>ec2:DescribeNetworkInterfaces</pre></li>
--   <li><pre>ec2:CreateNetworkInterface</pre></li>
--   </ul>
module Network.AWS.EFS.CreateMountTarget

-- | Creates a value of <a>CreateMountTarget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmtIPAddress</a> - Valid IPv4 address within the address range
--   of the specified subnet.</li>
--   <li><a>cmtSecurityGroups</a> - Up to five VPC security group IDs, of
--   the form <tt>sg-xxxxxxxx</tt> . These must be for the same VPC as
--   subnet specified.</li>
--   <li><a>cmtFileSystemId</a> - ID of the file system for which to create
--   the mount target.</li>
--   <li><a>cmtSubnetId</a> - ID of the subnet to add the mount target
--   in.</li>
--   </ul>
createMountTarget :: Text -> Text -> CreateMountTarget

-- | <i>See:</i> <a>createMountTarget</a> smart constructor.
data CreateMountTarget

-- | Valid IPv4 address within the address range of the specified subnet.
cmtIPAddress :: Lens' CreateMountTarget (Maybe Text)

-- | Up to five VPC security group IDs, of the form <tt>sg-xxxxxxxx</tt> .
--   These must be for the same VPC as subnet specified.
cmtSecurityGroups :: Lens' CreateMountTarget [Text]

-- | ID of the file system for which to create the mount target.
cmtFileSystemId :: Lens' CreateMountTarget Text

-- | ID of the subnet to add the mount target in.
cmtSubnetId :: Lens' CreateMountTarget Text

-- | Creates a value of <a>MountTargetDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtdIPAddress</a> - Address at which the file system may be
--   mounted via the mount target.</li>
--   <li><a>mtdNetworkInterfaceId</a> - ID of the network interface that
--   Amazon EFS created when it created the mount target.</li>
--   <li><a>mtdOwnerId</a> - AWS account ID that owns the resource.</li>
--   <li><a>mtdMountTargetId</a> - System-assigned mount target ID.</li>
--   <li><a>mtdFileSystemId</a> - ID of the file system for which the mount
--   target is intended.</li>
--   <li><a>mtdSubnetId</a> - ID of the mount target's subnet.</li>
--   <li><a>mtdLifeCycleState</a> - Lifecycle state of the mount
--   target.</li>
--   </ul>
mountTargetDescription :: Text -> Text -> Text -> LifeCycleState -> MountTargetDescription

-- | Provides a description of a mount target.
--   
--   <i>See:</i> <a>mountTargetDescription</a> smart constructor.
data MountTargetDescription

-- | Address at which the file system may be mounted via the mount target.
mtdIPAddress :: Lens' MountTargetDescription (Maybe Text)

-- | ID of the network interface that Amazon EFS created when it created
--   the mount target.
mtdNetworkInterfaceId :: Lens' MountTargetDescription (Maybe Text)

-- | AWS account ID that owns the resource.
mtdOwnerId :: Lens' MountTargetDescription (Maybe Text)

-- | System-assigned mount target ID.
mtdMountTargetId :: Lens' MountTargetDescription Text

-- | ID of the file system for which the mount target is intended.
mtdFileSystemId :: Lens' MountTargetDescription Text

-- | ID of the mount target's subnet.
mtdSubnetId :: Lens' MountTargetDescription Text

-- | Lifecycle state of the mount target.
mtdLifeCycleState :: Lens' MountTargetDescription LifeCycleState
instance GHC.Generics.Generic Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Data.Data.Data Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance GHC.Show.Show Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance GHC.Read.Read Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance GHC.Classes.Eq Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Data.Hashable.Class.Hashable Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Control.DeepSeq.NFData Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.CreateMountTarget.CreateMountTarget
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.CreateMountTarget.CreateMountTarget


-- | Creates a new, empty file system. The operation requires a creation
--   token in the request that Amazon EFS uses to ensure idempotent
--   creation (calling the operation with same creation token has no
--   effect). If a file system does not currently exist that is owned by
--   the caller's AWS account with the specified creation token, this
--   operation does the following:
--   
--   <ul>
--   <li>Creates a new, empty file system. The file system will have an
--   Amazon EFS assigned ID, and an initial lifecycle state
--   <tt>creating</tt> .</li>
--   <li>Returns with the description of the created file system.</li>
--   </ul>
--   
--   Otherwise, this operation returns a <tt>FileSystemAlreadyExists</tt>
--   error with the ID of the existing file system.
--   
--   The idempotent operation allows you to retry a
--   <tt>CreateFileSystem</tt> call without risk of creating an extra file
--   system. This can happen when an initial call fails in a way that
--   leaves it uncertain whether or not a file system was actually created.
--   An example might be that a transport level timeout occurred or your
--   connection was reset. As long as you use the same creation token, if
--   the initial call had succeeded in creating a file system, the client
--   can learn of its existence from the <tt>FileSystemAlreadyExists</tt>
--   error.
--   
--   This operation also takes an optional <tt>PerformanceMode</tt>
--   parameter that you choose for your file system. We recommend
--   <tt>generalPurpose</tt> performance mode for most file systems. File
--   systems using the <tt>maxIO</tt> performance mode can scale to higher
--   levels of aggregate throughput and operations per second with a
--   tradeoff of slightly higher latencies for most file operations. The
--   performance mode can't be changed after the file system has been
--   created. For more information, see <a>Amazon EFS: Performance
--   Modes</a> .
--   
--   After the file system is fully created, Amazon EFS sets its lifecycle
--   state to <tt>available</tt> , at which point you can create one or
--   more mount targets for the file system in your VPC. For more
--   information, see <tt>CreateMountTarget</tt> . You mount your Amazon
--   EFS file system on an EC2 instances in your VPC via the mount target.
--   For more information, see <a>Amazon EFS: How it Works</a> .
--   
--   This operation requires permissions for the
--   <tt>elasticfilesystem:CreateFileSystem</tt> action.
module Network.AWS.EFS.CreateFileSystem

-- | Creates a value of <a>CreateFileSystem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cfsPerformanceMode</a> - The <tt>PerformanceMode</tt> of the
--   file system. We recommend <tt>generalPurpose</tt> performance mode for
--   most file systems. File systems using the <tt>maxIO</tt> performance
--   mode can scale to higher levels of aggregate throughput and operations
--   per second with a tradeoff of slightly higher latencies for most file
--   operations. This can't be changed after the file system has been
--   created.</li>
--   <li><a>cfsEncrypted</a> - A boolean value that, if true, creates an
--   encrypted file system. When creating an encrypted file system, you
--   have the option of specifying a 'CreateFileSystemRequest$KmsKeyId' for
--   an existing AWS Key Management Service (AWS KMS) customer master key
--   (CMK). If you don't specify a CMK, then the default CMK for Amazon
--   EFS, <tt><i>aws</i>elasticfilesystem</tt> , is used to protect the
--   encrypted file system.</li>
--   <li><a>cfsKMSKeyId</a> - The id of the AWS KMS CMK that will be used
--   to protect the encrypted file system. This parameter is only required
--   if you want to use a non-default CMK. If this parameter is not
--   specified, the default CMK for Amazon EFS is used. This id can be in
--   one of the following formats: * Key ID - A unique identifier of the
--   key. For example, <tt>1234abcd-12ab-34cd-56ef-1234567890ab</tt> . *
--   ARN - An Amazon Resource Name for the key. For example,
--   <tt>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</tt>
--   . * Key alias - A previously created display name for a key. For
--   example, <tt>alias/projectKey1</tt> . * Key alias ARN - An Amazon
--   Resource Name for a key alias. For example,
--   <tt>arn:aws:kms:us-west-2:444455556666:alias/projectKey1</tt> . Note
--   that if the KmsKeyId is specified, the
--   'CreateFileSystemRequest$Encrypted' parameter must be set to
--   true.</li>
--   <li><a>cfsCreationToken</a> - String of up to 64 ASCII characters.
--   Amazon EFS uses this to ensure idempotent creation.</li>
--   </ul>
createFileSystem :: Text -> CreateFileSystem

-- | <i>See:</i> <a>createFileSystem</a> smart constructor.
data CreateFileSystem

-- | The <tt>PerformanceMode</tt> of the file system. We recommend
--   <tt>generalPurpose</tt> performance mode for most file systems. File
--   systems using the <tt>maxIO</tt> performance mode can scale to higher
--   levels of aggregate throughput and operations per second with a
--   tradeoff of slightly higher latencies for most file operations. This
--   can't be changed after the file system has been created.
cfsPerformanceMode :: Lens' CreateFileSystem (Maybe PerformanceMode)

-- | A boolean value that, if true, creates an encrypted file system. When
--   creating an encrypted file system, you have the option of specifying a
--   'CreateFileSystemRequest$KmsKeyId' for an existing AWS Key Management
--   Service (AWS KMS) customer master key (CMK). If you don't specify a
--   CMK, then the default CMK for Amazon EFS,
--   <tt><i>aws</i>elasticfilesystem</tt> , is used to protect the
--   encrypted file system.
cfsEncrypted :: Lens' CreateFileSystem (Maybe Bool)

-- | The id of the AWS KMS CMK that will be used to protect the encrypted
--   file system. This parameter is only required if you want to use a
--   non-default CMK. If this parameter is not specified, the default CMK
--   for Amazon EFS is used. This id can be in one of the following
--   formats: * Key ID - A unique identifier of the key. For example,
--   <tt>1234abcd-12ab-34cd-56ef-1234567890ab</tt> . * ARN - An Amazon
--   Resource Name for the key. For example,
--   <tt>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</tt>
--   . * Key alias - A previously created display name for a key. For
--   example, <tt>alias/projectKey1</tt> . * Key alias ARN - An Amazon
--   Resource Name for a key alias. For example,
--   <tt>arn:aws:kms:us-west-2:444455556666:alias/projectKey1</tt> . Note
--   that if the KmsKeyId is specified, the
--   'CreateFileSystemRequest$Encrypted' parameter must be set to true.
cfsKMSKeyId :: Lens' CreateFileSystem (Maybe Text)

-- | String of up to 64 ASCII characters. Amazon EFS uses this to ensure
--   idempotent creation.
cfsCreationToken :: Lens' CreateFileSystem Text

-- | Creates a value of <a>FileSystemDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fsdEncrypted</a> - A boolean value that, if true, indicates
--   that the file system is encrypted.</li>
--   <li><a>fsdKMSKeyId</a> - The id of an AWS Key Management Service (AWS
--   KMS) customer master key (CMK) that was used to protect the encrypted
--   file system.</li>
--   <li><a>fsdName</a> - You can add tags to a file system, including a
--   <tt>Name</tt> tag. For more information, see <tt>CreateTags</tt> . If
--   the file system has a <tt>Name</tt> tag, Amazon EFS returns the value
--   in this field.</li>
--   <li><a>fsdOwnerId</a> - AWS account that created the file system. If
--   the file system was created by an IAM user, the parent account to
--   which the user belongs is the owner.</li>
--   <li><a>fsdCreationToken</a> - Opaque string specified in the
--   request.</li>
--   <li><a>fsdFileSystemId</a> - ID of the file system, assigned by Amazon
--   EFS.</li>
--   <li><a>fsdCreationTime</a> - Time that the file system was created, in
--   seconds (since 1970-01-01T00:00:00Z).</li>
--   <li><a>fsdLifeCycleState</a> - Lifecycle phase of the file
--   system.</li>
--   <li><a>fsdNumberOfMountTargets</a> - Current number of mount targets
--   that the file system has. For more information, see
--   <tt>CreateMountTarget</tt> .</li>
--   <li><a>fsdSizeInBytes</a> - Latest known metered size (in bytes) of
--   data stored in the file system, in bytes, in its <tt>Value</tt> field,
--   and the time at which that size was determined in its
--   <tt>Timestamp</tt> field. The <tt>Timestamp</tt> value is the integer
--   number of seconds since 1970-01-01T00:00:00Z. Note that the value does
--   not represent the size of a consistent snapshot of the file system,
--   but it is eventually consistent when there are no writes to the file
--   system. That is, the value will represent actual size only if the file
--   system is not modified for a period longer than a couple of hours.
--   Otherwise, the value is not the exact size the file system was at any
--   instant in time.</li>
--   <li><a>fsdPerformanceMode</a> - The <tt>PerformanceMode</tt> of the
--   file system.</li>
--   </ul>
fileSystemDescription :: Text -> Text -> Text -> UTCTime -> LifeCycleState -> Natural -> FileSystemSize -> PerformanceMode -> FileSystemDescription

-- | Description of the file system.
--   
--   <i>See:</i> <a>fileSystemDescription</a> smart constructor.
data FileSystemDescription

-- | A boolean value that, if true, indicates that the file system is
--   encrypted.
fsdEncrypted :: Lens' FileSystemDescription (Maybe Bool)

-- | The id of an AWS Key Management Service (AWS KMS) customer master key
--   (CMK) that was used to protect the encrypted file system.
fsdKMSKeyId :: Lens' FileSystemDescription (Maybe Text)

-- | You can add tags to a file system, including a <tt>Name</tt> tag. For
--   more information, see <tt>CreateTags</tt> . If the file system has a
--   <tt>Name</tt> tag, Amazon EFS returns the value in this field.
fsdName :: Lens' FileSystemDescription (Maybe Text)

-- | AWS account that created the file system. If the file system was
--   created by an IAM user, the parent account to which the user belongs
--   is the owner.
fsdOwnerId :: Lens' FileSystemDescription Text

-- | Opaque string specified in the request.
fsdCreationToken :: Lens' FileSystemDescription Text

-- | ID of the file system, assigned by Amazon EFS.
fsdFileSystemId :: Lens' FileSystemDescription Text

-- | Time that the file system was created, in seconds (since
--   1970-01-01T00:00:00Z).
fsdCreationTime :: Lens' FileSystemDescription UTCTime

-- | Lifecycle phase of the file system.
fsdLifeCycleState :: Lens' FileSystemDescription LifeCycleState

-- | Current number of mount targets that the file system has. For more
--   information, see <tt>CreateMountTarget</tt> .
fsdNumberOfMountTargets :: Lens' FileSystemDescription Natural

-- | Latest known metered size (in bytes) of data stored in the file
--   system, in bytes, in its <tt>Value</tt> field, and the time at which
--   that size was determined in its <tt>Timestamp</tt> field. The
--   <tt>Timestamp</tt> value is the integer number of seconds since
--   1970-01-01T00:00:00Z. Note that the value does not represent the size
--   of a consistent snapshot of the file system, but it is eventually
--   consistent when there are no writes to the file system. That is, the
--   value will represent actual size only if the file system is not
--   modified for a period longer than a couple of hours. Otherwise, the
--   value is not the exact size the file system was at any instant in
--   time.
fsdSizeInBytes :: Lens' FileSystemDescription FileSystemSize

-- | The <tt>PerformanceMode</tt> of the file system.
fsdPerformanceMode :: Lens' FileSystemDescription PerformanceMode
instance GHC.Generics.Generic Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Data.Data.Data Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance GHC.Show.Show Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance GHC.Read.Read Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance GHC.Classes.Eq Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Network.AWS.Types.AWSRequest Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Data.Hashable.Class.Hashable Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Control.DeepSeq.NFData Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Network.AWS.Data.Path.ToPath Network.AWS.EFS.CreateFileSystem.CreateFileSystem
instance Network.AWS.Data.Query.ToQuery Network.AWS.EFS.CreateFileSystem.CreateFileSystem


module Network.AWS.EFS.Waiters


-- | <b>Amazon Elastic File System</b>
--   
--   Amazon Elastic File System (Amazon EFS) provides simple, scalable file
--   storage for use with Amazon EC2 instances in the AWS Cloud. With
--   Amazon EFS, storage capacity is elastic, growing and shrinking
--   automatically as you add and remove files, so your applications have
--   the storage they need, when they need it. For more information, see
--   the <a>User Guide</a> .
module Network.AWS.EFS

-- | API version <tt>2015-02-01</tt> of the Amazon Elastic File System SDK
--   configuration.
efs :: Service

-- | Returned if there is no mount target with the specified ID found in
--   the caller's account.
_MountTargetNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the size of <tt>SecurityGroups</tt> specified in the
--   request is greater than five.
_SecurityGroupLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if one of the specified security groups does not exist in the
--   subnet's VPC.
_SecurityGroupNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the mount target would violate one of the specified
--   restrictions based on the file system's existing mount targets.
_MountTargetConflict :: AsError a => Getting (First ServiceError) a ServiceError

_UnsupportedAvailabilityZone :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the AWS account has already created maximum number of file
--   systems allowed per account.
_FileSystemLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | The calling account has reached the ENI limit for the specific AWS
--   region. Client should try to delete some ENIs or get its account limit
--   raised. For more information, see <a>Amazon VPC Limits</a> in the
--   Amazon Virtual Private Cloud User Guide (see the Network interfaces
--   per VPC entry in the table).
_NetworkInterfaceLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the file system you are trying to create already exists,
--   with the creation token you provided.
_FileSystemAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if there is no subnet with ID <tt>SubnetId</tt> provided in
--   the request.
_SubnetNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the specified <tt>FileSystemId</tt> does not exist in the
--   requester's AWS account.
_FileSystemNotFound :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the file system's life cycle state is not "created".
_IncorrectFileSystemLifeCycleState :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the request is malformed or contains an error such as an
--   invalid parameter value or a missing required parameter.
_BadRequest :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if <tt>IpAddress</tt> was not specified in the request and
--   there are no free IP addresses in the subnet.
_NoFreeAddressesInSubnet :: AsError a => Getting (First ServiceError) a ServiceError

-- | The service timed out trying to fulfill the request, and the client
--   should try the call again.
_DependencyTimeout :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if a file system has mount targets.
_FileSystemInUse :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the mount target is not in the correct state for the
--   operation.
_IncorrectMountTargetState :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if an error occurred on the server side.
_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError

-- | Returned if the request specified an <tt>IpAddress</tt> that is
--   already in use in the subnet.
_IPAddressInUse :: AsError a => Getting (First ServiceError) a ServiceError
data LifeCycleState
Available :: LifeCycleState
Creating :: LifeCycleState
Deleted :: LifeCycleState
Deleting :: LifeCycleState
data PerformanceMode
GeneralPurpose :: PerformanceMode
MaxIO :: PerformanceMode

-- | Description of the file system.
--   
--   <i>See:</i> <a>fileSystemDescription</a> smart constructor.
data FileSystemDescription

-- | Creates a value of <a>FileSystemDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fsdEncrypted</a> - A boolean value that, if true, indicates
--   that the file system is encrypted.</li>
--   <li><a>fsdKMSKeyId</a> - The id of an AWS Key Management Service (AWS
--   KMS) customer master key (CMK) that was used to protect the encrypted
--   file system.</li>
--   <li><a>fsdName</a> - You can add tags to a file system, including a
--   <tt>Name</tt> tag. For more information, see <tt>CreateTags</tt> . If
--   the file system has a <tt>Name</tt> tag, Amazon EFS returns the value
--   in this field.</li>
--   <li><a>fsdOwnerId</a> - AWS account that created the file system. If
--   the file system was created by an IAM user, the parent account to
--   which the user belongs is the owner.</li>
--   <li><a>fsdCreationToken</a> - Opaque string specified in the
--   request.</li>
--   <li><a>fsdFileSystemId</a> - ID of the file system, assigned by Amazon
--   EFS.</li>
--   <li><a>fsdCreationTime</a> - Time that the file system was created, in
--   seconds (since 1970-01-01T00:00:00Z).</li>
--   <li><a>fsdLifeCycleState</a> - Lifecycle phase of the file
--   system.</li>
--   <li><a>fsdNumberOfMountTargets</a> - Current number of mount targets
--   that the file system has. For more information, see
--   <tt>CreateMountTarget</tt> .</li>
--   <li><a>fsdSizeInBytes</a> - Latest known metered size (in bytes) of
--   data stored in the file system, in bytes, in its <tt>Value</tt> field,
--   and the time at which that size was determined in its
--   <tt>Timestamp</tt> field. The <tt>Timestamp</tt> value is the integer
--   number of seconds since 1970-01-01T00:00:00Z. Note that the value does
--   not represent the size of a consistent snapshot of the file system,
--   but it is eventually consistent when there are no writes to the file
--   system. That is, the value will represent actual size only if the file
--   system is not modified for a period longer than a couple of hours.
--   Otherwise, the value is not the exact size the file system was at any
--   instant in time.</li>
--   <li><a>fsdPerformanceMode</a> - The <tt>PerformanceMode</tt> of the
--   file system.</li>
--   </ul>
fileSystemDescription :: Text -> Text -> Text -> UTCTime -> LifeCycleState -> Natural -> FileSystemSize -> PerformanceMode -> FileSystemDescription

-- | A boolean value that, if true, indicates that the file system is
--   encrypted.
fsdEncrypted :: Lens' FileSystemDescription (Maybe Bool)

-- | The id of an AWS Key Management Service (AWS KMS) customer master key
--   (CMK) that was used to protect the encrypted file system.
fsdKMSKeyId :: Lens' FileSystemDescription (Maybe Text)

-- | You can add tags to a file system, including a <tt>Name</tt> tag. For
--   more information, see <tt>CreateTags</tt> . If the file system has a
--   <tt>Name</tt> tag, Amazon EFS returns the value in this field.
fsdName :: Lens' FileSystemDescription (Maybe Text)

-- | AWS account that created the file system. If the file system was
--   created by an IAM user, the parent account to which the user belongs
--   is the owner.
fsdOwnerId :: Lens' FileSystemDescription Text

-- | Opaque string specified in the request.
fsdCreationToken :: Lens' FileSystemDescription Text

-- | ID of the file system, assigned by Amazon EFS.
fsdFileSystemId :: Lens' FileSystemDescription Text

-- | Time that the file system was created, in seconds (since
--   1970-01-01T00:00:00Z).
fsdCreationTime :: Lens' FileSystemDescription UTCTime

-- | Lifecycle phase of the file system.
fsdLifeCycleState :: Lens' FileSystemDescription LifeCycleState

-- | Current number of mount targets that the file system has. For more
--   information, see <tt>CreateMountTarget</tt> .
fsdNumberOfMountTargets :: Lens' FileSystemDescription Natural

-- | Latest known metered size (in bytes) of data stored in the file
--   system, in bytes, in its <tt>Value</tt> field, and the time at which
--   that size was determined in its <tt>Timestamp</tt> field. The
--   <tt>Timestamp</tt> value is the integer number of seconds since
--   1970-01-01T00:00:00Z. Note that the value does not represent the size
--   of a consistent snapshot of the file system, but it is eventually
--   consistent when there are no writes to the file system. That is, the
--   value will represent actual size only if the file system is not
--   modified for a period longer than a couple of hours. Otherwise, the
--   value is not the exact size the file system was at any instant in
--   time.
fsdSizeInBytes :: Lens' FileSystemDescription FileSystemSize

-- | The <tt>PerformanceMode</tt> of the file system.
fsdPerformanceMode :: Lens' FileSystemDescription PerformanceMode

-- | Latest known metered size (in bytes) of data stored in the file
--   system, in its <tt>Value</tt> field, and the time at which that size
--   was determined in its <tt>Timestamp</tt> field. Note that the value
--   does not represent the size of a consistent snapshot of the file
--   system, but it is eventually consistent when there are no writes to
--   the file system. That is, the value will represent the actual size
--   only if the file system is not modified for a period longer than a
--   couple of hours. Otherwise, the value is not necessarily the exact
--   size the file system was at any instant in time.
--   
--   <i>See:</i> <a>fileSystemSize</a> smart constructor.
data FileSystemSize

-- | Creates a value of <a>FileSystemSize</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fssTimestamp</a> - Time at which the size of data, returned in
--   the <tt>Value</tt> field, was determined. The value is the integer
--   number of seconds since 1970-01-01T00:00:00Z.</li>
--   <li><a>fssValue</a> - Latest known metered size (in bytes) of data
--   stored in the file system.</li>
--   </ul>
fileSystemSize :: Natural -> FileSystemSize

-- | Time at which the size of data, returned in the <tt>Value</tt> field,
--   was determined. The value is the integer number of seconds since
--   1970-01-01T00:00:00Z.
fssTimestamp :: Lens' FileSystemSize (Maybe UTCTime)

-- | Latest known metered size (in bytes) of data stored in the file
--   system.
fssValue :: Lens' FileSystemSize Natural

-- | Provides a description of a mount target.
--   
--   <i>See:</i> <a>mountTargetDescription</a> smart constructor.
data MountTargetDescription

-- | Creates a value of <a>MountTargetDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtdIPAddress</a> - Address at which the file system may be
--   mounted via the mount target.</li>
--   <li><a>mtdNetworkInterfaceId</a> - ID of the network interface that
--   Amazon EFS created when it created the mount target.</li>
--   <li><a>mtdOwnerId</a> - AWS account ID that owns the resource.</li>
--   <li><a>mtdMountTargetId</a> - System-assigned mount target ID.</li>
--   <li><a>mtdFileSystemId</a> - ID of the file system for which the mount
--   target is intended.</li>
--   <li><a>mtdSubnetId</a> - ID of the mount target's subnet.</li>
--   <li><a>mtdLifeCycleState</a> - Lifecycle state of the mount
--   target.</li>
--   </ul>
mountTargetDescription :: Text -> Text -> Text -> LifeCycleState -> MountTargetDescription

-- | Address at which the file system may be mounted via the mount target.
mtdIPAddress :: Lens' MountTargetDescription (Maybe Text)

-- | ID of the network interface that Amazon EFS created when it created
--   the mount target.
mtdNetworkInterfaceId :: Lens' MountTargetDescription (Maybe Text)

-- | AWS account ID that owns the resource.
mtdOwnerId :: Lens' MountTargetDescription (Maybe Text)

-- | System-assigned mount target ID.
mtdMountTargetId :: Lens' MountTargetDescription Text

-- | ID of the file system for which the mount target is intended.
mtdFileSystemId :: Lens' MountTargetDescription Text

-- | ID of the mount target's subnet.
mtdSubnetId :: Lens' MountTargetDescription Text

-- | Lifecycle state of the mount target.
mtdLifeCycleState :: Lens' MountTargetDescription LifeCycleState

-- | A tag is a key-value pair. Allowed characters: letters, whitespace,
--   and numbers, representable in UTF-8, and the following
--   characters:<tt>+ - = . _ : /</tt>
--   
--   <i>See:</i> <a>tag</a> smart constructor.
data Tag

-- | Creates a value of <a>Tag</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tagKey</a> - Tag key (String). The key can't start with
--   <tt>aws:</tt> .</li>
--   <li><a>tagValue</a> - Value of the tag key.</li>
--   </ul>
tag :: Text -> Text -> Tag

-- | Tag key (String). The key can't start with <tt>aws:</tt> .
tagKey :: Lens' Tag Text

-- | Value of the tag key.
tagValue :: Lens' Tag Text
