h&(      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP(C) 2020-2022 Bellroy Pty Ltd BSD-3-Clause'Bellroy Tech Team  experimental Safe-Inferred    4 88(C) 2020-2022 Bellroy Pty Ltd BSD-3-Clause'Bellroy Tech Team  experimental Safe-Inferred "589:;= 2aws-arnA parsed ARN. Either use the )  , or the ' and ( functions to convert Q <-> . The  part of an ARN will often contain colon- or slash-separated parts which precisely identify some resource. If there is no service-specific module (see below), the * and +* optics in this module can pick apart the  field.4If you want lenses into individual fields, use the  0https://hackage.haskell.org/package/generic-lens generic-lens or  2https://hackage.haskell.org/package/generic-opticsgeneric-optics libraries.Service-Specific Modules Modules like Network.AWS.ARN.Lambda provide types to parse the resource part of an ARN into something more specific: -- Remark: Lambda._Function :: Prism' Text Lambda.Function -- Returns: Just "the-coolest-function-ever" let functionARN = "arn:aws:lambda:us-east-1:123456789012:function:the-coolest-function-ever:Alias" in functionARN ^? _ARN . #resource . Lambda._Function . #name You can also use 's R instance and  to create (s that indicate their resource type in 's type variable: ) . " Lambda._Function :: Prism' Text ( Lambda.Function) 'aws-arn(aws-arn)aws-arn*aws-arnSplit a Q into colon-separated parts.This is an improper  (-Text.intercalate ":" . Text.splitOn ":" = id, but -Text.splitOn ":" . Text.intercalate ":" /= id"). This causes violations of the ' laws for lists whose members contain ':':[":"] ^. from colons . colons["",""]*The laws are also violated on empty lists:[] ^. from colons . colons[""]!Nevertheless, it is still useful:'"foo:bar:baz" & colons . ix 1 .~ "quux""foo:quux:baz"Ed  https://old.reddit.com/r/haskell/comments/32xva8/the_laws_of_asymmetric_wellbehaved_lenses_are/cqhq1gk/discusses improper optics in an old Reddit comment.+aws-arnSplit a Q into slash-separated parts.List *, this is an improper , but it is still useful:"foo/bar/baz" ^. slashes["foo","bar","baz"] '()*+ '()*+(C) 2020-2022 Bellroy Pty Ltd BSD-3-Clause'Bellroy Tech Team  experimental Safe-Inferred";= .aws-arnAn AWS Lambda function name, and optional alias/version qualifier.""function:helloworld" ^? _Function:Just (Function {name = "helloworld", qualifier = Nothing})*"function:helloworld:$LATEST" ^? _FunctionJust (Function {name = "helloworld", qualifier = Just "$LATEST"})%"function:helloworld:42" ^? _Function experimental Safe-Inferred"%';=? :aws-arn(An AWS S3 bucket, without an object key."bucket-name" ^? _Bucket*Just (Bucket {bucketName = "bucket-name"})""bucket-name/my/object" ^? _BucketNothinglet b = Bucket "my-bucket" in renderObject . Object b <$> ["obj1", "obj2"]#["my-bucket/obj1","my-bucket/obj2"]=aws-arn5An AWS S3 object, made of a bucket and an object key.""bucket-name/my/object" ^? _ObjectJust (Object {bucket = Bucket {bucketName = "bucket-name"}, objectKey = "my/object"})"bucket-name" ^? _ObjectNothing-bucket <$> "bucket-name/my/object" ^? _Object*Just (Bucket {bucketName = "bucket-name"})Aaws-arnBaws-arnCaws-arnDaws-arnEaws-arnFaws-arn :;<=>?@ABCDEF =>?@AB:;>?@@ABCDEFGHIJKLMNOPQRSTUVWX&aws-arn-0.3.1.0-7elo9Xf6HT0CSKr6icS218Network.AWS.ARN.Internal.LensNetwork.AWS.ARNNetwork.AWS.ARN.LambdaNetwork.AWS.ARN.S3Control.Lens.PrismbelowExchangeAnIso'Iso' Traversal'Prism'SetterGettingLens'set.~over^.prism'previewreview^?ixisofrom$fProfunctorExchangeARN partitionserviceregionaccountresource$fEqARN$fOrdARN $fShowARN $fGenericARN$fGeneric1TYPEARN $fHashableARN $fFunctorARN $fFoldableARN$fTraversableARN$fEq1ARN $fOrd1ARNparseARN renderARN_ARNcolonsslashes $fShow1ARN$fHashable1ARNFunctionname qualifier parseFunctionrenderFunction _Function $fEqFunction $fOrdFunction$fHashableFunction$fShowFunction$fGenericFunctionBucket$sel:bucketName:BucketObject$sel:bucket:Object$sel:objectKey:Object parseObject renderObject_Object parseBucket renderBucket_Bucket $fEqObject $fOrdObject$fHashableObject $fShowObject$fGenericObject $fEqBucket $fOrdBucket $fShowBucket$fGenericBucket$fHashableBucket text-1.2.5.0Data.Text.InternalTextbaseData.Traversable Traversable