packages feed

amazonka-imagebuilder (empty) → 2.0

raw patch · 221 files changed

+25861/−0 lines, 221 filesdep +amazonka-coredep +amazonka-imagebuilderdep +amazonka-test

Dependencies added: amazonka-core, amazonka-imagebuilder, amazonka-test, base, bytestring, case-insensitive, tasty, tasty-hunit, text, time, unordered-containers

Files

+ LICENSE view
@@ -0,0 +1,367 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.
+ README.md view
@@ -0,0 +1,44 @@+# Amazon EC2 Image Builder SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2019-12-02@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-imagebuilder)+and the [AWS API Reference](https://aws.amazon.com/documentation/).++The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),+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+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).++See [Amazonka.ImageBuilder](http://hackage.haskell.org/package/amazonka-imagebuilder/docs/Amazonka-ImageBuilder.html)+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`amazonka-imagebuilder` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).++Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.+Source files subject to this contain an additional licensing clause in their header.
+ amazonka-imagebuilder.cabal view
@@ -0,0 +1,192 @@+cabal-version:      2.2+name:               amazonka-imagebuilder+version:            2.0+synopsis:           Amazon EC2 Image Builder SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2019-12-02@ of the AWS service descriptions, licensed under Apache 2.0.+  .+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.+  .+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.+  .+  Generated lenses can be found in "Amazonka.ImageBuilder.Lens" and are+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.+  .+  See "Amazonka.ImageBuilder" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.++source-repository head+  type:     git+  location: git://github.com/brendanhay/amazonka.git+  subdir:   amazonka-imagebuilder++library+  default-language: Haskell2010+  hs-source-dirs:   src gen+  ghc-options:+    -Wall -fwarn-incomplete-uni-patterns+    -fwarn-incomplete-record-updates -funbox-strict-fields++  exposed-modules:+    Amazonka.ImageBuilder+    Amazonka.ImageBuilder.CancelImageCreation+    Amazonka.ImageBuilder.CreateComponent+    Amazonka.ImageBuilder.CreateContainerRecipe+    Amazonka.ImageBuilder.CreateDistributionConfiguration+    Amazonka.ImageBuilder.CreateImage+    Amazonka.ImageBuilder.CreateImagePipeline+    Amazonka.ImageBuilder.CreateImageRecipe+    Amazonka.ImageBuilder.CreateInfrastructureConfiguration+    Amazonka.ImageBuilder.DeleteComponent+    Amazonka.ImageBuilder.DeleteContainerRecipe+    Amazonka.ImageBuilder.DeleteDistributionConfiguration+    Amazonka.ImageBuilder.DeleteImage+    Amazonka.ImageBuilder.DeleteImagePipeline+    Amazonka.ImageBuilder.DeleteImageRecipe+    Amazonka.ImageBuilder.DeleteInfrastructureConfiguration+    Amazonka.ImageBuilder.GetComponent+    Amazonka.ImageBuilder.GetComponentPolicy+    Amazonka.ImageBuilder.GetContainerRecipe+    Amazonka.ImageBuilder.GetContainerRecipePolicy+    Amazonka.ImageBuilder.GetDistributionConfiguration+    Amazonka.ImageBuilder.GetImage+    Amazonka.ImageBuilder.GetImagePipeline+    Amazonka.ImageBuilder.GetImagePolicy+    Amazonka.ImageBuilder.GetImageRecipe+    Amazonka.ImageBuilder.GetImageRecipePolicy+    Amazonka.ImageBuilder.GetInfrastructureConfiguration+    Amazonka.ImageBuilder.ImportComponent+    Amazonka.ImageBuilder.ImportVmImage+    Amazonka.ImageBuilder.Lens+    Amazonka.ImageBuilder.ListComponentBuildVersions+    Amazonka.ImageBuilder.ListComponents+    Amazonka.ImageBuilder.ListContainerRecipes+    Amazonka.ImageBuilder.ListDistributionConfigurations+    Amazonka.ImageBuilder.ListImageBuildVersions+    Amazonka.ImageBuilder.ListImagePackages+    Amazonka.ImageBuilder.ListImagePipelineImages+    Amazonka.ImageBuilder.ListImagePipelines+    Amazonka.ImageBuilder.ListImageRecipes+    Amazonka.ImageBuilder.ListImages+    Amazonka.ImageBuilder.ListInfrastructureConfigurations+    Amazonka.ImageBuilder.ListTagsForResource+    Amazonka.ImageBuilder.PutComponentPolicy+    Amazonka.ImageBuilder.PutContainerRecipePolicy+    Amazonka.ImageBuilder.PutImagePolicy+    Amazonka.ImageBuilder.PutImageRecipePolicy+    Amazonka.ImageBuilder.StartImagePipelineExecution+    Amazonka.ImageBuilder.TagResource+    Amazonka.ImageBuilder.Types+    Amazonka.ImageBuilder.Types.AdditionalInstanceConfiguration+    Amazonka.ImageBuilder.Types.Ami+    Amazonka.ImageBuilder.Types.AmiDistributionConfiguration+    Amazonka.ImageBuilder.Types.BuildType+    Amazonka.ImageBuilder.Types.Component+    Amazonka.ImageBuilder.Types.ComponentConfiguration+    Amazonka.ImageBuilder.Types.ComponentFormat+    Amazonka.ImageBuilder.Types.ComponentParameter+    Amazonka.ImageBuilder.Types.ComponentParameterDetail+    Amazonka.ImageBuilder.Types.ComponentState+    Amazonka.ImageBuilder.Types.ComponentStatus+    Amazonka.ImageBuilder.Types.ComponentSummary+    Amazonka.ImageBuilder.Types.ComponentType+    Amazonka.ImageBuilder.Types.ComponentVersion+    Amazonka.ImageBuilder.Types.Container+    Amazonka.ImageBuilder.Types.ContainerDistributionConfiguration+    Amazonka.ImageBuilder.Types.ContainerRecipe+    Amazonka.ImageBuilder.Types.ContainerRecipeSummary+    Amazonka.ImageBuilder.Types.ContainerRepositoryService+    Amazonka.ImageBuilder.Types.ContainerType+    Amazonka.ImageBuilder.Types.DiskImageFormat+    Amazonka.ImageBuilder.Types.Distribution+    Amazonka.ImageBuilder.Types.DistributionConfiguration+    Amazonka.ImageBuilder.Types.DistributionConfigurationSummary+    Amazonka.ImageBuilder.Types.EbsInstanceBlockDeviceSpecification+    Amazonka.ImageBuilder.Types.EbsVolumeType+    Amazonka.ImageBuilder.Types.FastLaunchConfiguration+    Amazonka.ImageBuilder.Types.FastLaunchLaunchTemplateSpecification+    Amazonka.ImageBuilder.Types.FastLaunchSnapshotConfiguration+    Amazonka.ImageBuilder.Types.Filter+    Amazonka.ImageBuilder.Types.Image+    Amazonka.ImageBuilder.Types.ImagePackage+    Amazonka.ImageBuilder.Types.ImagePipeline+    Amazonka.ImageBuilder.Types.ImageRecipe+    Amazonka.ImageBuilder.Types.ImageRecipeSummary+    Amazonka.ImageBuilder.Types.ImageState+    Amazonka.ImageBuilder.Types.ImageStatus+    Amazonka.ImageBuilder.Types.ImageSummary+    Amazonka.ImageBuilder.Types.ImageTestsConfiguration+    Amazonka.ImageBuilder.Types.ImageType+    Amazonka.ImageBuilder.Types.ImageVersion+    Amazonka.ImageBuilder.Types.InfrastructureConfiguration+    Amazonka.ImageBuilder.Types.InfrastructureConfigurationSummary+    Amazonka.ImageBuilder.Types.InstanceBlockDeviceMapping+    Amazonka.ImageBuilder.Types.InstanceConfiguration+    Amazonka.ImageBuilder.Types.InstanceMetadataOptions+    Amazonka.ImageBuilder.Types.LaunchPermissionConfiguration+    Amazonka.ImageBuilder.Types.LaunchTemplateConfiguration+    Amazonka.ImageBuilder.Types.Logging+    Amazonka.ImageBuilder.Types.OutputResources+    Amazonka.ImageBuilder.Types.Ownership+    Amazonka.ImageBuilder.Types.PipelineExecutionStartCondition+    Amazonka.ImageBuilder.Types.PipelineStatus+    Amazonka.ImageBuilder.Types.Platform+    Amazonka.ImageBuilder.Types.S3ExportConfiguration+    Amazonka.ImageBuilder.Types.S3Logs+    Amazonka.ImageBuilder.Types.Schedule+    Amazonka.ImageBuilder.Types.SystemsManagerAgent+    Amazonka.ImageBuilder.Types.TargetContainerRepository+    Amazonka.ImageBuilder.UntagResource+    Amazonka.ImageBuilder.UpdateDistributionConfiguration+    Amazonka.ImageBuilder.UpdateImagePipeline+    Amazonka.ImageBuilder.UpdateInfrastructureConfiguration+    Amazonka.ImageBuilder.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-imagebuilder-test+  type:             exitcode-stdio-1.0+  default-language: Haskell2010+  hs-source-dirs:   test+  main-is:          Main.hs+  ghc-options:      -Wall -threaded++  -- This section is encoded by the template and any modules added by+  -- hand outside these namespaces will not correctly be added to the+  -- distribution package.+  other-modules:+    Test.Amazonka.Gen.ImageBuilder+    Test.Amazonka.ImageBuilder+    Test.Amazonka.ImageBuilder.Internal++  build-depends:+    , amazonka-core          >=2.0 && <2.1+    , amazonka-imagebuilder+    , amazonka-test          >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/CancelImageCreation.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CancelImageCreationResponse.proto view
+ fixture/CreateComponent.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateComponentResponse.proto view
+ fixture/CreateContainerRecipe.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateContainerRecipeResponse.proto view
+ fixture/CreateDistributionConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateDistributionConfigurationResponse.proto view
+ fixture/CreateImage.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateImagePipeline.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateImagePipelineResponse.proto view
+ fixture/CreateImageRecipe.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateImageRecipeResponse.proto view
+ fixture/CreateImageResponse.proto view
+ fixture/CreateInfrastructureConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateInfrastructureConfigurationResponse.proto view
+ fixture/DeleteComponent.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteComponentResponse.proto view
+ fixture/DeleteContainerRecipe.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteContainerRecipeResponse.proto view
+ fixture/DeleteDistributionConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteDistributionConfigurationResponse.proto view
+ fixture/DeleteImage.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteImagePipeline.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteImagePipelineResponse.proto view
+ fixture/DeleteImageRecipe.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteImageRecipeResponse.proto view
+ fixture/DeleteImageResponse.proto view
+ fixture/DeleteInfrastructureConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteInfrastructureConfigurationResponse.proto view
+ fixture/GetComponent.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetComponentPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetComponentPolicyResponse.proto view
+ fixture/GetComponentResponse.proto view
+ fixture/GetContainerRecipe.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetContainerRecipePolicy.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetContainerRecipePolicyResponse.proto view
+ fixture/GetContainerRecipeResponse.proto view
+ fixture/GetDistributionConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetDistributionConfigurationResponse.proto view
+ fixture/GetImage.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetImagePipeline.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetImagePipelineResponse.proto view
+ fixture/GetImagePolicy.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetImagePolicyResponse.proto view
+ fixture/GetImageRecipe.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetImageRecipePolicy.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetImageRecipePolicyResponse.proto view
+ fixture/GetImageRecipeResponse.proto view
+ fixture/GetImageResponse.proto view
+ fixture/GetInfrastructureConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/GetInfrastructureConfigurationResponse.proto view
+ fixture/ImportComponent.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ImportComponentResponse.proto view
+ fixture/ImportVmImage.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ImportVmImageResponse.proto view
+ fixture/ListComponentBuildVersions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListComponentBuildVersionsResponse.proto view
+ fixture/ListComponents.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListComponentsResponse.proto view
+ fixture/ListContainerRecipes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListContainerRecipesResponse.proto view
+ fixture/ListDistributionConfigurations.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListDistributionConfigurationsResponse.proto view
+ fixture/ListImageBuildVersions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListImageBuildVersionsResponse.proto view
+ fixture/ListImagePackages.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListImagePackagesResponse.proto view
+ fixture/ListImagePipelineImages.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListImagePipelineImagesResponse.proto view
+ fixture/ListImagePipelines.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListImagePipelinesResponse.proto view
+ fixture/ListImageRecipes.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListImageRecipesResponse.proto view
+ fixture/ListImages.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListImagesResponse.proto view
+ fixture/ListInfrastructureConfigurations.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListInfrastructureConfigurationsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListTagsForResourceResponse.proto view
+ fixture/PutComponentPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/PutComponentPolicyResponse.proto view
+ fixture/PutContainerRecipePolicy.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/PutContainerRecipePolicyResponse.proto view
+ fixture/PutImagePolicy.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/PutImagePolicyResponse.proto view
+ fixture/PutImageRecipePolicy.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/PutImageRecipePolicyResponse.proto view
+ fixture/StartImagePipelineExecution.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/StartImagePipelineExecutionResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UntagResourceResponse.proto view
+ fixture/UpdateDistributionConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateDistributionConfigurationResponse.proto view
+ fixture/UpdateImagePipeline.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateImagePipelineResponse.proto view
+ fixture/UpdateInfrastructureConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/imagebuilder/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  imagebuilder.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/UpdateInfrastructureConfigurationResponse.proto view
+ gen/Amazonka/ImageBuilder.hs view
@@ -0,0 +1,688 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.ImageBuilder+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Derived from API version @2019-12-02@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- EC2 Image Builder is a fully managed Amazon Web Services service that+-- makes it easier to automate the creation, management, and deployment of+-- customized, secure, and up-to-date \"golden\" server images that are+-- pre-installed and pre-configured with software and settings to meet+-- specific IT standards.+module Amazonka.ImageBuilder+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** CallRateLimitExceededException+    _CallRateLimitExceededException,++    -- ** ClientException+    _ClientException,++    -- ** ForbiddenException+    _ForbiddenException,++    -- ** IdempotentParameterMismatchException+    _IdempotentParameterMismatchException,++    -- ** InvalidPaginationTokenException+    _InvalidPaginationTokenException,++    -- ** InvalidParameterCombinationException+    _InvalidParameterCombinationException,++    -- ** InvalidParameterException+    _InvalidParameterException,++    -- ** InvalidParameterValueException+    _InvalidParameterValueException,++    -- ** InvalidRequestException+    _InvalidRequestException,++    -- ** InvalidVersionNumberException+    _InvalidVersionNumberException,++    -- ** ResourceAlreadyExistsException+    _ResourceAlreadyExistsException,++    -- ** ResourceDependencyException+    _ResourceDependencyException,++    -- ** ResourceInUseException+    _ResourceInUseException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceException+    _ServiceException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ServiceUnavailableException+    _ServiceUnavailableException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** CancelImageCreation+    CancelImageCreation (CancelImageCreation'),+    newCancelImageCreation,+    CancelImageCreationResponse (CancelImageCreationResponse'),+    newCancelImageCreationResponse,++    -- ** CreateComponent+    CreateComponent (CreateComponent'),+    newCreateComponent,+    CreateComponentResponse (CreateComponentResponse'),+    newCreateComponentResponse,++    -- ** CreateContainerRecipe+    CreateContainerRecipe (CreateContainerRecipe'),+    newCreateContainerRecipe,+    CreateContainerRecipeResponse (CreateContainerRecipeResponse'),+    newCreateContainerRecipeResponse,++    -- ** CreateDistributionConfiguration+    CreateDistributionConfiguration (CreateDistributionConfiguration'),+    newCreateDistributionConfiguration,+    CreateDistributionConfigurationResponse (CreateDistributionConfigurationResponse'),+    newCreateDistributionConfigurationResponse,++    -- ** CreateImage+    CreateImage (CreateImage'),+    newCreateImage,+    CreateImageResponse (CreateImageResponse'),+    newCreateImageResponse,++    -- ** CreateImagePipeline+    CreateImagePipeline (CreateImagePipeline'),+    newCreateImagePipeline,+    CreateImagePipelineResponse (CreateImagePipelineResponse'),+    newCreateImagePipelineResponse,++    -- ** CreateImageRecipe+    CreateImageRecipe (CreateImageRecipe'),+    newCreateImageRecipe,+    CreateImageRecipeResponse (CreateImageRecipeResponse'),+    newCreateImageRecipeResponse,++    -- ** CreateInfrastructureConfiguration+    CreateInfrastructureConfiguration (CreateInfrastructureConfiguration'),+    newCreateInfrastructureConfiguration,+    CreateInfrastructureConfigurationResponse (CreateInfrastructureConfigurationResponse'),+    newCreateInfrastructureConfigurationResponse,++    -- ** DeleteComponent+    DeleteComponent (DeleteComponent'),+    newDeleteComponent,+    DeleteComponentResponse (DeleteComponentResponse'),+    newDeleteComponentResponse,++    -- ** DeleteContainerRecipe+    DeleteContainerRecipe (DeleteContainerRecipe'),+    newDeleteContainerRecipe,+    DeleteContainerRecipeResponse (DeleteContainerRecipeResponse'),+    newDeleteContainerRecipeResponse,++    -- ** DeleteDistributionConfiguration+    DeleteDistributionConfiguration (DeleteDistributionConfiguration'),+    newDeleteDistributionConfiguration,+    DeleteDistributionConfigurationResponse (DeleteDistributionConfigurationResponse'),+    newDeleteDistributionConfigurationResponse,++    -- ** DeleteImage+    DeleteImage (DeleteImage'),+    newDeleteImage,+    DeleteImageResponse (DeleteImageResponse'),+    newDeleteImageResponse,++    -- ** DeleteImagePipeline+    DeleteImagePipeline (DeleteImagePipeline'),+    newDeleteImagePipeline,+    DeleteImagePipelineResponse (DeleteImagePipelineResponse'),+    newDeleteImagePipelineResponse,++    -- ** DeleteImageRecipe+    DeleteImageRecipe (DeleteImageRecipe'),+    newDeleteImageRecipe,+    DeleteImageRecipeResponse (DeleteImageRecipeResponse'),+    newDeleteImageRecipeResponse,++    -- ** DeleteInfrastructureConfiguration+    DeleteInfrastructureConfiguration (DeleteInfrastructureConfiguration'),+    newDeleteInfrastructureConfiguration,+    DeleteInfrastructureConfigurationResponse (DeleteInfrastructureConfigurationResponse'),+    newDeleteInfrastructureConfigurationResponse,++    -- ** GetComponent+    GetComponent (GetComponent'),+    newGetComponent,+    GetComponentResponse (GetComponentResponse'),+    newGetComponentResponse,++    -- ** GetComponentPolicy+    GetComponentPolicy (GetComponentPolicy'),+    newGetComponentPolicy,+    GetComponentPolicyResponse (GetComponentPolicyResponse'),+    newGetComponentPolicyResponse,++    -- ** GetContainerRecipe+    GetContainerRecipe (GetContainerRecipe'),+    newGetContainerRecipe,+    GetContainerRecipeResponse (GetContainerRecipeResponse'),+    newGetContainerRecipeResponse,++    -- ** GetContainerRecipePolicy+    GetContainerRecipePolicy (GetContainerRecipePolicy'),+    newGetContainerRecipePolicy,+    GetContainerRecipePolicyResponse (GetContainerRecipePolicyResponse'),+    newGetContainerRecipePolicyResponse,++    -- ** GetDistributionConfiguration+    GetDistributionConfiguration (GetDistributionConfiguration'),+    newGetDistributionConfiguration,+    GetDistributionConfigurationResponse (GetDistributionConfigurationResponse'),+    newGetDistributionConfigurationResponse,++    -- ** GetImage+    GetImage (GetImage'),+    newGetImage,+    GetImageResponse (GetImageResponse'),+    newGetImageResponse,++    -- ** GetImagePipeline+    GetImagePipeline (GetImagePipeline'),+    newGetImagePipeline,+    GetImagePipelineResponse (GetImagePipelineResponse'),+    newGetImagePipelineResponse,++    -- ** GetImagePolicy+    GetImagePolicy (GetImagePolicy'),+    newGetImagePolicy,+    GetImagePolicyResponse (GetImagePolicyResponse'),+    newGetImagePolicyResponse,++    -- ** GetImageRecipe+    GetImageRecipe (GetImageRecipe'),+    newGetImageRecipe,+    GetImageRecipeResponse (GetImageRecipeResponse'),+    newGetImageRecipeResponse,++    -- ** GetImageRecipePolicy+    GetImageRecipePolicy (GetImageRecipePolicy'),+    newGetImageRecipePolicy,+    GetImageRecipePolicyResponse (GetImageRecipePolicyResponse'),+    newGetImageRecipePolicyResponse,++    -- ** GetInfrastructureConfiguration+    GetInfrastructureConfiguration (GetInfrastructureConfiguration'),+    newGetInfrastructureConfiguration,+    GetInfrastructureConfigurationResponse (GetInfrastructureConfigurationResponse'),+    newGetInfrastructureConfigurationResponse,++    -- ** ImportComponent+    ImportComponent (ImportComponent'),+    newImportComponent,+    ImportComponentResponse (ImportComponentResponse'),+    newImportComponentResponse,++    -- ** ImportVmImage+    ImportVmImage (ImportVmImage'),+    newImportVmImage,+    ImportVmImageResponse (ImportVmImageResponse'),+    newImportVmImageResponse,++    -- ** ListComponentBuildVersions+    ListComponentBuildVersions (ListComponentBuildVersions'),+    newListComponentBuildVersions,+    ListComponentBuildVersionsResponse (ListComponentBuildVersionsResponse'),+    newListComponentBuildVersionsResponse,++    -- ** ListComponents+    ListComponents (ListComponents'),+    newListComponents,+    ListComponentsResponse (ListComponentsResponse'),+    newListComponentsResponse,++    -- ** ListContainerRecipes+    ListContainerRecipes (ListContainerRecipes'),+    newListContainerRecipes,+    ListContainerRecipesResponse (ListContainerRecipesResponse'),+    newListContainerRecipesResponse,++    -- ** ListDistributionConfigurations+    ListDistributionConfigurations (ListDistributionConfigurations'),+    newListDistributionConfigurations,+    ListDistributionConfigurationsResponse (ListDistributionConfigurationsResponse'),+    newListDistributionConfigurationsResponse,++    -- ** ListImageBuildVersions+    ListImageBuildVersions (ListImageBuildVersions'),+    newListImageBuildVersions,+    ListImageBuildVersionsResponse (ListImageBuildVersionsResponse'),+    newListImageBuildVersionsResponse,++    -- ** ListImagePackages+    ListImagePackages (ListImagePackages'),+    newListImagePackages,+    ListImagePackagesResponse (ListImagePackagesResponse'),+    newListImagePackagesResponse,++    -- ** ListImagePipelineImages+    ListImagePipelineImages (ListImagePipelineImages'),+    newListImagePipelineImages,+    ListImagePipelineImagesResponse (ListImagePipelineImagesResponse'),+    newListImagePipelineImagesResponse,++    -- ** ListImagePipelines+    ListImagePipelines (ListImagePipelines'),+    newListImagePipelines,+    ListImagePipelinesResponse (ListImagePipelinesResponse'),+    newListImagePipelinesResponse,++    -- ** ListImageRecipes+    ListImageRecipes (ListImageRecipes'),+    newListImageRecipes,+    ListImageRecipesResponse (ListImageRecipesResponse'),+    newListImageRecipesResponse,++    -- ** ListImages+    ListImages (ListImages'),+    newListImages,+    ListImagesResponse (ListImagesResponse'),+    newListImagesResponse,++    -- ** ListInfrastructureConfigurations+    ListInfrastructureConfigurations (ListInfrastructureConfigurations'),+    newListInfrastructureConfigurations,+    ListInfrastructureConfigurationsResponse (ListInfrastructureConfigurationsResponse'),+    newListInfrastructureConfigurationsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** PutComponentPolicy+    PutComponentPolicy (PutComponentPolicy'),+    newPutComponentPolicy,+    PutComponentPolicyResponse (PutComponentPolicyResponse'),+    newPutComponentPolicyResponse,++    -- ** PutContainerRecipePolicy+    PutContainerRecipePolicy (PutContainerRecipePolicy'),+    newPutContainerRecipePolicy,+    PutContainerRecipePolicyResponse (PutContainerRecipePolicyResponse'),+    newPutContainerRecipePolicyResponse,++    -- ** PutImagePolicy+    PutImagePolicy (PutImagePolicy'),+    newPutImagePolicy,+    PutImagePolicyResponse (PutImagePolicyResponse'),+    newPutImagePolicyResponse,++    -- ** PutImageRecipePolicy+    PutImageRecipePolicy (PutImageRecipePolicy'),+    newPutImageRecipePolicy,+    PutImageRecipePolicyResponse (PutImageRecipePolicyResponse'),+    newPutImageRecipePolicyResponse,++    -- ** StartImagePipelineExecution+    StartImagePipelineExecution (StartImagePipelineExecution'),+    newStartImagePipelineExecution,+    StartImagePipelineExecutionResponse (StartImagePipelineExecutionResponse'),+    newStartImagePipelineExecutionResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateDistributionConfiguration+    UpdateDistributionConfiguration (UpdateDistributionConfiguration'),+    newUpdateDistributionConfiguration,+    UpdateDistributionConfigurationResponse (UpdateDistributionConfigurationResponse'),+    newUpdateDistributionConfigurationResponse,++    -- ** UpdateImagePipeline+    UpdateImagePipeline (UpdateImagePipeline'),+    newUpdateImagePipeline,+    UpdateImagePipelineResponse (UpdateImagePipelineResponse'),+    newUpdateImagePipelineResponse,++    -- ** UpdateInfrastructureConfiguration+    UpdateInfrastructureConfiguration (UpdateInfrastructureConfiguration'),+    newUpdateInfrastructureConfiguration,+    UpdateInfrastructureConfigurationResponse (UpdateInfrastructureConfigurationResponse'),+    newUpdateInfrastructureConfigurationResponse,++    -- * Types++    -- ** BuildType+    BuildType (..),++    -- ** ComponentFormat+    ComponentFormat (..),++    -- ** ComponentStatus+    ComponentStatus (..),++    -- ** ComponentType+    ComponentType (..),++    -- ** ContainerRepositoryService+    ContainerRepositoryService (..),++    -- ** ContainerType+    ContainerType (..),++    -- ** DiskImageFormat+    DiskImageFormat (..),++    -- ** EbsVolumeType+    EbsVolumeType (..),++    -- ** ImageStatus+    ImageStatus (..),++    -- ** ImageType+    ImageType (..),++    -- ** Ownership+    Ownership (..),++    -- ** PipelineExecutionStartCondition+    PipelineExecutionStartCondition (..),++    -- ** PipelineStatus+    PipelineStatus (..),++    -- ** Platform+    Platform (..),++    -- ** AdditionalInstanceConfiguration+    AdditionalInstanceConfiguration (AdditionalInstanceConfiguration'),+    newAdditionalInstanceConfiguration,++    -- ** Ami+    Ami (Ami'),+    newAmi,++    -- ** AmiDistributionConfiguration+    AmiDistributionConfiguration (AmiDistributionConfiguration'),+    newAmiDistributionConfiguration,++    -- ** Component+    Component (Component'),+    newComponent,++    -- ** ComponentConfiguration+    ComponentConfiguration (ComponentConfiguration'),+    newComponentConfiguration,++    -- ** ComponentParameter+    ComponentParameter (ComponentParameter'),+    newComponentParameter,++    -- ** ComponentParameterDetail+    ComponentParameterDetail (ComponentParameterDetail'),+    newComponentParameterDetail,++    -- ** ComponentState+    ComponentState (ComponentState'),+    newComponentState,++    -- ** ComponentSummary+    ComponentSummary (ComponentSummary'),+    newComponentSummary,++    -- ** ComponentVersion+    ComponentVersion (ComponentVersion'),+    newComponentVersion,++    -- ** Container+    Container (Container'),+    newContainer,++    -- ** ContainerDistributionConfiguration+    ContainerDistributionConfiguration (ContainerDistributionConfiguration'),+    newContainerDistributionConfiguration,++    -- ** ContainerRecipe+    ContainerRecipe (ContainerRecipe'),+    newContainerRecipe,++    -- ** ContainerRecipeSummary+    ContainerRecipeSummary (ContainerRecipeSummary'),+    newContainerRecipeSummary,++    -- ** Distribution+    Distribution (Distribution'),+    newDistribution,++    -- ** DistributionConfiguration+    DistributionConfiguration (DistributionConfiguration'),+    newDistributionConfiguration,++    -- ** DistributionConfigurationSummary+    DistributionConfigurationSummary (DistributionConfigurationSummary'),+    newDistributionConfigurationSummary,++    -- ** EbsInstanceBlockDeviceSpecification+    EbsInstanceBlockDeviceSpecification (EbsInstanceBlockDeviceSpecification'),+    newEbsInstanceBlockDeviceSpecification,++    -- ** FastLaunchConfiguration+    FastLaunchConfiguration (FastLaunchConfiguration'),+    newFastLaunchConfiguration,++    -- ** FastLaunchLaunchTemplateSpecification+    FastLaunchLaunchTemplateSpecification (FastLaunchLaunchTemplateSpecification'),+    newFastLaunchLaunchTemplateSpecification,++    -- ** FastLaunchSnapshotConfiguration+    FastLaunchSnapshotConfiguration (FastLaunchSnapshotConfiguration'),+    newFastLaunchSnapshotConfiguration,++    -- ** Filter+    Filter (Filter'),+    newFilter,++    -- ** Image+    Image (Image'),+    newImage,++    -- ** ImagePackage+    ImagePackage (ImagePackage'),+    newImagePackage,++    -- ** ImagePipeline+    ImagePipeline (ImagePipeline'),+    newImagePipeline,++    -- ** ImageRecipe+    ImageRecipe (ImageRecipe'),+    newImageRecipe,++    -- ** ImageRecipeSummary+    ImageRecipeSummary (ImageRecipeSummary'),+    newImageRecipeSummary,++    -- ** ImageState+    ImageState (ImageState'),+    newImageState,++    -- ** ImageSummary+    ImageSummary (ImageSummary'),+    newImageSummary,++    -- ** ImageTestsConfiguration+    ImageTestsConfiguration (ImageTestsConfiguration'),+    newImageTestsConfiguration,++    -- ** ImageVersion+    ImageVersion (ImageVersion'),+    newImageVersion,++    -- ** InfrastructureConfiguration+    InfrastructureConfiguration (InfrastructureConfiguration'),+    newInfrastructureConfiguration,++    -- ** InfrastructureConfigurationSummary+    InfrastructureConfigurationSummary (InfrastructureConfigurationSummary'),+    newInfrastructureConfigurationSummary,++    -- ** InstanceBlockDeviceMapping+    InstanceBlockDeviceMapping (InstanceBlockDeviceMapping'),+    newInstanceBlockDeviceMapping,++    -- ** InstanceConfiguration+    InstanceConfiguration (InstanceConfiguration'),+    newInstanceConfiguration,++    -- ** InstanceMetadataOptions+    InstanceMetadataOptions (InstanceMetadataOptions'),+    newInstanceMetadataOptions,++    -- ** LaunchPermissionConfiguration+    LaunchPermissionConfiguration (LaunchPermissionConfiguration'),+    newLaunchPermissionConfiguration,++    -- ** LaunchTemplateConfiguration+    LaunchTemplateConfiguration (LaunchTemplateConfiguration'),+    newLaunchTemplateConfiguration,++    -- ** Logging+    Logging (Logging'),+    newLogging,++    -- ** OutputResources+    OutputResources (OutputResources'),+    newOutputResources,++    -- ** S3ExportConfiguration+    S3ExportConfiguration (S3ExportConfiguration'),+    newS3ExportConfiguration,++    -- ** S3Logs+    S3Logs (S3Logs'),+    newS3Logs,++    -- ** Schedule+    Schedule (Schedule'),+    newSchedule,++    -- ** SystemsManagerAgent+    SystemsManagerAgent (SystemsManagerAgent'),+    newSystemsManagerAgent,++    -- ** TargetContainerRepository+    TargetContainerRepository (TargetContainerRepository'),+    newTargetContainerRepository,+  )+where++import Amazonka.ImageBuilder.CancelImageCreation+import Amazonka.ImageBuilder.CreateComponent+import Amazonka.ImageBuilder.CreateContainerRecipe+import Amazonka.ImageBuilder.CreateDistributionConfiguration+import Amazonka.ImageBuilder.CreateImage+import Amazonka.ImageBuilder.CreateImagePipeline+import Amazonka.ImageBuilder.CreateImageRecipe+import Amazonka.ImageBuilder.CreateInfrastructureConfiguration+import Amazonka.ImageBuilder.DeleteComponent+import Amazonka.ImageBuilder.DeleteContainerRecipe+import Amazonka.ImageBuilder.DeleteDistributionConfiguration+import Amazonka.ImageBuilder.DeleteImage+import Amazonka.ImageBuilder.DeleteImagePipeline+import Amazonka.ImageBuilder.DeleteImageRecipe+import Amazonka.ImageBuilder.DeleteInfrastructureConfiguration+import Amazonka.ImageBuilder.GetComponent+import Amazonka.ImageBuilder.GetComponentPolicy+import Amazonka.ImageBuilder.GetContainerRecipe+import Amazonka.ImageBuilder.GetContainerRecipePolicy+import Amazonka.ImageBuilder.GetDistributionConfiguration+import Amazonka.ImageBuilder.GetImage+import Amazonka.ImageBuilder.GetImagePipeline+import Amazonka.ImageBuilder.GetImagePolicy+import Amazonka.ImageBuilder.GetImageRecipe+import Amazonka.ImageBuilder.GetImageRecipePolicy+import Amazonka.ImageBuilder.GetInfrastructureConfiguration+import Amazonka.ImageBuilder.ImportComponent+import Amazonka.ImageBuilder.ImportVmImage+import Amazonka.ImageBuilder.Lens+import Amazonka.ImageBuilder.ListComponentBuildVersions+import Amazonka.ImageBuilder.ListComponents+import Amazonka.ImageBuilder.ListContainerRecipes+import Amazonka.ImageBuilder.ListDistributionConfigurations+import Amazonka.ImageBuilder.ListImageBuildVersions+import Amazonka.ImageBuilder.ListImagePackages+import Amazonka.ImageBuilder.ListImagePipelineImages+import Amazonka.ImageBuilder.ListImagePipelines+import Amazonka.ImageBuilder.ListImageRecipes+import Amazonka.ImageBuilder.ListImages+import Amazonka.ImageBuilder.ListInfrastructureConfigurations+import Amazonka.ImageBuilder.ListTagsForResource+import Amazonka.ImageBuilder.PutComponentPolicy+import Amazonka.ImageBuilder.PutContainerRecipePolicy+import Amazonka.ImageBuilder.PutImagePolicy+import Amazonka.ImageBuilder.PutImageRecipePolicy+import Amazonka.ImageBuilder.StartImagePipelineExecution+import Amazonka.ImageBuilder.TagResource+import Amazonka.ImageBuilder.Types+import Amazonka.ImageBuilder.UntagResource+import Amazonka.ImageBuilder.UpdateDistributionConfiguration+import Amazonka.ImageBuilder.UpdateImagePipeline+import Amazonka.ImageBuilder.UpdateInfrastructureConfiguration+import Amazonka.ImageBuilder.Waiters++-- $errors+-- Error matchers are designed for use with the functions provided by+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.+-- This allows catching (and rethrowing) service specific errors returned+-- by 'ImageBuilder'.++-- $operations+-- Some AWS operations return results that are incomplete and require subsequent+-- requests in order to obtain the entire result set. The process of sending+-- subsequent requests to continue where a previous request left off is called+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to+-- 1000 objects at a time, and you must send subsequent requests with the+-- appropriate Marker in order to retrieve the next page of results.+--+-- Operations that have an 'AWSPager' instance can transparently perform subsequent+-- requests, correctly setting Markers and other request facets to iterate through+-- the entire result set of a truncated API operation. Operations which support+-- this have an additional note in the documentation.+--+-- Many operations have the ability to filter results on the server side. See the+-- individual operation parameters for details.++-- $waiters+-- Waiters poll by repeatedly sending a request until some remote success condition+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification+-- determines how many attempts should be made, in addition to delay and retry strategies.
+ gen/Amazonka/ImageBuilder/CancelImageCreation.hs view
@@ -0,0 +1,230 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CancelImageCreation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- CancelImageCreation cancels the creation of Image. This operation can+-- only be used on images in a non-terminal state.+module Amazonka.ImageBuilder.CancelImageCreation+  ( -- * Creating a Request+    CancelImageCreation (..),+    newCancelImageCreation,++    -- * Request Lenses+    cancelImageCreation_imageBuildVersionArn,+    cancelImageCreation_clientToken,++    -- * Destructuring the Response+    CancelImageCreationResponse (..),+    newCancelImageCreationResponse,++    -- * Response Lenses+    cancelImageCreationResponse_clientToken,+    cancelImageCreationResponse_imageBuildVersionArn,+    cancelImageCreationResponse_requestId,+    cancelImageCreationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCancelImageCreation' smart constructor.+data CancelImageCreation = CancelImageCreation'+  { -- | The Amazon Resource Name (ARN) of the image whose creation you want to+    -- cancel.+    imageBuildVersionArn :: Prelude.Text,+    -- | Unique, case-sensitive identifier you provide to ensure idempotency of+    -- the request. For more information, see+    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring idempotency>+    -- in the /Amazon EC2 API Reference/.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CancelImageCreation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageBuildVersionArn', 'cancelImageCreation_imageBuildVersionArn' - The Amazon Resource Name (ARN) of the image whose creation you want to+-- cancel.+--+-- 'clientToken', 'cancelImageCreation_clientToken' - Unique, case-sensitive identifier you provide to ensure idempotency of+-- the request. For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring idempotency>+-- in the /Amazon EC2 API Reference/.+newCancelImageCreation ::+  -- | 'imageBuildVersionArn'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  CancelImageCreation+newCancelImageCreation+  pImageBuildVersionArn_+  pClientToken_ =+    CancelImageCreation'+      { imageBuildVersionArn =+          pImageBuildVersionArn_,+        clientToken = pClientToken_+      }++-- | The Amazon Resource Name (ARN) of the image whose creation you want to+-- cancel.+cancelImageCreation_imageBuildVersionArn :: Lens.Lens' CancelImageCreation Prelude.Text+cancelImageCreation_imageBuildVersionArn = Lens.lens (\CancelImageCreation' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@CancelImageCreation' {} a -> s {imageBuildVersionArn = a} :: CancelImageCreation)++-- | Unique, case-sensitive identifier you provide to ensure idempotency of+-- the request. For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring idempotency>+-- in the /Amazon EC2 API Reference/.+cancelImageCreation_clientToken :: Lens.Lens' CancelImageCreation Prelude.Text+cancelImageCreation_clientToken = Lens.lens (\CancelImageCreation' {clientToken} -> clientToken) (\s@CancelImageCreation' {} a -> s {clientToken = a} :: CancelImageCreation)++instance Core.AWSRequest CancelImageCreation where+  type+    AWSResponse CancelImageCreation =+      CancelImageCreationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CancelImageCreationResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "imageBuildVersionArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CancelImageCreation where+  hashWithSalt _salt CancelImageCreation' {..} =+    _salt+      `Prelude.hashWithSalt` imageBuildVersionArn+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData CancelImageCreation where+  rnf CancelImageCreation' {..} =+    Prelude.rnf imageBuildVersionArn+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders CancelImageCreation where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CancelImageCreation where+  toJSON CancelImageCreation' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "imageBuildVersionArn"+                  Data..= imageBuildVersionArn+              ),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath CancelImageCreation where+  toPath = Prelude.const "/CancelImageCreation"++instance Data.ToQuery CancelImageCreation where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCancelImageCreationResponse' smart constructor.+data CancelImageCreationResponse = CancelImageCreationResponse'+  { -- | The idempotency token that was used for this request.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image whose creation has been+    -- cancelled.+    imageBuildVersionArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CancelImageCreationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'cancelImageCreationResponse_clientToken' - The idempotency token that was used for this request.+--+-- 'imageBuildVersionArn', 'cancelImageCreationResponse_imageBuildVersionArn' - The Amazon Resource Name (ARN) of the image whose creation has been+-- cancelled.+--+-- 'requestId', 'cancelImageCreationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'cancelImageCreationResponse_httpStatus' - The response's http status code.+newCancelImageCreationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CancelImageCreationResponse+newCancelImageCreationResponse pHttpStatus_ =+  CancelImageCreationResponse'+    { clientToken =+        Prelude.Nothing,+      imageBuildVersionArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token that was used for this request.+cancelImageCreationResponse_clientToken :: Lens.Lens' CancelImageCreationResponse (Prelude.Maybe Prelude.Text)+cancelImageCreationResponse_clientToken = Lens.lens (\CancelImageCreationResponse' {clientToken} -> clientToken) (\s@CancelImageCreationResponse' {} a -> s {clientToken = a} :: CancelImageCreationResponse)++-- | The Amazon Resource Name (ARN) of the image whose creation has been+-- cancelled.+cancelImageCreationResponse_imageBuildVersionArn :: Lens.Lens' CancelImageCreationResponse (Prelude.Maybe Prelude.Text)+cancelImageCreationResponse_imageBuildVersionArn = Lens.lens (\CancelImageCreationResponse' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@CancelImageCreationResponse' {} a -> s {imageBuildVersionArn = a} :: CancelImageCreationResponse)++-- | The request ID that uniquely identifies this request.+cancelImageCreationResponse_requestId :: Lens.Lens' CancelImageCreationResponse (Prelude.Maybe Prelude.Text)+cancelImageCreationResponse_requestId = Lens.lens (\CancelImageCreationResponse' {requestId} -> requestId) (\s@CancelImageCreationResponse' {} a -> s {requestId = a} :: CancelImageCreationResponse)++-- | The response's http status code.+cancelImageCreationResponse_httpStatus :: Lens.Lens' CancelImageCreationResponse Prelude.Int+cancelImageCreationResponse_httpStatus = Lens.lens (\CancelImageCreationResponse' {httpStatus} -> httpStatus) (\s@CancelImageCreationResponse' {} a -> s {httpStatus = a} :: CancelImageCreationResponse)++instance Prelude.NFData CancelImageCreationResponse where+  rnf CancelImageCreationResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf imageBuildVersionArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/CreateComponent.hs view
@@ -0,0 +1,431 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CreateComponent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a new component that can be used to build, validate, test, and+-- assess your image. The component is based on a YAML document that you+-- specify using exactly one of the following methods:+--+-- -   Inline, using the @data@ property in the request body.+--+-- -   A URL that points to a YAML document file stored in Amazon S3, using+--     the @uri@ property in the request body.+module Amazonka.ImageBuilder.CreateComponent+  ( -- * Creating a Request+    CreateComponent (..),+    newCreateComponent,++    -- * Request Lenses+    createComponent_changeDescription,+    createComponent_data,+    createComponent_description,+    createComponent_kmsKeyId,+    createComponent_supportedOsVersions,+    createComponent_tags,+    createComponent_uri,+    createComponent_name,+    createComponent_semanticVersion,+    createComponent_platform,+    createComponent_clientToken,++    -- * Destructuring the Response+    CreateComponentResponse (..),+    newCreateComponentResponse,++    -- * Response Lenses+    createComponentResponse_clientToken,+    createComponentResponse_componentBuildVersionArn,+    createComponentResponse_requestId,+    createComponentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateComponent' smart constructor.+data CreateComponent = CreateComponent'+  { -- | The change description of the component. Describes what change has been+    -- made in this version, or what makes this version different from other+    -- versions of this component.+    changeDescription :: Prelude.Maybe Prelude.Text,+    -- | Component @data@ contains inline YAML document content for the+    -- component. Alternatively, you can specify the @uri@ of a YAML document+    -- file stored in Amazon S3. However, you cannot specify both properties.+    data' :: Prelude.Maybe Prelude.Text,+    -- | The description of the component. Describes the contents of the+    -- component.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the KMS key that should be used to encrypt this component.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The operating system (OS) version supported by the component. If the OS+    -- information is available, a prefix match is performed against the base+    -- image OS version during image recipe creation.+    supportedOsVersions :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The tags of the component.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The @uri@ of a YAML component document file. This must be an S3 URL+    -- (@s3:\/\/bucket\/key@), and the requester must have permission to access+    -- the S3 bucket it points to. If you use Amazon S3, you can specify+    -- component content up to your service quota.+    --+    -- Alternatively, you can specify the YAML document inline, using the+    -- component @data@ property. You cannot specify both properties.+    uri :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    name :: Prelude.Text,+    -- | The semantic version of the component. This version follows the semantic+    -- version syntax.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    semanticVersion :: Prelude.Text,+    -- | The platform of the component.+    platform :: Platform,+    -- | The idempotency token of the component.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'changeDescription', 'createComponent_changeDescription' - The change description of the component. Describes what change has been+-- made in this version, or what makes this version different from other+-- versions of this component.+--+-- 'data'', 'createComponent_data' - Component @data@ contains inline YAML document content for the+-- component. Alternatively, you can specify the @uri@ of a YAML document+-- file stored in Amazon S3. However, you cannot specify both properties.+--+-- 'description', 'createComponent_description' - The description of the component. Describes the contents of the+-- component.+--+-- 'kmsKeyId', 'createComponent_kmsKeyId' - The ID of the KMS key that should be used to encrypt this component.+--+-- 'supportedOsVersions', 'createComponent_supportedOsVersions' - The operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+--+-- 'tags', 'createComponent_tags' - The tags of the component.+--+-- 'uri', 'createComponent_uri' - The @uri@ of a YAML component document file. This must be an S3 URL+-- (@s3:\/\/bucket\/key@), and the requester must have permission to access+-- the S3 bucket it points to. If you use Amazon S3, you can specify+-- component content up to your service quota.+--+-- Alternatively, you can specify the YAML document inline, using the+-- component @data@ property. You cannot specify both properties.+--+-- 'name', 'createComponent_name' - The name of the component.+--+-- 'semanticVersion', 'createComponent_semanticVersion' - The semantic version of the component. This version follows the semantic+-- version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- 'platform', 'createComponent_platform' - The platform of the component.+--+-- 'clientToken', 'createComponent_clientToken' - The idempotency token of the component.+newCreateComponent ::+  -- | 'name'+  Prelude.Text ->+  -- | 'semanticVersion'+  Prelude.Text ->+  -- | 'platform'+  Platform ->+  -- | 'clientToken'+  Prelude.Text ->+  CreateComponent+newCreateComponent+  pName_+  pSemanticVersion_+  pPlatform_+  pClientToken_ =+    CreateComponent'+      { changeDescription =+          Prelude.Nothing,+        data' = Prelude.Nothing,+        description = Prelude.Nothing,+        kmsKeyId = Prelude.Nothing,+        supportedOsVersions = Prelude.Nothing,+        tags = Prelude.Nothing,+        uri = Prelude.Nothing,+        name = pName_,+        semanticVersion = pSemanticVersion_,+        platform = pPlatform_,+        clientToken = pClientToken_+      }++-- | The change description of the component. Describes what change has been+-- made in this version, or what makes this version different from other+-- versions of this component.+createComponent_changeDescription :: Lens.Lens' CreateComponent (Prelude.Maybe Prelude.Text)+createComponent_changeDescription = Lens.lens (\CreateComponent' {changeDescription} -> changeDescription) (\s@CreateComponent' {} a -> s {changeDescription = a} :: CreateComponent)++-- | Component @data@ contains inline YAML document content for the+-- component. Alternatively, you can specify the @uri@ of a YAML document+-- file stored in Amazon S3. However, you cannot specify both properties.+createComponent_data :: Lens.Lens' CreateComponent (Prelude.Maybe Prelude.Text)+createComponent_data = Lens.lens (\CreateComponent' {data'} -> data') (\s@CreateComponent' {} a -> s {data' = a} :: CreateComponent)++-- | The description of the component. Describes the contents of the+-- component.+createComponent_description :: Lens.Lens' CreateComponent (Prelude.Maybe Prelude.Text)+createComponent_description = Lens.lens (\CreateComponent' {description} -> description) (\s@CreateComponent' {} a -> s {description = a} :: CreateComponent)++-- | The ID of the KMS key that should be used to encrypt this component.+createComponent_kmsKeyId :: Lens.Lens' CreateComponent (Prelude.Maybe Prelude.Text)+createComponent_kmsKeyId = Lens.lens (\CreateComponent' {kmsKeyId} -> kmsKeyId) (\s@CreateComponent' {} a -> s {kmsKeyId = a} :: CreateComponent)++-- | The operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+createComponent_supportedOsVersions :: Lens.Lens' CreateComponent (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+createComponent_supportedOsVersions = Lens.lens (\CreateComponent' {supportedOsVersions} -> supportedOsVersions) (\s@CreateComponent' {} a -> s {supportedOsVersions = a} :: CreateComponent) Prelude.. Lens.mapping Lens.coerced++-- | The tags of the component.+createComponent_tags :: Lens.Lens' CreateComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createComponent_tags = Lens.lens (\CreateComponent' {tags} -> tags) (\s@CreateComponent' {} a -> s {tags = a} :: CreateComponent) Prelude.. Lens.mapping Lens.coerced++-- | The @uri@ of a YAML component document file. This must be an S3 URL+-- (@s3:\/\/bucket\/key@), and the requester must have permission to access+-- the S3 bucket it points to. If you use Amazon S3, you can specify+-- component content up to your service quota.+--+-- Alternatively, you can specify the YAML document inline, using the+-- component @data@ property. You cannot specify both properties.+createComponent_uri :: Lens.Lens' CreateComponent (Prelude.Maybe Prelude.Text)+createComponent_uri = Lens.lens (\CreateComponent' {uri} -> uri) (\s@CreateComponent' {} a -> s {uri = a} :: CreateComponent)++-- | The name of the component.+createComponent_name :: Lens.Lens' CreateComponent Prelude.Text+createComponent_name = Lens.lens (\CreateComponent' {name} -> name) (\s@CreateComponent' {} a -> s {name = a} :: CreateComponent)++-- | The semantic version of the component. This version follows the semantic+-- version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+createComponent_semanticVersion :: Lens.Lens' CreateComponent Prelude.Text+createComponent_semanticVersion = Lens.lens (\CreateComponent' {semanticVersion} -> semanticVersion) (\s@CreateComponent' {} a -> s {semanticVersion = a} :: CreateComponent)++-- | The platform of the component.+createComponent_platform :: Lens.Lens' CreateComponent Platform+createComponent_platform = Lens.lens (\CreateComponent' {platform} -> platform) (\s@CreateComponent' {} a -> s {platform = a} :: CreateComponent)++-- | The idempotency token of the component.+createComponent_clientToken :: Lens.Lens' CreateComponent Prelude.Text+createComponent_clientToken = Lens.lens (\CreateComponent' {clientToken} -> clientToken) (\s@CreateComponent' {} a -> s {clientToken = a} :: CreateComponent)++instance Core.AWSRequest CreateComponent where+  type+    AWSResponse CreateComponent =+      CreateComponentResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateComponentResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "componentBuildVersionArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateComponent where+  hashWithSalt _salt CreateComponent' {..} =+    _salt+      `Prelude.hashWithSalt` changeDescription+      `Prelude.hashWithSalt` data'+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` supportedOsVersions+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` uri+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` semanticVersion+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData CreateComponent where+  rnf CreateComponent' {..} =+    Prelude.rnf changeDescription+      `Prelude.seq` Prelude.rnf data'+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf supportedOsVersions+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf uri+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf semanticVersion+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders CreateComponent where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateComponent where+  toJSON CreateComponent' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("changeDescription" Data..=)+              Prelude.<$> changeDescription,+            ("data" Data..=) Prelude.<$> data',+            ("description" Data..=) Prelude.<$> description,+            ("kmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("supportedOsVersions" Data..=)+              Prelude.<$> supportedOsVersions,+            ("tags" Data..=) Prelude.<$> tags,+            ("uri" Data..=) Prelude.<$> uri,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("semanticVersion" Data..= semanticVersion),+            Prelude.Just ("platform" Data..= platform),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath CreateComponent where+  toPath = Prelude.const "/CreateComponent"++instance Data.ToQuery CreateComponent where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateComponentResponse' smart constructor.+data CreateComponentResponse = CreateComponentResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the component that was created by this+    -- request.+    componentBuildVersionArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateComponentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createComponentResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'componentBuildVersionArn', 'createComponentResponse_componentBuildVersionArn' - The Amazon Resource Name (ARN) of the component that was created by this+-- request.+--+-- 'requestId', 'createComponentResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'createComponentResponse_httpStatus' - The response's http status code.+newCreateComponentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateComponentResponse+newCreateComponentResponse pHttpStatus_ =+  CreateComponentResponse'+    { clientToken =+        Prelude.Nothing,+      componentBuildVersionArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token used to make this request idempotent.+createComponentResponse_clientToken :: Lens.Lens' CreateComponentResponse (Prelude.Maybe Prelude.Text)+createComponentResponse_clientToken = Lens.lens (\CreateComponentResponse' {clientToken} -> clientToken) (\s@CreateComponentResponse' {} a -> s {clientToken = a} :: CreateComponentResponse)++-- | The Amazon Resource Name (ARN) of the component that was created by this+-- request.+createComponentResponse_componentBuildVersionArn :: Lens.Lens' CreateComponentResponse (Prelude.Maybe Prelude.Text)+createComponentResponse_componentBuildVersionArn = Lens.lens (\CreateComponentResponse' {componentBuildVersionArn} -> componentBuildVersionArn) (\s@CreateComponentResponse' {} a -> s {componentBuildVersionArn = a} :: CreateComponentResponse)++-- | The request ID that uniquely identifies this request.+createComponentResponse_requestId :: Lens.Lens' CreateComponentResponse (Prelude.Maybe Prelude.Text)+createComponentResponse_requestId = Lens.lens (\CreateComponentResponse' {requestId} -> requestId) (\s@CreateComponentResponse' {} a -> s {requestId = a} :: CreateComponentResponse)++-- | The response's http status code.+createComponentResponse_httpStatus :: Lens.Lens' CreateComponentResponse Prelude.Int+createComponentResponse_httpStatus = Lens.lens (\CreateComponentResponse' {httpStatus} -> httpStatus) (\s@CreateComponentResponse' {} a -> s {httpStatus = a} :: CreateComponentResponse)++instance Prelude.NFData CreateComponentResponse where+  rnf CreateComponentResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf componentBuildVersionArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/CreateContainerRecipe.hs view
@@ -0,0 +1,474 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CreateContainerRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a new container recipe. Container recipes define how images are+-- configured, tested, and assessed.+module Amazonka.ImageBuilder.CreateContainerRecipe+  ( -- * Creating a Request+    CreateContainerRecipe (..),+    newCreateContainerRecipe,++    -- * Request Lenses+    createContainerRecipe_description,+    createContainerRecipe_dockerfileTemplateData,+    createContainerRecipe_dockerfileTemplateUri,+    createContainerRecipe_imageOsVersionOverride,+    createContainerRecipe_instanceConfiguration,+    createContainerRecipe_kmsKeyId,+    createContainerRecipe_platformOverride,+    createContainerRecipe_tags,+    createContainerRecipe_workingDirectory,+    createContainerRecipe_containerType,+    createContainerRecipe_name,+    createContainerRecipe_semanticVersion,+    createContainerRecipe_components,+    createContainerRecipe_parentImage,+    createContainerRecipe_targetRepository,+    createContainerRecipe_clientToken,++    -- * Destructuring the Response+    CreateContainerRecipeResponse (..),+    newCreateContainerRecipeResponse,++    -- * Response Lenses+    createContainerRecipeResponse_clientToken,+    createContainerRecipeResponse_containerRecipeArn,+    createContainerRecipeResponse_requestId,+    createContainerRecipeResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateContainerRecipe' smart constructor.+data CreateContainerRecipe = CreateContainerRecipe'+  { -- | The description of the container recipe.+    description :: Prelude.Maybe Prelude.Text,+    -- | The Dockerfile template used to build your image as an inline data blob.+    dockerfileTemplateData :: Prelude.Maybe Prelude.Text,+    -- | The Amazon S3 URI for the Dockerfile that will be used to build your+    -- container image.+    dockerfileTemplateUri :: Prelude.Maybe Prelude.Text,+    -- | Specifies the operating system version for the base image.+    imageOsVersionOverride :: Prelude.Maybe Prelude.Text,+    -- | A group of options that can be used to configure an instance for+    -- building and testing container images.+    instanceConfiguration :: Prelude.Maybe InstanceConfiguration,+    -- | Identifies which KMS key is used to encrypt the container image.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | Specifies the operating system platform when you use a custom base+    -- image.+    platformOverride :: Prelude.Maybe Platform,+    -- | Tags that are attached to the container recipe.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The working directory for use during build and test workflows.+    workingDirectory :: Prelude.Maybe Prelude.Text,+    -- | The type of container to create.+    containerType :: ContainerType,+    -- | The name of the container recipe.+    name :: Prelude.Text,+    -- | The semantic version of the container recipe. This version follows the+    -- semantic version syntax.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    semanticVersion :: Prelude.Text,+    -- | Components for build and test that are included in the container recipe.+    components :: Prelude.NonEmpty ComponentConfiguration,+    -- | The base image for the container recipe.+    parentImage :: Prelude.Text,+    -- | The destination repository for the container image.+    targetRepository :: TargetContainerRepository,+    -- | The client token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateContainerRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createContainerRecipe_description' - The description of the container recipe.+--+-- 'dockerfileTemplateData', 'createContainerRecipe_dockerfileTemplateData' - The Dockerfile template used to build your image as an inline data blob.+--+-- 'dockerfileTemplateUri', 'createContainerRecipe_dockerfileTemplateUri' - The Amazon S3 URI for the Dockerfile that will be used to build your+-- container image.+--+-- 'imageOsVersionOverride', 'createContainerRecipe_imageOsVersionOverride' - Specifies the operating system version for the base image.+--+-- 'instanceConfiguration', 'createContainerRecipe_instanceConfiguration' - A group of options that can be used to configure an instance for+-- building and testing container images.+--+-- 'kmsKeyId', 'createContainerRecipe_kmsKeyId' - Identifies which KMS key is used to encrypt the container image.+--+-- 'platformOverride', 'createContainerRecipe_platformOverride' - Specifies the operating system platform when you use a custom base+-- image.+--+-- 'tags', 'createContainerRecipe_tags' - Tags that are attached to the container recipe.+--+-- 'workingDirectory', 'createContainerRecipe_workingDirectory' - The working directory for use during build and test workflows.+--+-- 'containerType', 'createContainerRecipe_containerType' - The type of container to create.+--+-- 'name', 'createContainerRecipe_name' - The name of the container recipe.+--+-- 'semanticVersion', 'createContainerRecipe_semanticVersion' - The semantic version of the container recipe. This version follows the+-- semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- 'components', 'createContainerRecipe_components' - Components for build and test that are included in the container recipe.+--+-- 'parentImage', 'createContainerRecipe_parentImage' - The base image for the container recipe.+--+-- 'targetRepository', 'createContainerRecipe_targetRepository' - The destination repository for the container image.+--+-- 'clientToken', 'createContainerRecipe_clientToken' - The client token used to make this request idempotent.+newCreateContainerRecipe ::+  -- | 'containerType'+  ContainerType ->+  -- | 'name'+  Prelude.Text ->+  -- | 'semanticVersion'+  Prelude.Text ->+  -- | 'components'+  Prelude.NonEmpty ComponentConfiguration ->+  -- | 'parentImage'+  Prelude.Text ->+  -- | 'targetRepository'+  TargetContainerRepository ->+  -- | 'clientToken'+  Prelude.Text ->+  CreateContainerRecipe+newCreateContainerRecipe+  pContainerType_+  pName_+  pSemanticVersion_+  pComponents_+  pParentImage_+  pTargetRepository_+  pClientToken_ =+    CreateContainerRecipe'+      { description =+          Prelude.Nothing,+        dockerfileTemplateData = Prelude.Nothing,+        dockerfileTemplateUri = Prelude.Nothing,+        imageOsVersionOverride = Prelude.Nothing,+        instanceConfiguration = Prelude.Nothing,+        kmsKeyId = Prelude.Nothing,+        platformOverride = Prelude.Nothing,+        tags = Prelude.Nothing,+        workingDirectory = Prelude.Nothing,+        containerType = pContainerType_,+        name = pName_,+        semanticVersion = pSemanticVersion_,+        components = Lens.coerced Lens.# pComponents_,+        parentImage = pParentImage_,+        targetRepository = pTargetRepository_,+        clientToken = pClientToken_+      }++-- | The description of the container recipe.+createContainerRecipe_description :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe Prelude.Text)+createContainerRecipe_description = Lens.lens (\CreateContainerRecipe' {description} -> description) (\s@CreateContainerRecipe' {} a -> s {description = a} :: CreateContainerRecipe)++-- | The Dockerfile template used to build your image as an inline data blob.+createContainerRecipe_dockerfileTemplateData :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe Prelude.Text)+createContainerRecipe_dockerfileTemplateData = Lens.lens (\CreateContainerRecipe' {dockerfileTemplateData} -> dockerfileTemplateData) (\s@CreateContainerRecipe' {} a -> s {dockerfileTemplateData = a} :: CreateContainerRecipe)++-- | The Amazon S3 URI for the Dockerfile that will be used to build your+-- container image.+createContainerRecipe_dockerfileTemplateUri :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe Prelude.Text)+createContainerRecipe_dockerfileTemplateUri = Lens.lens (\CreateContainerRecipe' {dockerfileTemplateUri} -> dockerfileTemplateUri) (\s@CreateContainerRecipe' {} a -> s {dockerfileTemplateUri = a} :: CreateContainerRecipe)++-- | Specifies the operating system version for the base image.+createContainerRecipe_imageOsVersionOverride :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe Prelude.Text)+createContainerRecipe_imageOsVersionOverride = Lens.lens (\CreateContainerRecipe' {imageOsVersionOverride} -> imageOsVersionOverride) (\s@CreateContainerRecipe' {} a -> s {imageOsVersionOverride = a} :: CreateContainerRecipe)++-- | A group of options that can be used to configure an instance for+-- building and testing container images.+createContainerRecipe_instanceConfiguration :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe InstanceConfiguration)+createContainerRecipe_instanceConfiguration = Lens.lens (\CreateContainerRecipe' {instanceConfiguration} -> instanceConfiguration) (\s@CreateContainerRecipe' {} a -> s {instanceConfiguration = a} :: CreateContainerRecipe)++-- | Identifies which KMS key is used to encrypt the container image.+createContainerRecipe_kmsKeyId :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe Prelude.Text)+createContainerRecipe_kmsKeyId = Lens.lens (\CreateContainerRecipe' {kmsKeyId} -> kmsKeyId) (\s@CreateContainerRecipe' {} a -> s {kmsKeyId = a} :: CreateContainerRecipe)++-- | Specifies the operating system platform when you use a custom base+-- image.+createContainerRecipe_platformOverride :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe Platform)+createContainerRecipe_platformOverride = Lens.lens (\CreateContainerRecipe' {platformOverride} -> platformOverride) (\s@CreateContainerRecipe' {} a -> s {platformOverride = a} :: CreateContainerRecipe)++-- | Tags that are attached to the container recipe.+createContainerRecipe_tags :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createContainerRecipe_tags = Lens.lens (\CreateContainerRecipe' {tags} -> tags) (\s@CreateContainerRecipe' {} a -> s {tags = a} :: CreateContainerRecipe) Prelude.. Lens.mapping Lens.coerced++-- | The working directory for use during build and test workflows.+createContainerRecipe_workingDirectory :: Lens.Lens' CreateContainerRecipe (Prelude.Maybe Prelude.Text)+createContainerRecipe_workingDirectory = Lens.lens (\CreateContainerRecipe' {workingDirectory} -> workingDirectory) (\s@CreateContainerRecipe' {} a -> s {workingDirectory = a} :: CreateContainerRecipe)++-- | The type of container to create.+createContainerRecipe_containerType :: Lens.Lens' CreateContainerRecipe ContainerType+createContainerRecipe_containerType = Lens.lens (\CreateContainerRecipe' {containerType} -> containerType) (\s@CreateContainerRecipe' {} a -> s {containerType = a} :: CreateContainerRecipe)++-- | The name of the container recipe.+createContainerRecipe_name :: Lens.Lens' CreateContainerRecipe Prelude.Text+createContainerRecipe_name = Lens.lens (\CreateContainerRecipe' {name} -> name) (\s@CreateContainerRecipe' {} a -> s {name = a} :: CreateContainerRecipe)++-- | The semantic version of the container recipe. This version follows the+-- semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+createContainerRecipe_semanticVersion :: Lens.Lens' CreateContainerRecipe Prelude.Text+createContainerRecipe_semanticVersion = Lens.lens (\CreateContainerRecipe' {semanticVersion} -> semanticVersion) (\s@CreateContainerRecipe' {} a -> s {semanticVersion = a} :: CreateContainerRecipe)++-- | Components for build and test that are included in the container recipe.+createContainerRecipe_components :: Lens.Lens' CreateContainerRecipe (Prelude.NonEmpty ComponentConfiguration)+createContainerRecipe_components = Lens.lens (\CreateContainerRecipe' {components} -> components) (\s@CreateContainerRecipe' {} a -> s {components = a} :: CreateContainerRecipe) Prelude.. Lens.coerced++-- | The base image for the container recipe.+createContainerRecipe_parentImage :: Lens.Lens' CreateContainerRecipe Prelude.Text+createContainerRecipe_parentImage = Lens.lens (\CreateContainerRecipe' {parentImage} -> parentImage) (\s@CreateContainerRecipe' {} a -> s {parentImage = a} :: CreateContainerRecipe)++-- | The destination repository for the container image.+createContainerRecipe_targetRepository :: Lens.Lens' CreateContainerRecipe TargetContainerRepository+createContainerRecipe_targetRepository = Lens.lens (\CreateContainerRecipe' {targetRepository} -> targetRepository) (\s@CreateContainerRecipe' {} a -> s {targetRepository = a} :: CreateContainerRecipe)++-- | The client token used to make this request idempotent.+createContainerRecipe_clientToken :: Lens.Lens' CreateContainerRecipe Prelude.Text+createContainerRecipe_clientToken = Lens.lens (\CreateContainerRecipe' {clientToken} -> clientToken) (\s@CreateContainerRecipe' {} a -> s {clientToken = a} :: CreateContainerRecipe)++instance Core.AWSRequest CreateContainerRecipe where+  type+    AWSResponse CreateContainerRecipe =+      CreateContainerRecipeResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateContainerRecipeResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "containerRecipeArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateContainerRecipe where+  hashWithSalt _salt CreateContainerRecipe' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` dockerfileTemplateData+      `Prelude.hashWithSalt` dockerfileTemplateUri+      `Prelude.hashWithSalt` imageOsVersionOverride+      `Prelude.hashWithSalt` instanceConfiguration+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` platformOverride+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` workingDirectory+      `Prelude.hashWithSalt` containerType+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` semanticVersion+      `Prelude.hashWithSalt` components+      `Prelude.hashWithSalt` parentImage+      `Prelude.hashWithSalt` targetRepository+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData CreateContainerRecipe where+  rnf CreateContainerRecipe' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf dockerfileTemplateData+      `Prelude.seq` Prelude.rnf dockerfileTemplateUri+      `Prelude.seq` Prelude.rnf imageOsVersionOverride+      `Prelude.seq` Prelude.rnf instanceConfiguration+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf platformOverride+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf workingDirectory+      `Prelude.seq` Prelude.rnf containerType+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf semanticVersion+      `Prelude.seq` Prelude.rnf components+      `Prelude.seq` Prelude.rnf parentImage+      `Prelude.seq` Prelude.rnf targetRepository+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders CreateContainerRecipe where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateContainerRecipe where+  toJSON CreateContainerRecipe' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("dockerfileTemplateData" Data..=)+              Prelude.<$> dockerfileTemplateData,+            ("dockerfileTemplateUri" Data..=)+              Prelude.<$> dockerfileTemplateUri,+            ("imageOsVersionOverride" Data..=)+              Prelude.<$> imageOsVersionOverride,+            ("instanceConfiguration" Data..=)+              Prelude.<$> instanceConfiguration,+            ("kmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("platformOverride" Data..=)+              Prelude.<$> platformOverride,+            ("tags" Data..=) Prelude.<$> tags,+            ("workingDirectory" Data..=)+              Prelude.<$> workingDirectory,+            Prelude.Just ("containerType" Data..= containerType),+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("semanticVersion" Data..= semanticVersion),+            Prelude.Just ("components" Data..= components),+            Prelude.Just ("parentImage" Data..= parentImage),+            Prelude.Just+              ("targetRepository" Data..= targetRepository),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath CreateContainerRecipe where+  toPath = Prelude.const "/CreateContainerRecipe"++instance Data.ToQuery CreateContainerRecipe where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateContainerRecipeResponse' smart constructor.+data CreateContainerRecipeResponse = CreateContainerRecipeResponse'+  { -- | The client token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | Returns the Amazon Resource Name (ARN) of the container recipe that the+    -- request created.+    containerRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateContainerRecipeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createContainerRecipeResponse_clientToken' - The client token used to make this request idempotent.+--+-- 'containerRecipeArn', 'createContainerRecipeResponse_containerRecipeArn' - Returns the Amazon Resource Name (ARN) of the container recipe that the+-- request created.+--+-- 'requestId', 'createContainerRecipeResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'createContainerRecipeResponse_httpStatus' - The response's http status code.+newCreateContainerRecipeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateContainerRecipeResponse+newCreateContainerRecipeResponse pHttpStatus_ =+  CreateContainerRecipeResponse'+    { clientToken =+        Prelude.Nothing,+      containerRecipeArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The client token used to make this request idempotent.+createContainerRecipeResponse_clientToken :: Lens.Lens' CreateContainerRecipeResponse (Prelude.Maybe Prelude.Text)+createContainerRecipeResponse_clientToken = Lens.lens (\CreateContainerRecipeResponse' {clientToken} -> clientToken) (\s@CreateContainerRecipeResponse' {} a -> s {clientToken = a} :: CreateContainerRecipeResponse)++-- | Returns the Amazon Resource Name (ARN) of the container recipe that the+-- request created.+createContainerRecipeResponse_containerRecipeArn :: Lens.Lens' CreateContainerRecipeResponse (Prelude.Maybe Prelude.Text)+createContainerRecipeResponse_containerRecipeArn = Lens.lens (\CreateContainerRecipeResponse' {containerRecipeArn} -> containerRecipeArn) (\s@CreateContainerRecipeResponse' {} a -> s {containerRecipeArn = a} :: CreateContainerRecipeResponse)++-- | The request ID that uniquely identifies this request.+createContainerRecipeResponse_requestId :: Lens.Lens' CreateContainerRecipeResponse (Prelude.Maybe Prelude.Text)+createContainerRecipeResponse_requestId = Lens.lens (\CreateContainerRecipeResponse' {requestId} -> requestId) (\s@CreateContainerRecipeResponse' {} a -> s {requestId = a} :: CreateContainerRecipeResponse)++-- | The response's http status code.+createContainerRecipeResponse_httpStatus :: Lens.Lens' CreateContainerRecipeResponse Prelude.Int+createContainerRecipeResponse_httpStatus = Lens.lens (\CreateContainerRecipeResponse' {httpStatus} -> httpStatus) (\s@CreateContainerRecipeResponse' {} a -> s {httpStatus = a} :: CreateContainerRecipeResponse)++instance Prelude.NFData CreateContainerRecipeResponse where+  rnf CreateContainerRecipeResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/CreateDistributionConfiguration.hs view
@@ -0,0 +1,274 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CreateDistributionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a new distribution configuration. Distribution configurations+-- define and configure the outputs of your pipeline.+module Amazonka.ImageBuilder.CreateDistributionConfiguration+  ( -- * Creating a Request+    CreateDistributionConfiguration (..),+    newCreateDistributionConfiguration,++    -- * Request Lenses+    createDistributionConfiguration_description,+    createDistributionConfiguration_tags,+    createDistributionConfiguration_name,+    createDistributionConfiguration_distributions,+    createDistributionConfiguration_clientToken,++    -- * Destructuring the Response+    CreateDistributionConfigurationResponse (..),+    newCreateDistributionConfigurationResponse,++    -- * Response Lenses+    createDistributionConfigurationResponse_clientToken,+    createDistributionConfigurationResponse_distributionConfigurationArn,+    createDistributionConfigurationResponse_requestId,+    createDistributionConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateDistributionConfiguration' smart constructor.+data CreateDistributionConfiguration = CreateDistributionConfiguration'+  { -- | The description of the distribution configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The tags of the distribution configuration.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the distribution configuration.+    name :: Prelude.Text,+    -- | The distributions of the distribution configuration.+    distributions :: [Distribution],+    -- | The idempotency token of the distribution configuration.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDistributionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createDistributionConfiguration_description' - The description of the distribution configuration.+--+-- 'tags', 'createDistributionConfiguration_tags' - The tags of the distribution configuration.+--+-- 'name', 'createDistributionConfiguration_name' - The name of the distribution configuration.+--+-- 'distributions', 'createDistributionConfiguration_distributions' - The distributions of the distribution configuration.+--+-- 'clientToken', 'createDistributionConfiguration_clientToken' - The idempotency token of the distribution configuration.+newCreateDistributionConfiguration ::+  -- | 'name'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  CreateDistributionConfiguration+newCreateDistributionConfiguration+  pName_+  pClientToken_ =+    CreateDistributionConfiguration'+      { description =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        name = pName_,+        distributions = Prelude.mempty,+        clientToken = pClientToken_+      }++-- | The description of the distribution configuration.+createDistributionConfiguration_description :: Lens.Lens' CreateDistributionConfiguration (Prelude.Maybe Prelude.Text)+createDistributionConfiguration_description = Lens.lens (\CreateDistributionConfiguration' {description} -> description) (\s@CreateDistributionConfiguration' {} a -> s {description = a} :: CreateDistributionConfiguration)++-- | The tags of the distribution configuration.+createDistributionConfiguration_tags :: Lens.Lens' CreateDistributionConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createDistributionConfiguration_tags = Lens.lens (\CreateDistributionConfiguration' {tags} -> tags) (\s@CreateDistributionConfiguration' {} a -> s {tags = a} :: CreateDistributionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The name of the distribution configuration.+createDistributionConfiguration_name :: Lens.Lens' CreateDistributionConfiguration Prelude.Text+createDistributionConfiguration_name = Lens.lens (\CreateDistributionConfiguration' {name} -> name) (\s@CreateDistributionConfiguration' {} a -> s {name = a} :: CreateDistributionConfiguration)++-- | The distributions of the distribution configuration.+createDistributionConfiguration_distributions :: Lens.Lens' CreateDistributionConfiguration [Distribution]+createDistributionConfiguration_distributions = Lens.lens (\CreateDistributionConfiguration' {distributions} -> distributions) (\s@CreateDistributionConfiguration' {} a -> s {distributions = a} :: CreateDistributionConfiguration) Prelude.. Lens.coerced++-- | The idempotency token of the distribution configuration.+createDistributionConfiguration_clientToken :: Lens.Lens' CreateDistributionConfiguration Prelude.Text+createDistributionConfiguration_clientToken = Lens.lens (\CreateDistributionConfiguration' {clientToken} -> clientToken) (\s@CreateDistributionConfiguration' {} a -> s {clientToken = a} :: CreateDistributionConfiguration)++instance+  Core.AWSRequest+    CreateDistributionConfiguration+  where+  type+    AWSResponse CreateDistributionConfiguration =+      CreateDistributionConfigurationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateDistributionConfigurationResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "distributionConfigurationArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    CreateDistributionConfiguration+  where+  hashWithSalt+    _salt+    CreateDistributionConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` tags+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` distributions+        `Prelude.hashWithSalt` clientToken++instance+  Prelude.NFData+    CreateDistributionConfiguration+  where+  rnf CreateDistributionConfiguration' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf distributions+      `Prelude.seq` Prelude.rnf clientToken++instance+  Data.ToHeaders+    CreateDistributionConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateDistributionConfiguration where+  toJSON CreateDistributionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("distributions" Data..= distributions),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath CreateDistributionConfiguration where+  toPath =+    Prelude.const "/CreateDistributionConfiguration"++instance Data.ToQuery CreateDistributionConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateDistributionConfigurationResponse' smart constructor.+data CreateDistributionConfigurationResponse = CreateDistributionConfigurationResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- was created by this request.+    distributionConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDistributionConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createDistributionConfigurationResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'distributionConfigurationArn', 'createDistributionConfigurationResponse_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- was created by this request.+--+-- 'requestId', 'createDistributionConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'createDistributionConfigurationResponse_httpStatus' - The response's http status code.+newCreateDistributionConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateDistributionConfigurationResponse+newCreateDistributionConfigurationResponse+  pHttpStatus_ =+    CreateDistributionConfigurationResponse'+      { clientToken =+          Prelude.Nothing,+        distributionConfigurationArn =+          Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The idempotency token used to make this request idempotent.+createDistributionConfigurationResponse_clientToken :: Lens.Lens' CreateDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+createDistributionConfigurationResponse_clientToken = Lens.lens (\CreateDistributionConfigurationResponse' {clientToken} -> clientToken) (\s@CreateDistributionConfigurationResponse' {} a -> s {clientToken = a} :: CreateDistributionConfigurationResponse)++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- was created by this request.+createDistributionConfigurationResponse_distributionConfigurationArn :: Lens.Lens' CreateDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+createDistributionConfigurationResponse_distributionConfigurationArn = Lens.lens (\CreateDistributionConfigurationResponse' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@CreateDistributionConfigurationResponse' {} a -> s {distributionConfigurationArn = a} :: CreateDistributionConfigurationResponse)++-- | The request ID that uniquely identifies this request.+createDistributionConfigurationResponse_requestId :: Lens.Lens' CreateDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+createDistributionConfigurationResponse_requestId = Lens.lens (\CreateDistributionConfigurationResponse' {requestId} -> requestId) (\s@CreateDistributionConfigurationResponse' {} a -> s {requestId = a} :: CreateDistributionConfigurationResponse)++-- | The response's http status code.+createDistributionConfigurationResponse_httpStatus :: Lens.Lens' CreateDistributionConfigurationResponse Prelude.Int+createDistributionConfigurationResponse_httpStatus = Lens.lens (\CreateDistributionConfigurationResponse' {httpStatus} -> httpStatus) (\s@CreateDistributionConfigurationResponse' {} a -> s {httpStatus = a} :: CreateDistributionConfigurationResponse)++instance+  Prelude.NFData+    CreateDistributionConfigurationResponse+  where+  rnf CreateDistributionConfigurationResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/CreateImage.hs view
@@ -0,0 +1,321 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CreateImage+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a new image. This request will create a new image along with all+-- of the configured output resources defined in the distribution+-- configuration. You must specify exactly one recipe for your image, using+-- either a ContainerRecipeArn or an ImageRecipeArn.+module Amazonka.ImageBuilder.CreateImage+  ( -- * Creating a Request+    CreateImage (..),+    newCreateImage,++    -- * Request Lenses+    createImage_containerRecipeArn,+    createImage_distributionConfigurationArn,+    createImage_enhancedImageMetadataEnabled,+    createImage_imageRecipeArn,+    createImage_imageTestsConfiguration,+    createImage_tags,+    createImage_infrastructureConfigurationArn,+    createImage_clientToken,++    -- * Destructuring the Response+    CreateImageResponse (..),+    newCreateImageResponse,++    -- * Response Lenses+    createImageResponse_clientToken,+    createImageResponse_imageBuildVersionArn,+    createImageResponse_requestId,+    createImageResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateImage' smart constructor.+data CreateImage = CreateImage'+  { -- | The Amazon Resource Name (ARN) of the container recipe that defines how+    -- images are configured and tested.+    containerRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- defines and configures the outputs of your pipeline.+    distributionConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Collects additional information about the image being created, including+    -- the operating system (OS) version and package list. This information is+    -- used to enhance the overall experience of using EC2 Image Builder.+    -- Enabled by default.+    enhancedImageMetadataEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The Amazon Resource Name (ARN) of the image recipe that defines how+    -- images are configured, tested, and assessed.+    imageRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The image tests configuration of the image.+    imageTestsConfiguration :: Prelude.Maybe ImageTestsConfiguration,+    -- | The tags of the image.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- defines the environment in which your image will be built and tested.+    infrastructureConfigurationArn :: Prelude.Text,+    -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateImage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'createImage_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe that defines how+-- images are configured and tested.+--+-- 'distributionConfigurationArn', 'createImage_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- defines and configures the outputs of your pipeline.+--+-- 'enhancedImageMetadataEnabled', 'createImage_enhancedImageMetadataEnabled' - Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+--+-- 'imageRecipeArn', 'createImage_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that defines how+-- images are configured, tested, and assessed.+--+-- 'imageTestsConfiguration', 'createImage_imageTestsConfiguration' - The image tests configuration of the image.+--+-- 'tags', 'createImage_tags' - The tags of the image.+--+-- 'infrastructureConfigurationArn', 'createImage_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- defines the environment in which your image will be built and tested.+--+-- 'clientToken', 'createImage_clientToken' - The idempotency token used to make this request idempotent.+newCreateImage ::+  -- | 'infrastructureConfigurationArn'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  CreateImage+newCreateImage+  pInfrastructureConfigurationArn_+  pClientToken_ =+    CreateImage'+      { containerRecipeArn = Prelude.Nothing,+        distributionConfigurationArn = Prelude.Nothing,+        enhancedImageMetadataEnabled = Prelude.Nothing,+        imageRecipeArn = Prelude.Nothing,+        imageTestsConfiguration = Prelude.Nothing,+        tags = Prelude.Nothing,+        infrastructureConfigurationArn =+          pInfrastructureConfigurationArn_,+        clientToken = pClientToken_+      }++-- | The Amazon Resource Name (ARN) of the container recipe that defines how+-- images are configured and tested.+createImage_containerRecipeArn :: Lens.Lens' CreateImage (Prelude.Maybe Prelude.Text)+createImage_containerRecipeArn = Lens.lens (\CreateImage' {containerRecipeArn} -> containerRecipeArn) (\s@CreateImage' {} a -> s {containerRecipeArn = a} :: CreateImage)++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- defines and configures the outputs of your pipeline.+createImage_distributionConfigurationArn :: Lens.Lens' CreateImage (Prelude.Maybe Prelude.Text)+createImage_distributionConfigurationArn = Lens.lens (\CreateImage' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@CreateImage' {} a -> s {distributionConfigurationArn = a} :: CreateImage)++-- | Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+createImage_enhancedImageMetadataEnabled :: Lens.Lens' CreateImage (Prelude.Maybe Prelude.Bool)+createImage_enhancedImageMetadataEnabled = Lens.lens (\CreateImage' {enhancedImageMetadataEnabled} -> enhancedImageMetadataEnabled) (\s@CreateImage' {} a -> s {enhancedImageMetadataEnabled = a} :: CreateImage)++-- | The Amazon Resource Name (ARN) of the image recipe that defines how+-- images are configured, tested, and assessed.+createImage_imageRecipeArn :: Lens.Lens' CreateImage (Prelude.Maybe Prelude.Text)+createImage_imageRecipeArn = Lens.lens (\CreateImage' {imageRecipeArn} -> imageRecipeArn) (\s@CreateImage' {} a -> s {imageRecipeArn = a} :: CreateImage)++-- | The image tests configuration of the image.+createImage_imageTestsConfiguration :: Lens.Lens' CreateImage (Prelude.Maybe ImageTestsConfiguration)+createImage_imageTestsConfiguration = Lens.lens (\CreateImage' {imageTestsConfiguration} -> imageTestsConfiguration) (\s@CreateImage' {} a -> s {imageTestsConfiguration = a} :: CreateImage)++-- | The tags of the image.+createImage_tags :: Lens.Lens' CreateImage (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createImage_tags = Lens.lens (\CreateImage' {tags} -> tags) (\s@CreateImage' {} a -> s {tags = a} :: CreateImage) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- defines the environment in which your image will be built and tested.+createImage_infrastructureConfigurationArn :: Lens.Lens' CreateImage Prelude.Text+createImage_infrastructureConfigurationArn = Lens.lens (\CreateImage' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@CreateImage' {} a -> s {infrastructureConfigurationArn = a} :: CreateImage)++-- | The idempotency token used to make this request idempotent.+createImage_clientToken :: Lens.Lens' CreateImage Prelude.Text+createImage_clientToken = Lens.lens (\CreateImage' {clientToken} -> clientToken) (\s@CreateImage' {} a -> s {clientToken = a} :: CreateImage)++instance Core.AWSRequest CreateImage where+  type AWSResponse CreateImage = CreateImageResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateImageResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "imageBuildVersionArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateImage where+  hashWithSalt _salt CreateImage' {..} =+    _salt+      `Prelude.hashWithSalt` containerRecipeArn+      `Prelude.hashWithSalt` distributionConfigurationArn+      `Prelude.hashWithSalt` enhancedImageMetadataEnabled+      `Prelude.hashWithSalt` imageRecipeArn+      `Prelude.hashWithSalt` imageTestsConfiguration+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` infrastructureConfigurationArn+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData CreateImage where+  rnf CreateImage' {..} =+    Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf enhancedImageMetadataEnabled+      `Prelude.seq` Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf imageTestsConfiguration+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders CreateImage where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateImage where+  toJSON CreateImage' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("containerRecipeArn" Data..=)+              Prelude.<$> containerRecipeArn,+            ("distributionConfigurationArn" Data..=)+              Prelude.<$> distributionConfigurationArn,+            ("enhancedImageMetadataEnabled" Data..=)+              Prelude.<$> enhancedImageMetadataEnabled,+            ("imageRecipeArn" Data..=)+              Prelude.<$> imageRecipeArn,+            ("imageTestsConfiguration" Data..=)+              Prelude.<$> imageTestsConfiguration,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ( "infrastructureConfigurationArn"+                  Data..= infrastructureConfigurationArn+              ),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath CreateImage where+  toPath = Prelude.const "/CreateImage"++instance Data.ToQuery CreateImage where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateImageResponse' smart constructor.+data CreateImageResponse = CreateImageResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image that was created by this+    -- request.+    imageBuildVersionArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateImageResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createImageResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'imageBuildVersionArn', 'createImageResponse_imageBuildVersionArn' - The Amazon Resource Name (ARN) of the image that was created by this+-- request.+--+-- 'requestId', 'createImageResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'createImageResponse_httpStatus' - The response's http status code.+newCreateImageResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateImageResponse+newCreateImageResponse pHttpStatus_ =+  CreateImageResponse'+    { clientToken = Prelude.Nothing,+      imageBuildVersionArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token used to make this request idempotent.+createImageResponse_clientToken :: Lens.Lens' CreateImageResponse (Prelude.Maybe Prelude.Text)+createImageResponse_clientToken = Lens.lens (\CreateImageResponse' {clientToken} -> clientToken) (\s@CreateImageResponse' {} a -> s {clientToken = a} :: CreateImageResponse)++-- | The Amazon Resource Name (ARN) of the image that was created by this+-- request.+createImageResponse_imageBuildVersionArn :: Lens.Lens' CreateImageResponse (Prelude.Maybe Prelude.Text)+createImageResponse_imageBuildVersionArn = Lens.lens (\CreateImageResponse' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@CreateImageResponse' {} a -> s {imageBuildVersionArn = a} :: CreateImageResponse)++-- | The request ID that uniquely identifies this request.+createImageResponse_requestId :: Lens.Lens' CreateImageResponse (Prelude.Maybe Prelude.Text)+createImageResponse_requestId = Lens.lens (\CreateImageResponse' {requestId} -> requestId) (\s@CreateImageResponse' {} a -> s {requestId = a} :: CreateImageResponse)++-- | The response's http status code.+createImageResponse_httpStatus :: Lens.Lens' CreateImageResponse Prelude.Int+createImageResponse_httpStatus = Lens.lens (\CreateImageResponse' {httpStatus} -> httpStatus) (\s@CreateImageResponse' {} a -> s {httpStatus = a} :: CreateImageResponse)++instance Prelude.NFData CreateImageResponse where+  rnf CreateImageResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf imageBuildVersionArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/CreateImagePipeline.hs view
@@ -0,0 +1,381 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CreateImagePipeline+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a new image pipeline. Image pipelines enable you to automate the+-- creation and distribution of images.+module Amazonka.ImageBuilder.CreateImagePipeline+  ( -- * Creating a Request+    CreateImagePipeline (..),+    newCreateImagePipeline,++    -- * Request Lenses+    createImagePipeline_containerRecipeArn,+    createImagePipeline_description,+    createImagePipeline_distributionConfigurationArn,+    createImagePipeline_enhancedImageMetadataEnabled,+    createImagePipeline_imageRecipeArn,+    createImagePipeline_imageTestsConfiguration,+    createImagePipeline_schedule,+    createImagePipeline_status,+    createImagePipeline_tags,+    createImagePipeline_name,+    createImagePipeline_infrastructureConfigurationArn,+    createImagePipeline_clientToken,++    -- * Destructuring the Response+    CreateImagePipelineResponse (..),+    newCreateImagePipelineResponse,++    -- * Response Lenses+    createImagePipelineResponse_clientToken,+    createImagePipelineResponse_imagePipelineArn,+    createImagePipelineResponse_requestId,+    createImagePipelineResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateImagePipeline' smart constructor.+data CreateImagePipeline = CreateImagePipeline'+  { -- | The Amazon Resource Name (ARN) of the container recipe that is used to+    -- configure images created by this container pipeline.+    containerRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The description of the image pipeline.+    description :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- will be used to configure and distribute images created by this image+    -- pipeline.+    distributionConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Collects additional information about the image being created, including+    -- the operating system (OS) version and package list. This information is+    -- used to enhance the overall experience of using EC2 Image Builder.+    -- Enabled by default.+    enhancedImageMetadataEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The Amazon Resource Name (ARN) of the image recipe that will be used to+    -- configure images created by this image pipeline.+    imageRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The image test configuration of the image pipeline.+    imageTestsConfiguration :: Prelude.Maybe ImageTestsConfiguration,+    -- | The schedule of the image pipeline.+    schedule :: Prelude.Maybe Schedule,+    -- | The status of the image pipeline.+    status :: Prelude.Maybe PipelineStatus,+    -- | The tags of the image pipeline.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the image pipeline.+    name :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- will be used to build images created by this image pipeline.+    infrastructureConfigurationArn :: Prelude.Text,+    -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateImagePipeline' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'createImagePipeline_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe that is used to+-- configure images created by this container pipeline.+--+-- 'description', 'createImagePipeline_description' - The description of the image pipeline.+--+-- 'distributionConfigurationArn', 'createImagePipeline_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- will be used to configure and distribute images created by this image+-- pipeline.+--+-- 'enhancedImageMetadataEnabled', 'createImagePipeline_enhancedImageMetadataEnabled' - Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+--+-- 'imageRecipeArn', 'createImagePipeline_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that will be used to+-- configure images created by this image pipeline.+--+-- 'imageTestsConfiguration', 'createImagePipeline_imageTestsConfiguration' - The image test configuration of the image pipeline.+--+-- 'schedule', 'createImagePipeline_schedule' - The schedule of the image pipeline.+--+-- 'status', 'createImagePipeline_status' - The status of the image pipeline.+--+-- 'tags', 'createImagePipeline_tags' - The tags of the image pipeline.+--+-- 'name', 'createImagePipeline_name' - The name of the image pipeline.+--+-- 'infrastructureConfigurationArn', 'createImagePipeline_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- will be used to build images created by this image pipeline.+--+-- 'clientToken', 'createImagePipeline_clientToken' - The idempotency token used to make this request idempotent.+newCreateImagePipeline ::+  -- | 'name'+  Prelude.Text ->+  -- | 'infrastructureConfigurationArn'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  CreateImagePipeline+newCreateImagePipeline+  pName_+  pInfrastructureConfigurationArn_+  pClientToken_ =+    CreateImagePipeline'+      { containerRecipeArn =+          Prelude.Nothing,+        description = Prelude.Nothing,+        distributionConfigurationArn = Prelude.Nothing,+        enhancedImageMetadataEnabled = Prelude.Nothing,+        imageRecipeArn = Prelude.Nothing,+        imageTestsConfiguration = Prelude.Nothing,+        schedule = Prelude.Nothing,+        status = Prelude.Nothing,+        tags = Prelude.Nothing,+        name = pName_,+        infrastructureConfigurationArn =+          pInfrastructureConfigurationArn_,+        clientToken = pClientToken_+      }++-- | The Amazon Resource Name (ARN) of the container recipe that is used to+-- configure images created by this container pipeline.+createImagePipeline_containerRecipeArn :: Lens.Lens' CreateImagePipeline (Prelude.Maybe Prelude.Text)+createImagePipeline_containerRecipeArn = Lens.lens (\CreateImagePipeline' {containerRecipeArn} -> containerRecipeArn) (\s@CreateImagePipeline' {} a -> s {containerRecipeArn = a} :: CreateImagePipeline)++-- | The description of the image pipeline.+createImagePipeline_description :: Lens.Lens' CreateImagePipeline (Prelude.Maybe Prelude.Text)+createImagePipeline_description = Lens.lens (\CreateImagePipeline' {description} -> description) (\s@CreateImagePipeline' {} a -> s {description = a} :: CreateImagePipeline)++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- will be used to configure and distribute images created by this image+-- pipeline.+createImagePipeline_distributionConfigurationArn :: Lens.Lens' CreateImagePipeline (Prelude.Maybe Prelude.Text)+createImagePipeline_distributionConfigurationArn = Lens.lens (\CreateImagePipeline' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@CreateImagePipeline' {} a -> s {distributionConfigurationArn = a} :: CreateImagePipeline)++-- | Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+createImagePipeline_enhancedImageMetadataEnabled :: Lens.Lens' CreateImagePipeline (Prelude.Maybe Prelude.Bool)+createImagePipeline_enhancedImageMetadataEnabled = Lens.lens (\CreateImagePipeline' {enhancedImageMetadataEnabled} -> enhancedImageMetadataEnabled) (\s@CreateImagePipeline' {} a -> s {enhancedImageMetadataEnabled = a} :: CreateImagePipeline)++-- | The Amazon Resource Name (ARN) of the image recipe that will be used to+-- configure images created by this image pipeline.+createImagePipeline_imageRecipeArn :: Lens.Lens' CreateImagePipeline (Prelude.Maybe Prelude.Text)+createImagePipeline_imageRecipeArn = Lens.lens (\CreateImagePipeline' {imageRecipeArn} -> imageRecipeArn) (\s@CreateImagePipeline' {} a -> s {imageRecipeArn = a} :: CreateImagePipeline)++-- | The image test configuration of the image pipeline.+createImagePipeline_imageTestsConfiguration :: Lens.Lens' CreateImagePipeline (Prelude.Maybe ImageTestsConfiguration)+createImagePipeline_imageTestsConfiguration = Lens.lens (\CreateImagePipeline' {imageTestsConfiguration} -> imageTestsConfiguration) (\s@CreateImagePipeline' {} a -> s {imageTestsConfiguration = a} :: CreateImagePipeline)++-- | The schedule of the image pipeline.+createImagePipeline_schedule :: Lens.Lens' CreateImagePipeline (Prelude.Maybe Schedule)+createImagePipeline_schedule = Lens.lens (\CreateImagePipeline' {schedule} -> schedule) (\s@CreateImagePipeline' {} a -> s {schedule = a} :: CreateImagePipeline)++-- | The status of the image pipeline.+createImagePipeline_status :: Lens.Lens' CreateImagePipeline (Prelude.Maybe PipelineStatus)+createImagePipeline_status = Lens.lens (\CreateImagePipeline' {status} -> status) (\s@CreateImagePipeline' {} a -> s {status = a} :: CreateImagePipeline)++-- | The tags of the image pipeline.+createImagePipeline_tags :: Lens.Lens' CreateImagePipeline (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createImagePipeline_tags = Lens.lens (\CreateImagePipeline' {tags} -> tags) (\s@CreateImagePipeline' {} a -> s {tags = a} :: CreateImagePipeline) Prelude.. Lens.mapping Lens.coerced++-- | The name of the image pipeline.+createImagePipeline_name :: Lens.Lens' CreateImagePipeline Prelude.Text+createImagePipeline_name = Lens.lens (\CreateImagePipeline' {name} -> name) (\s@CreateImagePipeline' {} a -> s {name = a} :: CreateImagePipeline)++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- will be used to build images created by this image pipeline.+createImagePipeline_infrastructureConfigurationArn :: Lens.Lens' CreateImagePipeline Prelude.Text+createImagePipeline_infrastructureConfigurationArn = Lens.lens (\CreateImagePipeline' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@CreateImagePipeline' {} a -> s {infrastructureConfigurationArn = a} :: CreateImagePipeline)++-- | The idempotency token used to make this request idempotent.+createImagePipeline_clientToken :: Lens.Lens' CreateImagePipeline Prelude.Text+createImagePipeline_clientToken = Lens.lens (\CreateImagePipeline' {clientToken} -> clientToken) (\s@CreateImagePipeline' {} a -> s {clientToken = a} :: CreateImagePipeline)++instance Core.AWSRequest CreateImagePipeline where+  type+    AWSResponse CreateImagePipeline =+      CreateImagePipelineResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateImagePipelineResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "imagePipelineArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateImagePipeline where+  hashWithSalt _salt CreateImagePipeline' {..} =+    _salt+      `Prelude.hashWithSalt` containerRecipeArn+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` distributionConfigurationArn+      `Prelude.hashWithSalt` enhancedImageMetadataEnabled+      `Prelude.hashWithSalt` imageRecipeArn+      `Prelude.hashWithSalt` imageTestsConfiguration+      `Prelude.hashWithSalt` schedule+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` infrastructureConfigurationArn+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData CreateImagePipeline where+  rnf CreateImagePipeline' {..} =+    Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf enhancedImageMetadataEnabled+      `Prelude.seq` Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf imageTestsConfiguration+      `Prelude.seq` Prelude.rnf schedule+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders CreateImagePipeline where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateImagePipeline where+  toJSON CreateImagePipeline' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("containerRecipeArn" Data..=)+              Prelude.<$> containerRecipeArn,+            ("description" Data..=) Prelude.<$> description,+            ("distributionConfigurationArn" Data..=)+              Prelude.<$> distributionConfigurationArn,+            ("enhancedImageMetadataEnabled" Data..=)+              Prelude.<$> enhancedImageMetadataEnabled,+            ("imageRecipeArn" Data..=)+              Prelude.<$> imageRecipeArn,+            ("imageTestsConfiguration" Data..=)+              Prelude.<$> imageTestsConfiguration,+            ("schedule" Data..=) Prelude.<$> schedule,+            ("status" Data..=) Prelude.<$> status,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ( "infrastructureConfigurationArn"+                  Data..= infrastructureConfigurationArn+              ),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath CreateImagePipeline where+  toPath = Prelude.const "/CreateImagePipeline"++instance Data.ToQuery CreateImagePipeline where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateImagePipelineResponse' smart constructor.+data CreateImagePipelineResponse = CreateImagePipelineResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image pipeline that was created by+    -- this request.+    imagePipelineArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateImagePipelineResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createImagePipelineResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'imagePipelineArn', 'createImagePipelineResponse_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline that was created by+-- this request.+--+-- 'requestId', 'createImagePipelineResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'createImagePipelineResponse_httpStatus' - The response's http status code.+newCreateImagePipelineResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateImagePipelineResponse+newCreateImagePipelineResponse pHttpStatus_ =+  CreateImagePipelineResponse'+    { clientToken =+        Prelude.Nothing,+      imagePipelineArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token used to make this request idempotent.+createImagePipelineResponse_clientToken :: Lens.Lens' CreateImagePipelineResponse (Prelude.Maybe Prelude.Text)+createImagePipelineResponse_clientToken = Lens.lens (\CreateImagePipelineResponse' {clientToken} -> clientToken) (\s@CreateImagePipelineResponse' {} a -> s {clientToken = a} :: CreateImagePipelineResponse)++-- | The Amazon Resource Name (ARN) of the image pipeline that was created by+-- this request.+createImagePipelineResponse_imagePipelineArn :: Lens.Lens' CreateImagePipelineResponse (Prelude.Maybe Prelude.Text)+createImagePipelineResponse_imagePipelineArn = Lens.lens (\CreateImagePipelineResponse' {imagePipelineArn} -> imagePipelineArn) (\s@CreateImagePipelineResponse' {} a -> s {imagePipelineArn = a} :: CreateImagePipelineResponse)++-- | The request ID that uniquely identifies this request.+createImagePipelineResponse_requestId :: Lens.Lens' CreateImagePipelineResponse (Prelude.Maybe Prelude.Text)+createImagePipelineResponse_requestId = Lens.lens (\CreateImagePipelineResponse' {requestId} -> requestId) (\s@CreateImagePipelineResponse' {} a -> s {requestId = a} :: CreateImagePipelineResponse)++-- | The response's http status code.+createImagePipelineResponse_httpStatus :: Lens.Lens' CreateImagePipelineResponse Prelude.Int+createImagePipelineResponse_httpStatus = Lens.lens (\CreateImagePipelineResponse' {httpStatus} -> httpStatus) (\s@CreateImagePipelineResponse' {} a -> s {httpStatus = a} :: CreateImagePipelineResponse)++instance Prelude.NFData CreateImagePipelineResponse where+  rnf CreateImagePipelineResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf imagePipelineArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/CreateImageRecipe.hs view
@@ -0,0 +1,398 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CreateImageRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a new image recipe. Image recipes define how images are+-- configured, tested, and assessed.+module Amazonka.ImageBuilder.CreateImageRecipe+  ( -- * Creating a Request+    CreateImageRecipe (..),+    newCreateImageRecipe,++    -- * Request Lenses+    createImageRecipe_additionalInstanceConfiguration,+    createImageRecipe_blockDeviceMappings,+    createImageRecipe_description,+    createImageRecipe_tags,+    createImageRecipe_workingDirectory,+    createImageRecipe_name,+    createImageRecipe_semanticVersion,+    createImageRecipe_components,+    createImageRecipe_parentImage,+    createImageRecipe_clientToken,++    -- * Destructuring the Response+    CreateImageRecipeResponse (..),+    newCreateImageRecipeResponse,++    -- * Response Lenses+    createImageRecipeResponse_clientToken,+    createImageRecipeResponse_imageRecipeArn,+    createImageRecipeResponse_requestId,+    createImageRecipeResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateImageRecipe' smart constructor.+data CreateImageRecipe = CreateImageRecipe'+  { -- | Specify additional settings and launch scripts for your build instances.+    additionalInstanceConfiguration :: Prelude.Maybe AdditionalInstanceConfiguration,+    -- | The block device mappings of the image recipe.+    blockDeviceMappings :: Prelude.Maybe [InstanceBlockDeviceMapping],+    -- | The description of the image recipe.+    description :: Prelude.Maybe Prelude.Text,+    -- | The tags of the image recipe.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The working directory used during build and test workflows.+    workingDirectory :: Prelude.Maybe Prelude.Text,+    -- | The name of the image recipe.+    name :: Prelude.Text,+    -- | The semantic version of the image recipe. This version follows the+    -- semantic version syntax.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    semanticVersion :: Prelude.Text,+    -- | The components of the image recipe.+    components :: Prelude.NonEmpty ComponentConfiguration,+    -- | The base image of the image recipe. The value of the string can be the+    -- ARN of the base image or an AMI ID. The format for the ARN follows this+    -- example:+    -- @arn:aws:imagebuilder:us-west-2:aws:image\/windows-server-2016-english-full-base-x86\/x.x.x@.+    -- You can provide the specific version that you want to use, or you can+    -- use a wildcard in all of the fields. If you enter an AMI ID for the+    -- string value, you must have access to the AMI, and the AMI must be in+    -- the same Region in which you are using Image Builder.+    parentImage :: Prelude.Text,+    -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateImageRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'additionalInstanceConfiguration', 'createImageRecipe_additionalInstanceConfiguration' - Specify additional settings and launch scripts for your build instances.+--+-- 'blockDeviceMappings', 'createImageRecipe_blockDeviceMappings' - The block device mappings of the image recipe.+--+-- 'description', 'createImageRecipe_description' - The description of the image recipe.+--+-- 'tags', 'createImageRecipe_tags' - The tags of the image recipe.+--+-- 'workingDirectory', 'createImageRecipe_workingDirectory' - The working directory used during build and test workflows.+--+-- 'name', 'createImageRecipe_name' - The name of the image recipe.+--+-- 'semanticVersion', 'createImageRecipe_semanticVersion' - The semantic version of the image recipe. This version follows the+-- semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- 'components', 'createImageRecipe_components' - The components of the image recipe.+--+-- 'parentImage', 'createImageRecipe_parentImage' - The base image of the image recipe. The value of the string can be the+-- ARN of the base image or an AMI ID. The format for the ARN follows this+-- example:+-- @arn:aws:imagebuilder:us-west-2:aws:image\/windows-server-2016-english-full-base-x86\/x.x.x@.+-- You can provide the specific version that you want to use, or you can+-- use a wildcard in all of the fields. If you enter an AMI ID for the+-- string value, you must have access to the AMI, and the AMI must be in+-- the same Region in which you are using Image Builder.+--+-- 'clientToken', 'createImageRecipe_clientToken' - The idempotency token used to make this request idempotent.+newCreateImageRecipe ::+  -- | 'name'+  Prelude.Text ->+  -- | 'semanticVersion'+  Prelude.Text ->+  -- | 'components'+  Prelude.NonEmpty ComponentConfiguration ->+  -- | 'parentImage'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  CreateImageRecipe+newCreateImageRecipe+  pName_+  pSemanticVersion_+  pComponents_+  pParentImage_+  pClientToken_ =+    CreateImageRecipe'+      { additionalInstanceConfiguration =+          Prelude.Nothing,+        blockDeviceMappings = Prelude.Nothing,+        description = Prelude.Nothing,+        tags = Prelude.Nothing,+        workingDirectory = Prelude.Nothing,+        name = pName_,+        semanticVersion = pSemanticVersion_,+        components = Lens.coerced Lens.# pComponents_,+        parentImage = pParentImage_,+        clientToken = pClientToken_+      }++-- | Specify additional settings and launch scripts for your build instances.+createImageRecipe_additionalInstanceConfiguration :: Lens.Lens' CreateImageRecipe (Prelude.Maybe AdditionalInstanceConfiguration)+createImageRecipe_additionalInstanceConfiguration = Lens.lens (\CreateImageRecipe' {additionalInstanceConfiguration} -> additionalInstanceConfiguration) (\s@CreateImageRecipe' {} a -> s {additionalInstanceConfiguration = a} :: CreateImageRecipe)++-- | The block device mappings of the image recipe.+createImageRecipe_blockDeviceMappings :: Lens.Lens' CreateImageRecipe (Prelude.Maybe [InstanceBlockDeviceMapping])+createImageRecipe_blockDeviceMappings = Lens.lens (\CreateImageRecipe' {blockDeviceMappings} -> blockDeviceMappings) (\s@CreateImageRecipe' {} a -> s {blockDeviceMappings = a} :: CreateImageRecipe) Prelude.. Lens.mapping Lens.coerced++-- | The description of the image recipe.+createImageRecipe_description :: Lens.Lens' CreateImageRecipe (Prelude.Maybe Prelude.Text)+createImageRecipe_description = Lens.lens (\CreateImageRecipe' {description} -> description) (\s@CreateImageRecipe' {} a -> s {description = a} :: CreateImageRecipe)++-- | The tags of the image recipe.+createImageRecipe_tags :: Lens.Lens' CreateImageRecipe (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createImageRecipe_tags = Lens.lens (\CreateImageRecipe' {tags} -> tags) (\s@CreateImageRecipe' {} a -> s {tags = a} :: CreateImageRecipe) Prelude.. Lens.mapping Lens.coerced++-- | The working directory used during build and test workflows.+createImageRecipe_workingDirectory :: Lens.Lens' CreateImageRecipe (Prelude.Maybe Prelude.Text)+createImageRecipe_workingDirectory = Lens.lens (\CreateImageRecipe' {workingDirectory} -> workingDirectory) (\s@CreateImageRecipe' {} a -> s {workingDirectory = a} :: CreateImageRecipe)++-- | The name of the image recipe.+createImageRecipe_name :: Lens.Lens' CreateImageRecipe Prelude.Text+createImageRecipe_name = Lens.lens (\CreateImageRecipe' {name} -> name) (\s@CreateImageRecipe' {} a -> s {name = a} :: CreateImageRecipe)++-- | The semantic version of the image recipe. This version follows the+-- semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+createImageRecipe_semanticVersion :: Lens.Lens' CreateImageRecipe Prelude.Text+createImageRecipe_semanticVersion = Lens.lens (\CreateImageRecipe' {semanticVersion} -> semanticVersion) (\s@CreateImageRecipe' {} a -> s {semanticVersion = a} :: CreateImageRecipe)++-- | The components of the image recipe.+createImageRecipe_components :: Lens.Lens' CreateImageRecipe (Prelude.NonEmpty ComponentConfiguration)+createImageRecipe_components = Lens.lens (\CreateImageRecipe' {components} -> components) (\s@CreateImageRecipe' {} a -> s {components = a} :: CreateImageRecipe) Prelude.. Lens.coerced++-- | The base image of the image recipe. The value of the string can be the+-- ARN of the base image or an AMI ID. The format for the ARN follows this+-- example:+-- @arn:aws:imagebuilder:us-west-2:aws:image\/windows-server-2016-english-full-base-x86\/x.x.x@.+-- You can provide the specific version that you want to use, or you can+-- use a wildcard in all of the fields. If you enter an AMI ID for the+-- string value, you must have access to the AMI, and the AMI must be in+-- the same Region in which you are using Image Builder.+createImageRecipe_parentImage :: Lens.Lens' CreateImageRecipe Prelude.Text+createImageRecipe_parentImage = Lens.lens (\CreateImageRecipe' {parentImage} -> parentImage) (\s@CreateImageRecipe' {} a -> s {parentImage = a} :: CreateImageRecipe)++-- | The idempotency token used to make this request idempotent.+createImageRecipe_clientToken :: Lens.Lens' CreateImageRecipe Prelude.Text+createImageRecipe_clientToken = Lens.lens (\CreateImageRecipe' {clientToken} -> clientToken) (\s@CreateImageRecipe' {} a -> s {clientToken = a} :: CreateImageRecipe)++instance Core.AWSRequest CreateImageRecipe where+  type+    AWSResponse CreateImageRecipe =+      CreateImageRecipeResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateImageRecipeResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "imageRecipeArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateImageRecipe where+  hashWithSalt _salt CreateImageRecipe' {..} =+    _salt+      `Prelude.hashWithSalt` additionalInstanceConfiguration+      `Prelude.hashWithSalt` blockDeviceMappings+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` workingDirectory+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` semanticVersion+      `Prelude.hashWithSalt` components+      `Prelude.hashWithSalt` parentImage+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData CreateImageRecipe where+  rnf CreateImageRecipe' {..} =+    Prelude.rnf additionalInstanceConfiguration+      `Prelude.seq` Prelude.rnf blockDeviceMappings+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf workingDirectory+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf semanticVersion+      `Prelude.seq` Prelude.rnf components+      `Prelude.seq` Prelude.rnf parentImage+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders CreateImageRecipe where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateImageRecipe where+  toJSON CreateImageRecipe' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("additionalInstanceConfiguration" Data..=)+              Prelude.<$> additionalInstanceConfiguration,+            ("blockDeviceMappings" Data..=)+              Prelude.<$> blockDeviceMappings,+            ("description" Data..=) Prelude.<$> description,+            ("tags" Data..=) Prelude.<$> tags,+            ("workingDirectory" Data..=)+              Prelude.<$> workingDirectory,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("semanticVersion" Data..= semanticVersion),+            Prelude.Just ("components" Data..= components),+            Prelude.Just ("parentImage" Data..= parentImage),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath CreateImageRecipe where+  toPath = Prelude.const "/CreateImageRecipe"++instance Data.ToQuery CreateImageRecipe where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateImageRecipeResponse' smart constructor.+data CreateImageRecipeResponse = CreateImageRecipeResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image recipe that was created by+    -- this request.+    imageRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateImageRecipeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createImageRecipeResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'imageRecipeArn', 'createImageRecipeResponse_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that was created by+-- this request.+--+-- 'requestId', 'createImageRecipeResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'createImageRecipeResponse_httpStatus' - The response's http status code.+newCreateImageRecipeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateImageRecipeResponse+newCreateImageRecipeResponse pHttpStatus_ =+  CreateImageRecipeResponse'+    { clientToken =+        Prelude.Nothing,+      imageRecipeArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token used to make this request idempotent.+createImageRecipeResponse_clientToken :: Lens.Lens' CreateImageRecipeResponse (Prelude.Maybe Prelude.Text)+createImageRecipeResponse_clientToken = Lens.lens (\CreateImageRecipeResponse' {clientToken} -> clientToken) (\s@CreateImageRecipeResponse' {} a -> s {clientToken = a} :: CreateImageRecipeResponse)++-- | The Amazon Resource Name (ARN) of the image recipe that was created by+-- this request.+createImageRecipeResponse_imageRecipeArn :: Lens.Lens' CreateImageRecipeResponse (Prelude.Maybe Prelude.Text)+createImageRecipeResponse_imageRecipeArn = Lens.lens (\CreateImageRecipeResponse' {imageRecipeArn} -> imageRecipeArn) (\s@CreateImageRecipeResponse' {} a -> s {imageRecipeArn = a} :: CreateImageRecipeResponse)++-- | The request ID that uniquely identifies this request.+createImageRecipeResponse_requestId :: Lens.Lens' CreateImageRecipeResponse (Prelude.Maybe Prelude.Text)+createImageRecipeResponse_requestId = Lens.lens (\CreateImageRecipeResponse' {requestId} -> requestId) (\s@CreateImageRecipeResponse' {} a -> s {requestId = a} :: CreateImageRecipeResponse)++-- | The response's http status code.+createImageRecipeResponse_httpStatus :: Lens.Lens' CreateImageRecipeResponse Prelude.Int+createImageRecipeResponse_httpStatus = Lens.lens (\CreateImageRecipeResponse' {httpStatus} -> httpStatus) (\s@CreateImageRecipeResponse' {} a -> s {httpStatus = a} :: CreateImageRecipeResponse)++instance Prelude.NFData CreateImageRecipeResponse where+  rnf CreateImageRecipeResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/CreateInfrastructureConfiguration.hs view
@@ -0,0 +1,459 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.CreateInfrastructureConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a new infrastructure configuration. An infrastructure+-- configuration defines the environment in which your image will be built+-- and tested.+module Amazonka.ImageBuilder.CreateInfrastructureConfiguration+  ( -- * Creating a Request+    CreateInfrastructureConfiguration (..),+    newCreateInfrastructureConfiguration,++    -- * Request Lenses+    createInfrastructureConfiguration_description,+    createInfrastructureConfiguration_instanceMetadataOptions,+    createInfrastructureConfiguration_instanceTypes,+    createInfrastructureConfiguration_keyPair,+    createInfrastructureConfiguration_logging,+    createInfrastructureConfiguration_resourceTags,+    createInfrastructureConfiguration_securityGroupIds,+    createInfrastructureConfiguration_snsTopicArn,+    createInfrastructureConfiguration_subnetId,+    createInfrastructureConfiguration_tags,+    createInfrastructureConfiguration_terminateInstanceOnFailure,+    createInfrastructureConfiguration_name,+    createInfrastructureConfiguration_instanceProfileName,+    createInfrastructureConfiguration_clientToken,++    -- * Destructuring the Response+    CreateInfrastructureConfigurationResponse (..),+    newCreateInfrastructureConfigurationResponse,++    -- * Response Lenses+    createInfrastructureConfigurationResponse_clientToken,+    createInfrastructureConfigurationResponse_infrastructureConfigurationArn,+    createInfrastructureConfigurationResponse_requestId,+    createInfrastructureConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateInfrastructureConfiguration' smart constructor.+data CreateInfrastructureConfiguration = CreateInfrastructureConfiguration'+  { -- | The description of the infrastructure configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The instance metadata options that you can set for the HTTP requests+    -- that pipeline builds use to launch EC2 build and test instances.+    instanceMetadataOptions :: Prelude.Maybe InstanceMetadataOptions,+    -- | The instance types of the infrastructure configuration. You can specify+    -- one or more instance types to use for this build. The service will pick+    -- one of these instance types based on availability.+    instanceTypes :: Prelude.Maybe [Prelude.Text],+    -- | The key pair of the infrastructure configuration. You can use this to+    -- log on to and debug the instance used to create your image.+    keyPair :: Prelude.Maybe Prelude.Text,+    -- | The logging configuration of the infrastructure configuration.+    logging :: Prelude.Maybe Logging,+    -- | The tags attached to the resource created by Image Builder.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The security group IDs to associate with the instance used to customize+    -- your Amazon EC2 AMI.+    securityGroupIds :: Prelude.Maybe [Prelude.Text],+    -- | The Amazon Resource Name (ARN) for the SNS topic to which we send image+    -- build event notifications.+    --+    -- EC2 Image Builder is unable to send notifications to SNS topics that are+    -- encrypted using keys from other accounts. The key that is used to+    -- encrypt the SNS topic must reside in the account that the Image Builder+    -- service runs under.+    snsTopicArn :: Prelude.Maybe Prelude.Text,+    -- | The subnet ID in which to place the instance used to customize your+    -- Amazon EC2 AMI.+    subnetId :: Prelude.Maybe Prelude.Text,+    -- | The tags of the infrastructure configuration.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The terminate instance on failure setting of the infrastructure+    -- configuration. Set to false if you want Image Builder to retain the+    -- instance used to configure your AMI if the build or test phase of your+    -- workflow fails.+    terminateInstanceOnFailure :: Prelude.Maybe Prelude.Bool,+    -- | The name of the infrastructure configuration.+    name :: Prelude.Text,+    -- | The instance profile to associate with the instance used to customize+    -- your Amazon EC2 AMI.+    instanceProfileName :: Prelude.Text,+    -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateInfrastructureConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'createInfrastructureConfiguration_description' - The description of the infrastructure configuration.+--+-- 'instanceMetadataOptions', 'createInfrastructureConfiguration_instanceMetadataOptions' - The instance metadata options that you can set for the HTTP requests+-- that pipeline builds use to launch EC2 build and test instances.+--+-- 'instanceTypes', 'createInfrastructureConfiguration_instanceTypes' - The instance types of the infrastructure configuration. You can specify+-- one or more instance types to use for this build. The service will pick+-- one of these instance types based on availability.+--+-- 'keyPair', 'createInfrastructureConfiguration_keyPair' - The key pair of the infrastructure configuration. You can use this to+-- log on to and debug the instance used to create your image.+--+-- 'logging', 'createInfrastructureConfiguration_logging' - The logging configuration of the infrastructure configuration.+--+-- 'resourceTags', 'createInfrastructureConfiguration_resourceTags' - The tags attached to the resource created by Image Builder.+--+-- 'securityGroupIds', 'createInfrastructureConfiguration_securityGroupIds' - The security group IDs to associate with the instance used to customize+-- your Amazon EC2 AMI.+--+-- 'snsTopicArn', 'createInfrastructureConfiguration_snsTopicArn' - The Amazon Resource Name (ARN) for the SNS topic to which we send image+-- build event notifications.+--+-- EC2 Image Builder is unable to send notifications to SNS topics that are+-- encrypted using keys from other accounts. The key that is used to+-- encrypt the SNS topic must reside in the account that the Image Builder+-- service runs under.+--+-- 'subnetId', 'createInfrastructureConfiguration_subnetId' - The subnet ID in which to place the instance used to customize your+-- Amazon EC2 AMI.+--+-- 'tags', 'createInfrastructureConfiguration_tags' - The tags of the infrastructure configuration.+--+-- 'terminateInstanceOnFailure', 'createInfrastructureConfiguration_terminateInstanceOnFailure' - The terminate instance on failure setting of the infrastructure+-- configuration. Set to false if you want Image Builder to retain the+-- instance used to configure your AMI if the build or test phase of your+-- workflow fails.+--+-- 'name', 'createInfrastructureConfiguration_name' - The name of the infrastructure configuration.+--+-- 'instanceProfileName', 'createInfrastructureConfiguration_instanceProfileName' - The instance profile to associate with the instance used to customize+-- your Amazon EC2 AMI.+--+-- 'clientToken', 'createInfrastructureConfiguration_clientToken' - The idempotency token used to make this request idempotent.+newCreateInfrastructureConfiguration ::+  -- | 'name'+  Prelude.Text ->+  -- | 'instanceProfileName'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  CreateInfrastructureConfiguration+newCreateInfrastructureConfiguration+  pName_+  pInstanceProfileName_+  pClientToken_ =+    CreateInfrastructureConfiguration'+      { description =+          Prelude.Nothing,+        instanceMetadataOptions =+          Prelude.Nothing,+        instanceTypes = Prelude.Nothing,+        keyPair = Prelude.Nothing,+        logging = Prelude.Nothing,+        resourceTags = Prelude.Nothing,+        securityGroupIds = Prelude.Nothing,+        snsTopicArn = Prelude.Nothing,+        subnetId = Prelude.Nothing,+        tags = Prelude.Nothing,+        terminateInstanceOnFailure =+          Prelude.Nothing,+        name = pName_,+        instanceProfileName =+          pInstanceProfileName_,+        clientToken = pClientToken_+      }++-- | The description of the infrastructure configuration.+createInfrastructureConfiguration_description :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+createInfrastructureConfiguration_description = Lens.lens (\CreateInfrastructureConfiguration' {description} -> description) (\s@CreateInfrastructureConfiguration' {} a -> s {description = a} :: CreateInfrastructureConfiguration)++-- | The instance metadata options that you can set for the HTTP requests+-- that pipeline builds use to launch EC2 build and test instances.+createInfrastructureConfiguration_instanceMetadataOptions :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe InstanceMetadataOptions)+createInfrastructureConfiguration_instanceMetadataOptions = Lens.lens (\CreateInfrastructureConfiguration' {instanceMetadataOptions} -> instanceMetadataOptions) (\s@CreateInfrastructureConfiguration' {} a -> s {instanceMetadataOptions = a} :: CreateInfrastructureConfiguration)++-- | The instance types of the infrastructure configuration. You can specify+-- one or more instance types to use for this build. The service will pick+-- one of these instance types based on availability.+createInfrastructureConfiguration_instanceTypes :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe [Prelude.Text])+createInfrastructureConfiguration_instanceTypes = Lens.lens (\CreateInfrastructureConfiguration' {instanceTypes} -> instanceTypes) (\s@CreateInfrastructureConfiguration' {} a -> s {instanceTypes = a} :: CreateInfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The key pair of the infrastructure configuration. You can use this to+-- log on to and debug the instance used to create your image.+createInfrastructureConfiguration_keyPair :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+createInfrastructureConfiguration_keyPair = Lens.lens (\CreateInfrastructureConfiguration' {keyPair} -> keyPair) (\s@CreateInfrastructureConfiguration' {} a -> s {keyPair = a} :: CreateInfrastructureConfiguration)++-- | The logging configuration of the infrastructure configuration.+createInfrastructureConfiguration_logging :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe Logging)+createInfrastructureConfiguration_logging = Lens.lens (\CreateInfrastructureConfiguration' {logging} -> logging) (\s@CreateInfrastructureConfiguration' {} a -> s {logging = a} :: CreateInfrastructureConfiguration)++-- | The tags attached to the resource created by Image Builder.+createInfrastructureConfiguration_resourceTags :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createInfrastructureConfiguration_resourceTags = Lens.lens (\CreateInfrastructureConfiguration' {resourceTags} -> resourceTags) (\s@CreateInfrastructureConfiguration' {} a -> s {resourceTags = a} :: CreateInfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The security group IDs to associate with the instance used to customize+-- your Amazon EC2 AMI.+createInfrastructureConfiguration_securityGroupIds :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe [Prelude.Text])+createInfrastructureConfiguration_securityGroupIds = Lens.lens (\CreateInfrastructureConfiguration' {securityGroupIds} -> securityGroupIds) (\s@CreateInfrastructureConfiguration' {} a -> s {securityGroupIds = a} :: CreateInfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) for the SNS topic to which we send image+-- build event notifications.+--+-- EC2 Image Builder is unable to send notifications to SNS topics that are+-- encrypted using keys from other accounts. The key that is used to+-- encrypt the SNS topic must reside in the account that the Image Builder+-- service runs under.+createInfrastructureConfiguration_snsTopicArn :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+createInfrastructureConfiguration_snsTopicArn = Lens.lens (\CreateInfrastructureConfiguration' {snsTopicArn} -> snsTopicArn) (\s@CreateInfrastructureConfiguration' {} a -> s {snsTopicArn = a} :: CreateInfrastructureConfiguration)++-- | The subnet ID in which to place the instance used to customize your+-- Amazon EC2 AMI.+createInfrastructureConfiguration_subnetId :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+createInfrastructureConfiguration_subnetId = Lens.lens (\CreateInfrastructureConfiguration' {subnetId} -> subnetId) (\s@CreateInfrastructureConfiguration' {} a -> s {subnetId = a} :: CreateInfrastructureConfiguration)++-- | The tags of the infrastructure configuration.+createInfrastructureConfiguration_tags :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createInfrastructureConfiguration_tags = Lens.lens (\CreateInfrastructureConfiguration' {tags} -> tags) (\s@CreateInfrastructureConfiguration' {} a -> s {tags = a} :: CreateInfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The terminate instance on failure setting of the infrastructure+-- configuration. Set to false if you want Image Builder to retain the+-- instance used to configure your AMI if the build or test phase of your+-- workflow fails.+createInfrastructureConfiguration_terminateInstanceOnFailure :: Lens.Lens' CreateInfrastructureConfiguration (Prelude.Maybe Prelude.Bool)+createInfrastructureConfiguration_terminateInstanceOnFailure = Lens.lens (\CreateInfrastructureConfiguration' {terminateInstanceOnFailure} -> terminateInstanceOnFailure) (\s@CreateInfrastructureConfiguration' {} a -> s {terminateInstanceOnFailure = a} :: CreateInfrastructureConfiguration)++-- | The name of the infrastructure configuration.+createInfrastructureConfiguration_name :: Lens.Lens' CreateInfrastructureConfiguration Prelude.Text+createInfrastructureConfiguration_name = Lens.lens (\CreateInfrastructureConfiguration' {name} -> name) (\s@CreateInfrastructureConfiguration' {} a -> s {name = a} :: CreateInfrastructureConfiguration)++-- | The instance profile to associate with the instance used to customize+-- your Amazon EC2 AMI.+createInfrastructureConfiguration_instanceProfileName :: Lens.Lens' CreateInfrastructureConfiguration Prelude.Text+createInfrastructureConfiguration_instanceProfileName = Lens.lens (\CreateInfrastructureConfiguration' {instanceProfileName} -> instanceProfileName) (\s@CreateInfrastructureConfiguration' {} a -> s {instanceProfileName = a} :: CreateInfrastructureConfiguration)++-- | The idempotency token used to make this request idempotent.+createInfrastructureConfiguration_clientToken :: Lens.Lens' CreateInfrastructureConfiguration Prelude.Text+createInfrastructureConfiguration_clientToken = Lens.lens (\CreateInfrastructureConfiguration' {clientToken} -> clientToken) (\s@CreateInfrastructureConfiguration' {} a -> s {clientToken = a} :: CreateInfrastructureConfiguration)++instance+  Core.AWSRequest+    CreateInfrastructureConfiguration+  where+  type+    AWSResponse CreateInfrastructureConfiguration =+      CreateInfrastructureConfigurationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateInfrastructureConfigurationResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "infrastructureConfigurationArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    CreateInfrastructureConfiguration+  where+  hashWithSalt+    _salt+    CreateInfrastructureConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` instanceMetadataOptions+        `Prelude.hashWithSalt` instanceTypes+        `Prelude.hashWithSalt` keyPair+        `Prelude.hashWithSalt` logging+        `Prelude.hashWithSalt` resourceTags+        `Prelude.hashWithSalt` securityGroupIds+        `Prelude.hashWithSalt` snsTopicArn+        `Prelude.hashWithSalt` subnetId+        `Prelude.hashWithSalt` tags+        `Prelude.hashWithSalt` terminateInstanceOnFailure+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` instanceProfileName+        `Prelude.hashWithSalt` clientToken++instance+  Prelude.NFData+    CreateInfrastructureConfiguration+  where+  rnf CreateInfrastructureConfiguration' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf instanceMetadataOptions+      `Prelude.seq` Prelude.rnf instanceTypes+      `Prelude.seq` Prelude.rnf keyPair+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf securityGroupIds+      `Prelude.seq` Prelude.rnf snsTopicArn+      `Prelude.seq` Prelude.rnf subnetId+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf terminateInstanceOnFailure+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf instanceProfileName+      `Prelude.seq` Prelude.rnf clientToken++instance+  Data.ToHeaders+    CreateInfrastructureConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    CreateInfrastructureConfiguration+  where+  toJSON CreateInfrastructureConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("instanceMetadataOptions" Data..=)+              Prelude.<$> instanceMetadataOptions,+            ("instanceTypes" Data..=) Prelude.<$> instanceTypes,+            ("keyPair" Data..=) Prelude.<$> keyPair,+            ("logging" Data..=) Prelude.<$> logging,+            ("resourceTags" Data..=) Prelude.<$> resourceTags,+            ("securityGroupIds" Data..=)+              Prelude.<$> securityGroupIds,+            ("snsTopicArn" Data..=) Prelude.<$> snsTopicArn,+            ("subnetId" Data..=) Prelude.<$> subnetId,+            ("tags" Data..=) Prelude.<$> tags,+            ("terminateInstanceOnFailure" Data..=)+              Prelude.<$> terminateInstanceOnFailure,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("instanceProfileName" Data..= instanceProfileName),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance+  Data.ToPath+    CreateInfrastructureConfiguration+  where+  toPath =+    Prelude.const "/CreateInfrastructureConfiguration"++instance+  Data.ToQuery+    CreateInfrastructureConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateInfrastructureConfigurationResponse' smart constructor.+data CreateInfrastructureConfigurationResponse = CreateInfrastructureConfigurationResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- was created by this request.+    infrastructureConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateInfrastructureConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createInfrastructureConfigurationResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'infrastructureConfigurationArn', 'createInfrastructureConfigurationResponse_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- was created by this request.+--+-- 'requestId', 'createInfrastructureConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'createInfrastructureConfigurationResponse_httpStatus' - The response's http status code.+newCreateInfrastructureConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateInfrastructureConfigurationResponse+newCreateInfrastructureConfigurationResponse+  pHttpStatus_ =+    CreateInfrastructureConfigurationResponse'+      { clientToken =+          Prelude.Nothing,+        infrastructureConfigurationArn =+          Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The idempotency token used to make this request idempotent.+createInfrastructureConfigurationResponse_clientToken :: Lens.Lens' CreateInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+createInfrastructureConfigurationResponse_clientToken = Lens.lens (\CreateInfrastructureConfigurationResponse' {clientToken} -> clientToken) (\s@CreateInfrastructureConfigurationResponse' {} a -> s {clientToken = a} :: CreateInfrastructureConfigurationResponse)++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- was created by this request.+createInfrastructureConfigurationResponse_infrastructureConfigurationArn :: Lens.Lens' CreateInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+createInfrastructureConfigurationResponse_infrastructureConfigurationArn = Lens.lens (\CreateInfrastructureConfigurationResponse' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@CreateInfrastructureConfigurationResponse' {} a -> s {infrastructureConfigurationArn = a} :: CreateInfrastructureConfigurationResponse)++-- | The request ID that uniquely identifies this request.+createInfrastructureConfigurationResponse_requestId :: Lens.Lens' CreateInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+createInfrastructureConfigurationResponse_requestId = Lens.lens (\CreateInfrastructureConfigurationResponse' {requestId} -> requestId) (\s@CreateInfrastructureConfigurationResponse' {} a -> s {requestId = a} :: CreateInfrastructureConfigurationResponse)++-- | The response's http status code.+createInfrastructureConfigurationResponse_httpStatus :: Lens.Lens' CreateInfrastructureConfigurationResponse Prelude.Int+createInfrastructureConfigurationResponse_httpStatus = Lens.lens (\CreateInfrastructureConfigurationResponse' {httpStatus} -> httpStatus) (\s@CreateInfrastructureConfigurationResponse' {} a -> s {httpStatus = a} :: CreateInfrastructureConfigurationResponse)++instance+  Prelude.NFData+    CreateInfrastructureConfigurationResponse+  where+  rnf CreateInfrastructureConfigurationResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/DeleteComponent.hs view
@@ -0,0 +1,181 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.DeleteComponent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a component build version.+module Amazonka.ImageBuilder.DeleteComponent+  ( -- * Creating a Request+    DeleteComponent (..),+    newDeleteComponent,++    -- * Request Lenses+    deleteComponent_componentBuildVersionArn,++    -- * Destructuring the Response+    DeleteComponentResponse (..),+    newDeleteComponentResponse,++    -- * Response Lenses+    deleteComponentResponse_componentBuildVersionArn,+    deleteComponentResponse_requestId,+    deleteComponentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteComponent' smart constructor.+data DeleteComponent = DeleteComponent'+  { -- | The Amazon Resource Name (ARN) of the component build version to delete.+    componentBuildVersionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentBuildVersionArn', 'deleteComponent_componentBuildVersionArn' - The Amazon Resource Name (ARN) of the component build version to delete.+newDeleteComponent ::+  -- | 'componentBuildVersionArn'+  Prelude.Text ->+  DeleteComponent+newDeleteComponent pComponentBuildVersionArn_ =+  DeleteComponent'+    { componentBuildVersionArn =+        pComponentBuildVersionArn_+    }++-- | The Amazon Resource Name (ARN) of the component build version to delete.+deleteComponent_componentBuildVersionArn :: Lens.Lens' DeleteComponent Prelude.Text+deleteComponent_componentBuildVersionArn = Lens.lens (\DeleteComponent' {componentBuildVersionArn} -> componentBuildVersionArn) (\s@DeleteComponent' {} a -> s {componentBuildVersionArn = a} :: DeleteComponent)++instance Core.AWSRequest DeleteComponent where+  type+    AWSResponse DeleteComponent =+      DeleteComponentResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteComponentResponse'+            Prelude.<$> (x Data..?> "componentBuildVersionArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteComponent where+  hashWithSalt _salt DeleteComponent' {..} =+    _salt+      `Prelude.hashWithSalt` componentBuildVersionArn++instance Prelude.NFData DeleteComponent where+  rnf DeleteComponent' {..} =+    Prelude.rnf componentBuildVersionArn++instance Data.ToHeaders DeleteComponent where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteComponent where+  toPath = Prelude.const "/DeleteComponent"++instance Data.ToQuery DeleteComponent where+  toQuery DeleteComponent' {..} =+    Prelude.mconcat+      [ "componentBuildVersionArn"+          Data.=: componentBuildVersionArn+      ]++-- | /See:/ 'newDeleteComponentResponse' smart constructor.+data DeleteComponentResponse = DeleteComponentResponse'+  { -- | The Amazon Resource Name (ARN) of the component build version that was+    -- deleted.+    componentBuildVersionArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteComponentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentBuildVersionArn', 'deleteComponentResponse_componentBuildVersionArn' - The Amazon Resource Name (ARN) of the component build version that was+-- deleted.+--+-- 'requestId', 'deleteComponentResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'deleteComponentResponse_httpStatus' - The response's http status code.+newDeleteComponentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteComponentResponse+newDeleteComponentResponse pHttpStatus_ =+  DeleteComponentResponse'+    { componentBuildVersionArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the component build version that was+-- deleted.+deleteComponentResponse_componentBuildVersionArn :: Lens.Lens' DeleteComponentResponse (Prelude.Maybe Prelude.Text)+deleteComponentResponse_componentBuildVersionArn = Lens.lens (\DeleteComponentResponse' {componentBuildVersionArn} -> componentBuildVersionArn) (\s@DeleteComponentResponse' {} a -> s {componentBuildVersionArn = a} :: DeleteComponentResponse)++-- | The request ID that uniquely identifies this request.+deleteComponentResponse_requestId :: Lens.Lens' DeleteComponentResponse (Prelude.Maybe Prelude.Text)+deleteComponentResponse_requestId = Lens.lens (\DeleteComponentResponse' {requestId} -> requestId) (\s@DeleteComponentResponse' {} a -> s {requestId = a} :: DeleteComponentResponse)++-- | The response's http status code.+deleteComponentResponse_httpStatus :: Lens.Lens' DeleteComponentResponse Prelude.Int+deleteComponentResponse_httpStatus = Lens.lens (\DeleteComponentResponse' {httpStatus} -> httpStatus) (\s@DeleteComponentResponse' {} a -> s {httpStatus = a} :: DeleteComponentResponse)++instance Prelude.NFData DeleteComponentResponse where+  rnf DeleteComponentResponse' {..} =+    Prelude.rnf componentBuildVersionArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/DeleteContainerRecipe.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.DeleteContainerRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a container recipe.+module Amazonka.ImageBuilder.DeleteContainerRecipe+  ( -- * Creating a Request+    DeleteContainerRecipe (..),+    newDeleteContainerRecipe,++    -- * Request Lenses+    deleteContainerRecipe_containerRecipeArn,++    -- * Destructuring the Response+    DeleteContainerRecipeResponse (..),+    newDeleteContainerRecipeResponse,++    -- * Response Lenses+    deleteContainerRecipeResponse_containerRecipeArn,+    deleteContainerRecipeResponse_requestId,+    deleteContainerRecipeResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteContainerRecipe' smart constructor.+data DeleteContainerRecipe = DeleteContainerRecipe'+  { -- | The Amazon Resource Name (ARN) of the container recipe to delete.+    containerRecipeArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteContainerRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'deleteContainerRecipe_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe to delete.+newDeleteContainerRecipe ::+  -- | 'containerRecipeArn'+  Prelude.Text ->+  DeleteContainerRecipe+newDeleteContainerRecipe pContainerRecipeArn_ =+  DeleteContainerRecipe'+    { containerRecipeArn =+        pContainerRecipeArn_+    }++-- | The Amazon Resource Name (ARN) of the container recipe to delete.+deleteContainerRecipe_containerRecipeArn :: Lens.Lens' DeleteContainerRecipe Prelude.Text+deleteContainerRecipe_containerRecipeArn = Lens.lens (\DeleteContainerRecipe' {containerRecipeArn} -> containerRecipeArn) (\s@DeleteContainerRecipe' {} a -> s {containerRecipeArn = a} :: DeleteContainerRecipe)++instance Core.AWSRequest DeleteContainerRecipe where+  type+    AWSResponse DeleteContainerRecipe =+      DeleteContainerRecipeResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteContainerRecipeResponse'+            Prelude.<$> (x Data..?> "containerRecipeArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteContainerRecipe where+  hashWithSalt _salt DeleteContainerRecipe' {..} =+    _salt `Prelude.hashWithSalt` containerRecipeArn++instance Prelude.NFData DeleteContainerRecipe where+  rnf DeleteContainerRecipe' {..} =+    Prelude.rnf containerRecipeArn++instance Data.ToHeaders DeleteContainerRecipe where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteContainerRecipe where+  toPath = Prelude.const "/DeleteContainerRecipe"++instance Data.ToQuery DeleteContainerRecipe where+  toQuery DeleteContainerRecipe' {..} =+    Prelude.mconcat+      ["containerRecipeArn" Data.=: containerRecipeArn]++-- | /See:/ 'newDeleteContainerRecipeResponse' smart constructor.+data DeleteContainerRecipeResponse = DeleteContainerRecipeResponse'+  { -- | The Amazon Resource Name (ARN) of the container recipe that was deleted.+    containerRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteContainerRecipeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'deleteContainerRecipeResponse_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe that was deleted.+--+-- 'requestId', 'deleteContainerRecipeResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'deleteContainerRecipeResponse_httpStatus' - The response's http status code.+newDeleteContainerRecipeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteContainerRecipeResponse+newDeleteContainerRecipeResponse pHttpStatus_ =+  DeleteContainerRecipeResponse'+    { containerRecipeArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the container recipe that was deleted.+deleteContainerRecipeResponse_containerRecipeArn :: Lens.Lens' DeleteContainerRecipeResponse (Prelude.Maybe Prelude.Text)+deleteContainerRecipeResponse_containerRecipeArn = Lens.lens (\DeleteContainerRecipeResponse' {containerRecipeArn} -> containerRecipeArn) (\s@DeleteContainerRecipeResponse' {} a -> s {containerRecipeArn = a} :: DeleteContainerRecipeResponse)++-- | The request ID that uniquely identifies this request.+deleteContainerRecipeResponse_requestId :: Lens.Lens' DeleteContainerRecipeResponse (Prelude.Maybe Prelude.Text)+deleteContainerRecipeResponse_requestId = Lens.lens (\DeleteContainerRecipeResponse' {requestId} -> requestId) (\s@DeleteContainerRecipeResponse' {} a -> s {requestId = a} :: DeleteContainerRecipeResponse)++-- | The response's http status code.+deleteContainerRecipeResponse_httpStatus :: Lens.Lens' DeleteContainerRecipeResponse Prelude.Int+deleteContainerRecipeResponse_httpStatus = Lens.lens (\DeleteContainerRecipeResponse' {httpStatus} -> httpStatus) (\s@DeleteContainerRecipeResponse' {} a -> s {httpStatus = a} :: DeleteContainerRecipeResponse)++instance Prelude.NFData DeleteContainerRecipeResponse where+  rnf DeleteContainerRecipeResponse' {..} =+    Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/DeleteDistributionConfiguration.hs view
@@ -0,0 +1,204 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.DeleteDistributionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes a distribution configuration.+module Amazonka.ImageBuilder.DeleteDistributionConfiguration+  ( -- * Creating a Request+    DeleteDistributionConfiguration (..),+    newDeleteDistributionConfiguration,++    -- * Request Lenses+    deleteDistributionConfiguration_distributionConfigurationArn,++    -- * Destructuring the Response+    DeleteDistributionConfigurationResponse (..),+    newDeleteDistributionConfigurationResponse,++    -- * Response Lenses+    deleteDistributionConfigurationResponse_distributionConfigurationArn,+    deleteDistributionConfigurationResponse_requestId,+    deleteDistributionConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteDistributionConfiguration' smart constructor.+data DeleteDistributionConfiguration = DeleteDistributionConfiguration'+  { -- | The Amazon Resource Name (ARN) of the distribution configuration to+    -- delete.+    distributionConfigurationArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDistributionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'distributionConfigurationArn', 'deleteDistributionConfiguration_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration to+-- delete.+newDeleteDistributionConfiguration ::+  -- | 'distributionConfigurationArn'+  Prelude.Text ->+  DeleteDistributionConfiguration+newDeleteDistributionConfiguration+  pDistributionConfigurationArn_ =+    DeleteDistributionConfiguration'+      { distributionConfigurationArn =+          pDistributionConfigurationArn_+      }++-- | The Amazon Resource Name (ARN) of the distribution configuration to+-- delete.+deleteDistributionConfiguration_distributionConfigurationArn :: Lens.Lens' DeleteDistributionConfiguration Prelude.Text+deleteDistributionConfiguration_distributionConfigurationArn = Lens.lens (\DeleteDistributionConfiguration' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@DeleteDistributionConfiguration' {} a -> s {distributionConfigurationArn = a} :: DeleteDistributionConfiguration)++instance+  Core.AWSRequest+    DeleteDistributionConfiguration+  where+  type+    AWSResponse DeleteDistributionConfiguration =+      DeleteDistributionConfigurationResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteDistributionConfigurationResponse'+            Prelude.<$> (x Data..?> "distributionConfigurationArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DeleteDistributionConfiguration+  where+  hashWithSalt+    _salt+    DeleteDistributionConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` distributionConfigurationArn++instance+  Prelude.NFData+    DeleteDistributionConfiguration+  where+  rnf DeleteDistributionConfiguration' {..} =+    Prelude.rnf distributionConfigurationArn++instance+  Data.ToHeaders+    DeleteDistributionConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteDistributionConfiguration where+  toPath =+    Prelude.const "/DeleteDistributionConfiguration"++instance Data.ToQuery DeleteDistributionConfiguration where+  toQuery DeleteDistributionConfiguration' {..} =+    Prelude.mconcat+      [ "distributionConfigurationArn"+          Data.=: distributionConfigurationArn+      ]++-- | /See:/ 'newDeleteDistributionConfigurationResponse' smart constructor.+data DeleteDistributionConfigurationResponse = DeleteDistributionConfigurationResponse'+  { -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- was deleted.+    distributionConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDistributionConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'distributionConfigurationArn', 'deleteDistributionConfigurationResponse_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- was deleted.+--+-- 'requestId', 'deleteDistributionConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'deleteDistributionConfigurationResponse_httpStatus' - The response's http status code.+newDeleteDistributionConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteDistributionConfigurationResponse+newDeleteDistributionConfigurationResponse+  pHttpStatus_ =+    DeleteDistributionConfigurationResponse'+      { distributionConfigurationArn =+          Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- was deleted.+deleteDistributionConfigurationResponse_distributionConfigurationArn :: Lens.Lens' DeleteDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+deleteDistributionConfigurationResponse_distributionConfigurationArn = Lens.lens (\DeleteDistributionConfigurationResponse' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@DeleteDistributionConfigurationResponse' {} a -> s {distributionConfigurationArn = a} :: DeleteDistributionConfigurationResponse)++-- | The request ID that uniquely identifies this request.+deleteDistributionConfigurationResponse_requestId :: Lens.Lens' DeleteDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+deleteDistributionConfigurationResponse_requestId = Lens.lens (\DeleteDistributionConfigurationResponse' {requestId} -> requestId) (\s@DeleteDistributionConfigurationResponse' {} a -> s {requestId = a} :: DeleteDistributionConfigurationResponse)++-- | The response's http status code.+deleteDistributionConfigurationResponse_httpStatus :: Lens.Lens' DeleteDistributionConfigurationResponse Prelude.Int+deleteDistributionConfigurationResponse_httpStatus = Lens.lens (\DeleteDistributionConfigurationResponse' {httpStatus} -> httpStatus) (\s@DeleteDistributionConfigurationResponse' {} a -> s {httpStatus = a} :: DeleteDistributionConfigurationResponse)++instance+  Prelude.NFData+    DeleteDistributionConfigurationResponse+  where+  rnf DeleteDistributionConfigurationResponse' {..} =+    Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/DeleteImage.hs view
@@ -0,0 +1,194 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.DeleteImage+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an Image Builder image resource. This does not delete any EC2+-- AMIs or ECR container images that are created during the image build+-- process. You must clean those up separately, using the appropriate+-- Amazon EC2 or Amazon ECR console actions, or API or CLI commands.+--+-- -   To deregister an EC2 Linux AMI, see+--     <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html Deregister your Linux AMI>+--     in the //Amazon EC2 User Guide// .+--+-- -   To deregister an EC2 Windows AMI, see+--     <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/deregister-ami.html Deregister your Windows AMI>+--     in the //Amazon EC2 Windows Guide// .+--+-- -   To delete a container image from Amazon ECR, see+--     <https://docs.aws.amazon.com/AmazonECR/latest/userguide/delete_image.html Deleting an image>+--     in the /Amazon ECR User Guide/.+module Amazonka.ImageBuilder.DeleteImage+  ( -- * Creating a Request+    DeleteImage (..),+    newDeleteImage,++    -- * Request Lenses+    deleteImage_imageBuildVersionArn,++    -- * Destructuring the Response+    DeleteImageResponse (..),+    newDeleteImageResponse,++    -- * Response Lenses+    deleteImageResponse_imageBuildVersionArn,+    deleteImageResponse_requestId,+    deleteImageResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteImage' smart constructor.+data DeleteImage = DeleteImage'+  { -- | The Amazon Resource Name (ARN) of the Image Builder image resource to+    -- delete.+    imageBuildVersionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteImage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageBuildVersionArn', 'deleteImage_imageBuildVersionArn' - The Amazon Resource Name (ARN) of the Image Builder image resource to+-- delete.+newDeleteImage ::+  -- | 'imageBuildVersionArn'+  Prelude.Text ->+  DeleteImage+newDeleteImage pImageBuildVersionArn_ =+  DeleteImage'+    { imageBuildVersionArn =+        pImageBuildVersionArn_+    }++-- | The Amazon Resource Name (ARN) of the Image Builder image resource to+-- delete.+deleteImage_imageBuildVersionArn :: Lens.Lens' DeleteImage Prelude.Text+deleteImage_imageBuildVersionArn = Lens.lens (\DeleteImage' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@DeleteImage' {} a -> s {imageBuildVersionArn = a} :: DeleteImage)++instance Core.AWSRequest DeleteImage where+  type AWSResponse DeleteImage = DeleteImageResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteImageResponse'+            Prelude.<$> (x Data..?> "imageBuildVersionArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteImage where+  hashWithSalt _salt DeleteImage' {..} =+    _salt `Prelude.hashWithSalt` imageBuildVersionArn++instance Prelude.NFData DeleteImage where+  rnf DeleteImage' {..} =+    Prelude.rnf imageBuildVersionArn++instance Data.ToHeaders DeleteImage where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteImage where+  toPath = Prelude.const "/DeleteImage"++instance Data.ToQuery DeleteImage where+  toQuery DeleteImage' {..} =+    Prelude.mconcat+      ["imageBuildVersionArn" Data.=: imageBuildVersionArn]++-- | /See:/ 'newDeleteImageResponse' smart constructor.+data DeleteImageResponse = DeleteImageResponse'+  { -- | The Amazon Resource Name (ARN) of the Image Builder image resource that+    -- was deleted.+    imageBuildVersionArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteImageResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageBuildVersionArn', 'deleteImageResponse_imageBuildVersionArn' - The Amazon Resource Name (ARN) of the Image Builder image resource that+-- was deleted.+--+-- 'requestId', 'deleteImageResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'deleteImageResponse_httpStatus' - The response's http status code.+newDeleteImageResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteImageResponse+newDeleteImageResponse pHttpStatus_ =+  DeleteImageResponse'+    { imageBuildVersionArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the Image Builder image resource that+-- was deleted.+deleteImageResponse_imageBuildVersionArn :: Lens.Lens' DeleteImageResponse (Prelude.Maybe Prelude.Text)+deleteImageResponse_imageBuildVersionArn = Lens.lens (\DeleteImageResponse' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@DeleteImageResponse' {} a -> s {imageBuildVersionArn = a} :: DeleteImageResponse)++-- | The request ID that uniquely identifies this request.+deleteImageResponse_requestId :: Lens.Lens' DeleteImageResponse (Prelude.Maybe Prelude.Text)+deleteImageResponse_requestId = Lens.lens (\DeleteImageResponse' {requestId} -> requestId) (\s@DeleteImageResponse' {} a -> s {requestId = a} :: DeleteImageResponse)++-- | The response's http status code.+deleteImageResponse_httpStatus :: Lens.Lens' DeleteImageResponse Prelude.Int+deleteImageResponse_httpStatus = Lens.lens (\DeleteImageResponse' {httpStatus} -> httpStatus) (\s@DeleteImageResponse' {} a -> s {httpStatus = a} :: DeleteImageResponse)++instance Prelude.NFData DeleteImageResponse where+  rnf DeleteImageResponse' {..} =+    Prelude.rnf imageBuildVersionArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/DeleteImagePipeline.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.DeleteImagePipeline+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an image pipeline.+module Amazonka.ImageBuilder.DeleteImagePipeline+  ( -- * Creating a Request+    DeleteImagePipeline (..),+    newDeleteImagePipeline,++    -- * Request Lenses+    deleteImagePipeline_imagePipelineArn,++    -- * Destructuring the Response+    DeleteImagePipelineResponse (..),+    newDeleteImagePipelineResponse,++    -- * Response Lenses+    deleteImagePipelineResponse_imagePipelineArn,+    deleteImagePipelineResponse_requestId,+    deleteImagePipelineResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteImagePipeline' smart constructor.+data DeleteImagePipeline = DeleteImagePipeline'+  { -- | The Amazon Resource Name (ARN) of the image pipeline to delete.+    imagePipelineArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteImagePipeline' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imagePipelineArn', 'deleteImagePipeline_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline to delete.+newDeleteImagePipeline ::+  -- | 'imagePipelineArn'+  Prelude.Text ->+  DeleteImagePipeline+newDeleteImagePipeline pImagePipelineArn_ =+  DeleteImagePipeline'+    { imagePipelineArn =+        pImagePipelineArn_+    }++-- | The Amazon Resource Name (ARN) of the image pipeline to delete.+deleteImagePipeline_imagePipelineArn :: Lens.Lens' DeleteImagePipeline Prelude.Text+deleteImagePipeline_imagePipelineArn = Lens.lens (\DeleteImagePipeline' {imagePipelineArn} -> imagePipelineArn) (\s@DeleteImagePipeline' {} a -> s {imagePipelineArn = a} :: DeleteImagePipeline)++instance Core.AWSRequest DeleteImagePipeline where+  type+    AWSResponse DeleteImagePipeline =+      DeleteImagePipelineResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteImagePipelineResponse'+            Prelude.<$> (x Data..?> "imagePipelineArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteImagePipeline where+  hashWithSalt _salt DeleteImagePipeline' {..} =+    _salt `Prelude.hashWithSalt` imagePipelineArn++instance Prelude.NFData DeleteImagePipeline where+  rnf DeleteImagePipeline' {..} =+    Prelude.rnf imagePipelineArn++instance Data.ToHeaders DeleteImagePipeline where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteImagePipeline where+  toPath = Prelude.const "/DeleteImagePipeline"++instance Data.ToQuery DeleteImagePipeline where+  toQuery DeleteImagePipeline' {..} =+    Prelude.mconcat+      ["imagePipelineArn" Data.=: imagePipelineArn]++-- | /See:/ 'newDeleteImagePipelineResponse' smart constructor.+data DeleteImagePipelineResponse = DeleteImagePipelineResponse'+  { -- | The Amazon Resource Name (ARN) of the image pipeline that was deleted.+    imagePipelineArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteImagePipelineResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imagePipelineArn', 'deleteImagePipelineResponse_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline that was deleted.+--+-- 'requestId', 'deleteImagePipelineResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'deleteImagePipelineResponse_httpStatus' - The response's http status code.+newDeleteImagePipelineResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteImagePipelineResponse+newDeleteImagePipelineResponse pHttpStatus_ =+  DeleteImagePipelineResponse'+    { imagePipelineArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the image pipeline that was deleted.+deleteImagePipelineResponse_imagePipelineArn :: Lens.Lens' DeleteImagePipelineResponse (Prelude.Maybe Prelude.Text)+deleteImagePipelineResponse_imagePipelineArn = Lens.lens (\DeleteImagePipelineResponse' {imagePipelineArn} -> imagePipelineArn) (\s@DeleteImagePipelineResponse' {} a -> s {imagePipelineArn = a} :: DeleteImagePipelineResponse)++-- | The request ID that uniquely identifies this request.+deleteImagePipelineResponse_requestId :: Lens.Lens' DeleteImagePipelineResponse (Prelude.Maybe Prelude.Text)+deleteImagePipelineResponse_requestId = Lens.lens (\DeleteImagePipelineResponse' {requestId} -> requestId) (\s@DeleteImagePipelineResponse' {} a -> s {requestId = a} :: DeleteImagePipelineResponse)++-- | The response's http status code.+deleteImagePipelineResponse_httpStatus :: Lens.Lens' DeleteImagePipelineResponse Prelude.Int+deleteImagePipelineResponse_httpStatus = Lens.lens (\DeleteImagePipelineResponse' {httpStatus} -> httpStatus) (\s@DeleteImagePipelineResponse' {} a -> s {httpStatus = a} :: DeleteImagePipelineResponse)++instance Prelude.NFData DeleteImagePipelineResponse where+  rnf DeleteImagePipelineResponse' {..} =+    Prelude.rnf imagePipelineArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/DeleteImageRecipe.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.DeleteImageRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an image recipe.+module Amazonka.ImageBuilder.DeleteImageRecipe+  ( -- * Creating a Request+    DeleteImageRecipe (..),+    newDeleteImageRecipe,++    -- * Request Lenses+    deleteImageRecipe_imageRecipeArn,++    -- * Destructuring the Response+    DeleteImageRecipeResponse (..),+    newDeleteImageRecipeResponse,++    -- * Response Lenses+    deleteImageRecipeResponse_imageRecipeArn,+    deleteImageRecipeResponse_requestId,+    deleteImageRecipeResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteImageRecipe' smart constructor.+data DeleteImageRecipe = DeleteImageRecipe'+  { -- | The Amazon Resource Name (ARN) of the image recipe to delete.+    imageRecipeArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteImageRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipeArn', 'deleteImageRecipe_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe to delete.+newDeleteImageRecipe ::+  -- | 'imageRecipeArn'+  Prelude.Text ->+  DeleteImageRecipe+newDeleteImageRecipe pImageRecipeArn_ =+  DeleteImageRecipe'+    { imageRecipeArn =+        pImageRecipeArn_+    }++-- | The Amazon Resource Name (ARN) of the image recipe to delete.+deleteImageRecipe_imageRecipeArn :: Lens.Lens' DeleteImageRecipe Prelude.Text+deleteImageRecipe_imageRecipeArn = Lens.lens (\DeleteImageRecipe' {imageRecipeArn} -> imageRecipeArn) (\s@DeleteImageRecipe' {} a -> s {imageRecipeArn = a} :: DeleteImageRecipe)++instance Core.AWSRequest DeleteImageRecipe where+  type+    AWSResponse DeleteImageRecipe =+      DeleteImageRecipeResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteImageRecipeResponse'+            Prelude.<$> (x Data..?> "imageRecipeArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteImageRecipe where+  hashWithSalt _salt DeleteImageRecipe' {..} =+    _salt `Prelude.hashWithSalt` imageRecipeArn++instance Prelude.NFData DeleteImageRecipe where+  rnf DeleteImageRecipe' {..} =+    Prelude.rnf imageRecipeArn++instance Data.ToHeaders DeleteImageRecipe where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteImageRecipe where+  toPath = Prelude.const "/DeleteImageRecipe"++instance Data.ToQuery DeleteImageRecipe where+  toQuery DeleteImageRecipe' {..} =+    Prelude.mconcat+      ["imageRecipeArn" Data.=: imageRecipeArn]++-- | /See:/ 'newDeleteImageRecipeResponse' smart constructor.+data DeleteImageRecipeResponse = DeleteImageRecipeResponse'+  { -- | The Amazon Resource Name (ARN) of the image recipe that was deleted.+    imageRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteImageRecipeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipeArn', 'deleteImageRecipeResponse_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that was deleted.+--+-- 'requestId', 'deleteImageRecipeResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'deleteImageRecipeResponse_httpStatus' - The response's http status code.+newDeleteImageRecipeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteImageRecipeResponse+newDeleteImageRecipeResponse pHttpStatus_ =+  DeleteImageRecipeResponse'+    { imageRecipeArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the image recipe that was deleted.+deleteImageRecipeResponse_imageRecipeArn :: Lens.Lens' DeleteImageRecipeResponse (Prelude.Maybe Prelude.Text)+deleteImageRecipeResponse_imageRecipeArn = Lens.lens (\DeleteImageRecipeResponse' {imageRecipeArn} -> imageRecipeArn) (\s@DeleteImageRecipeResponse' {} a -> s {imageRecipeArn = a} :: DeleteImageRecipeResponse)++-- | The request ID that uniquely identifies this request.+deleteImageRecipeResponse_requestId :: Lens.Lens' DeleteImageRecipeResponse (Prelude.Maybe Prelude.Text)+deleteImageRecipeResponse_requestId = Lens.lens (\DeleteImageRecipeResponse' {requestId} -> requestId) (\s@DeleteImageRecipeResponse' {} a -> s {requestId = a} :: DeleteImageRecipeResponse)++-- | The response's http status code.+deleteImageRecipeResponse_httpStatus :: Lens.Lens' DeleteImageRecipeResponse Prelude.Int+deleteImageRecipeResponse_httpStatus = Lens.lens (\DeleteImageRecipeResponse' {httpStatus} -> httpStatus) (\s@DeleteImageRecipeResponse' {} a -> s {httpStatus = a} :: DeleteImageRecipeResponse)++instance Prelude.NFData DeleteImageRecipeResponse where+  rnf DeleteImageRecipeResponse' {..} =+    Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/DeleteInfrastructureConfiguration.hs view
@@ -0,0 +1,210 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.DeleteInfrastructureConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an infrastructure configuration.+module Amazonka.ImageBuilder.DeleteInfrastructureConfiguration+  ( -- * Creating a Request+    DeleteInfrastructureConfiguration (..),+    newDeleteInfrastructureConfiguration,++    -- * Request Lenses+    deleteInfrastructureConfiguration_infrastructureConfigurationArn,++    -- * Destructuring the Response+    DeleteInfrastructureConfigurationResponse (..),+    newDeleteInfrastructureConfigurationResponse,++    -- * Response Lenses+    deleteInfrastructureConfigurationResponse_infrastructureConfigurationArn,+    deleteInfrastructureConfigurationResponse_requestId,+    deleteInfrastructureConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteInfrastructureConfiguration' smart constructor.+data DeleteInfrastructureConfiguration = DeleteInfrastructureConfiguration'+  { -- | The Amazon Resource Name (ARN) of the infrastructure configuration to+    -- delete.+    infrastructureConfigurationArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteInfrastructureConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'infrastructureConfigurationArn', 'deleteInfrastructureConfiguration_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration to+-- delete.+newDeleteInfrastructureConfiguration ::+  -- | 'infrastructureConfigurationArn'+  Prelude.Text ->+  DeleteInfrastructureConfiguration+newDeleteInfrastructureConfiguration+  pInfrastructureConfigurationArn_ =+    DeleteInfrastructureConfiguration'+      { infrastructureConfigurationArn =+          pInfrastructureConfigurationArn_+      }++-- | The Amazon Resource Name (ARN) of the infrastructure configuration to+-- delete.+deleteInfrastructureConfiguration_infrastructureConfigurationArn :: Lens.Lens' DeleteInfrastructureConfiguration Prelude.Text+deleteInfrastructureConfiguration_infrastructureConfigurationArn = Lens.lens (\DeleteInfrastructureConfiguration' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@DeleteInfrastructureConfiguration' {} a -> s {infrastructureConfigurationArn = a} :: DeleteInfrastructureConfiguration)++instance+  Core.AWSRequest+    DeleteInfrastructureConfiguration+  where+  type+    AWSResponse DeleteInfrastructureConfiguration =+      DeleteInfrastructureConfigurationResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteInfrastructureConfigurationResponse'+            Prelude.<$> (x Data..?> "infrastructureConfigurationArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DeleteInfrastructureConfiguration+  where+  hashWithSalt+    _salt+    DeleteInfrastructureConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` infrastructureConfigurationArn++instance+  Prelude.NFData+    DeleteInfrastructureConfiguration+  where+  rnf DeleteInfrastructureConfiguration' {..} =+    Prelude.rnf infrastructureConfigurationArn++instance+  Data.ToHeaders+    DeleteInfrastructureConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    DeleteInfrastructureConfiguration+  where+  toPath =+    Prelude.const "/DeleteInfrastructureConfiguration"++instance+  Data.ToQuery+    DeleteInfrastructureConfiguration+  where+  toQuery DeleteInfrastructureConfiguration' {..} =+    Prelude.mconcat+      [ "infrastructureConfigurationArn"+          Data.=: infrastructureConfigurationArn+      ]++-- | /See:/ 'newDeleteInfrastructureConfigurationResponse' smart constructor.+data DeleteInfrastructureConfigurationResponse = DeleteInfrastructureConfigurationResponse'+  { -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- was deleted.+    infrastructureConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteInfrastructureConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'infrastructureConfigurationArn', 'deleteInfrastructureConfigurationResponse_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- was deleted.+--+-- 'requestId', 'deleteInfrastructureConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'deleteInfrastructureConfigurationResponse_httpStatus' - The response's http status code.+newDeleteInfrastructureConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteInfrastructureConfigurationResponse+newDeleteInfrastructureConfigurationResponse+  pHttpStatus_ =+    DeleteInfrastructureConfigurationResponse'+      { infrastructureConfigurationArn =+          Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- was deleted.+deleteInfrastructureConfigurationResponse_infrastructureConfigurationArn :: Lens.Lens' DeleteInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+deleteInfrastructureConfigurationResponse_infrastructureConfigurationArn = Lens.lens (\DeleteInfrastructureConfigurationResponse' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@DeleteInfrastructureConfigurationResponse' {} a -> s {infrastructureConfigurationArn = a} :: DeleteInfrastructureConfigurationResponse)++-- | The request ID that uniquely identifies this request.+deleteInfrastructureConfigurationResponse_requestId :: Lens.Lens' DeleteInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+deleteInfrastructureConfigurationResponse_requestId = Lens.lens (\DeleteInfrastructureConfigurationResponse' {requestId} -> requestId) (\s@DeleteInfrastructureConfigurationResponse' {} a -> s {requestId = a} :: DeleteInfrastructureConfigurationResponse)++-- | The response's http status code.+deleteInfrastructureConfigurationResponse_httpStatus :: Lens.Lens' DeleteInfrastructureConfigurationResponse Prelude.Int+deleteInfrastructureConfigurationResponse_httpStatus = Lens.lens (\DeleteInfrastructureConfigurationResponse' {httpStatus} -> httpStatus) (\s@DeleteInfrastructureConfigurationResponse' {} a -> s {httpStatus = a} :: DeleteInfrastructureConfigurationResponse)++instance+  Prelude.NFData+    DeleteInfrastructureConfigurationResponse+  where+  rnf DeleteInfrastructureConfigurationResponse' {..} =+    Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetComponent.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetComponent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets a component object.+module Amazonka.ImageBuilder.GetComponent+  ( -- * Creating a Request+    GetComponent (..),+    newGetComponent,++    -- * Request Lenses+    getComponent_componentBuildVersionArn,++    -- * Destructuring the Response+    GetComponentResponse (..),+    newGetComponentResponse,++    -- * Response Lenses+    getComponentResponse_component,+    getComponentResponse_requestId,+    getComponentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetComponent' smart constructor.+data GetComponent = GetComponent'+  { -- | The Amazon Resource Name (ARN) of the component that you want to+    -- retrieve. Regex requires \"\/\\d+$\" suffix.+    componentBuildVersionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentBuildVersionArn', 'getComponent_componentBuildVersionArn' - The Amazon Resource Name (ARN) of the component that you want to+-- retrieve. Regex requires \"\/\\d+$\" suffix.+newGetComponent ::+  -- | 'componentBuildVersionArn'+  Prelude.Text ->+  GetComponent+newGetComponent pComponentBuildVersionArn_ =+  GetComponent'+    { componentBuildVersionArn =+        pComponentBuildVersionArn_+    }++-- | The Amazon Resource Name (ARN) of the component that you want to+-- retrieve. Regex requires \"\/\\d+$\" suffix.+getComponent_componentBuildVersionArn :: Lens.Lens' GetComponent Prelude.Text+getComponent_componentBuildVersionArn = Lens.lens (\GetComponent' {componentBuildVersionArn} -> componentBuildVersionArn) (\s@GetComponent' {} a -> s {componentBuildVersionArn = a} :: GetComponent)++instance Core.AWSRequest GetComponent where+  type AWSResponse GetComponent = GetComponentResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetComponentResponse'+            Prelude.<$> (x Data..?> "component")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetComponent where+  hashWithSalt _salt GetComponent' {..} =+    _salt+      `Prelude.hashWithSalt` componentBuildVersionArn++instance Prelude.NFData GetComponent where+  rnf GetComponent' {..} =+    Prelude.rnf componentBuildVersionArn++instance Data.ToHeaders GetComponent where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetComponent where+  toPath = Prelude.const "/GetComponent"++instance Data.ToQuery GetComponent where+  toQuery GetComponent' {..} =+    Prelude.mconcat+      [ "componentBuildVersionArn"+          Data.=: componentBuildVersionArn+      ]++-- | /See:/ 'newGetComponentResponse' smart constructor.+data GetComponentResponse = GetComponentResponse'+  { -- | The component object associated with the specified ARN.+    component :: Prelude.Maybe Component,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'component', 'getComponentResponse_component' - The component object associated with the specified ARN.+--+-- 'requestId', 'getComponentResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getComponentResponse_httpStatus' - The response's http status code.+newGetComponentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetComponentResponse+newGetComponentResponse pHttpStatus_ =+  GetComponentResponse'+    { component = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The component object associated with the specified ARN.+getComponentResponse_component :: Lens.Lens' GetComponentResponse (Prelude.Maybe Component)+getComponentResponse_component = Lens.lens (\GetComponentResponse' {component} -> component) (\s@GetComponentResponse' {} a -> s {component = a} :: GetComponentResponse)++-- | The request ID that uniquely identifies this request.+getComponentResponse_requestId :: Lens.Lens' GetComponentResponse (Prelude.Maybe Prelude.Text)+getComponentResponse_requestId = Lens.lens (\GetComponentResponse' {requestId} -> requestId) (\s@GetComponentResponse' {} a -> s {requestId = a} :: GetComponentResponse)++-- | The response's http status code.+getComponentResponse_httpStatus :: Lens.Lens' GetComponentResponse Prelude.Int+getComponentResponse_httpStatus = Lens.lens (\GetComponentResponse' {httpStatus} -> httpStatus) (\s@GetComponentResponse' {} a -> s {httpStatus = a} :: GetComponentResponse)++instance Prelude.NFData GetComponentResponse where+  rnf GetComponentResponse' {..} =+    Prelude.rnf component+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetComponentPolicy.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetComponentPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets a component policy.+module Amazonka.ImageBuilder.GetComponentPolicy+  ( -- * Creating a Request+    GetComponentPolicy (..),+    newGetComponentPolicy,++    -- * Request Lenses+    getComponentPolicy_componentArn,++    -- * Destructuring the Response+    GetComponentPolicyResponse (..),+    newGetComponentPolicyResponse,++    -- * Response Lenses+    getComponentPolicyResponse_policy,+    getComponentPolicyResponse_requestId,+    getComponentPolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetComponentPolicy' smart constructor.+data GetComponentPolicy = GetComponentPolicy'+  { -- | The Amazon Resource Name (ARN) of the component whose policy you want to+    -- retrieve.+    componentArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponentPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentArn', 'getComponentPolicy_componentArn' - The Amazon Resource Name (ARN) of the component whose policy you want to+-- retrieve.+newGetComponentPolicy ::+  -- | 'componentArn'+  Prelude.Text ->+  GetComponentPolicy+newGetComponentPolicy pComponentArn_ =+  GetComponentPolicy' {componentArn = pComponentArn_}++-- | The Amazon Resource Name (ARN) of the component whose policy you want to+-- retrieve.+getComponentPolicy_componentArn :: Lens.Lens' GetComponentPolicy Prelude.Text+getComponentPolicy_componentArn = Lens.lens (\GetComponentPolicy' {componentArn} -> componentArn) (\s@GetComponentPolicy' {} a -> s {componentArn = a} :: GetComponentPolicy)++instance Core.AWSRequest GetComponentPolicy where+  type+    AWSResponse GetComponentPolicy =+      GetComponentPolicyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetComponentPolicyResponse'+            Prelude.<$> (x Data..?> "policy")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetComponentPolicy where+  hashWithSalt _salt GetComponentPolicy' {..} =+    _salt `Prelude.hashWithSalt` componentArn++instance Prelude.NFData GetComponentPolicy where+  rnf GetComponentPolicy' {..} =+    Prelude.rnf componentArn++instance Data.ToHeaders GetComponentPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetComponentPolicy where+  toPath = Prelude.const "/GetComponentPolicy"++instance Data.ToQuery GetComponentPolicy where+  toQuery GetComponentPolicy' {..} =+    Prelude.mconcat+      ["componentArn" Data.=: componentArn]++-- | /See:/ 'newGetComponentPolicyResponse' smart constructor.+data GetComponentPolicyResponse = GetComponentPolicyResponse'+  { -- | The component policy.+    policy :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponentPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'policy', 'getComponentPolicyResponse_policy' - The component policy.+--+-- 'requestId', 'getComponentPolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getComponentPolicyResponse_httpStatus' - The response's http status code.+newGetComponentPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetComponentPolicyResponse+newGetComponentPolicyResponse pHttpStatus_ =+  GetComponentPolicyResponse'+    { policy =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The component policy.+getComponentPolicyResponse_policy :: Lens.Lens' GetComponentPolicyResponse (Prelude.Maybe Prelude.Text)+getComponentPolicyResponse_policy = Lens.lens (\GetComponentPolicyResponse' {policy} -> policy) (\s@GetComponentPolicyResponse' {} a -> s {policy = a} :: GetComponentPolicyResponse)++-- | The request ID that uniquely identifies this request.+getComponentPolicyResponse_requestId :: Lens.Lens' GetComponentPolicyResponse (Prelude.Maybe Prelude.Text)+getComponentPolicyResponse_requestId = Lens.lens (\GetComponentPolicyResponse' {requestId} -> requestId) (\s@GetComponentPolicyResponse' {} a -> s {requestId = a} :: GetComponentPolicyResponse)++-- | The response's http status code.+getComponentPolicyResponse_httpStatus :: Lens.Lens' GetComponentPolicyResponse Prelude.Int+getComponentPolicyResponse_httpStatus = Lens.lens (\GetComponentPolicyResponse' {httpStatus} -> httpStatus) (\s@GetComponentPolicyResponse' {} a -> s {httpStatus = a} :: GetComponentPolicyResponse)++instance Prelude.NFData GetComponentPolicyResponse where+  rnf GetComponentPolicyResponse' {..} =+    Prelude.rnf policy+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetContainerRecipe.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetContainerRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves a container recipe.+module Amazonka.ImageBuilder.GetContainerRecipe+  ( -- * Creating a Request+    GetContainerRecipe (..),+    newGetContainerRecipe,++    -- * Request Lenses+    getContainerRecipe_containerRecipeArn,++    -- * Destructuring the Response+    GetContainerRecipeResponse (..),+    newGetContainerRecipeResponse,++    -- * Response Lenses+    getContainerRecipeResponse_containerRecipe,+    getContainerRecipeResponse_requestId,+    getContainerRecipeResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetContainerRecipe' smart constructor.+data GetContainerRecipe = GetContainerRecipe'+  { -- | The Amazon Resource Name (ARN) of the container recipe to retrieve.+    containerRecipeArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetContainerRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'getContainerRecipe_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe to retrieve.+newGetContainerRecipe ::+  -- | 'containerRecipeArn'+  Prelude.Text ->+  GetContainerRecipe+newGetContainerRecipe pContainerRecipeArn_ =+  GetContainerRecipe'+    { containerRecipeArn =+        pContainerRecipeArn_+    }++-- | The Amazon Resource Name (ARN) of the container recipe to retrieve.+getContainerRecipe_containerRecipeArn :: Lens.Lens' GetContainerRecipe Prelude.Text+getContainerRecipe_containerRecipeArn = Lens.lens (\GetContainerRecipe' {containerRecipeArn} -> containerRecipeArn) (\s@GetContainerRecipe' {} a -> s {containerRecipeArn = a} :: GetContainerRecipe)++instance Core.AWSRequest GetContainerRecipe where+  type+    AWSResponse GetContainerRecipe =+      GetContainerRecipeResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetContainerRecipeResponse'+            Prelude.<$> (x Data..?> "containerRecipe")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetContainerRecipe where+  hashWithSalt _salt GetContainerRecipe' {..} =+    _salt `Prelude.hashWithSalt` containerRecipeArn++instance Prelude.NFData GetContainerRecipe where+  rnf GetContainerRecipe' {..} =+    Prelude.rnf containerRecipeArn++instance Data.ToHeaders GetContainerRecipe where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetContainerRecipe where+  toPath = Prelude.const "/GetContainerRecipe"++instance Data.ToQuery GetContainerRecipe where+  toQuery GetContainerRecipe' {..} =+    Prelude.mconcat+      ["containerRecipeArn" Data.=: containerRecipeArn]++-- | /See:/ 'newGetContainerRecipeResponse' smart constructor.+data GetContainerRecipeResponse = GetContainerRecipeResponse'+  { -- | The container recipe object that is returned.+    containerRecipe :: Prelude.Maybe ContainerRecipe,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetContainerRecipeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipe', 'getContainerRecipeResponse_containerRecipe' - The container recipe object that is returned.+--+-- 'requestId', 'getContainerRecipeResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getContainerRecipeResponse_httpStatus' - The response's http status code.+newGetContainerRecipeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetContainerRecipeResponse+newGetContainerRecipeResponse pHttpStatus_ =+  GetContainerRecipeResponse'+    { containerRecipe =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The container recipe object that is returned.+getContainerRecipeResponse_containerRecipe :: Lens.Lens' GetContainerRecipeResponse (Prelude.Maybe ContainerRecipe)+getContainerRecipeResponse_containerRecipe = Lens.lens (\GetContainerRecipeResponse' {containerRecipe} -> containerRecipe) (\s@GetContainerRecipeResponse' {} a -> s {containerRecipe = a} :: GetContainerRecipeResponse)++-- | The request ID that uniquely identifies this request.+getContainerRecipeResponse_requestId :: Lens.Lens' GetContainerRecipeResponse (Prelude.Maybe Prelude.Text)+getContainerRecipeResponse_requestId = Lens.lens (\GetContainerRecipeResponse' {requestId} -> requestId) (\s@GetContainerRecipeResponse' {} a -> s {requestId = a} :: GetContainerRecipeResponse)++-- | The response's http status code.+getContainerRecipeResponse_httpStatus :: Lens.Lens' GetContainerRecipeResponse Prelude.Int+getContainerRecipeResponse_httpStatus = Lens.lens (\GetContainerRecipeResponse' {httpStatus} -> httpStatus) (\s@GetContainerRecipeResponse' {} a -> s {httpStatus = a} :: GetContainerRecipeResponse)++instance Prelude.NFData GetContainerRecipeResponse where+  rnf GetContainerRecipeResponse' {..} =+    Prelude.rnf containerRecipe+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetContainerRecipePolicy.hs view
@@ -0,0 +1,181 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetContainerRecipePolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the policy for a container recipe.+module Amazonka.ImageBuilder.GetContainerRecipePolicy+  ( -- * Creating a Request+    GetContainerRecipePolicy (..),+    newGetContainerRecipePolicy,++    -- * Request Lenses+    getContainerRecipePolicy_containerRecipeArn,++    -- * Destructuring the Response+    GetContainerRecipePolicyResponse (..),+    newGetContainerRecipePolicyResponse,++    -- * Response Lenses+    getContainerRecipePolicyResponse_policy,+    getContainerRecipePolicyResponse_requestId,+    getContainerRecipePolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetContainerRecipePolicy' smart constructor.+data GetContainerRecipePolicy = GetContainerRecipePolicy'+  { -- | The Amazon Resource Name (ARN) of the container recipe for the policy+    -- being requested.+    containerRecipeArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetContainerRecipePolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'getContainerRecipePolicy_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe for the policy+-- being requested.+newGetContainerRecipePolicy ::+  -- | 'containerRecipeArn'+  Prelude.Text ->+  GetContainerRecipePolicy+newGetContainerRecipePolicy pContainerRecipeArn_ =+  GetContainerRecipePolicy'+    { containerRecipeArn =+        pContainerRecipeArn_+    }++-- | The Amazon Resource Name (ARN) of the container recipe for the policy+-- being requested.+getContainerRecipePolicy_containerRecipeArn :: Lens.Lens' GetContainerRecipePolicy Prelude.Text+getContainerRecipePolicy_containerRecipeArn = Lens.lens (\GetContainerRecipePolicy' {containerRecipeArn} -> containerRecipeArn) (\s@GetContainerRecipePolicy' {} a -> s {containerRecipeArn = a} :: GetContainerRecipePolicy)++instance Core.AWSRequest GetContainerRecipePolicy where+  type+    AWSResponse GetContainerRecipePolicy =+      GetContainerRecipePolicyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetContainerRecipePolicyResponse'+            Prelude.<$> (x Data..?> "policy")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetContainerRecipePolicy where+  hashWithSalt _salt GetContainerRecipePolicy' {..} =+    _salt `Prelude.hashWithSalt` containerRecipeArn++instance Prelude.NFData GetContainerRecipePolicy where+  rnf GetContainerRecipePolicy' {..} =+    Prelude.rnf containerRecipeArn++instance Data.ToHeaders GetContainerRecipePolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetContainerRecipePolicy where+  toPath = Prelude.const "/GetContainerRecipePolicy"++instance Data.ToQuery GetContainerRecipePolicy where+  toQuery GetContainerRecipePolicy' {..} =+    Prelude.mconcat+      ["containerRecipeArn" Data.=: containerRecipeArn]++-- | /See:/ 'newGetContainerRecipePolicyResponse' smart constructor.+data GetContainerRecipePolicyResponse = GetContainerRecipePolicyResponse'+  { -- | The container recipe policy object that is returned.+    policy :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetContainerRecipePolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'policy', 'getContainerRecipePolicyResponse_policy' - The container recipe policy object that is returned.+--+-- 'requestId', 'getContainerRecipePolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getContainerRecipePolicyResponse_httpStatus' - The response's http status code.+newGetContainerRecipePolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetContainerRecipePolicyResponse+newGetContainerRecipePolicyResponse pHttpStatus_ =+  GetContainerRecipePolicyResponse'+    { policy =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The container recipe policy object that is returned.+getContainerRecipePolicyResponse_policy :: Lens.Lens' GetContainerRecipePolicyResponse (Prelude.Maybe Prelude.Text)+getContainerRecipePolicyResponse_policy = Lens.lens (\GetContainerRecipePolicyResponse' {policy} -> policy) (\s@GetContainerRecipePolicyResponse' {} a -> s {policy = a} :: GetContainerRecipePolicyResponse)++-- | The request ID that uniquely identifies this request.+getContainerRecipePolicyResponse_requestId :: Lens.Lens' GetContainerRecipePolicyResponse (Prelude.Maybe Prelude.Text)+getContainerRecipePolicyResponse_requestId = Lens.lens (\GetContainerRecipePolicyResponse' {requestId} -> requestId) (\s@GetContainerRecipePolicyResponse' {} a -> s {requestId = a} :: GetContainerRecipePolicyResponse)++-- | The response's http status code.+getContainerRecipePolicyResponse_httpStatus :: Lens.Lens' GetContainerRecipePolicyResponse Prelude.Int+getContainerRecipePolicyResponse_httpStatus = Lens.lens (\GetContainerRecipePolicyResponse' {httpStatus} -> httpStatus) (\s@GetContainerRecipePolicyResponse' {} a -> s {httpStatus = a} :: GetContainerRecipePolicyResponse)++instance+  Prelude.NFData+    GetContainerRecipePolicyResponse+  where+  rnf GetContainerRecipePolicyResponse' {..} =+    Prelude.rnf policy+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetDistributionConfiguration.hs view
@@ -0,0 +1,189 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetDistributionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets a distribution configuration.+module Amazonka.ImageBuilder.GetDistributionConfiguration+  ( -- * Creating a Request+    GetDistributionConfiguration (..),+    newGetDistributionConfiguration,++    -- * Request Lenses+    getDistributionConfiguration_distributionConfigurationArn,++    -- * Destructuring the Response+    GetDistributionConfigurationResponse (..),+    newGetDistributionConfigurationResponse,++    -- * Response Lenses+    getDistributionConfigurationResponse_distributionConfiguration,+    getDistributionConfigurationResponse_requestId,+    getDistributionConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetDistributionConfiguration' smart constructor.+data GetDistributionConfiguration = GetDistributionConfiguration'+  { -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- you want to retrieve.+    distributionConfigurationArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDistributionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'distributionConfigurationArn', 'getDistributionConfiguration_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- you want to retrieve.+newGetDistributionConfiguration ::+  -- | 'distributionConfigurationArn'+  Prelude.Text ->+  GetDistributionConfiguration+newGetDistributionConfiguration+  pDistributionConfigurationArn_ =+    GetDistributionConfiguration'+      { distributionConfigurationArn =+          pDistributionConfigurationArn_+      }++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- you want to retrieve.+getDistributionConfiguration_distributionConfigurationArn :: Lens.Lens' GetDistributionConfiguration Prelude.Text+getDistributionConfiguration_distributionConfigurationArn = Lens.lens (\GetDistributionConfiguration' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@GetDistributionConfiguration' {} a -> s {distributionConfigurationArn = a} :: GetDistributionConfiguration)++instance Core.AWSRequest GetDistributionConfiguration where+  type+    AWSResponse GetDistributionConfiguration =+      GetDistributionConfigurationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDistributionConfigurationResponse'+            Prelude.<$> (x Data..?> "distributionConfiguration")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    GetDistributionConfiguration+  where+  hashWithSalt _salt GetDistributionConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` distributionConfigurationArn++instance Prelude.NFData GetDistributionConfiguration where+  rnf GetDistributionConfiguration' {..} =+    Prelude.rnf distributionConfigurationArn++instance Data.ToHeaders GetDistributionConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDistributionConfiguration where+  toPath =+    Prelude.const "/GetDistributionConfiguration"++instance Data.ToQuery GetDistributionConfiguration where+  toQuery GetDistributionConfiguration' {..} =+    Prelude.mconcat+      [ "distributionConfigurationArn"+          Data.=: distributionConfigurationArn+      ]++-- | /See:/ 'newGetDistributionConfigurationResponse' smart constructor.+data GetDistributionConfigurationResponse = GetDistributionConfigurationResponse'+  { -- | The distribution configuration object.+    distributionConfiguration :: Prelude.Maybe DistributionConfiguration,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDistributionConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'distributionConfiguration', 'getDistributionConfigurationResponse_distributionConfiguration' - The distribution configuration object.+--+-- 'requestId', 'getDistributionConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getDistributionConfigurationResponse_httpStatus' - The response's http status code.+newGetDistributionConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDistributionConfigurationResponse+newGetDistributionConfigurationResponse pHttpStatus_ =+  GetDistributionConfigurationResponse'+    { distributionConfiguration =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The distribution configuration object.+getDistributionConfigurationResponse_distributionConfiguration :: Lens.Lens' GetDistributionConfigurationResponse (Prelude.Maybe DistributionConfiguration)+getDistributionConfigurationResponse_distributionConfiguration = Lens.lens (\GetDistributionConfigurationResponse' {distributionConfiguration} -> distributionConfiguration) (\s@GetDistributionConfigurationResponse' {} a -> s {distributionConfiguration = a} :: GetDistributionConfigurationResponse)++-- | The request ID that uniquely identifies this request.+getDistributionConfigurationResponse_requestId :: Lens.Lens' GetDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+getDistributionConfigurationResponse_requestId = Lens.lens (\GetDistributionConfigurationResponse' {requestId} -> requestId) (\s@GetDistributionConfigurationResponse' {} a -> s {requestId = a} :: GetDistributionConfigurationResponse)++-- | The response's http status code.+getDistributionConfigurationResponse_httpStatus :: Lens.Lens' GetDistributionConfigurationResponse Prelude.Int+getDistributionConfigurationResponse_httpStatus = Lens.lens (\GetDistributionConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetDistributionConfigurationResponse' {} a -> s {httpStatus = a} :: GetDistributionConfigurationResponse)++instance+  Prelude.NFData+    GetDistributionConfigurationResponse+  where+  rnf GetDistributionConfigurationResponse' {..} =+    Prelude.rnf distributionConfiguration+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetImage.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetImage+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets an image.+module Amazonka.ImageBuilder.GetImage+  ( -- * Creating a Request+    GetImage (..),+    newGetImage,++    -- * Request Lenses+    getImage_imageBuildVersionArn,++    -- * Destructuring the Response+    GetImageResponse (..),+    newGetImageResponse,++    -- * Response Lenses+    getImageResponse_image,+    getImageResponse_requestId,+    getImageResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetImage' smart constructor.+data GetImage = GetImage'+  { -- | The Amazon Resource Name (ARN) of the image that you want to retrieve.+    imageBuildVersionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageBuildVersionArn', 'getImage_imageBuildVersionArn' - The Amazon Resource Name (ARN) of the image that you want to retrieve.+newGetImage ::+  -- | 'imageBuildVersionArn'+  Prelude.Text ->+  GetImage+newGetImage pImageBuildVersionArn_ =+  GetImage'+    { imageBuildVersionArn =+        pImageBuildVersionArn_+    }++-- | The Amazon Resource Name (ARN) of the image that you want to retrieve.+getImage_imageBuildVersionArn :: Lens.Lens' GetImage Prelude.Text+getImage_imageBuildVersionArn = Lens.lens (\GetImage' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@GetImage' {} a -> s {imageBuildVersionArn = a} :: GetImage)++instance Core.AWSRequest GetImage where+  type AWSResponse GetImage = GetImageResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetImageResponse'+            Prelude.<$> (x Data..?> "image")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetImage where+  hashWithSalt _salt GetImage' {..} =+    _salt `Prelude.hashWithSalt` imageBuildVersionArn++instance Prelude.NFData GetImage where+  rnf GetImage' {..} = Prelude.rnf imageBuildVersionArn++instance Data.ToHeaders GetImage where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetImage where+  toPath = Prelude.const "/GetImage"++instance Data.ToQuery GetImage where+  toQuery GetImage' {..} =+    Prelude.mconcat+      ["imageBuildVersionArn" Data.=: imageBuildVersionArn]++-- | /See:/ 'newGetImageResponse' smart constructor.+data GetImageResponse = GetImageResponse'+  { -- | The image object.+    image :: Prelude.Maybe Image,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImageResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'image', 'getImageResponse_image' - The image object.+--+-- 'requestId', 'getImageResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getImageResponse_httpStatus' - The response's http status code.+newGetImageResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetImageResponse+newGetImageResponse pHttpStatus_ =+  GetImageResponse'+    { image = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The image object.+getImageResponse_image :: Lens.Lens' GetImageResponse (Prelude.Maybe Image)+getImageResponse_image = Lens.lens (\GetImageResponse' {image} -> image) (\s@GetImageResponse' {} a -> s {image = a} :: GetImageResponse)++-- | The request ID that uniquely identifies this request.+getImageResponse_requestId :: Lens.Lens' GetImageResponse (Prelude.Maybe Prelude.Text)+getImageResponse_requestId = Lens.lens (\GetImageResponse' {requestId} -> requestId) (\s@GetImageResponse' {} a -> s {requestId = a} :: GetImageResponse)++-- | The response's http status code.+getImageResponse_httpStatus :: Lens.Lens' GetImageResponse Prelude.Int+getImageResponse_httpStatus = Lens.lens (\GetImageResponse' {httpStatus} -> httpStatus) (\s@GetImageResponse' {} a -> s {httpStatus = a} :: GetImageResponse)++instance Prelude.NFData GetImageResponse where+  rnf GetImageResponse' {..} =+    Prelude.rnf image+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetImagePipeline.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetImagePipeline+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets an image pipeline.+module Amazonka.ImageBuilder.GetImagePipeline+  ( -- * Creating a Request+    GetImagePipeline (..),+    newGetImagePipeline,++    -- * Request Lenses+    getImagePipeline_imagePipelineArn,++    -- * Destructuring the Response+    GetImagePipelineResponse (..),+    newGetImagePipelineResponse,++    -- * Response Lenses+    getImagePipelineResponse_imagePipeline,+    getImagePipelineResponse_requestId,+    getImagePipelineResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetImagePipeline' smart constructor.+data GetImagePipeline = GetImagePipeline'+  { -- | The Amazon Resource Name (ARN) of the image pipeline that you want to+    -- retrieve.+    imagePipelineArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImagePipeline' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imagePipelineArn', 'getImagePipeline_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline that you want to+-- retrieve.+newGetImagePipeline ::+  -- | 'imagePipelineArn'+  Prelude.Text ->+  GetImagePipeline+newGetImagePipeline pImagePipelineArn_ =+  GetImagePipeline'+    { imagePipelineArn =+        pImagePipelineArn_+    }++-- | The Amazon Resource Name (ARN) of the image pipeline that you want to+-- retrieve.+getImagePipeline_imagePipelineArn :: Lens.Lens' GetImagePipeline Prelude.Text+getImagePipeline_imagePipelineArn = Lens.lens (\GetImagePipeline' {imagePipelineArn} -> imagePipelineArn) (\s@GetImagePipeline' {} a -> s {imagePipelineArn = a} :: GetImagePipeline)++instance Core.AWSRequest GetImagePipeline where+  type+    AWSResponse GetImagePipeline =+      GetImagePipelineResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetImagePipelineResponse'+            Prelude.<$> (x Data..?> "imagePipeline")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetImagePipeline where+  hashWithSalt _salt GetImagePipeline' {..} =+    _salt `Prelude.hashWithSalt` imagePipelineArn++instance Prelude.NFData GetImagePipeline where+  rnf GetImagePipeline' {..} =+    Prelude.rnf imagePipelineArn++instance Data.ToHeaders GetImagePipeline where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetImagePipeline where+  toPath = Prelude.const "/GetImagePipeline"++instance Data.ToQuery GetImagePipeline where+  toQuery GetImagePipeline' {..} =+    Prelude.mconcat+      ["imagePipelineArn" Data.=: imagePipelineArn]++-- | /See:/ 'newGetImagePipelineResponse' smart constructor.+data GetImagePipelineResponse = GetImagePipelineResponse'+  { -- | The image pipeline object.+    imagePipeline :: Prelude.Maybe ImagePipeline,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImagePipelineResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imagePipeline', 'getImagePipelineResponse_imagePipeline' - The image pipeline object.+--+-- 'requestId', 'getImagePipelineResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getImagePipelineResponse_httpStatus' - The response's http status code.+newGetImagePipelineResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetImagePipelineResponse+newGetImagePipelineResponse pHttpStatus_ =+  GetImagePipelineResponse'+    { imagePipeline =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The image pipeline object.+getImagePipelineResponse_imagePipeline :: Lens.Lens' GetImagePipelineResponse (Prelude.Maybe ImagePipeline)+getImagePipelineResponse_imagePipeline = Lens.lens (\GetImagePipelineResponse' {imagePipeline} -> imagePipeline) (\s@GetImagePipelineResponse' {} a -> s {imagePipeline = a} :: GetImagePipelineResponse)++-- | The request ID that uniquely identifies this request.+getImagePipelineResponse_requestId :: Lens.Lens' GetImagePipelineResponse (Prelude.Maybe Prelude.Text)+getImagePipelineResponse_requestId = Lens.lens (\GetImagePipelineResponse' {requestId} -> requestId) (\s@GetImagePipelineResponse' {} a -> s {requestId = a} :: GetImagePipelineResponse)++-- | The response's http status code.+getImagePipelineResponse_httpStatus :: Lens.Lens' GetImagePipelineResponse Prelude.Int+getImagePipelineResponse_httpStatus = Lens.lens (\GetImagePipelineResponse' {httpStatus} -> httpStatus) (\s@GetImagePipelineResponse' {} a -> s {httpStatus = a} :: GetImagePipelineResponse)++instance Prelude.NFData GetImagePipelineResponse where+  rnf GetImagePipelineResponse' {..} =+    Prelude.rnf imagePipeline+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetImagePolicy.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetImagePolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets an image policy.+module Amazonka.ImageBuilder.GetImagePolicy+  ( -- * Creating a Request+    GetImagePolicy (..),+    newGetImagePolicy,++    -- * Request Lenses+    getImagePolicy_imageArn,++    -- * Destructuring the Response+    GetImagePolicyResponse (..),+    newGetImagePolicyResponse,++    -- * Response Lenses+    getImagePolicyResponse_policy,+    getImagePolicyResponse_requestId,+    getImagePolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetImagePolicy' smart constructor.+data GetImagePolicy = GetImagePolicy'+  { -- | The Amazon Resource Name (ARN) of the image whose policy you want to+    -- retrieve.+    imageArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImagePolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageArn', 'getImagePolicy_imageArn' - The Amazon Resource Name (ARN) of the image whose policy you want to+-- retrieve.+newGetImagePolicy ::+  -- | 'imageArn'+  Prelude.Text ->+  GetImagePolicy+newGetImagePolicy pImageArn_ =+  GetImagePolicy' {imageArn = pImageArn_}++-- | The Amazon Resource Name (ARN) of the image whose policy you want to+-- retrieve.+getImagePolicy_imageArn :: Lens.Lens' GetImagePolicy Prelude.Text+getImagePolicy_imageArn = Lens.lens (\GetImagePolicy' {imageArn} -> imageArn) (\s@GetImagePolicy' {} a -> s {imageArn = a} :: GetImagePolicy)++instance Core.AWSRequest GetImagePolicy where+  type+    AWSResponse GetImagePolicy =+      GetImagePolicyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetImagePolicyResponse'+            Prelude.<$> (x Data..?> "policy")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetImagePolicy where+  hashWithSalt _salt GetImagePolicy' {..} =+    _salt `Prelude.hashWithSalt` imageArn++instance Prelude.NFData GetImagePolicy where+  rnf GetImagePolicy' {..} = Prelude.rnf imageArn++instance Data.ToHeaders GetImagePolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetImagePolicy where+  toPath = Prelude.const "/GetImagePolicy"++instance Data.ToQuery GetImagePolicy where+  toQuery GetImagePolicy' {..} =+    Prelude.mconcat ["imageArn" Data.=: imageArn]++-- | /See:/ 'newGetImagePolicyResponse' smart constructor.+data GetImagePolicyResponse = GetImagePolicyResponse'+  { -- | The image policy object.+    policy :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImagePolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'policy', 'getImagePolicyResponse_policy' - The image policy object.+--+-- 'requestId', 'getImagePolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getImagePolicyResponse_httpStatus' - The response's http status code.+newGetImagePolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetImagePolicyResponse+newGetImagePolicyResponse pHttpStatus_ =+  GetImagePolicyResponse'+    { policy = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The image policy object.+getImagePolicyResponse_policy :: Lens.Lens' GetImagePolicyResponse (Prelude.Maybe Prelude.Text)+getImagePolicyResponse_policy = Lens.lens (\GetImagePolicyResponse' {policy} -> policy) (\s@GetImagePolicyResponse' {} a -> s {policy = a} :: GetImagePolicyResponse)++-- | The request ID that uniquely identifies this request.+getImagePolicyResponse_requestId :: Lens.Lens' GetImagePolicyResponse (Prelude.Maybe Prelude.Text)+getImagePolicyResponse_requestId = Lens.lens (\GetImagePolicyResponse' {requestId} -> requestId) (\s@GetImagePolicyResponse' {} a -> s {requestId = a} :: GetImagePolicyResponse)++-- | The response's http status code.+getImagePolicyResponse_httpStatus :: Lens.Lens' GetImagePolicyResponse Prelude.Int+getImagePolicyResponse_httpStatus = Lens.lens (\GetImagePolicyResponse' {httpStatus} -> httpStatus) (\s@GetImagePolicyResponse' {} a -> s {httpStatus = a} :: GetImagePolicyResponse)++instance Prelude.NFData GetImagePolicyResponse where+  rnf GetImagePolicyResponse' {..} =+    Prelude.rnf policy+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetImageRecipe.hs view
@@ -0,0 +1,174 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetImageRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets an image recipe.+module Amazonka.ImageBuilder.GetImageRecipe+  ( -- * Creating a Request+    GetImageRecipe (..),+    newGetImageRecipe,++    -- * Request Lenses+    getImageRecipe_imageRecipeArn,++    -- * Destructuring the Response+    GetImageRecipeResponse (..),+    newGetImageRecipeResponse,++    -- * Response Lenses+    getImageRecipeResponse_imageRecipe,+    getImageRecipeResponse_requestId,+    getImageRecipeResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetImageRecipe' smart constructor.+data GetImageRecipe = GetImageRecipe'+  { -- | The Amazon Resource Name (ARN) of the image recipe that you want to+    -- retrieve.+    imageRecipeArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImageRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipeArn', 'getImageRecipe_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that you want to+-- retrieve.+newGetImageRecipe ::+  -- | 'imageRecipeArn'+  Prelude.Text ->+  GetImageRecipe+newGetImageRecipe pImageRecipeArn_ =+  GetImageRecipe' {imageRecipeArn = pImageRecipeArn_}++-- | The Amazon Resource Name (ARN) of the image recipe that you want to+-- retrieve.+getImageRecipe_imageRecipeArn :: Lens.Lens' GetImageRecipe Prelude.Text+getImageRecipe_imageRecipeArn = Lens.lens (\GetImageRecipe' {imageRecipeArn} -> imageRecipeArn) (\s@GetImageRecipe' {} a -> s {imageRecipeArn = a} :: GetImageRecipe)++instance Core.AWSRequest GetImageRecipe where+  type+    AWSResponse GetImageRecipe =+      GetImageRecipeResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetImageRecipeResponse'+            Prelude.<$> (x Data..?> "imageRecipe")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetImageRecipe where+  hashWithSalt _salt GetImageRecipe' {..} =+    _salt `Prelude.hashWithSalt` imageRecipeArn++instance Prelude.NFData GetImageRecipe where+  rnf GetImageRecipe' {..} = Prelude.rnf imageRecipeArn++instance Data.ToHeaders GetImageRecipe where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetImageRecipe where+  toPath = Prelude.const "/GetImageRecipe"++instance Data.ToQuery GetImageRecipe where+  toQuery GetImageRecipe' {..} =+    Prelude.mconcat+      ["imageRecipeArn" Data.=: imageRecipeArn]++-- | /See:/ 'newGetImageRecipeResponse' smart constructor.+data GetImageRecipeResponse = GetImageRecipeResponse'+  { -- | The image recipe object.+    imageRecipe :: Prelude.Maybe ImageRecipe,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImageRecipeResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipe', 'getImageRecipeResponse_imageRecipe' - The image recipe object.+--+-- 'requestId', 'getImageRecipeResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getImageRecipeResponse_httpStatus' - The response's http status code.+newGetImageRecipeResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetImageRecipeResponse+newGetImageRecipeResponse pHttpStatus_ =+  GetImageRecipeResponse'+    { imageRecipe =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The image recipe object.+getImageRecipeResponse_imageRecipe :: Lens.Lens' GetImageRecipeResponse (Prelude.Maybe ImageRecipe)+getImageRecipeResponse_imageRecipe = Lens.lens (\GetImageRecipeResponse' {imageRecipe} -> imageRecipe) (\s@GetImageRecipeResponse' {} a -> s {imageRecipe = a} :: GetImageRecipeResponse)++-- | The request ID that uniquely identifies this request.+getImageRecipeResponse_requestId :: Lens.Lens' GetImageRecipeResponse (Prelude.Maybe Prelude.Text)+getImageRecipeResponse_requestId = Lens.lens (\GetImageRecipeResponse' {requestId} -> requestId) (\s@GetImageRecipeResponse' {} a -> s {requestId = a} :: GetImageRecipeResponse)++-- | The response's http status code.+getImageRecipeResponse_httpStatus :: Lens.Lens' GetImageRecipeResponse Prelude.Int+getImageRecipeResponse_httpStatus = Lens.lens (\GetImageRecipeResponse' {httpStatus} -> httpStatus) (\s@GetImageRecipeResponse' {} a -> s {httpStatus = a} :: GetImageRecipeResponse)++instance Prelude.NFData GetImageRecipeResponse where+  rnf GetImageRecipeResponse' {..} =+    Prelude.rnf imageRecipe+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetImageRecipePolicy.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetImageRecipePolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets an image recipe policy.+module Amazonka.ImageBuilder.GetImageRecipePolicy+  ( -- * Creating a Request+    GetImageRecipePolicy (..),+    newGetImageRecipePolicy,++    -- * Request Lenses+    getImageRecipePolicy_imageRecipeArn,++    -- * Destructuring the Response+    GetImageRecipePolicyResponse (..),+    newGetImageRecipePolicyResponse,++    -- * Response Lenses+    getImageRecipePolicyResponse_policy,+    getImageRecipePolicyResponse_requestId,+    getImageRecipePolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetImageRecipePolicy' smart constructor.+data GetImageRecipePolicy = GetImageRecipePolicy'+  { -- | The Amazon Resource Name (ARN) of the image recipe whose policy you want+    -- to retrieve.+    imageRecipeArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImageRecipePolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipeArn', 'getImageRecipePolicy_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe whose policy you want+-- to retrieve.+newGetImageRecipePolicy ::+  -- | 'imageRecipeArn'+  Prelude.Text ->+  GetImageRecipePolicy+newGetImageRecipePolicy pImageRecipeArn_ =+  GetImageRecipePolicy'+    { imageRecipeArn =+        pImageRecipeArn_+    }++-- | The Amazon Resource Name (ARN) of the image recipe whose policy you want+-- to retrieve.+getImageRecipePolicy_imageRecipeArn :: Lens.Lens' GetImageRecipePolicy Prelude.Text+getImageRecipePolicy_imageRecipeArn = Lens.lens (\GetImageRecipePolicy' {imageRecipeArn} -> imageRecipeArn) (\s@GetImageRecipePolicy' {} a -> s {imageRecipeArn = a} :: GetImageRecipePolicy)++instance Core.AWSRequest GetImageRecipePolicy where+  type+    AWSResponse GetImageRecipePolicy =+      GetImageRecipePolicyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetImageRecipePolicyResponse'+            Prelude.<$> (x Data..?> "policy")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetImageRecipePolicy where+  hashWithSalt _salt GetImageRecipePolicy' {..} =+    _salt `Prelude.hashWithSalt` imageRecipeArn++instance Prelude.NFData GetImageRecipePolicy where+  rnf GetImageRecipePolicy' {..} =+    Prelude.rnf imageRecipeArn++instance Data.ToHeaders GetImageRecipePolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetImageRecipePolicy where+  toPath = Prelude.const "/GetImageRecipePolicy"++instance Data.ToQuery GetImageRecipePolicy where+  toQuery GetImageRecipePolicy' {..} =+    Prelude.mconcat+      ["imageRecipeArn" Data.=: imageRecipeArn]++-- | /See:/ 'newGetImageRecipePolicyResponse' smart constructor.+data GetImageRecipePolicyResponse = GetImageRecipePolicyResponse'+  { -- | The image recipe policy object.+    policy :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImageRecipePolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'policy', 'getImageRecipePolicyResponse_policy' - The image recipe policy object.+--+-- 'requestId', 'getImageRecipePolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getImageRecipePolicyResponse_httpStatus' - The response's http status code.+newGetImageRecipePolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetImageRecipePolicyResponse+newGetImageRecipePolicyResponse pHttpStatus_ =+  GetImageRecipePolicyResponse'+    { policy =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The image recipe policy object.+getImageRecipePolicyResponse_policy :: Lens.Lens' GetImageRecipePolicyResponse (Prelude.Maybe Prelude.Text)+getImageRecipePolicyResponse_policy = Lens.lens (\GetImageRecipePolicyResponse' {policy} -> policy) (\s@GetImageRecipePolicyResponse' {} a -> s {policy = a} :: GetImageRecipePolicyResponse)++-- | The request ID that uniquely identifies this request.+getImageRecipePolicyResponse_requestId :: Lens.Lens' GetImageRecipePolicyResponse (Prelude.Maybe Prelude.Text)+getImageRecipePolicyResponse_requestId = Lens.lens (\GetImageRecipePolicyResponse' {requestId} -> requestId) (\s@GetImageRecipePolicyResponse' {} a -> s {requestId = a} :: GetImageRecipePolicyResponse)++-- | The response's http status code.+getImageRecipePolicyResponse_httpStatus :: Lens.Lens' GetImageRecipePolicyResponse Prelude.Int+getImageRecipePolicyResponse_httpStatus = Lens.lens (\GetImageRecipePolicyResponse' {httpStatus} -> httpStatus) (\s@GetImageRecipePolicyResponse' {} a -> s {httpStatus = a} :: GetImageRecipePolicyResponse)++instance Prelude.NFData GetImageRecipePolicyResponse where+  rnf GetImageRecipePolicyResponse' {..} =+    Prelude.rnf policy+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/GetInfrastructureConfiguration.hs view
@@ -0,0 +1,205 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.GetInfrastructureConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets an infrastructure configuration.+module Amazonka.ImageBuilder.GetInfrastructureConfiguration+  ( -- * Creating a Request+    GetInfrastructureConfiguration (..),+    newGetInfrastructureConfiguration,++    -- * Request Lenses+    getInfrastructureConfiguration_infrastructureConfigurationArn,++    -- * Destructuring the Response+    GetInfrastructureConfigurationResponse (..),+    newGetInfrastructureConfigurationResponse,++    -- * Response Lenses+    getInfrastructureConfigurationResponse_infrastructureConfiguration,+    getInfrastructureConfigurationResponse_requestId,+    getInfrastructureConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | GetInfrastructureConfiguration request object.+--+-- /See:/ 'newGetInfrastructureConfiguration' smart constructor.+data GetInfrastructureConfiguration = GetInfrastructureConfiguration'+  { -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- you want to retrieve.+    infrastructureConfigurationArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetInfrastructureConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'infrastructureConfigurationArn', 'getInfrastructureConfiguration_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- you want to retrieve.+newGetInfrastructureConfiguration ::+  -- | 'infrastructureConfigurationArn'+  Prelude.Text ->+  GetInfrastructureConfiguration+newGetInfrastructureConfiguration+  pInfrastructureConfigurationArn_ =+    GetInfrastructureConfiguration'+      { infrastructureConfigurationArn =+          pInfrastructureConfigurationArn_+      }++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- you want to retrieve.+getInfrastructureConfiguration_infrastructureConfigurationArn :: Lens.Lens' GetInfrastructureConfiguration Prelude.Text+getInfrastructureConfiguration_infrastructureConfigurationArn = Lens.lens (\GetInfrastructureConfiguration' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@GetInfrastructureConfiguration' {} a -> s {infrastructureConfigurationArn = a} :: GetInfrastructureConfiguration)++instance+  Core.AWSRequest+    GetInfrastructureConfiguration+  where+  type+    AWSResponse GetInfrastructureConfiguration =+      GetInfrastructureConfigurationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetInfrastructureConfigurationResponse'+            Prelude.<$> (x Data..?> "infrastructureConfiguration")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    GetInfrastructureConfiguration+  where+  hashWithSalt+    _salt+    GetInfrastructureConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` infrastructureConfigurationArn++instance+  Prelude.NFData+    GetInfrastructureConfiguration+  where+  rnf GetInfrastructureConfiguration' {..} =+    Prelude.rnf infrastructureConfigurationArn++instance+  Data.ToHeaders+    GetInfrastructureConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetInfrastructureConfiguration where+  toPath =+    Prelude.const "/GetInfrastructureConfiguration"++instance Data.ToQuery GetInfrastructureConfiguration where+  toQuery GetInfrastructureConfiguration' {..} =+    Prelude.mconcat+      [ "infrastructureConfigurationArn"+          Data.=: infrastructureConfigurationArn+      ]++-- | GetInfrastructureConfiguration response object.+--+-- /See:/ 'newGetInfrastructureConfigurationResponse' smart constructor.+data GetInfrastructureConfigurationResponse = GetInfrastructureConfigurationResponse'+  { -- | The infrastructure configuration object.+    infrastructureConfiguration :: Prelude.Maybe InfrastructureConfiguration,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetInfrastructureConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'infrastructureConfiguration', 'getInfrastructureConfigurationResponse_infrastructureConfiguration' - The infrastructure configuration object.+--+-- 'requestId', 'getInfrastructureConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'getInfrastructureConfigurationResponse_httpStatus' - The response's http status code.+newGetInfrastructureConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetInfrastructureConfigurationResponse+newGetInfrastructureConfigurationResponse+  pHttpStatus_ =+    GetInfrastructureConfigurationResponse'+      { infrastructureConfiguration =+          Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The infrastructure configuration object.+getInfrastructureConfigurationResponse_infrastructureConfiguration :: Lens.Lens' GetInfrastructureConfigurationResponse (Prelude.Maybe InfrastructureConfiguration)+getInfrastructureConfigurationResponse_infrastructureConfiguration = Lens.lens (\GetInfrastructureConfigurationResponse' {infrastructureConfiguration} -> infrastructureConfiguration) (\s@GetInfrastructureConfigurationResponse' {} a -> s {infrastructureConfiguration = a} :: GetInfrastructureConfigurationResponse)++-- | The request ID that uniquely identifies this request.+getInfrastructureConfigurationResponse_requestId :: Lens.Lens' GetInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+getInfrastructureConfigurationResponse_requestId = Lens.lens (\GetInfrastructureConfigurationResponse' {requestId} -> requestId) (\s@GetInfrastructureConfigurationResponse' {} a -> s {requestId = a} :: GetInfrastructureConfigurationResponse)++-- | The response's http status code.+getInfrastructureConfigurationResponse_httpStatus :: Lens.Lens' GetInfrastructureConfigurationResponse Prelude.Int+getInfrastructureConfigurationResponse_httpStatus = Lens.lens (\GetInfrastructureConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetInfrastructureConfigurationResponse' {} a -> s {httpStatus = a} :: GetInfrastructureConfigurationResponse)++instance+  Prelude.NFData+    GetInfrastructureConfigurationResponse+  where+  rnf GetInfrastructureConfigurationResponse' {..} =+    Prelude.rnf infrastructureConfiguration+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ImportComponent.hs view
@@ -0,0 +1,412 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ImportComponent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Imports a component and transforms its data into a component document.+module Amazonka.ImageBuilder.ImportComponent+  ( -- * Creating a Request+    ImportComponent (..),+    newImportComponent,++    -- * Request Lenses+    importComponent_changeDescription,+    importComponent_data,+    importComponent_description,+    importComponent_kmsKeyId,+    importComponent_tags,+    importComponent_uri,+    importComponent_name,+    importComponent_semanticVersion,+    importComponent_type,+    importComponent_format,+    importComponent_platform,+    importComponent_clientToken,++    -- * Destructuring the Response+    ImportComponentResponse (..),+    newImportComponentResponse,++    -- * Response Lenses+    importComponentResponse_clientToken,+    importComponentResponse_componentBuildVersionArn,+    importComponentResponse_requestId,+    importComponentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newImportComponent' smart constructor.+data ImportComponent = ImportComponent'+  { -- | The change description of the component. Describes what change has been+    -- made in this version, or what makes this version different from other+    -- versions of this component.+    changeDescription :: Prelude.Maybe Prelude.Text,+    -- | The data of the component. Used to specify the data inline. Either+    -- @data@ or @uri@ can be used to specify the data within the component.+    data' :: Prelude.Maybe Prelude.Text,+    -- | The description of the component. Describes the contents of the+    -- component.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the KMS key that should be used to encrypt this component.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The tags of the component.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The uri of the component. Must be an Amazon S3 URL and the requester+    -- must have permission to access the Amazon S3 bucket. If you use Amazon+    -- S3, you can specify component content up to your service quota. Either+    -- @data@ or @uri@ can be used to specify the data within the component.+    uri :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    name :: Prelude.Text,+    -- | The semantic version of the component. This version follows the semantic+    -- version syntax.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Filtering:__ With semantic versioning, you have the flexibility to use+    -- wildcards (x) to specify the most recent versions or nodes when+    -- selecting the base image or components for your recipe. When you use a+    -- wildcard in any node, all nodes to the right of the first wildcard must+    -- also be wildcards.+    semanticVersion :: Prelude.Text,+    -- | The type of the component denotes whether the component is used to build+    -- the image, or only to test it.+    type' :: ComponentType,+    -- | The format of the resource that you want to import as a component.+    format :: ComponentFormat,+    -- | The platform of the component.+    platform :: Platform,+    -- | The idempotency token of the component.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'changeDescription', 'importComponent_changeDescription' - The change description of the component. Describes what change has been+-- made in this version, or what makes this version different from other+-- versions of this component.+--+-- 'data'', 'importComponent_data' - The data of the component. Used to specify the data inline. Either+-- @data@ or @uri@ can be used to specify the data within the component.+--+-- 'description', 'importComponent_description' - The description of the component. Describes the contents of the+-- component.+--+-- 'kmsKeyId', 'importComponent_kmsKeyId' - The ID of the KMS key that should be used to encrypt this component.+--+-- 'tags', 'importComponent_tags' - The tags of the component.+--+-- 'uri', 'importComponent_uri' - The uri of the component. Must be an Amazon S3 URL and the requester+-- must have permission to access the Amazon S3 bucket. If you use Amazon+-- S3, you can specify component content up to your service quota. Either+-- @data@ or @uri@ can be used to specify the data within the component.+--+-- 'name', 'importComponent_name' - The name of the component.+--+-- 'semanticVersion', 'importComponent_semanticVersion' - The semantic version of the component. This version follows the semantic+-- version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+--+-- 'type'', 'importComponent_type' - The type of the component denotes whether the component is used to build+-- the image, or only to test it.+--+-- 'format', 'importComponent_format' - The format of the resource that you want to import as a component.+--+-- 'platform', 'importComponent_platform' - The platform of the component.+--+-- 'clientToken', 'importComponent_clientToken' - The idempotency token of the component.+newImportComponent ::+  -- | 'name'+  Prelude.Text ->+  -- | 'semanticVersion'+  Prelude.Text ->+  -- | 'type''+  ComponentType ->+  -- | 'format'+  ComponentFormat ->+  -- | 'platform'+  Platform ->+  -- | 'clientToken'+  Prelude.Text ->+  ImportComponent+newImportComponent+  pName_+  pSemanticVersion_+  pType_+  pFormat_+  pPlatform_+  pClientToken_ =+    ImportComponent'+      { changeDescription =+          Prelude.Nothing,+        data' = Prelude.Nothing,+        description = Prelude.Nothing,+        kmsKeyId = Prelude.Nothing,+        tags = Prelude.Nothing,+        uri = Prelude.Nothing,+        name = pName_,+        semanticVersion = pSemanticVersion_,+        type' = pType_,+        format = pFormat_,+        platform = pPlatform_,+        clientToken = pClientToken_+      }++-- | The change description of the component. Describes what change has been+-- made in this version, or what makes this version different from other+-- versions of this component.+importComponent_changeDescription :: Lens.Lens' ImportComponent (Prelude.Maybe Prelude.Text)+importComponent_changeDescription = Lens.lens (\ImportComponent' {changeDescription} -> changeDescription) (\s@ImportComponent' {} a -> s {changeDescription = a} :: ImportComponent)++-- | The data of the component. Used to specify the data inline. Either+-- @data@ or @uri@ can be used to specify the data within the component.+importComponent_data :: Lens.Lens' ImportComponent (Prelude.Maybe Prelude.Text)+importComponent_data = Lens.lens (\ImportComponent' {data'} -> data') (\s@ImportComponent' {} a -> s {data' = a} :: ImportComponent)++-- | The description of the component. Describes the contents of the+-- component.+importComponent_description :: Lens.Lens' ImportComponent (Prelude.Maybe Prelude.Text)+importComponent_description = Lens.lens (\ImportComponent' {description} -> description) (\s@ImportComponent' {} a -> s {description = a} :: ImportComponent)++-- | The ID of the KMS key that should be used to encrypt this component.+importComponent_kmsKeyId :: Lens.Lens' ImportComponent (Prelude.Maybe Prelude.Text)+importComponent_kmsKeyId = Lens.lens (\ImportComponent' {kmsKeyId} -> kmsKeyId) (\s@ImportComponent' {} a -> s {kmsKeyId = a} :: ImportComponent)++-- | The tags of the component.+importComponent_tags :: Lens.Lens' ImportComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+importComponent_tags = Lens.lens (\ImportComponent' {tags} -> tags) (\s@ImportComponent' {} a -> s {tags = a} :: ImportComponent) Prelude.. Lens.mapping Lens.coerced++-- | The uri of the component. Must be an Amazon S3 URL and the requester+-- must have permission to access the Amazon S3 bucket. If you use Amazon+-- S3, you can specify component content up to your service quota. Either+-- @data@ or @uri@ can be used to specify the data within the component.+importComponent_uri :: Lens.Lens' ImportComponent (Prelude.Maybe Prelude.Text)+importComponent_uri = Lens.lens (\ImportComponent' {uri} -> uri) (\s@ImportComponent' {} a -> s {uri = a} :: ImportComponent)++-- | The name of the component.+importComponent_name :: Lens.Lens' ImportComponent Prelude.Text+importComponent_name = Lens.lens (\ImportComponent' {name} -> name) (\s@ImportComponent' {} a -> s {name = a} :: ImportComponent)++-- | The semantic version of the component. This version follows the semantic+-- version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+importComponent_semanticVersion :: Lens.Lens' ImportComponent Prelude.Text+importComponent_semanticVersion = Lens.lens (\ImportComponent' {semanticVersion} -> semanticVersion) (\s@ImportComponent' {} a -> s {semanticVersion = a} :: ImportComponent)++-- | The type of the component denotes whether the component is used to build+-- the image, or only to test it.+importComponent_type :: Lens.Lens' ImportComponent ComponentType+importComponent_type = Lens.lens (\ImportComponent' {type'} -> type') (\s@ImportComponent' {} a -> s {type' = a} :: ImportComponent)++-- | The format of the resource that you want to import as a component.+importComponent_format :: Lens.Lens' ImportComponent ComponentFormat+importComponent_format = Lens.lens (\ImportComponent' {format} -> format) (\s@ImportComponent' {} a -> s {format = a} :: ImportComponent)++-- | The platform of the component.+importComponent_platform :: Lens.Lens' ImportComponent Platform+importComponent_platform = Lens.lens (\ImportComponent' {platform} -> platform) (\s@ImportComponent' {} a -> s {platform = a} :: ImportComponent)++-- | The idempotency token of the component.+importComponent_clientToken :: Lens.Lens' ImportComponent Prelude.Text+importComponent_clientToken = Lens.lens (\ImportComponent' {clientToken} -> clientToken) (\s@ImportComponent' {} a -> s {clientToken = a} :: ImportComponent)++instance Core.AWSRequest ImportComponent where+  type+    AWSResponse ImportComponent =+      ImportComponentResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ImportComponentResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "componentBuildVersionArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ImportComponent where+  hashWithSalt _salt ImportComponent' {..} =+    _salt+      `Prelude.hashWithSalt` changeDescription+      `Prelude.hashWithSalt` data'+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` uri+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` semanticVersion+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` format+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData ImportComponent where+  rnf ImportComponent' {..} =+    Prelude.rnf changeDescription+      `Prelude.seq` Prelude.rnf data'+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf uri+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf semanticVersion+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf format+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders ImportComponent where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ImportComponent where+  toJSON ImportComponent' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("changeDescription" Data..=)+              Prelude.<$> changeDescription,+            ("data" Data..=) Prelude.<$> data',+            ("description" Data..=) Prelude.<$> description,+            ("kmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("tags" Data..=) Prelude.<$> tags,+            ("uri" Data..=) Prelude.<$> uri,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("semanticVersion" Data..= semanticVersion),+            Prelude.Just ("type" Data..= type'),+            Prelude.Just ("format" Data..= format),+            Prelude.Just ("platform" Data..= platform),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath ImportComponent where+  toPath = Prelude.const "/ImportComponent"++instance Data.ToQuery ImportComponent where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newImportComponentResponse' smart constructor.+data ImportComponentResponse = ImportComponentResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the imported component.+    componentBuildVersionArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportComponentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'importComponentResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'componentBuildVersionArn', 'importComponentResponse_componentBuildVersionArn' - The Amazon Resource Name (ARN) of the imported component.+--+-- 'requestId', 'importComponentResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'importComponentResponse_httpStatus' - The response's http status code.+newImportComponentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ImportComponentResponse+newImportComponentResponse pHttpStatus_ =+  ImportComponentResponse'+    { clientToken =+        Prelude.Nothing,+      componentBuildVersionArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token used to make this request idempotent.+importComponentResponse_clientToken :: Lens.Lens' ImportComponentResponse (Prelude.Maybe Prelude.Text)+importComponentResponse_clientToken = Lens.lens (\ImportComponentResponse' {clientToken} -> clientToken) (\s@ImportComponentResponse' {} a -> s {clientToken = a} :: ImportComponentResponse)++-- | The Amazon Resource Name (ARN) of the imported component.+importComponentResponse_componentBuildVersionArn :: Lens.Lens' ImportComponentResponse (Prelude.Maybe Prelude.Text)+importComponentResponse_componentBuildVersionArn = Lens.lens (\ImportComponentResponse' {componentBuildVersionArn} -> componentBuildVersionArn) (\s@ImportComponentResponse' {} a -> s {componentBuildVersionArn = a} :: ImportComponentResponse)++-- | The request ID that uniquely identifies this request.+importComponentResponse_requestId :: Lens.Lens' ImportComponentResponse (Prelude.Maybe Prelude.Text)+importComponentResponse_requestId = Lens.lens (\ImportComponentResponse' {requestId} -> requestId) (\s@ImportComponentResponse' {} a -> s {requestId = a} :: ImportComponentResponse)++-- | The response's http status code.+importComponentResponse_httpStatus :: Lens.Lens' ImportComponentResponse Prelude.Int+importComponentResponse_httpStatus = Lens.lens (\ImportComponentResponse' {httpStatus} -> httpStatus) (\s@ImportComponentResponse' {} a -> s {httpStatus = a} :: ImportComponentResponse)++instance Prelude.NFData ImportComponentResponse where+  rnf ImportComponentResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf componentBuildVersionArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ImportVmImage.hs view
@@ -0,0 +1,381 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ImportVmImage+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- When you export your virtual machine (VM) from its virtualization+-- environment, that process creates a set of one or more disk container+-- files that act as snapshots of your VM’s environment, settings, and+-- data. The Amazon EC2 API+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportImage.html ImportImage>+-- action uses those files to import your VM and create an AMI. To import+-- using the CLI command, see+-- <https://docs.aws.amazon.com/cli/latest/reference/ec2/import-image.html import-image>+--+-- You can reference the task ID from the VM import to pull in the AMI that+-- the import created as the base image for your Image Builder recipe.+module Amazonka.ImageBuilder.ImportVmImage+  ( -- * Creating a Request+    ImportVmImage (..),+    newImportVmImage,++    -- * Request Lenses+    importVmImage_description,+    importVmImage_osVersion,+    importVmImage_tags,+    importVmImage_name,+    importVmImage_semanticVersion,+    importVmImage_platform,+    importVmImage_vmImportTaskId,+    importVmImage_clientToken,++    -- * Destructuring the Response+    ImportVmImageResponse (..),+    newImportVmImageResponse,++    -- * Response Lenses+    importVmImageResponse_clientToken,+    importVmImageResponse_imageArn,+    importVmImageResponse_requestId,+    importVmImageResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newImportVmImage' smart constructor.+data ImportVmImage = ImportVmImage'+  { -- | The description for the base image that is created by the import+    -- process.+    description :: Prelude.Maybe Prelude.Text,+    -- | The operating system version for the imported VM.+    osVersion :: Prelude.Maybe Prelude.Text,+    -- | Tags that are attached to the import resources.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The name of the base image that is created by the import process.+    name :: Prelude.Text,+    -- | The semantic version to attach to the base image that was created during+    -- the import process. This version follows the semantic version syntax.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    semanticVersion :: Prelude.Text,+    -- | The operating system platform for the imported VM.+    platform :: Platform,+    -- | The @importTaskId@ (API) or @ImportTaskId@ (CLI) from the Amazon EC2 VM+    -- import process. Image Builder retrieves information from the import+    -- process to pull in the AMI that is created from the VM source as the+    -- base image for your recipe.+    vmImportTaskId :: Prelude.Text,+    -- | Unique, case-sensitive identifier you provide to ensure idempotency of+    -- the request. For more information, see+    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring idempotency>+    -- in the /Amazon EC2 API Reference/.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportVmImage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'importVmImage_description' - The description for the base image that is created by the import+-- process.+--+-- 'osVersion', 'importVmImage_osVersion' - The operating system version for the imported VM.+--+-- 'tags', 'importVmImage_tags' - Tags that are attached to the import resources.+--+-- 'name', 'importVmImage_name' - The name of the base image that is created by the import process.+--+-- 'semanticVersion', 'importVmImage_semanticVersion' - The semantic version to attach to the base image that was created during+-- the import process. This version follows the semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- 'platform', 'importVmImage_platform' - The operating system platform for the imported VM.+--+-- 'vmImportTaskId', 'importVmImage_vmImportTaskId' - The @importTaskId@ (API) or @ImportTaskId@ (CLI) from the Amazon EC2 VM+-- import process. Image Builder retrieves information from the import+-- process to pull in the AMI that is created from the VM source as the+-- base image for your recipe.+--+-- 'clientToken', 'importVmImage_clientToken' - Unique, case-sensitive identifier you provide to ensure idempotency of+-- the request. For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring idempotency>+-- in the /Amazon EC2 API Reference/.+newImportVmImage ::+  -- | 'name'+  Prelude.Text ->+  -- | 'semanticVersion'+  Prelude.Text ->+  -- | 'platform'+  Platform ->+  -- | 'vmImportTaskId'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  ImportVmImage+newImportVmImage+  pName_+  pSemanticVersion_+  pPlatform_+  pVmImportTaskId_+  pClientToken_ =+    ImportVmImage'+      { description = Prelude.Nothing,+        osVersion = Prelude.Nothing,+        tags = Prelude.Nothing,+        name = pName_,+        semanticVersion = pSemanticVersion_,+        platform = pPlatform_,+        vmImportTaskId = pVmImportTaskId_,+        clientToken = pClientToken_+      }++-- | The description for the base image that is created by the import+-- process.+importVmImage_description :: Lens.Lens' ImportVmImage (Prelude.Maybe Prelude.Text)+importVmImage_description = Lens.lens (\ImportVmImage' {description} -> description) (\s@ImportVmImage' {} a -> s {description = a} :: ImportVmImage)++-- | The operating system version for the imported VM.+importVmImage_osVersion :: Lens.Lens' ImportVmImage (Prelude.Maybe Prelude.Text)+importVmImage_osVersion = Lens.lens (\ImportVmImage' {osVersion} -> osVersion) (\s@ImportVmImage' {} a -> s {osVersion = a} :: ImportVmImage)++-- | Tags that are attached to the import resources.+importVmImage_tags :: Lens.Lens' ImportVmImage (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+importVmImage_tags = Lens.lens (\ImportVmImage' {tags} -> tags) (\s@ImportVmImage' {} a -> s {tags = a} :: ImportVmImage) Prelude.. Lens.mapping Lens.coerced++-- | The name of the base image that is created by the import process.+importVmImage_name :: Lens.Lens' ImportVmImage Prelude.Text+importVmImage_name = Lens.lens (\ImportVmImage' {name} -> name) (\s@ImportVmImage' {} a -> s {name = a} :: ImportVmImage)++-- | The semantic version to attach to the base image that was created during+-- the import process. This version follows the semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+importVmImage_semanticVersion :: Lens.Lens' ImportVmImage Prelude.Text+importVmImage_semanticVersion = Lens.lens (\ImportVmImage' {semanticVersion} -> semanticVersion) (\s@ImportVmImage' {} a -> s {semanticVersion = a} :: ImportVmImage)++-- | The operating system platform for the imported VM.+importVmImage_platform :: Lens.Lens' ImportVmImage Platform+importVmImage_platform = Lens.lens (\ImportVmImage' {platform} -> platform) (\s@ImportVmImage' {} a -> s {platform = a} :: ImportVmImage)++-- | The @importTaskId@ (API) or @ImportTaskId@ (CLI) from the Amazon EC2 VM+-- import process. Image Builder retrieves information from the import+-- process to pull in the AMI that is created from the VM source as the+-- base image for your recipe.+importVmImage_vmImportTaskId :: Lens.Lens' ImportVmImage Prelude.Text+importVmImage_vmImportTaskId = Lens.lens (\ImportVmImage' {vmImportTaskId} -> vmImportTaskId) (\s@ImportVmImage' {} a -> s {vmImportTaskId = a} :: ImportVmImage)++-- | Unique, case-sensitive identifier you provide to ensure idempotency of+-- the request. For more information, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring idempotency>+-- in the /Amazon EC2 API Reference/.+importVmImage_clientToken :: Lens.Lens' ImportVmImage Prelude.Text+importVmImage_clientToken = Lens.lens (\ImportVmImage' {clientToken} -> clientToken) (\s@ImportVmImage' {} a -> s {clientToken = a} :: ImportVmImage)++instance Core.AWSRequest ImportVmImage where+  type+    AWSResponse ImportVmImage =+      ImportVmImageResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ImportVmImageResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "imageArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ImportVmImage where+  hashWithSalt _salt ImportVmImage' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` osVersion+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` semanticVersion+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` vmImportTaskId+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData ImportVmImage where+  rnf ImportVmImage' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf osVersion+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf semanticVersion+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf vmImportTaskId+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders ImportVmImage where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ImportVmImage where+  toJSON ImportVmImage' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("osVersion" Data..=) Prelude.<$> osVersion,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("semanticVersion" Data..= semanticVersion),+            Prelude.Just ("platform" Data..= platform),+            Prelude.Just+              ("vmImportTaskId" Data..= vmImportTaskId),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath ImportVmImage where+  toPath = Prelude.const "/ImportVmImage"++instance Data.ToQuery ImportVmImage where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newImportVmImageResponse' smart constructor.+data ImportVmImageResponse = ImportVmImageResponse'+  { -- | The idempotency token that was used for this request.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the AMI that was created during the VM+    -- import process. This AMI is used as the base image for the recipe that+    -- imported the VM.+    imageArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportVmImageResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'importVmImageResponse_clientToken' - The idempotency token that was used for this request.+--+-- 'imageArn', 'importVmImageResponse_imageArn' - The Amazon Resource Name (ARN) of the AMI that was created during the VM+-- import process. This AMI is used as the base image for the recipe that+-- imported the VM.+--+-- 'requestId', 'importVmImageResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'importVmImageResponse_httpStatus' - The response's http status code.+newImportVmImageResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ImportVmImageResponse+newImportVmImageResponse pHttpStatus_ =+  ImportVmImageResponse'+    { clientToken =+        Prelude.Nothing,+      imageArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token that was used for this request.+importVmImageResponse_clientToken :: Lens.Lens' ImportVmImageResponse (Prelude.Maybe Prelude.Text)+importVmImageResponse_clientToken = Lens.lens (\ImportVmImageResponse' {clientToken} -> clientToken) (\s@ImportVmImageResponse' {} a -> s {clientToken = a} :: ImportVmImageResponse)++-- | The Amazon Resource Name (ARN) of the AMI that was created during the VM+-- import process. This AMI is used as the base image for the recipe that+-- imported the VM.+importVmImageResponse_imageArn :: Lens.Lens' ImportVmImageResponse (Prelude.Maybe Prelude.Text)+importVmImageResponse_imageArn = Lens.lens (\ImportVmImageResponse' {imageArn} -> imageArn) (\s@ImportVmImageResponse' {} a -> s {imageArn = a} :: ImportVmImageResponse)++-- | The request ID that uniquely identifies this request.+importVmImageResponse_requestId :: Lens.Lens' ImportVmImageResponse (Prelude.Maybe Prelude.Text)+importVmImageResponse_requestId = Lens.lens (\ImportVmImageResponse' {requestId} -> requestId) (\s@ImportVmImageResponse' {} a -> s {requestId = a} :: ImportVmImageResponse)++-- | The response's http status code.+importVmImageResponse_httpStatus :: Lens.Lens' ImportVmImageResponse Prelude.Int+importVmImageResponse_httpStatus = Lens.lens (\ImportVmImageResponse' {httpStatus} -> httpStatus) (\s@ImportVmImageResponse' {} a -> s {httpStatus = a} :: ImportVmImageResponse)++instance Prelude.NFData ImportVmImageResponse where+  rnf ImportVmImageResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf imageArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/Lens.hs view
@@ -0,0 +1,947 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Lens+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Lens+  ( -- * Operations++    -- ** CancelImageCreation+    cancelImageCreation_imageBuildVersionArn,+    cancelImageCreation_clientToken,+    cancelImageCreationResponse_clientToken,+    cancelImageCreationResponse_imageBuildVersionArn,+    cancelImageCreationResponse_requestId,+    cancelImageCreationResponse_httpStatus,++    -- ** CreateComponent+    createComponent_changeDescription,+    createComponent_data,+    createComponent_description,+    createComponent_kmsKeyId,+    createComponent_supportedOsVersions,+    createComponent_tags,+    createComponent_uri,+    createComponent_name,+    createComponent_semanticVersion,+    createComponent_platform,+    createComponent_clientToken,+    createComponentResponse_clientToken,+    createComponentResponse_componentBuildVersionArn,+    createComponentResponse_requestId,+    createComponentResponse_httpStatus,++    -- ** CreateContainerRecipe+    createContainerRecipe_description,+    createContainerRecipe_dockerfileTemplateData,+    createContainerRecipe_dockerfileTemplateUri,+    createContainerRecipe_imageOsVersionOverride,+    createContainerRecipe_instanceConfiguration,+    createContainerRecipe_kmsKeyId,+    createContainerRecipe_platformOverride,+    createContainerRecipe_tags,+    createContainerRecipe_workingDirectory,+    createContainerRecipe_containerType,+    createContainerRecipe_name,+    createContainerRecipe_semanticVersion,+    createContainerRecipe_components,+    createContainerRecipe_parentImage,+    createContainerRecipe_targetRepository,+    createContainerRecipe_clientToken,+    createContainerRecipeResponse_clientToken,+    createContainerRecipeResponse_containerRecipeArn,+    createContainerRecipeResponse_requestId,+    createContainerRecipeResponse_httpStatus,++    -- ** CreateDistributionConfiguration+    createDistributionConfiguration_description,+    createDistributionConfiguration_tags,+    createDistributionConfiguration_name,+    createDistributionConfiguration_distributions,+    createDistributionConfiguration_clientToken,+    createDistributionConfigurationResponse_clientToken,+    createDistributionConfigurationResponse_distributionConfigurationArn,+    createDistributionConfigurationResponse_requestId,+    createDistributionConfigurationResponse_httpStatus,++    -- ** CreateImage+    createImage_containerRecipeArn,+    createImage_distributionConfigurationArn,+    createImage_enhancedImageMetadataEnabled,+    createImage_imageRecipeArn,+    createImage_imageTestsConfiguration,+    createImage_tags,+    createImage_infrastructureConfigurationArn,+    createImage_clientToken,+    createImageResponse_clientToken,+    createImageResponse_imageBuildVersionArn,+    createImageResponse_requestId,+    createImageResponse_httpStatus,++    -- ** CreateImagePipeline+    createImagePipeline_containerRecipeArn,+    createImagePipeline_description,+    createImagePipeline_distributionConfigurationArn,+    createImagePipeline_enhancedImageMetadataEnabled,+    createImagePipeline_imageRecipeArn,+    createImagePipeline_imageTestsConfiguration,+    createImagePipeline_schedule,+    createImagePipeline_status,+    createImagePipeline_tags,+    createImagePipeline_name,+    createImagePipeline_infrastructureConfigurationArn,+    createImagePipeline_clientToken,+    createImagePipelineResponse_clientToken,+    createImagePipelineResponse_imagePipelineArn,+    createImagePipelineResponse_requestId,+    createImagePipelineResponse_httpStatus,++    -- ** CreateImageRecipe+    createImageRecipe_additionalInstanceConfiguration,+    createImageRecipe_blockDeviceMappings,+    createImageRecipe_description,+    createImageRecipe_tags,+    createImageRecipe_workingDirectory,+    createImageRecipe_name,+    createImageRecipe_semanticVersion,+    createImageRecipe_components,+    createImageRecipe_parentImage,+    createImageRecipe_clientToken,+    createImageRecipeResponse_clientToken,+    createImageRecipeResponse_imageRecipeArn,+    createImageRecipeResponse_requestId,+    createImageRecipeResponse_httpStatus,++    -- ** CreateInfrastructureConfiguration+    createInfrastructureConfiguration_description,+    createInfrastructureConfiguration_instanceMetadataOptions,+    createInfrastructureConfiguration_instanceTypes,+    createInfrastructureConfiguration_keyPair,+    createInfrastructureConfiguration_logging,+    createInfrastructureConfiguration_resourceTags,+    createInfrastructureConfiguration_securityGroupIds,+    createInfrastructureConfiguration_snsTopicArn,+    createInfrastructureConfiguration_subnetId,+    createInfrastructureConfiguration_tags,+    createInfrastructureConfiguration_terminateInstanceOnFailure,+    createInfrastructureConfiguration_name,+    createInfrastructureConfiguration_instanceProfileName,+    createInfrastructureConfiguration_clientToken,+    createInfrastructureConfigurationResponse_clientToken,+    createInfrastructureConfigurationResponse_infrastructureConfigurationArn,+    createInfrastructureConfigurationResponse_requestId,+    createInfrastructureConfigurationResponse_httpStatus,++    -- ** DeleteComponent+    deleteComponent_componentBuildVersionArn,+    deleteComponentResponse_componentBuildVersionArn,+    deleteComponentResponse_requestId,+    deleteComponentResponse_httpStatus,++    -- ** DeleteContainerRecipe+    deleteContainerRecipe_containerRecipeArn,+    deleteContainerRecipeResponse_containerRecipeArn,+    deleteContainerRecipeResponse_requestId,+    deleteContainerRecipeResponse_httpStatus,++    -- ** DeleteDistributionConfiguration+    deleteDistributionConfiguration_distributionConfigurationArn,+    deleteDistributionConfigurationResponse_distributionConfigurationArn,+    deleteDistributionConfigurationResponse_requestId,+    deleteDistributionConfigurationResponse_httpStatus,++    -- ** DeleteImage+    deleteImage_imageBuildVersionArn,+    deleteImageResponse_imageBuildVersionArn,+    deleteImageResponse_requestId,+    deleteImageResponse_httpStatus,++    -- ** DeleteImagePipeline+    deleteImagePipeline_imagePipelineArn,+    deleteImagePipelineResponse_imagePipelineArn,+    deleteImagePipelineResponse_requestId,+    deleteImagePipelineResponse_httpStatus,++    -- ** DeleteImageRecipe+    deleteImageRecipe_imageRecipeArn,+    deleteImageRecipeResponse_imageRecipeArn,+    deleteImageRecipeResponse_requestId,+    deleteImageRecipeResponse_httpStatus,++    -- ** DeleteInfrastructureConfiguration+    deleteInfrastructureConfiguration_infrastructureConfigurationArn,+    deleteInfrastructureConfigurationResponse_infrastructureConfigurationArn,+    deleteInfrastructureConfigurationResponse_requestId,+    deleteInfrastructureConfigurationResponse_httpStatus,++    -- ** GetComponent+    getComponent_componentBuildVersionArn,+    getComponentResponse_component,+    getComponentResponse_requestId,+    getComponentResponse_httpStatus,++    -- ** GetComponentPolicy+    getComponentPolicy_componentArn,+    getComponentPolicyResponse_policy,+    getComponentPolicyResponse_requestId,+    getComponentPolicyResponse_httpStatus,++    -- ** GetContainerRecipe+    getContainerRecipe_containerRecipeArn,+    getContainerRecipeResponse_containerRecipe,+    getContainerRecipeResponse_requestId,+    getContainerRecipeResponse_httpStatus,++    -- ** GetContainerRecipePolicy+    getContainerRecipePolicy_containerRecipeArn,+    getContainerRecipePolicyResponse_policy,+    getContainerRecipePolicyResponse_requestId,+    getContainerRecipePolicyResponse_httpStatus,++    -- ** GetDistributionConfiguration+    getDistributionConfiguration_distributionConfigurationArn,+    getDistributionConfigurationResponse_distributionConfiguration,+    getDistributionConfigurationResponse_requestId,+    getDistributionConfigurationResponse_httpStatus,++    -- ** GetImage+    getImage_imageBuildVersionArn,+    getImageResponse_image,+    getImageResponse_requestId,+    getImageResponse_httpStatus,++    -- ** GetImagePipeline+    getImagePipeline_imagePipelineArn,+    getImagePipelineResponse_imagePipeline,+    getImagePipelineResponse_requestId,+    getImagePipelineResponse_httpStatus,++    -- ** GetImagePolicy+    getImagePolicy_imageArn,+    getImagePolicyResponse_policy,+    getImagePolicyResponse_requestId,+    getImagePolicyResponse_httpStatus,++    -- ** GetImageRecipe+    getImageRecipe_imageRecipeArn,+    getImageRecipeResponse_imageRecipe,+    getImageRecipeResponse_requestId,+    getImageRecipeResponse_httpStatus,++    -- ** GetImageRecipePolicy+    getImageRecipePolicy_imageRecipeArn,+    getImageRecipePolicyResponse_policy,+    getImageRecipePolicyResponse_requestId,+    getImageRecipePolicyResponse_httpStatus,++    -- ** GetInfrastructureConfiguration+    getInfrastructureConfiguration_infrastructureConfigurationArn,+    getInfrastructureConfigurationResponse_infrastructureConfiguration,+    getInfrastructureConfigurationResponse_requestId,+    getInfrastructureConfigurationResponse_httpStatus,++    -- ** ImportComponent+    importComponent_changeDescription,+    importComponent_data,+    importComponent_description,+    importComponent_kmsKeyId,+    importComponent_tags,+    importComponent_uri,+    importComponent_name,+    importComponent_semanticVersion,+    importComponent_type,+    importComponent_format,+    importComponent_platform,+    importComponent_clientToken,+    importComponentResponse_clientToken,+    importComponentResponse_componentBuildVersionArn,+    importComponentResponse_requestId,+    importComponentResponse_httpStatus,++    -- ** ImportVmImage+    importVmImage_description,+    importVmImage_osVersion,+    importVmImage_tags,+    importVmImage_name,+    importVmImage_semanticVersion,+    importVmImage_platform,+    importVmImage_vmImportTaskId,+    importVmImage_clientToken,+    importVmImageResponse_clientToken,+    importVmImageResponse_imageArn,+    importVmImageResponse_requestId,+    importVmImageResponse_httpStatus,++    -- ** ListComponentBuildVersions+    listComponentBuildVersions_maxResults,+    listComponentBuildVersions_nextToken,+    listComponentBuildVersions_componentVersionArn,+    listComponentBuildVersionsResponse_componentSummaryList,+    listComponentBuildVersionsResponse_nextToken,+    listComponentBuildVersionsResponse_requestId,+    listComponentBuildVersionsResponse_httpStatus,++    -- ** ListComponents+    listComponents_byName,+    listComponents_filters,+    listComponents_maxResults,+    listComponents_nextToken,+    listComponents_owner,+    listComponentsResponse_componentVersionList,+    listComponentsResponse_nextToken,+    listComponentsResponse_requestId,+    listComponentsResponse_httpStatus,++    -- ** ListContainerRecipes+    listContainerRecipes_filters,+    listContainerRecipes_maxResults,+    listContainerRecipes_nextToken,+    listContainerRecipes_owner,+    listContainerRecipesResponse_containerRecipeSummaryList,+    listContainerRecipesResponse_nextToken,+    listContainerRecipesResponse_requestId,+    listContainerRecipesResponse_httpStatus,++    -- ** ListDistributionConfigurations+    listDistributionConfigurations_filters,+    listDistributionConfigurations_maxResults,+    listDistributionConfigurations_nextToken,+    listDistributionConfigurationsResponse_distributionConfigurationSummaryList,+    listDistributionConfigurationsResponse_nextToken,+    listDistributionConfigurationsResponse_requestId,+    listDistributionConfigurationsResponse_httpStatus,++    -- ** ListImageBuildVersions+    listImageBuildVersions_filters,+    listImageBuildVersions_maxResults,+    listImageBuildVersions_nextToken,+    listImageBuildVersions_imageVersionArn,+    listImageBuildVersionsResponse_imageSummaryList,+    listImageBuildVersionsResponse_nextToken,+    listImageBuildVersionsResponse_requestId,+    listImageBuildVersionsResponse_httpStatus,++    -- ** ListImagePackages+    listImagePackages_maxResults,+    listImagePackages_nextToken,+    listImagePackages_imageBuildVersionArn,+    listImagePackagesResponse_imagePackageList,+    listImagePackagesResponse_nextToken,+    listImagePackagesResponse_requestId,+    listImagePackagesResponse_httpStatus,++    -- ** ListImagePipelineImages+    listImagePipelineImages_filters,+    listImagePipelineImages_maxResults,+    listImagePipelineImages_nextToken,+    listImagePipelineImages_imagePipelineArn,+    listImagePipelineImagesResponse_imageSummaryList,+    listImagePipelineImagesResponse_nextToken,+    listImagePipelineImagesResponse_requestId,+    listImagePipelineImagesResponse_httpStatus,++    -- ** ListImagePipelines+    listImagePipelines_filters,+    listImagePipelines_maxResults,+    listImagePipelines_nextToken,+    listImagePipelinesResponse_imagePipelineList,+    listImagePipelinesResponse_nextToken,+    listImagePipelinesResponse_requestId,+    listImagePipelinesResponse_httpStatus,++    -- ** ListImageRecipes+    listImageRecipes_filters,+    listImageRecipes_maxResults,+    listImageRecipes_nextToken,+    listImageRecipes_owner,+    listImageRecipesResponse_imageRecipeSummaryList,+    listImageRecipesResponse_nextToken,+    listImageRecipesResponse_requestId,+    listImageRecipesResponse_httpStatus,++    -- ** ListImages+    listImages_byName,+    listImages_filters,+    listImages_includeDeprecated,+    listImages_maxResults,+    listImages_nextToken,+    listImages_owner,+    listImagesResponse_imageVersionList,+    listImagesResponse_nextToken,+    listImagesResponse_requestId,+    listImagesResponse_httpStatus,++    -- ** ListInfrastructureConfigurations+    listInfrastructureConfigurations_filters,+    listInfrastructureConfigurations_maxResults,+    listInfrastructureConfigurations_nextToken,+    listInfrastructureConfigurationsResponse_infrastructureConfigurationSummaryList,+    listInfrastructureConfigurationsResponse_nextToken,+    listInfrastructureConfigurationsResponse_requestId,+    listInfrastructureConfigurationsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** PutComponentPolicy+    putComponentPolicy_componentArn,+    putComponentPolicy_policy,+    putComponentPolicyResponse_componentArn,+    putComponentPolicyResponse_requestId,+    putComponentPolicyResponse_httpStatus,++    -- ** PutContainerRecipePolicy+    putContainerRecipePolicy_containerRecipeArn,+    putContainerRecipePolicy_policy,+    putContainerRecipePolicyResponse_containerRecipeArn,+    putContainerRecipePolicyResponse_requestId,+    putContainerRecipePolicyResponse_httpStatus,++    -- ** PutImagePolicy+    putImagePolicy_imageArn,+    putImagePolicy_policy,+    putImagePolicyResponse_imageArn,+    putImagePolicyResponse_requestId,+    putImagePolicyResponse_httpStatus,++    -- ** PutImageRecipePolicy+    putImageRecipePolicy_imageRecipeArn,+    putImageRecipePolicy_policy,+    putImageRecipePolicyResponse_imageRecipeArn,+    putImageRecipePolicyResponse_requestId,+    putImageRecipePolicyResponse_httpStatus,++    -- ** StartImagePipelineExecution+    startImagePipelineExecution_imagePipelineArn,+    startImagePipelineExecution_clientToken,+    startImagePipelineExecutionResponse_clientToken,+    startImagePipelineExecutionResponse_imageBuildVersionArn,+    startImagePipelineExecutionResponse_requestId,+    startImagePipelineExecutionResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateDistributionConfiguration+    updateDistributionConfiguration_description,+    updateDistributionConfiguration_distributionConfigurationArn,+    updateDistributionConfiguration_distributions,+    updateDistributionConfiguration_clientToken,+    updateDistributionConfigurationResponse_clientToken,+    updateDistributionConfigurationResponse_distributionConfigurationArn,+    updateDistributionConfigurationResponse_requestId,+    updateDistributionConfigurationResponse_httpStatus,++    -- ** UpdateImagePipeline+    updateImagePipeline_containerRecipeArn,+    updateImagePipeline_description,+    updateImagePipeline_distributionConfigurationArn,+    updateImagePipeline_enhancedImageMetadataEnabled,+    updateImagePipeline_imageRecipeArn,+    updateImagePipeline_imageTestsConfiguration,+    updateImagePipeline_schedule,+    updateImagePipeline_status,+    updateImagePipeline_imagePipelineArn,+    updateImagePipeline_infrastructureConfigurationArn,+    updateImagePipeline_clientToken,+    updateImagePipelineResponse_clientToken,+    updateImagePipelineResponse_imagePipelineArn,+    updateImagePipelineResponse_requestId,+    updateImagePipelineResponse_httpStatus,++    -- ** UpdateInfrastructureConfiguration+    updateInfrastructureConfiguration_description,+    updateInfrastructureConfiguration_instanceMetadataOptions,+    updateInfrastructureConfiguration_instanceTypes,+    updateInfrastructureConfiguration_keyPair,+    updateInfrastructureConfiguration_logging,+    updateInfrastructureConfiguration_resourceTags,+    updateInfrastructureConfiguration_securityGroupIds,+    updateInfrastructureConfiguration_snsTopicArn,+    updateInfrastructureConfiguration_subnetId,+    updateInfrastructureConfiguration_terminateInstanceOnFailure,+    updateInfrastructureConfiguration_infrastructureConfigurationArn,+    updateInfrastructureConfiguration_instanceProfileName,+    updateInfrastructureConfiguration_clientToken,+    updateInfrastructureConfigurationResponse_clientToken,+    updateInfrastructureConfigurationResponse_infrastructureConfigurationArn,+    updateInfrastructureConfigurationResponse_requestId,+    updateInfrastructureConfigurationResponse_httpStatus,++    -- * Types++    -- ** AdditionalInstanceConfiguration+    additionalInstanceConfiguration_systemsManagerAgent,+    additionalInstanceConfiguration_userDataOverride,++    -- ** Ami+    ami_accountId,+    ami_description,+    ami_image,+    ami_name,+    ami_region,+    ami_state,++    -- ** AmiDistributionConfiguration+    amiDistributionConfiguration_amiTags,+    amiDistributionConfiguration_description,+    amiDistributionConfiguration_kmsKeyId,+    amiDistributionConfiguration_launchPermission,+    amiDistributionConfiguration_name,+    amiDistributionConfiguration_targetAccountIds,++    -- ** Component+    component_arn,+    component_changeDescription,+    component_data,+    component_dateCreated,+    component_description,+    component_encrypted,+    component_kmsKeyId,+    component_name,+    component_owner,+    component_parameters,+    component_platform,+    component_state,+    component_supportedOsVersions,+    component_tags,+    component_type,+    component_version,++    -- ** ComponentConfiguration+    componentConfiguration_parameters,+    componentConfiguration_componentArn,++    -- ** ComponentParameter+    componentParameter_name,+    componentParameter_value,++    -- ** ComponentParameterDetail+    componentParameterDetail_defaultValue,+    componentParameterDetail_description,+    componentParameterDetail_name,+    componentParameterDetail_type,++    -- ** ComponentState+    componentState_reason,+    componentState_status,++    -- ** ComponentSummary+    componentSummary_arn,+    componentSummary_changeDescription,+    componentSummary_dateCreated,+    componentSummary_description,+    componentSummary_name,+    componentSummary_owner,+    componentSummary_platform,+    componentSummary_state,+    componentSummary_supportedOsVersions,+    componentSummary_tags,+    componentSummary_type,+    componentSummary_version,++    -- ** ComponentVersion+    componentVersion_arn,+    componentVersion_dateCreated,+    componentVersion_description,+    componentVersion_name,+    componentVersion_owner,+    componentVersion_platform,+    componentVersion_supportedOsVersions,+    componentVersion_type,+    componentVersion_version,++    -- ** Container+    container_imageUris,+    container_region,++    -- ** ContainerDistributionConfiguration+    containerDistributionConfiguration_containerTags,+    containerDistributionConfiguration_description,+    containerDistributionConfiguration_targetRepository,++    -- ** ContainerRecipe+    containerRecipe_arn,+    containerRecipe_components,+    containerRecipe_containerType,+    containerRecipe_dateCreated,+    containerRecipe_description,+    containerRecipe_dockerfileTemplateData,+    containerRecipe_encrypted,+    containerRecipe_instanceConfiguration,+    containerRecipe_kmsKeyId,+    containerRecipe_name,+    containerRecipe_owner,+    containerRecipe_parentImage,+    containerRecipe_platform,+    containerRecipe_tags,+    containerRecipe_targetRepository,+    containerRecipe_version,+    containerRecipe_workingDirectory,++    -- ** ContainerRecipeSummary+    containerRecipeSummary_arn,+    containerRecipeSummary_containerType,+    containerRecipeSummary_dateCreated,+    containerRecipeSummary_name,+    containerRecipeSummary_owner,+    containerRecipeSummary_parentImage,+    containerRecipeSummary_platform,+    containerRecipeSummary_tags,++    -- ** Distribution+    distribution_amiDistributionConfiguration,+    distribution_containerDistributionConfiguration,+    distribution_fastLaunchConfigurations,+    distribution_launchTemplateConfigurations,+    distribution_licenseConfigurationArns,+    distribution_s3ExportConfiguration,+    distribution_region,++    -- ** DistributionConfiguration+    distributionConfiguration_arn,+    distributionConfiguration_dateCreated,+    distributionConfiguration_dateUpdated,+    distributionConfiguration_description,+    distributionConfiguration_distributions,+    distributionConfiguration_name,+    distributionConfiguration_tags,+    distributionConfiguration_timeoutMinutes,++    -- ** DistributionConfigurationSummary+    distributionConfigurationSummary_arn,+    distributionConfigurationSummary_dateCreated,+    distributionConfigurationSummary_dateUpdated,+    distributionConfigurationSummary_description,+    distributionConfigurationSummary_name,+    distributionConfigurationSummary_regions,+    distributionConfigurationSummary_tags,++    -- ** EbsInstanceBlockDeviceSpecification+    ebsInstanceBlockDeviceSpecification_deleteOnTermination,+    ebsInstanceBlockDeviceSpecification_encrypted,+    ebsInstanceBlockDeviceSpecification_iops,+    ebsInstanceBlockDeviceSpecification_kmsKeyId,+    ebsInstanceBlockDeviceSpecification_snapshotId,+    ebsInstanceBlockDeviceSpecification_throughput,+    ebsInstanceBlockDeviceSpecification_volumeSize,+    ebsInstanceBlockDeviceSpecification_volumeType,++    -- ** FastLaunchConfiguration+    fastLaunchConfiguration_accountId,+    fastLaunchConfiguration_launchTemplate,+    fastLaunchConfiguration_maxParallelLaunches,+    fastLaunchConfiguration_snapshotConfiguration,+    fastLaunchConfiguration_enabled,++    -- ** FastLaunchLaunchTemplateSpecification+    fastLaunchLaunchTemplateSpecification_launchTemplateId,+    fastLaunchLaunchTemplateSpecification_launchTemplateName,+    fastLaunchLaunchTemplateSpecification_launchTemplateVersion,++    -- ** FastLaunchSnapshotConfiguration+    fastLaunchSnapshotConfiguration_targetResourceCount,++    -- ** Filter+    filter_name,+    filter_values,++    -- ** Image+    image_arn,+    image_buildType,+    image_containerRecipe,+    image_dateCreated,+    image_distributionConfiguration,+    image_enhancedImageMetadataEnabled,+    image_imageRecipe,+    image_imageTestsConfiguration,+    image_infrastructureConfiguration,+    image_name,+    image_osVersion,+    image_outputResources,+    image_platform,+    image_sourcePipelineArn,+    image_sourcePipelineName,+    image_state,+    image_tags,+    image_type,+    image_version,++    -- ** ImagePackage+    imagePackage_packageName,+    imagePackage_packageVersion,++    -- ** ImagePipeline+    imagePipeline_arn,+    imagePipeline_containerRecipeArn,+    imagePipeline_dateCreated,+    imagePipeline_dateLastRun,+    imagePipeline_dateNextRun,+    imagePipeline_dateUpdated,+    imagePipeline_description,+    imagePipeline_distributionConfigurationArn,+    imagePipeline_enhancedImageMetadataEnabled,+    imagePipeline_imageRecipeArn,+    imagePipeline_imageTestsConfiguration,+    imagePipeline_infrastructureConfigurationArn,+    imagePipeline_name,+    imagePipeline_platform,+    imagePipeline_schedule,+    imagePipeline_status,+    imagePipeline_tags,++    -- ** ImageRecipe+    imageRecipe_additionalInstanceConfiguration,+    imageRecipe_arn,+    imageRecipe_blockDeviceMappings,+    imageRecipe_components,+    imageRecipe_dateCreated,+    imageRecipe_description,+    imageRecipe_name,+    imageRecipe_owner,+    imageRecipe_parentImage,+    imageRecipe_platform,+    imageRecipe_tags,+    imageRecipe_type,+    imageRecipe_version,+    imageRecipe_workingDirectory,++    -- ** ImageRecipeSummary+    imageRecipeSummary_arn,+    imageRecipeSummary_dateCreated,+    imageRecipeSummary_name,+    imageRecipeSummary_owner,+    imageRecipeSummary_parentImage,+    imageRecipeSummary_platform,+    imageRecipeSummary_tags,++    -- ** ImageState+    imageState_reason,+    imageState_status,++    -- ** ImageSummary+    imageSummary_arn,+    imageSummary_buildType,+    imageSummary_dateCreated,+    imageSummary_name,+    imageSummary_osVersion,+    imageSummary_outputResources,+    imageSummary_owner,+    imageSummary_platform,+    imageSummary_state,+    imageSummary_tags,+    imageSummary_type,+    imageSummary_version,++    -- ** ImageTestsConfiguration+    imageTestsConfiguration_imageTestsEnabled,+    imageTestsConfiguration_timeoutMinutes,++    -- ** ImageVersion+    imageVersion_arn,+    imageVersion_buildType,+    imageVersion_dateCreated,+    imageVersion_name,+    imageVersion_osVersion,+    imageVersion_owner,+    imageVersion_platform,+    imageVersion_type,+    imageVersion_version,++    -- ** InfrastructureConfiguration+    infrastructureConfiguration_arn,+    infrastructureConfiguration_dateCreated,+    infrastructureConfiguration_dateUpdated,+    infrastructureConfiguration_description,+    infrastructureConfiguration_instanceMetadataOptions,+    infrastructureConfiguration_instanceProfileName,+    infrastructureConfiguration_instanceTypes,+    infrastructureConfiguration_keyPair,+    infrastructureConfiguration_logging,+    infrastructureConfiguration_name,+    infrastructureConfiguration_resourceTags,+    infrastructureConfiguration_securityGroupIds,+    infrastructureConfiguration_snsTopicArn,+    infrastructureConfiguration_subnetId,+    infrastructureConfiguration_tags,+    infrastructureConfiguration_terminateInstanceOnFailure,++    -- ** InfrastructureConfigurationSummary+    infrastructureConfigurationSummary_arn,+    infrastructureConfigurationSummary_dateCreated,+    infrastructureConfigurationSummary_dateUpdated,+    infrastructureConfigurationSummary_description,+    infrastructureConfigurationSummary_instanceProfileName,+    infrastructureConfigurationSummary_instanceTypes,+    infrastructureConfigurationSummary_name,+    infrastructureConfigurationSummary_resourceTags,+    infrastructureConfigurationSummary_tags,++    -- ** InstanceBlockDeviceMapping+    instanceBlockDeviceMapping_deviceName,+    instanceBlockDeviceMapping_ebs,+    instanceBlockDeviceMapping_noDevice,+    instanceBlockDeviceMapping_virtualName,++    -- ** InstanceConfiguration+    instanceConfiguration_blockDeviceMappings,+    instanceConfiguration_image,++    -- ** InstanceMetadataOptions+    instanceMetadataOptions_httpPutResponseHopLimit,+    instanceMetadataOptions_httpTokens,++    -- ** LaunchPermissionConfiguration+    launchPermissionConfiguration_organizationArns,+    launchPermissionConfiguration_organizationalUnitArns,+    launchPermissionConfiguration_userGroups,+    launchPermissionConfiguration_userIds,++    -- ** LaunchTemplateConfiguration+    launchTemplateConfiguration_accountId,+    launchTemplateConfiguration_setDefaultVersion,+    launchTemplateConfiguration_launchTemplateId,++    -- ** Logging+    logging_s3Logs,++    -- ** OutputResources+    outputResources_amis,+    outputResources_containers,++    -- ** S3ExportConfiguration+    s3ExportConfiguration_s3Prefix,+    s3ExportConfiguration_roleName,+    s3ExportConfiguration_diskImageFormat,+    s3ExportConfiguration_s3Bucket,++    -- ** S3Logs+    s3Logs_s3BucketName,+    s3Logs_s3KeyPrefix,++    -- ** Schedule+    schedule_pipelineExecutionStartCondition,+    schedule_scheduleExpression,+    schedule_timezone,++    -- ** SystemsManagerAgent+    systemsManagerAgent_uninstallAfterBuild,++    -- ** TargetContainerRepository+    targetContainerRepository_service,+    targetContainerRepository_repositoryName,+  )+where++import Amazonka.ImageBuilder.CancelImageCreation+import Amazonka.ImageBuilder.CreateComponent+import Amazonka.ImageBuilder.CreateContainerRecipe+import Amazonka.ImageBuilder.CreateDistributionConfiguration+import Amazonka.ImageBuilder.CreateImage+import Amazonka.ImageBuilder.CreateImagePipeline+import Amazonka.ImageBuilder.CreateImageRecipe+import Amazonka.ImageBuilder.CreateInfrastructureConfiguration+import Amazonka.ImageBuilder.DeleteComponent+import Amazonka.ImageBuilder.DeleteContainerRecipe+import Amazonka.ImageBuilder.DeleteDistributionConfiguration+import Amazonka.ImageBuilder.DeleteImage+import Amazonka.ImageBuilder.DeleteImagePipeline+import Amazonka.ImageBuilder.DeleteImageRecipe+import Amazonka.ImageBuilder.DeleteInfrastructureConfiguration+import Amazonka.ImageBuilder.GetComponent+import Amazonka.ImageBuilder.GetComponentPolicy+import Amazonka.ImageBuilder.GetContainerRecipe+import Amazonka.ImageBuilder.GetContainerRecipePolicy+import Amazonka.ImageBuilder.GetDistributionConfiguration+import Amazonka.ImageBuilder.GetImage+import Amazonka.ImageBuilder.GetImagePipeline+import Amazonka.ImageBuilder.GetImagePolicy+import Amazonka.ImageBuilder.GetImageRecipe+import Amazonka.ImageBuilder.GetImageRecipePolicy+import Amazonka.ImageBuilder.GetInfrastructureConfiguration+import Amazonka.ImageBuilder.ImportComponent+import Amazonka.ImageBuilder.ImportVmImage+import Amazonka.ImageBuilder.ListComponentBuildVersions+import Amazonka.ImageBuilder.ListComponents+import Amazonka.ImageBuilder.ListContainerRecipes+import Amazonka.ImageBuilder.ListDistributionConfigurations+import Amazonka.ImageBuilder.ListImageBuildVersions+import Amazonka.ImageBuilder.ListImagePackages+import Amazonka.ImageBuilder.ListImagePipelineImages+import Amazonka.ImageBuilder.ListImagePipelines+import Amazonka.ImageBuilder.ListImageRecipes+import Amazonka.ImageBuilder.ListImages+import Amazonka.ImageBuilder.ListInfrastructureConfigurations+import Amazonka.ImageBuilder.ListTagsForResource+import Amazonka.ImageBuilder.PutComponentPolicy+import Amazonka.ImageBuilder.PutContainerRecipePolicy+import Amazonka.ImageBuilder.PutImagePolicy+import Amazonka.ImageBuilder.PutImageRecipePolicy+import Amazonka.ImageBuilder.StartImagePipelineExecution+import Amazonka.ImageBuilder.TagResource+import Amazonka.ImageBuilder.Types.AdditionalInstanceConfiguration+import Amazonka.ImageBuilder.Types.Ami+import Amazonka.ImageBuilder.Types.AmiDistributionConfiguration+import Amazonka.ImageBuilder.Types.Component+import Amazonka.ImageBuilder.Types.ComponentConfiguration+import Amazonka.ImageBuilder.Types.ComponentParameter+import Amazonka.ImageBuilder.Types.ComponentParameterDetail+import Amazonka.ImageBuilder.Types.ComponentState+import Amazonka.ImageBuilder.Types.ComponentSummary+import Amazonka.ImageBuilder.Types.ComponentVersion+import Amazonka.ImageBuilder.Types.Container+import Amazonka.ImageBuilder.Types.ContainerDistributionConfiguration+import Amazonka.ImageBuilder.Types.ContainerRecipe+import Amazonka.ImageBuilder.Types.ContainerRecipeSummary+import Amazonka.ImageBuilder.Types.Distribution+import Amazonka.ImageBuilder.Types.DistributionConfiguration+import Amazonka.ImageBuilder.Types.DistributionConfigurationSummary+import Amazonka.ImageBuilder.Types.EbsInstanceBlockDeviceSpecification+import Amazonka.ImageBuilder.Types.FastLaunchConfiguration+import Amazonka.ImageBuilder.Types.FastLaunchLaunchTemplateSpecification+import Amazonka.ImageBuilder.Types.FastLaunchSnapshotConfiguration+import Amazonka.ImageBuilder.Types.Filter+import Amazonka.ImageBuilder.Types.Image+import Amazonka.ImageBuilder.Types.ImagePackage+import Amazonka.ImageBuilder.Types.ImagePipeline+import Amazonka.ImageBuilder.Types.ImageRecipe+import Amazonka.ImageBuilder.Types.ImageRecipeSummary+import Amazonka.ImageBuilder.Types.ImageState+import Amazonka.ImageBuilder.Types.ImageSummary+import Amazonka.ImageBuilder.Types.ImageTestsConfiguration+import Amazonka.ImageBuilder.Types.ImageVersion+import Amazonka.ImageBuilder.Types.InfrastructureConfiguration+import Amazonka.ImageBuilder.Types.InfrastructureConfigurationSummary+import Amazonka.ImageBuilder.Types.InstanceBlockDeviceMapping+import Amazonka.ImageBuilder.Types.InstanceConfiguration+import Amazonka.ImageBuilder.Types.InstanceMetadataOptions+import Amazonka.ImageBuilder.Types.LaunchPermissionConfiguration+import Amazonka.ImageBuilder.Types.LaunchTemplateConfiguration+import Amazonka.ImageBuilder.Types.Logging+import Amazonka.ImageBuilder.Types.OutputResources+import Amazonka.ImageBuilder.Types.S3ExportConfiguration+import Amazonka.ImageBuilder.Types.S3Logs+import Amazonka.ImageBuilder.Types.Schedule+import Amazonka.ImageBuilder.Types.SystemsManagerAgent+import Amazonka.ImageBuilder.Types.TargetContainerRepository+import Amazonka.ImageBuilder.UntagResource+import Amazonka.ImageBuilder.UpdateDistributionConfiguration+import Amazonka.ImageBuilder.UpdateImagePipeline+import Amazonka.ImageBuilder.UpdateInfrastructureConfiguration
+ gen/Amazonka/ImageBuilder/ListComponentBuildVersions.hs view
@@ -0,0 +1,253 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListComponentBuildVersions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the list of component build versions for the specified semantic+-- version.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+module Amazonka.ImageBuilder.ListComponentBuildVersions+  ( -- * Creating a Request+    ListComponentBuildVersions (..),+    newListComponentBuildVersions,++    -- * Request Lenses+    listComponentBuildVersions_maxResults,+    listComponentBuildVersions_nextToken,+    listComponentBuildVersions_componentVersionArn,++    -- * Destructuring the Response+    ListComponentBuildVersionsResponse (..),+    newListComponentBuildVersionsResponse,++    -- * Response Lenses+    listComponentBuildVersionsResponse_componentSummaryList,+    listComponentBuildVersionsResponse_nextToken,+    listComponentBuildVersionsResponse_requestId,+    listComponentBuildVersionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListComponentBuildVersions' smart constructor.+data ListComponentBuildVersions = ListComponentBuildVersions'+  { -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The component version Amazon Resource Name (ARN) whose versions you want+    -- to list.+    componentVersionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponentBuildVersions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listComponentBuildVersions_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listComponentBuildVersions_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'componentVersionArn', 'listComponentBuildVersions_componentVersionArn' - The component version Amazon Resource Name (ARN) whose versions you want+-- to list.+newListComponentBuildVersions ::+  -- | 'componentVersionArn'+  Prelude.Text ->+  ListComponentBuildVersions+newListComponentBuildVersions pComponentVersionArn_ =+  ListComponentBuildVersions'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      componentVersionArn = pComponentVersionArn_+    }++-- | The maximum items to return in a request.+listComponentBuildVersions_maxResults :: Lens.Lens' ListComponentBuildVersions (Prelude.Maybe Prelude.Natural)+listComponentBuildVersions_maxResults = Lens.lens (\ListComponentBuildVersions' {maxResults} -> maxResults) (\s@ListComponentBuildVersions' {} a -> s {maxResults = a} :: ListComponentBuildVersions)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listComponentBuildVersions_nextToken :: Lens.Lens' ListComponentBuildVersions (Prelude.Maybe Prelude.Text)+listComponentBuildVersions_nextToken = Lens.lens (\ListComponentBuildVersions' {nextToken} -> nextToken) (\s@ListComponentBuildVersions' {} a -> s {nextToken = a} :: ListComponentBuildVersions)++-- | The component version Amazon Resource Name (ARN) whose versions you want+-- to list.+listComponentBuildVersions_componentVersionArn :: Lens.Lens' ListComponentBuildVersions Prelude.Text+listComponentBuildVersions_componentVersionArn = Lens.lens (\ListComponentBuildVersions' {componentVersionArn} -> componentVersionArn) (\s@ListComponentBuildVersions' {} a -> s {componentVersionArn = a} :: ListComponentBuildVersions)++instance Core.AWSRequest ListComponentBuildVersions where+  type+    AWSResponse ListComponentBuildVersions =+      ListComponentBuildVersionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListComponentBuildVersionsResponse'+            Prelude.<$> ( x+                            Data..?> "componentSummaryList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListComponentBuildVersions where+  hashWithSalt _salt ListComponentBuildVersions' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` componentVersionArn++instance Prelude.NFData ListComponentBuildVersions where+  rnf ListComponentBuildVersions' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf componentVersionArn++instance Data.ToHeaders ListComponentBuildVersions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListComponentBuildVersions where+  toJSON ListComponentBuildVersions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("componentVersionArn" Data..= componentVersionArn)+          ]+      )++instance Data.ToPath ListComponentBuildVersions where+  toPath = Prelude.const "/ListComponentBuildVersions"++instance Data.ToQuery ListComponentBuildVersions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListComponentBuildVersionsResponse' smart constructor.+data ListComponentBuildVersionsResponse = ListComponentBuildVersionsResponse'+  { -- | The list of component summaries for the specified semantic version.+    componentSummaryList :: Prelude.Maybe [ComponentSummary],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponentBuildVersionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentSummaryList', 'listComponentBuildVersionsResponse_componentSummaryList' - The list of component summaries for the specified semantic version.+--+-- 'nextToken', 'listComponentBuildVersionsResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listComponentBuildVersionsResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listComponentBuildVersionsResponse_httpStatus' - The response's http status code.+newListComponentBuildVersionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListComponentBuildVersionsResponse+newListComponentBuildVersionsResponse pHttpStatus_ =+  ListComponentBuildVersionsResponse'+    { componentSummaryList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of component summaries for the specified semantic version.+listComponentBuildVersionsResponse_componentSummaryList :: Lens.Lens' ListComponentBuildVersionsResponse (Prelude.Maybe [ComponentSummary])+listComponentBuildVersionsResponse_componentSummaryList = Lens.lens (\ListComponentBuildVersionsResponse' {componentSummaryList} -> componentSummaryList) (\s@ListComponentBuildVersionsResponse' {} a -> s {componentSummaryList = a} :: ListComponentBuildVersionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listComponentBuildVersionsResponse_nextToken :: Lens.Lens' ListComponentBuildVersionsResponse (Prelude.Maybe Prelude.Text)+listComponentBuildVersionsResponse_nextToken = Lens.lens (\ListComponentBuildVersionsResponse' {nextToken} -> nextToken) (\s@ListComponentBuildVersionsResponse' {} a -> s {nextToken = a} :: ListComponentBuildVersionsResponse)++-- | The request ID that uniquely identifies this request.+listComponentBuildVersionsResponse_requestId :: Lens.Lens' ListComponentBuildVersionsResponse (Prelude.Maybe Prelude.Text)+listComponentBuildVersionsResponse_requestId = Lens.lens (\ListComponentBuildVersionsResponse' {requestId} -> requestId) (\s@ListComponentBuildVersionsResponse' {} a -> s {requestId = a} :: ListComponentBuildVersionsResponse)++-- | The response's http status code.+listComponentBuildVersionsResponse_httpStatus :: Lens.Lens' ListComponentBuildVersionsResponse Prelude.Int+listComponentBuildVersionsResponse_httpStatus = Lens.lens (\ListComponentBuildVersionsResponse' {httpStatus} -> httpStatus) (\s@ListComponentBuildVersionsResponse' {} a -> s {httpStatus = a} :: ListComponentBuildVersionsResponse)++instance+  Prelude.NFData+    ListComponentBuildVersionsResponse+  where+  rnf ListComponentBuildVersionsResponse' {..} =+    Prelude.rnf componentSummaryList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListComponents.hs view
@@ -0,0 +1,329 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListComponents+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the list of component build versions for the specified semantic+-- version.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+module Amazonka.ImageBuilder.ListComponents+  ( -- * Creating a Request+    ListComponents (..),+    newListComponents,++    -- * Request Lenses+    listComponents_byName,+    listComponents_filters,+    listComponents_maxResults,+    listComponents_nextToken,+    listComponents_owner,++    -- * Destructuring the Response+    ListComponentsResponse (..),+    newListComponentsResponse,++    -- * Response Lenses+    listComponentsResponse_componentVersionList,+    listComponentsResponse_nextToken,+    listComponentsResponse_requestId,+    listComponentsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListComponents' smart constructor.+data ListComponents = ListComponents'+  { -- | Returns the list of component build versions for the specified name.+    byName :: Prelude.Maybe Prelude.Bool,+    -- | Use the following filters to streamline results:+    --+    -- -   @description@+    --+    -- -   @name@+    --+    -- -   @platform@+    --+    -- -   @supportedOsVersion@+    --+    -- -   @type@+    --+    -- -   @version@+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The owner defines which components you want to list. By default, this+    -- request will only show components owned by your account. You can use+    -- this field to specify if you want to view components owned by yourself,+    -- by Amazon, or those components that have been shared with you by other+    -- customers.+    owner :: Prelude.Maybe Ownership+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponents' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'byName', 'listComponents_byName' - Returns the list of component build versions for the specified name.+--+-- 'filters', 'listComponents_filters' - Use the following filters to streamline results:+--+-- -   @description@+--+-- -   @name@+--+-- -   @platform@+--+-- -   @supportedOsVersion@+--+-- -   @type@+--+-- -   @version@+--+-- 'maxResults', 'listComponents_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listComponents_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'owner', 'listComponents_owner' - The owner defines which components you want to list. By default, this+-- request will only show components owned by your account. You can use+-- this field to specify if you want to view components owned by yourself,+-- by Amazon, or those components that have been shared with you by other+-- customers.+newListComponents ::+  ListComponents+newListComponents =+  ListComponents'+    { byName = Prelude.Nothing,+      filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      owner = Prelude.Nothing+    }++-- | Returns the list of component build versions for the specified name.+listComponents_byName :: Lens.Lens' ListComponents (Prelude.Maybe Prelude.Bool)+listComponents_byName = Lens.lens (\ListComponents' {byName} -> byName) (\s@ListComponents' {} a -> s {byName = a} :: ListComponents)++-- | Use the following filters to streamline results:+--+-- -   @description@+--+-- -   @name@+--+-- -   @platform@+--+-- -   @supportedOsVersion@+--+-- -   @type@+--+-- -   @version@+listComponents_filters :: Lens.Lens' ListComponents (Prelude.Maybe (Prelude.NonEmpty Filter))+listComponents_filters = Lens.lens (\ListComponents' {filters} -> filters) (\s@ListComponents' {} a -> s {filters = a} :: ListComponents) Prelude.. Lens.mapping Lens.coerced++-- | The maximum items to return in a request.+listComponents_maxResults :: Lens.Lens' ListComponents (Prelude.Maybe Prelude.Natural)+listComponents_maxResults = Lens.lens (\ListComponents' {maxResults} -> maxResults) (\s@ListComponents' {} a -> s {maxResults = a} :: ListComponents)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listComponents_nextToken :: Lens.Lens' ListComponents (Prelude.Maybe Prelude.Text)+listComponents_nextToken = Lens.lens (\ListComponents' {nextToken} -> nextToken) (\s@ListComponents' {} a -> s {nextToken = a} :: ListComponents)++-- | The owner defines which components you want to list. By default, this+-- request will only show components owned by your account. You can use+-- this field to specify if you want to view components owned by yourself,+-- by Amazon, or those components that have been shared with you by other+-- customers.+listComponents_owner :: Lens.Lens' ListComponents (Prelude.Maybe Ownership)+listComponents_owner = Lens.lens (\ListComponents' {owner} -> owner) (\s@ListComponents' {} a -> s {owner = a} :: ListComponents)++instance Core.AWSRequest ListComponents where+  type+    AWSResponse ListComponents =+      ListComponentsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListComponentsResponse'+            Prelude.<$> ( x+                            Data..?> "componentVersionList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListComponents where+  hashWithSalt _salt ListComponents' {..} =+    _salt+      `Prelude.hashWithSalt` byName+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` owner++instance Prelude.NFData ListComponents where+  rnf ListComponents' {..} =+    Prelude.rnf byName+      `Prelude.seq` Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf owner++instance Data.ToHeaders ListComponents where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListComponents where+  toJSON ListComponents' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("byName" Data..=) Prelude.<$> byName,+            ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("owner" Data..=) Prelude.<$> owner+          ]+      )++instance Data.ToPath ListComponents where+  toPath = Prelude.const "/ListComponents"++instance Data.ToQuery ListComponents where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListComponentsResponse' smart constructor.+data ListComponentsResponse = ListComponentsResponse'+  { -- | The list of component semantic versions.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    componentVersionList :: Prelude.Maybe [ComponentVersion],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponentsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentVersionList', 'listComponentsResponse_componentVersionList' - The list of component semantic versions.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- 'nextToken', 'listComponentsResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listComponentsResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listComponentsResponse_httpStatus' - The response's http status code.+newListComponentsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListComponentsResponse+newListComponentsResponse pHttpStatus_ =+  ListComponentsResponse'+    { componentVersionList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of component semantic versions.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+listComponentsResponse_componentVersionList :: Lens.Lens' ListComponentsResponse (Prelude.Maybe [ComponentVersion])+listComponentsResponse_componentVersionList = Lens.lens (\ListComponentsResponse' {componentVersionList} -> componentVersionList) (\s@ListComponentsResponse' {} a -> s {componentVersionList = a} :: ListComponentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listComponentsResponse_nextToken :: Lens.Lens' ListComponentsResponse (Prelude.Maybe Prelude.Text)+listComponentsResponse_nextToken = Lens.lens (\ListComponentsResponse' {nextToken} -> nextToken) (\s@ListComponentsResponse' {} a -> s {nextToken = a} :: ListComponentsResponse)++-- | The request ID that uniquely identifies this request.+listComponentsResponse_requestId :: Lens.Lens' ListComponentsResponse (Prelude.Maybe Prelude.Text)+listComponentsResponse_requestId = Lens.lens (\ListComponentsResponse' {requestId} -> requestId) (\s@ListComponentsResponse' {} a -> s {requestId = a} :: ListComponentsResponse)++-- | The response's http status code.+listComponentsResponse_httpStatus :: Lens.Lens' ListComponentsResponse Prelude.Int+listComponentsResponse_httpStatus = Lens.lens (\ListComponentsResponse' {httpStatus} -> httpStatus) (\s@ListComponentsResponse' {} a -> s {httpStatus = a} :: ListComponentsResponse)++instance Prelude.NFData ListComponentsResponse where+  rnf ListComponentsResponse' {..} =+    Prelude.rnf componentVersionList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListContainerRecipes.hs view
@@ -0,0 +1,278 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListContainerRecipes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of container recipes.+module Amazonka.ImageBuilder.ListContainerRecipes+  ( -- * Creating a Request+    ListContainerRecipes (..),+    newListContainerRecipes,++    -- * Request Lenses+    listContainerRecipes_filters,+    listContainerRecipes_maxResults,+    listContainerRecipes_nextToken,+    listContainerRecipes_owner,++    -- * Destructuring the Response+    ListContainerRecipesResponse (..),+    newListContainerRecipesResponse,++    -- * Response Lenses+    listContainerRecipesResponse_containerRecipeSummaryList,+    listContainerRecipesResponse_nextToken,+    listContainerRecipesResponse_requestId,+    listContainerRecipesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListContainerRecipes' smart constructor.+data ListContainerRecipes = ListContainerRecipes'+  { -- | Use the following filters to streamline results:+    --+    -- -   @containerType@+    --+    -- -   @name@+    --+    -- -   @parentImage@+    --+    -- -   @platform@+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum number of results to return in the list.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | Provides a token for pagination, which determines where to begin the+    -- next set of results when the current set reaches the maximum for one+    -- request.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Returns container recipes belonging to the specified owner, that have+    -- been shared with you. You can omit this field to return container+    -- recipes belonging to your account.+    owner :: Prelude.Maybe Ownership+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListContainerRecipes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'listContainerRecipes_filters' - Use the following filters to streamline results:+--+-- -   @containerType@+--+-- -   @name@+--+-- -   @parentImage@+--+-- -   @platform@+--+-- 'maxResults', 'listContainerRecipes_maxResults' - The maximum number of results to return in the list.+--+-- 'nextToken', 'listContainerRecipes_nextToken' - Provides a token for pagination, which determines where to begin the+-- next set of results when the current set reaches the maximum for one+-- request.+--+-- 'owner', 'listContainerRecipes_owner' - Returns container recipes belonging to the specified owner, that have+-- been shared with you. You can omit this field to return container+-- recipes belonging to your account.+newListContainerRecipes ::+  ListContainerRecipes+newListContainerRecipes =+  ListContainerRecipes'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      owner = Prelude.Nothing+    }++-- | Use the following filters to streamline results:+--+-- -   @containerType@+--+-- -   @name@+--+-- -   @parentImage@+--+-- -   @platform@+listContainerRecipes_filters :: Lens.Lens' ListContainerRecipes (Prelude.Maybe (Prelude.NonEmpty Filter))+listContainerRecipes_filters = Lens.lens (\ListContainerRecipes' {filters} -> filters) (\s@ListContainerRecipes' {} a -> s {filters = a} :: ListContainerRecipes) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of results to return in the list.+listContainerRecipes_maxResults :: Lens.Lens' ListContainerRecipes (Prelude.Maybe Prelude.Natural)+listContainerRecipes_maxResults = Lens.lens (\ListContainerRecipes' {maxResults} -> maxResults) (\s@ListContainerRecipes' {} a -> s {maxResults = a} :: ListContainerRecipes)++-- | Provides a token for pagination, which determines where to begin the+-- next set of results when the current set reaches the maximum for one+-- request.+listContainerRecipes_nextToken :: Lens.Lens' ListContainerRecipes (Prelude.Maybe Prelude.Text)+listContainerRecipes_nextToken = Lens.lens (\ListContainerRecipes' {nextToken} -> nextToken) (\s@ListContainerRecipes' {} a -> s {nextToken = a} :: ListContainerRecipes)++-- | Returns container recipes belonging to the specified owner, that have+-- been shared with you. You can omit this field to return container+-- recipes belonging to your account.+listContainerRecipes_owner :: Lens.Lens' ListContainerRecipes (Prelude.Maybe Ownership)+listContainerRecipes_owner = Lens.lens (\ListContainerRecipes' {owner} -> owner) (\s@ListContainerRecipes' {} a -> s {owner = a} :: ListContainerRecipes)++instance Core.AWSRequest ListContainerRecipes where+  type+    AWSResponse ListContainerRecipes =+      ListContainerRecipesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListContainerRecipesResponse'+            Prelude.<$> ( x+                            Data..?> "containerRecipeSummaryList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListContainerRecipes where+  hashWithSalt _salt ListContainerRecipes' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` owner++instance Prelude.NFData ListContainerRecipes where+  rnf ListContainerRecipes' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf owner++instance Data.ToHeaders ListContainerRecipes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListContainerRecipes where+  toJSON ListContainerRecipes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("owner" Data..=) Prelude.<$> owner+          ]+      )++instance Data.ToPath ListContainerRecipes where+  toPath = Prelude.const "/ListContainerRecipes"++instance Data.ToQuery ListContainerRecipes where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListContainerRecipesResponse' smart constructor.+data ListContainerRecipesResponse = ListContainerRecipesResponse'+  { -- | The list of container recipes returned for the request.+    containerRecipeSummaryList :: Prelude.Maybe [ContainerRecipeSummary],+    -- | The next token field is used for paginated responses. When this is not+    -- empty, there are additional container recipes that the service has not+    -- included in this response. Use this token with the next request to+    -- retrieve additional list items.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListContainerRecipesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeSummaryList', 'listContainerRecipesResponse_containerRecipeSummaryList' - The list of container recipes returned for the request.+--+-- 'nextToken', 'listContainerRecipesResponse_nextToken' - The next token field is used for paginated responses. When this is not+-- empty, there are additional container recipes that the service has not+-- included in this response. Use this token with the next request to+-- retrieve additional list items.+--+-- 'requestId', 'listContainerRecipesResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listContainerRecipesResponse_httpStatus' - The response's http status code.+newListContainerRecipesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListContainerRecipesResponse+newListContainerRecipesResponse pHttpStatus_ =+  ListContainerRecipesResponse'+    { containerRecipeSummaryList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of container recipes returned for the request.+listContainerRecipesResponse_containerRecipeSummaryList :: Lens.Lens' ListContainerRecipesResponse (Prelude.Maybe [ContainerRecipeSummary])+listContainerRecipesResponse_containerRecipeSummaryList = Lens.lens (\ListContainerRecipesResponse' {containerRecipeSummaryList} -> containerRecipeSummaryList) (\s@ListContainerRecipesResponse' {} a -> s {containerRecipeSummaryList = a} :: ListContainerRecipesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token field is used for paginated responses. When this is not+-- empty, there are additional container recipes that the service has not+-- included in this response. Use this token with the next request to+-- retrieve additional list items.+listContainerRecipesResponse_nextToken :: Lens.Lens' ListContainerRecipesResponse (Prelude.Maybe Prelude.Text)+listContainerRecipesResponse_nextToken = Lens.lens (\ListContainerRecipesResponse' {nextToken} -> nextToken) (\s@ListContainerRecipesResponse' {} a -> s {nextToken = a} :: ListContainerRecipesResponse)++-- | The request ID that uniquely identifies this request.+listContainerRecipesResponse_requestId :: Lens.Lens' ListContainerRecipesResponse (Prelude.Maybe Prelude.Text)+listContainerRecipesResponse_requestId = Lens.lens (\ListContainerRecipesResponse' {requestId} -> requestId) (\s@ListContainerRecipesResponse' {} a -> s {requestId = a} :: ListContainerRecipesResponse)++-- | The response's http status code.+listContainerRecipesResponse_httpStatus :: Lens.Lens' ListContainerRecipesResponse Prelude.Int+listContainerRecipesResponse_httpStatus = Lens.lens (\ListContainerRecipesResponse' {httpStatus} -> httpStatus) (\s@ListContainerRecipesResponse' {} a -> s {httpStatus = a} :: ListContainerRecipesResponse)++instance Prelude.NFData ListContainerRecipesResponse where+  rnf ListContainerRecipesResponse' {..} =+    Prelude.rnf containerRecipeSummaryList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListDistributionConfigurations.hs view
@@ -0,0 +1,252 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListDistributionConfigurations+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of distribution configurations.+module Amazonka.ImageBuilder.ListDistributionConfigurations+  ( -- * Creating a Request+    ListDistributionConfigurations (..),+    newListDistributionConfigurations,++    -- * Request Lenses+    listDistributionConfigurations_filters,+    listDistributionConfigurations_maxResults,+    listDistributionConfigurations_nextToken,++    -- * Destructuring the Response+    ListDistributionConfigurationsResponse (..),+    newListDistributionConfigurationsResponse,++    -- * Response Lenses+    listDistributionConfigurationsResponse_distributionConfigurationSummaryList,+    listDistributionConfigurationsResponse_nextToken,+    listDistributionConfigurationsResponse_requestId,+    listDistributionConfigurationsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListDistributionConfigurations' smart constructor.+data ListDistributionConfigurations = ListDistributionConfigurations'+  { -- | You can filter on @name@ to streamline results.+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDistributionConfigurations' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'listDistributionConfigurations_filters' - You can filter on @name@ to streamline results.+--+-- 'maxResults', 'listDistributionConfigurations_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listDistributionConfigurations_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+newListDistributionConfigurations ::+  ListDistributionConfigurations+newListDistributionConfigurations =+  ListDistributionConfigurations'+    { filters =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | You can filter on @name@ to streamline results.+listDistributionConfigurations_filters :: Lens.Lens' ListDistributionConfigurations (Prelude.Maybe (Prelude.NonEmpty Filter))+listDistributionConfigurations_filters = Lens.lens (\ListDistributionConfigurations' {filters} -> filters) (\s@ListDistributionConfigurations' {} a -> s {filters = a} :: ListDistributionConfigurations) Prelude.. Lens.mapping Lens.coerced++-- | The maximum items to return in a request.+listDistributionConfigurations_maxResults :: Lens.Lens' ListDistributionConfigurations (Prelude.Maybe Prelude.Natural)+listDistributionConfigurations_maxResults = Lens.lens (\ListDistributionConfigurations' {maxResults} -> maxResults) (\s@ListDistributionConfigurations' {} a -> s {maxResults = a} :: ListDistributionConfigurations)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listDistributionConfigurations_nextToken :: Lens.Lens' ListDistributionConfigurations (Prelude.Maybe Prelude.Text)+listDistributionConfigurations_nextToken = Lens.lens (\ListDistributionConfigurations' {nextToken} -> nextToken) (\s@ListDistributionConfigurations' {} a -> s {nextToken = a} :: ListDistributionConfigurations)++instance+  Core.AWSRequest+    ListDistributionConfigurations+  where+  type+    AWSResponse ListDistributionConfigurations =+      ListDistributionConfigurationsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDistributionConfigurationsResponse'+            Prelude.<$> ( x+                            Data..?> "distributionConfigurationSummaryList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListDistributionConfigurations+  where+  hashWithSalt+    _salt+    ListDistributionConfigurations' {..} =+      _salt+        `Prelude.hashWithSalt` filters+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken++instance+  Prelude.NFData+    ListDistributionConfigurations+  where+  rnf ListDistributionConfigurations' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance+  Data.ToHeaders+    ListDistributionConfigurations+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListDistributionConfigurations where+  toJSON ListDistributionConfigurations' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListDistributionConfigurations where+  toPath =+    Prelude.const "/ListDistributionConfigurations"++instance Data.ToQuery ListDistributionConfigurations where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListDistributionConfigurationsResponse' smart constructor.+data ListDistributionConfigurationsResponse = ListDistributionConfigurationsResponse'+  { -- | The list of distributions.+    distributionConfigurationSummaryList :: Prelude.Maybe [DistributionConfigurationSummary],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDistributionConfigurationsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'distributionConfigurationSummaryList', 'listDistributionConfigurationsResponse_distributionConfigurationSummaryList' - The list of distributions.+--+-- 'nextToken', 'listDistributionConfigurationsResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listDistributionConfigurationsResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listDistributionConfigurationsResponse_httpStatus' - The response's http status code.+newListDistributionConfigurationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDistributionConfigurationsResponse+newListDistributionConfigurationsResponse+  pHttpStatus_ =+    ListDistributionConfigurationsResponse'+      { distributionConfigurationSummaryList =+          Prelude.Nothing,+        nextToken = Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The list of distributions.+listDistributionConfigurationsResponse_distributionConfigurationSummaryList :: Lens.Lens' ListDistributionConfigurationsResponse (Prelude.Maybe [DistributionConfigurationSummary])+listDistributionConfigurationsResponse_distributionConfigurationSummaryList = Lens.lens (\ListDistributionConfigurationsResponse' {distributionConfigurationSummaryList} -> distributionConfigurationSummaryList) (\s@ListDistributionConfigurationsResponse' {} a -> s {distributionConfigurationSummaryList = a} :: ListDistributionConfigurationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listDistributionConfigurationsResponse_nextToken :: Lens.Lens' ListDistributionConfigurationsResponse (Prelude.Maybe Prelude.Text)+listDistributionConfigurationsResponse_nextToken = Lens.lens (\ListDistributionConfigurationsResponse' {nextToken} -> nextToken) (\s@ListDistributionConfigurationsResponse' {} a -> s {nextToken = a} :: ListDistributionConfigurationsResponse)++-- | The request ID that uniquely identifies this request.+listDistributionConfigurationsResponse_requestId :: Lens.Lens' ListDistributionConfigurationsResponse (Prelude.Maybe Prelude.Text)+listDistributionConfigurationsResponse_requestId = Lens.lens (\ListDistributionConfigurationsResponse' {requestId} -> requestId) (\s@ListDistributionConfigurationsResponse' {} a -> s {requestId = a} :: ListDistributionConfigurationsResponse)++-- | The response's http status code.+listDistributionConfigurationsResponse_httpStatus :: Lens.Lens' ListDistributionConfigurationsResponse Prelude.Int+listDistributionConfigurationsResponse_httpStatus = Lens.lens (\ListDistributionConfigurationsResponse' {httpStatus} -> httpStatus) (\s@ListDistributionConfigurationsResponse' {} a -> s {httpStatus = a} :: ListDistributionConfigurationsResponse)++instance+  Prelude.NFData+    ListDistributionConfigurationsResponse+  where+  rnf ListDistributionConfigurationsResponse' {..} =+    Prelude.rnf distributionConfigurationSummaryList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListImageBuildVersions.hs view
@@ -0,0 +1,284 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListImageBuildVersions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of image build versions.+module Amazonka.ImageBuilder.ListImageBuildVersions+  ( -- * Creating a Request+    ListImageBuildVersions (..),+    newListImageBuildVersions,++    -- * Request Lenses+    listImageBuildVersions_filters,+    listImageBuildVersions_maxResults,+    listImageBuildVersions_nextToken,+    listImageBuildVersions_imageVersionArn,++    -- * Destructuring the Response+    ListImageBuildVersionsResponse (..),+    newListImageBuildVersionsResponse,++    -- * Response Lenses+    listImageBuildVersionsResponse_imageSummaryList,+    listImageBuildVersionsResponse_nextToken,+    listImageBuildVersionsResponse_requestId,+    listImageBuildVersionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListImageBuildVersions' smart constructor.+data ListImageBuildVersions = ListImageBuildVersions'+  { -- | Use the following filters to streamline results:+    --+    -- -   @name@+    --+    -- -   @osVersion@+    --+    -- -   @platform@+    --+    -- -   @type@+    --+    -- -   @version@+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image whose build versions you+    -- want to retrieve.+    imageVersionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImageBuildVersions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'listImageBuildVersions_filters' - Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @osVersion@+--+-- -   @platform@+--+-- -   @type@+--+-- -   @version@+--+-- 'maxResults', 'listImageBuildVersions_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listImageBuildVersions_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'imageVersionArn', 'listImageBuildVersions_imageVersionArn' - The Amazon Resource Name (ARN) of the image whose build versions you+-- want to retrieve.+newListImageBuildVersions ::+  -- | 'imageVersionArn'+  Prelude.Text ->+  ListImageBuildVersions+newListImageBuildVersions pImageVersionArn_ =+  ListImageBuildVersions'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      imageVersionArn = pImageVersionArn_+    }++-- | Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @osVersion@+--+-- -   @platform@+--+-- -   @type@+--+-- -   @version@+listImageBuildVersions_filters :: Lens.Lens' ListImageBuildVersions (Prelude.Maybe (Prelude.NonEmpty Filter))+listImageBuildVersions_filters = Lens.lens (\ListImageBuildVersions' {filters} -> filters) (\s@ListImageBuildVersions' {} a -> s {filters = a} :: ListImageBuildVersions) Prelude.. Lens.mapping Lens.coerced++-- | The maximum items to return in a request.+listImageBuildVersions_maxResults :: Lens.Lens' ListImageBuildVersions (Prelude.Maybe Prelude.Natural)+listImageBuildVersions_maxResults = Lens.lens (\ListImageBuildVersions' {maxResults} -> maxResults) (\s@ListImageBuildVersions' {} a -> s {maxResults = a} :: ListImageBuildVersions)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listImageBuildVersions_nextToken :: Lens.Lens' ListImageBuildVersions (Prelude.Maybe Prelude.Text)+listImageBuildVersions_nextToken = Lens.lens (\ListImageBuildVersions' {nextToken} -> nextToken) (\s@ListImageBuildVersions' {} a -> s {nextToken = a} :: ListImageBuildVersions)++-- | The Amazon Resource Name (ARN) of the image whose build versions you+-- want to retrieve.+listImageBuildVersions_imageVersionArn :: Lens.Lens' ListImageBuildVersions Prelude.Text+listImageBuildVersions_imageVersionArn = Lens.lens (\ListImageBuildVersions' {imageVersionArn} -> imageVersionArn) (\s@ListImageBuildVersions' {} a -> s {imageVersionArn = a} :: ListImageBuildVersions)++instance Core.AWSRequest ListImageBuildVersions where+  type+    AWSResponse ListImageBuildVersions =+      ListImageBuildVersionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListImageBuildVersionsResponse'+            Prelude.<$> ( x+                            Data..?> "imageSummaryList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListImageBuildVersions where+  hashWithSalt _salt ListImageBuildVersions' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` imageVersionArn++instance Prelude.NFData ListImageBuildVersions where+  rnf ListImageBuildVersions' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf imageVersionArn++instance Data.ToHeaders ListImageBuildVersions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListImageBuildVersions where+  toJSON ListImageBuildVersions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("imageVersionArn" Data..= imageVersionArn)+          ]+      )++instance Data.ToPath ListImageBuildVersions where+  toPath = Prelude.const "/ListImageBuildVersions"++instance Data.ToQuery ListImageBuildVersions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListImageBuildVersionsResponse' smart constructor.+data ListImageBuildVersionsResponse = ListImageBuildVersionsResponse'+  { -- | The list of image build versions.+    imageSummaryList :: Prelude.Maybe [ImageSummary],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImageBuildVersionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageSummaryList', 'listImageBuildVersionsResponse_imageSummaryList' - The list of image build versions.+--+-- 'nextToken', 'listImageBuildVersionsResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listImageBuildVersionsResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listImageBuildVersionsResponse_httpStatus' - The response's http status code.+newListImageBuildVersionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListImageBuildVersionsResponse+newListImageBuildVersionsResponse pHttpStatus_ =+  ListImageBuildVersionsResponse'+    { imageSummaryList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of image build versions.+listImageBuildVersionsResponse_imageSummaryList :: Lens.Lens' ListImageBuildVersionsResponse (Prelude.Maybe [ImageSummary])+listImageBuildVersionsResponse_imageSummaryList = Lens.lens (\ListImageBuildVersionsResponse' {imageSummaryList} -> imageSummaryList) (\s@ListImageBuildVersionsResponse' {} a -> s {imageSummaryList = a} :: ListImageBuildVersionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listImageBuildVersionsResponse_nextToken :: Lens.Lens' ListImageBuildVersionsResponse (Prelude.Maybe Prelude.Text)+listImageBuildVersionsResponse_nextToken = Lens.lens (\ListImageBuildVersionsResponse' {nextToken} -> nextToken) (\s@ListImageBuildVersionsResponse' {} a -> s {nextToken = a} :: ListImageBuildVersionsResponse)++-- | The request ID that uniquely identifies this request.+listImageBuildVersionsResponse_requestId :: Lens.Lens' ListImageBuildVersionsResponse (Prelude.Maybe Prelude.Text)+listImageBuildVersionsResponse_requestId = Lens.lens (\ListImageBuildVersionsResponse' {requestId} -> requestId) (\s@ListImageBuildVersionsResponse' {} a -> s {requestId = a} :: ListImageBuildVersionsResponse)++-- | The response's http status code.+listImageBuildVersionsResponse_httpStatus :: Lens.Lens' ListImageBuildVersionsResponse Prelude.Int+listImageBuildVersionsResponse_httpStatus = Lens.lens (\ListImageBuildVersionsResponse' {httpStatus} -> httpStatus) (\s@ListImageBuildVersionsResponse' {} a -> s {httpStatus = a} :: ListImageBuildVersionsResponse)++instance+  Prelude.NFData+    ListImageBuildVersionsResponse+  where+  rnf ListImageBuildVersionsResponse' {..} =+    Prelude.rnf imageSummaryList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListImagePackages.hs view
@@ -0,0 +1,239 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListImagePackages+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List the Packages that are associated with an Image Build Version, as+-- determined by Amazon Web Services Systems Manager Inventory at build+-- time.+module Amazonka.ImageBuilder.ListImagePackages+  ( -- * Creating a Request+    ListImagePackages (..),+    newListImagePackages,++    -- * Request Lenses+    listImagePackages_maxResults,+    listImagePackages_nextToken,+    listImagePackages_imageBuildVersionArn,++    -- * Destructuring the Response+    ListImagePackagesResponse (..),+    newListImagePackagesResponse,++    -- * Response Lenses+    listImagePackagesResponse_imagePackageList,+    listImagePackagesResponse_nextToken,+    listImagePackagesResponse_requestId,+    listImagePackagesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListImagePackages' smart constructor.+data ListImagePackages = ListImagePackages'+  { -- | The maxiumum number of results to return from the ListImagePackages+    -- request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Filter results for the ListImagePackages request by the Image Build+    -- Version ARN+    imageBuildVersionArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImagePackages' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'maxResults', 'listImagePackages_maxResults' - The maxiumum number of results to return from the ListImagePackages+-- request.+--+-- 'nextToken', 'listImagePackages_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'imageBuildVersionArn', 'listImagePackages_imageBuildVersionArn' - Filter results for the ListImagePackages request by the Image Build+-- Version ARN+newListImagePackages ::+  -- | 'imageBuildVersionArn'+  Prelude.Text ->+  ListImagePackages+newListImagePackages pImageBuildVersionArn_ =+  ListImagePackages'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      imageBuildVersionArn = pImageBuildVersionArn_+    }++-- | The maxiumum number of results to return from the ListImagePackages+-- request.+listImagePackages_maxResults :: Lens.Lens' ListImagePackages (Prelude.Maybe Prelude.Natural)+listImagePackages_maxResults = Lens.lens (\ListImagePackages' {maxResults} -> maxResults) (\s@ListImagePackages' {} a -> s {maxResults = a} :: ListImagePackages)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listImagePackages_nextToken :: Lens.Lens' ListImagePackages (Prelude.Maybe Prelude.Text)+listImagePackages_nextToken = Lens.lens (\ListImagePackages' {nextToken} -> nextToken) (\s@ListImagePackages' {} a -> s {nextToken = a} :: ListImagePackages)++-- | Filter results for the ListImagePackages request by the Image Build+-- Version ARN+listImagePackages_imageBuildVersionArn :: Lens.Lens' ListImagePackages Prelude.Text+listImagePackages_imageBuildVersionArn = Lens.lens (\ListImagePackages' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@ListImagePackages' {} a -> s {imageBuildVersionArn = a} :: ListImagePackages)++instance Core.AWSRequest ListImagePackages where+  type+    AWSResponse ListImagePackages =+      ListImagePackagesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListImagePackagesResponse'+            Prelude.<$> ( x+                            Data..?> "imagePackageList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListImagePackages where+  hashWithSalt _salt ListImagePackages' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` imageBuildVersionArn++instance Prelude.NFData ListImagePackages where+  rnf ListImagePackages' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf imageBuildVersionArn++instance Data.ToHeaders ListImagePackages where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListImagePackages where+  toJSON ListImagePackages' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ( "imageBuildVersionArn"+                  Data..= imageBuildVersionArn+              )+          ]+      )++instance Data.ToPath ListImagePackages where+  toPath = Prelude.const "/ListImagePackages"++instance Data.ToQuery ListImagePackages where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListImagePackagesResponse' smart constructor.+data ListImagePackagesResponse = ListImagePackagesResponse'+  { -- | The list of Image Packages returned in the response.+    imagePackageList :: Prelude.Maybe [ImagePackage],+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImagePackagesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imagePackageList', 'listImagePackagesResponse_imagePackageList' - The list of Image Packages returned in the response.+--+-- 'nextToken', 'listImagePackagesResponse_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'requestId', 'listImagePackagesResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listImagePackagesResponse_httpStatus' - The response's http status code.+newListImagePackagesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListImagePackagesResponse+newListImagePackagesResponse pHttpStatus_ =+  ListImagePackagesResponse'+    { imagePackageList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of Image Packages returned in the response.+listImagePackagesResponse_imagePackageList :: Lens.Lens' ListImagePackagesResponse (Prelude.Maybe [ImagePackage])+listImagePackagesResponse_imagePackageList = Lens.lens (\ListImagePackagesResponse' {imagePackageList} -> imagePackageList) (\s@ListImagePackagesResponse' {} a -> s {imagePackageList = a} :: ListImagePackagesResponse) Prelude.. Lens.mapping Lens.coerced++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listImagePackagesResponse_nextToken :: Lens.Lens' ListImagePackagesResponse (Prelude.Maybe Prelude.Text)+listImagePackagesResponse_nextToken = Lens.lens (\ListImagePackagesResponse' {nextToken} -> nextToken) (\s@ListImagePackagesResponse' {} a -> s {nextToken = a} :: ListImagePackagesResponse)++-- | The request ID that uniquely identifies this request.+listImagePackagesResponse_requestId :: Lens.Lens' ListImagePackagesResponse (Prelude.Maybe Prelude.Text)+listImagePackagesResponse_requestId = Lens.lens (\ListImagePackagesResponse' {requestId} -> requestId) (\s@ListImagePackagesResponse' {} a -> s {requestId = a} :: ListImagePackagesResponse)++-- | The response's http status code.+listImagePackagesResponse_httpStatus :: Lens.Lens' ListImagePackagesResponse Prelude.Int+listImagePackagesResponse_httpStatus = Lens.lens (\ListImagePackagesResponse' {httpStatus} -> httpStatus) (\s@ListImagePackagesResponse' {} a -> s {httpStatus = a} :: ListImagePackagesResponse)++instance Prelude.NFData ListImagePackagesResponse where+  rnf ListImagePackagesResponse' {..} =+    Prelude.rnf imagePackageList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListImagePipelineImages.hs view
@@ -0,0 +1,266 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListImagePipelineImages+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of images created by the specified pipeline.+module Amazonka.ImageBuilder.ListImagePipelineImages+  ( -- * Creating a Request+    ListImagePipelineImages (..),+    newListImagePipelineImages,++    -- * Request Lenses+    listImagePipelineImages_filters,+    listImagePipelineImages_maxResults,+    listImagePipelineImages_nextToken,+    listImagePipelineImages_imagePipelineArn,++    -- * Destructuring the Response+    ListImagePipelineImagesResponse (..),+    newListImagePipelineImagesResponse,++    -- * Response Lenses+    listImagePipelineImagesResponse_imageSummaryList,+    listImagePipelineImagesResponse_nextToken,+    listImagePipelineImagesResponse_requestId,+    listImagePipelineImagesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListImagePipelineImages' smart constructor.+data ListImagePipelineImages = ListImagePipelineImages'+  { -- | Use the following filters to streamline results:+    --+    -- -   @name@+    --+    -- -   @version@+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image pipeline whose images you+    -- want to view.+    imagePipelineArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImagePipelineImages' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'listImagePipelineImages_filters' - Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @version@+--+-- 'maxResults', 'listImagePipelineImages_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listImagePipelineImages_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'imagePipelineArn', 'listImagePipelineImages_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline whose images you+-- want to view.+newListImagePipelineImages ::+  -- | 'imagePipelineArn'+  Prelude.Text ->+  ListImagePipelineImages+newListImagePipelineImages pImagePipelineArn_ =+  ListImagePipelineImages'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      imagePipelineArn = pImagePipelineArn_+    }++-- | Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @version@+listImagePipelineImages_filters :: Lens.Lens' ListImagePipelineImages (Prelude.Maybe (Prelude.NonEmpty Filter))+listImagePipelineImages_filters = Lens.lens (\ListImagePipelineImages' {filters} -> filters) (\s@ListImagePipelineImages' {} a -> s {filters = a} :: ListImagePipelineImages) Prelude.. Lens.mapping Lens.coerced++-- | The maximum items to return in a request.+listImagePipelineImages_maxResults :: Lens.Lens' ListImagePipelineImages (Prelude.Maybe Prelude.Natural)+listImagePipelineImages_maxResults = Lens.lens (\ListImagePipelineImages' {maxResults} -> maxResults) (\s@ListImagePipelineImages' {} a -> s {maxResults = a} :: ListImagePipelineImages)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listImagePipelineImages_nextToken :: Lens.Lens' ListImagePipelineImages (Prelude.Maybe Prelude.Text)+listImagePipelineImages_nextToken = Lens.lens (\ListImagePipelineImages' {nextToken} -> nextToken) (\s@ListImagePipelineImages' {} a -> s {nextToken = a} :: ListImagePipelineImages)++-- | The Amazon Resource Name (ARN) of the image pipeline whose images you+-- want to view.+listImagePipelineImages_imagePipelineArn :: Lens.Lens' ListImagePipelineImages Prelude.Text+listImagePipelineImages_imagePipelineArn = Lens.lens (\ListImagePipelineImages' {imagePipelineArn} -> imagePipelineArn) (\s@ListImagePipelineImages' {} a -> s {imagePipelineArn = a} :: ListImagePipelineImages)++instance Core.AWSRequest ListImagePipelineImages where+  type+    AWSResponse ListImagePipelineImages =+      ListImagePipelineImagesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListImagePipelineImagesResponse'+            Prelude.<$> ( x+                            Data..?> "imageSummaryList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListImagePipelineImages where+  hashWithSalt _salt ListImagePipelineImages' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` imagePipelineArn++instance Prelude.NFData ListImagePipelineImages where+  rnf ListImagePipelineImages' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf imagePipelineArn++instance Data.ToHeaders ListImagePipelineImages where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListImagePipelineImages where+  toJSON ListImagePipelineImages' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just+              ("imagePipelineArn" Data..= imagePipelineArn)+          ]+      )++instance Data.ToPath ListImagePipelineImages where+  toPath = Prelude.const "/ListImagePipelineImages"++instance Data.ToQuery ListImagePipelineImages where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListImagePipelineImagesResponse' smart constructor.+data ListImagePipelineImagesResponse = ListImagePipelineImagesResponse'+  { -- | The list of images built by this pipeline.+    imageSummaryList :: Prelude.Maybe [ImageSummary],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImagePipelineImagesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageSummaryList', 'listImagePipelineImagesResponse_imageSummaryList' - The list of images built by this pipeline.+--+-- 'nextToken', 'listImagePipelineImagesResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listImagePipelineImagesResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listImagePipelineImagesResponse_httpStatus' - The response's http status code.+newListImagePipelineImagesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListImagePipelineImagesResponse+newListImagePipelineImagesResponse pHttpStatus_ =+  ListImagePipelineImagesResponse'+    { imageSummaryList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of images built by this pipeline.+listImagePipelineImagesResponse_imageSummaryList :: Lens.Lens' ListImagePipelineImagesResponse (Prelude.Maybe [ImageSummary])+listImagePipelineImagesResponse_imageSummaryList = Lens.lens (\ListImagePipelineImagesResponse' {imageSummaryList} -> imageSummaryList) (\s@ListImagePipelineImagesResponse' {} a -> s {imageSummaryList = a} :: ListImagePipelineImagesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listImagePipelineImagesResponse_nextToken :: Lens.Lens' ListImagePipelineImagesResponse (Prelude.Maybe Prelude.Text)+listImagePipelineImagesResponse_nextToken = Lens.lens (\ListImagePipelineImagesResponse' {nextToken} -> nextToken) (\s@ListImagePipelineImagesResponse' {} a -> s {nextToken = a} :: ListImagePipelineImagesResponse)++-- | The request ID that uniquely identifies this request.+listImagePipelineImagesResponse_requestId :: Lens.Lens' ListImagePipelineImagesResponse (Prelude.Maybe Prelude.Text)+listImagePipelineImagesResponse_requestId = Lens.lens (\ListImagePipelineImagesResponse' {requestId} -> requestId) (\s@ListImagePipelineImagesResponse' {} a -> s {requestId = a} :: ListImagePipelineImagesResponse)++-- | The response's http status code.+listImagePipelineImagesResponse_httpStatus :: Lens.Lens' ListImagePipelineImagesResponse Prelude.Int+listImagePipelineImagesResponse_httpStatus = Lens.lens (\ListImagePipelineImagesResponse' {httpStatus} -> httpStatus) (\s@ListImagePipelineImagesResponse' {} a -> s {httpStatus = a} :: ListImagePipelineImagesResponse)++instance+  Prelude.NFData+    ListImagePipelineImagesResponse+  where+  rnf ListImagePipelineImagesResponse' {..} =+    Prelude.rnf imageSummaryList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListImagePipelines.hs view
@@ -0,0 +1,268 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListImagePipelines+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of image pipelines.+module Amazonka.ImageBuilder.ListImagePipelines+  ( -- * Creating a Request+    ListImagePipelines (..),+    newListImagePipelines,++    -- * Request Lenses+    listImagePipelines_filters,+    listImagePipelines_maxResults,+    listImagePipelines_nextToken,++    -- * Destructuring the Response+    ListImagePipelinesResponse (..),+    newListImagePipelinesResponse,++    -- * Response Lenses+    listImagePipelinesResponse_imagePipelineList,+    listImagePipelinesResponse_nextToken,+    listImagePipelinesResponse_requestId,+    listImagePipelinesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListImagePipelines' smart constructor.+data ListImagePipelines = ListImagePipelines'+  { -- | Use the following filters to streamline results:+    --+    -- -   @description@+    --+    -- -   @distributionConfigurationArn@+    --+    -- -   @imageRecipeArn@+    --+    -- -   @infrastructureConfigurationArn@+    --+    -- -   @name@+    --+    -- -   @status@+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImagePipelines' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'listImagePipelines_filters' - Use the following filters to streamline results:+--+-- -   @description@+--+-- -   @distributionConfigurationArn@+--+-- -   @imageRecipeArn@+--+-- -   @infrastructureConfigurationArn@+--+-- -   @name@+--+-- -   @status@+--+-- 'maxResults', 'listImagePipelines_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listImagePipelines_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+newListImagePipelines ::+  ListImagePipelines+newListImagePipelines =+  ListImagePipelines'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Use the following filters to streamline results:+--+-- -   @description@+--+-- -   @distributionConfigurationArn@+--+-- -   @imageRecipeArn@+--+-- -   @infrastructureConfigurationArn@+--+-- -   @name@+--+-- -   @status@+listImagePipelines_filters :: Lens.Lens' ListImagePipelines (Prelude.Maybe (Prelude.NonEmpty Filter))+listImagePipelines_filters = Lens.lens (\ListImagePipelines' {filters} -> filters) (\s@ListImagePipelines' {} a -> s {filters = a} :: ListImagePipelines) Prelude.. Lens.mapping Lens.coerced++-- | The maximum items to return in a request.+listImagePipelines_maxResults :: Lens.Lens' ListImagePipelines (Prelude.Maybe Prelude.Natural)+listImagePipelines_maxResults = Lens.lens (\ListImagePipelines' {maxResults} -> maxResults) (\s@ListImagePipelines' {} a -> s {maxResults = a} :: ListImagePipelines)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listImagePipelines_nextToken :: Lens.Lens' ListImagePipelines (Prelude.Maybe Prelude.Text)+listImagePipelines_nextToken = Lens.lens (\ListImagePipelines' {nextToken} -> nextToken) (\s@ListImagePipelines' {} a -> s {nextToken = a} :: ListImagePipelines)++instance Core.AWSRequest ListImagePipelines where+  type+    AWSResponse ListImagePipelines =+      ListImagePipelinesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListImagePipelinesResponse'+            Prelude.<$> ( x+                            Data..?> "imagePipelineList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListImagePipelines where+  hashWithSalt _salt ListImagePipelines' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListImagePipelines where+  rnf ListImagePipelines' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListImagePipelines where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListImagePipelines where+  toJSON ListImagePipelines' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListImagePipelines where+  toPath = Prelude.const "/ListImagePipelines"++instance Data.ToQuery ListImagePipelines where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListImagePipelinesResponse' smart constructor.+data ListImagePipelinesResponse = ListImagePipelinesResponse'+  { -- | The list of image pipelines.+    imagePipelineList :: Prelude.Maybe [ImagePipeline],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImagePipelinesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imagePipelineList', 'listImagePipelinesResponse_imagePipelineList' - The list of image pipelines.+--+-- 'nextToken', 'listImagePipelinesResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listImagePipelinesResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listImagePipelinesResponse_httpStatus' - The response's http status code.+newListImagePipelinesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListImagePipelinesResponse+newListImagePipelinesResponse pHttpStatus_ =+  ListImagePipelinesResponse'+    { imagePipelineList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of image pipelines.+listImagePipelinesResponse_imagePipelineList :: Lens.Lens' ListImagePipelinesResponse (Prelude.Maybe [ImagePipeline])+listImagePipelinesResponse_imagePipelineList = Lens.lens (\ListImagePipelinesResponse' {imagePipelineList} -> imagePipelineList) (\s@ListImagePipelinesResponse' {} a -> s {imagePipelineList = a} :: ListImagePipelinesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listImagePipelinesResponse_nextToken :: Lens.Lens' ListImagePipelinesResponse (Prelude.Maybe Prelude.Text)+listImagePipelinesResponse_nextToken = Lens.lens (\ListImagePipelinesResponse' {nextToken} -> nextToken) (\s@ListImagePipelinesResponse' {} a -> s {nextToken = a} :: ListImagePipelinesResponse)++-- | The request ID that uniquely identifies this request.+listImagePipelinesResponse_requestId :: Lens.Lens' ListImagePipelinesResponse (Prelude.Maybe Prelude.Text)+listImagePipelinesResponse_requestId = Lens.lens (\ListImagePipelinesResponse' {requestId} -> requestId) (\s@ListImagePipelinesResponse' {} a -> s {requestId = a} :: ListImagePipelinesResponse)++-- | The response's http status code.+listImagePipelinesResponse_httpStatus :: Lens.Lens' ListImagePipelinesResponse Prelude.Int+listImagePipelinesResponse_httpStatus = Lens.lens (\ListImagePipelinesResponse' {httpStatus} -> httpStatus) (\s@ListImagePipelinesResponse' {} a -> s {httpStatus = a} :: ListImagePipelinesResponse)++instance Prelude.NFData ListImagePipelinesResponse where+  rnf ListImagePipelinesResponse' {..} =+    Prelude.rnf imagePipelineList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListImageRecipes.hs view
@@ -0,0 +1,275 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListImageRecipes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of image recipes.+module Amazonka.ImageBuilder.ListImageRecipes+  ( -- * Creating a Request+    ListImageRecipes (..),+    newListImageRecipes,++    -- * Request Lenses+    listImageRecipes_filters,+    listImageRecipes_maxResults,+    listImageRecipes_nextToken,+    listImageRecipes_owner,++    -- * Destructuring the Response+    ListImageRecipesResponse (..),+    newListImageRecipesResponse,++    -- * Response Lenses+    listImageRecipesResponse_imageRecipeSummaryList,+    listImageRecipesResponse_nextToken,+    listImageRecipesResponse_requestId,+    listImageRecipesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListImageRecipes' smart constructor.+data ListImageRecipes = ListImageRecipes'+  { -- | Use the following filters to streamline results:+    --+    -- -   @name@+    --+    -- -   @parentImage@+    --+    -- -   @platform@+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The owner defines which image recipes you want to list. By default, this+    -- request will only show image recipes owned by your account. You can use+    -- this field to specify if you want to view image recipes owned by+    -- yourself, by Amazon, or those image recipes that have been shared with+    -- you by other customers.+    owner :: Prelude.Maybe Ownership+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImageRecipes' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'listImageRecipes_filters' - Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @parentImage@+--+-- -   @platform@+--+-- 'maxResults', 'listImageRecipes_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listImageRecipes_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'owner', 'listImageRecipes_owner' - The owner defines which image recipes you want to list. By default, this+-- request will only show image recipes owned by your account. You can use+-- this field to specify if you want to view image recipes owned by+-- yourself, by Amazon, or those image recipes that have been shared with+-- you by other customers.+newListImageRecipes ::+  ListImageRecipes+newListImageRecipes =+  ListImageRecipes'+    { filters = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      owner = Prelude.Nothing+    }++-- | Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @parentImage@+--+-- -   @platform@+listImageRecipes_filters :: Lens.Lens' ListImageRecipes (Prelude.Maybe (Prelude.NonEmpty Filter))+listImageRecipes_filters = Lens.lens (\ListImageRecipes' {filters} -> filters) (\s@ListImageRecipes' {} a -> s {filters = a} :: ListImageRecipes) Prelude.. Lens.mapping Lens.coerced++-- | The maximum items to return in a request.+listImageRecipes_maxResults :: Lens.Lens' ListImageRecipes (Prelude.Maybe Prelude.Natural)+listImageRecipes_maxResults = Lens.lens (\ListImageRecipes' {maxResults} -> maxResults) (\s@ListImageRecipes' {} a -> s {maxResults = a} :: ListImageRecipes)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listImageRecipes_nextToken :: Lens.Lens' ListImageRecipes (Prelude.Maybe Prelude.Text)+listImageRecipes_nextToken = Lens.lens (\ListImageRecipes' {nextToken} -> nextToken) (\s@ListImageRecipes' {} a -> s {nextToken = a} :: ListImageRecipes)++-- | The owner defines which image recipes you want to list. By default, this+-- request will only show image recipes owned by your account. You can use+-- this field to specify if you want to view image recipes owned by+-- yourself, by Amazon, or those image recipes that have been shared with+-- you by other customers.+listImageRecipes_owner :: Lens.Lens' ListImageRecipes (Prelude.Maybe Ownership)+listImageRecipes_owner = Lens.lens (\ListImageRecipes' {owner} -> owner) (\s@ListImageRecipes' {} a -> s {owner = a} :: ListImageRecipes)++instance Core.AWSRequest ListImageRecipes where+  type+    AWSResponse ListImageRecipes =+      ListImageRecipesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListImageRecipesResponse'+            Prelude.<$> ( x+                            Data..?> "imageRecipeSummaryList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListImageRecipes where+  hashWithSalt _salt ListImageRecipes' {..} =+    _salt+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` owner++instance Prelude.NFData ListImageRecipes where+  rnf ListImageRecipes' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf owner++instance Data.ToHeaders ListImageRecipes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListImageRecipes where+  toJSON ListImageRecipes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("owner" Data..=) Prelude.<$> owner+          ]+      )++instance Data.ToPath ListImageRecipes where+  toPath = Prelude.const "/ListImageRecipes"++instance Data.ToQuery ListImageRecipes where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListImageRecipesResponse' smart constructor.+data ListImageRecipesResponse = ListImageRecipesResponse'+  { -- | The list of image pipelines.+    imageRecipeSummaryList :: Prelude.Maybe [ImageRecipeSummary],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImageRecipesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipeSummaryList', 'listImageRecipesResponse_imageRecipeSummaryList' - The list of image pipelines.+--+-- 'nextToken', 'listImageRecipesResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listImageRecipesResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listImageRecipesResponse_httpStatus' - The response's http status code.+newListImageRecipesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListImageRecipesResponse+newListImageRecipesResponse pHttpStatus_ =+  ListImageRecipesResponse'+    { imageRecipeSummaryList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of image pipelines.+listImageRecipesResponse_imageRecipeSummaryList :: Lens.Lens' ListImageRecipesResponse (Prelude.Maybe [ImageRecipeSummary])+listImageRecipesResponse_imageRecipeSummaryList = Lens.lens (\ListImageRecipesResponse' {imageRecipeSummaryList} -> imageRecipeSummaryList) (\s@ListImageRecipesResponse' {} a -> s {imageRecipeSummaryList = a} :: ListImageRecipesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listImageRecipesResponse_nextToken :: Lens.Lens' ListImageRecipesResponse (Prelude.Maybe Prelude.Text)+listImageRecipesResponse_nextToken = Lens.lens (\ListImageRecipesResponse' {nextToken} -> nextToken) (\s@ListImageRecipesResponse' {} a -> s {nextToken = a} :: ListImageRecipesResponse)++-- | The request ID that uniquely identifies this request.+listImageRecipesResponse_requestId :: Lens.Lens' ListImageRecipesResponse (Prelude.Maybe Prelude.Text)+listImageRecipesResponse_requestId = Lens.lens (\ListImageRecipesResponse' {requestId} -> requestId) (\s@ListImageRecipesResponse' {} a -> s {requestId = a} :: ListImageRecipesResponse)++-- | The response's http status code.+listImageRecipesResponse_httpStatus :: Lens.Lens' ListImageRecipesResponse Prelude.Int+listImageRecipesResponse_httpStatus = Lens.lens (\ListImageRecipesResponse' {httpStatus} -> httpStatus) (\s@ListImageRecipesResponse' {} a -> s {httpStatus = a} :: ListImageRecipesResponse)++instance Prelude.NFData ListImageRecipesResponse where+  rnf ListImageRecipesResponse' {..} =+    Prelude.rnf imageRecipeSummaryList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListImages.hs view
@@ -0,0 +1,342 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListImages+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the list of images that you have access to.+module Amazonka.ImageBuilder.ListImages+  ( -- * Creating a Request+    ListImages (..),+    newListImages,++    -- * Request Lenses+    listImages_byName,+    listImages_filters,+    listImages_includeDeprecated,+    listImages_maxResults,+    listImages_nextToken,+    listImages_owner,++    -- * Destructuring the Response+    ListImagesResponse (..),+    newListImagesResponse,++    -- * Response Lenses+    listImagesResponse_imageVersionList,+    listImagesResponse_nextToken,+    listImagesResponse_requestId,+    listImagesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListImages' smart constructor.+data ListImages = ListImages'+  { -- | Requests a list of images with a specific recipe name.+    byName :: Prelude.Maybe Prelude.Bool,+    -- | Use the following filters to streamline results:+    --+    -- -   @name@+    --+    -- -   @osVersion@+    --+    -- -   @platform@+    --+    -- -   @type@+    --+    -- -   @version@+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | Includes deprecated images in the response list.+    includeDeprecated :: Prelude.Maybe Prelude.Bool,+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The owner defines which images you want to list. By default, this+    -- request will only show images owned by your account. You can use this+    -- field to specify if you want to view images owned by yourself, by+    -- Amazon, or those images that have been shared with you by other+    -- customers.+    owner :: Prelude.Maybe Ownership+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImages' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'byName', 'listImages_byName' - Requests a list of images with a specific recipe name.+--+-- 'filters', 'listImages_filters' - Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @osVersion@+--+-- -   @platform@+--+-- -   @type@+--+-- -   @version@+--+-- 'includeDeprecated', 'listImages_includeDeprecated' - Includes deprecated images in the response list.+--+-- 'maxResults', 'listImages_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listImages_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+--+-- 'owner', 'listImages_owner' - The owner defines which images you want to list. By default, this+-- request will only show images owned by your account. You can use this+-- field to specify if you want to view images owned by yourself, by+-- Amazon, or those images that have been shared with you by other+-- customers.+newListImages ::+  ListImages+newListImages =+  ListImages'+    { byName = Prelude.Nothing,+      filters = Prelude.Nothing,+      includeDeprecated = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      owner = Prelude.Nothing+    }++-- | Requests a list of images with a specific recipe name.+listImages_byName :: Lens.Lens' ListImages (Prelude.Maybe Prelude.Bool)+listImages_byName = Lens.lens (\ListImages' {byName} -> byName) (\s@ListImages' {} a -> s {byName = a} :: ListImages)++-- | Use the following filters to streamline results:+--+-- -   @name@+--+-- -   @osVersion@+--+-- -   @platform@+--+-- -   @type@+--+-- -   @version@+listImages_filters :: Lens.Lens' ListImages (Prelude.Maybe (Prelude.NonEmpty Filter))+listImages_filters = Lens.lens (\ListImages' {filters} -> filters) (\s@ListImages' {} a -> s {filters = a} :: ListImages) Prelude.. Lens.mapping Lens.coerced++-- | Includes deprecated images in the response list.+listImages_includeDeprecated :: Lens.Lens' ListImages (Prelude.Maybe Prelude.Bool)+listImages_includeDeprecated = Lens.lens (\ListImages' {includeDeprecated} -> includeDeprecated) (\s@ListImages' {} a -> s {includeDeprecated = a} :: ListImages)++-- | The maximum items to return in a request.+listImages_maxResults :: Lens.Lens' ListImages (Prelude.Maybe Prelude.Natural)+listImages_maxResults = Lens.lens (\ListImages' {maxResults} -> maxResults) (\s@ListImages' {} a -> s {maxResults = a} :: ListImages)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listImages_nextToken :: Lens.Lens' ListImages (Prelude.Maybe Prelude.Text)+listImages_nextToken = Lens.lens (\ListImages' {nextToken} -> nextToken) (\s@ListImages' {} a -> s {nextToken = a} :: ListImages)++-- | The owner defines which images you want to list. By default, this+-- request will only show images owned by your account. You can use this+-- field to specify if you want to view images owned by yourself, by+-- Amazon, or those images that have been shared with you by other+-- customers.+listImages_owner :: Lens.Lens' ListImages (Prelude.Maybe Ownership)+listImages_owner = Lens.lens (\ListImages' {owner} -> owner) (\s@ListImages' {} a -> s {owner = a} :: ListImages)++instance Core.AWSRequest ListImages where+  type AWSResponse ListImages = ListImagesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListImagesResponse'+            Prelude.<$> ( x+                            Data..?> "imageVersionList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListImages where+  hashWithSalt _salt ListImages' {..} =+    _salt+      `Prelude.hashWithSalt` byName+      `Prelude.hashWithSalt` filters+      `Prelude.hashWithSalt` includeDeprecated+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` owner++instance Prelude.NFData ListImages where+  rnf ListImages' {..} =+    Prelude.rnf byName+      `Prelude.seq` Prelude.rnf filters+      `Prelude.seq` Prelude.rnf includeDeprecated+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf owner++instance Data.ToHeaders ListImages where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListImages where+  toJSON ListImages' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("byName" Data..=) Prelude.<$> byName,+            ("filters" Data..=) Prelude.<$> filters,+            ("includeDeprecated" Data..=)+              Prelude.<$> includeDeprecated,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("owner" Data..=) Prelude.<$> owner+          ]+      )++instance Data.ToPath ListImages where+  toPath = Prelude.const "/ListImages"++instance Data.ToQuery ListImages where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListImagesResponse' smart constructor.+data ListImagesResponse = ListImagesResponse'+  { -- | The list of image semantic versions.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Filtering:__ With semantic versioning, you have the flexibility to use+    -- wildcards (x) to specify the most recent versions or nodes when+    -- selecting the base image or components for your recipe. When you use a+    -- wildcard in any node, all nodes to the right of the first wildcard must+    -- also be wildcards.+    imageVersionList :: Prelude.Maybe [ImageVersion],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImagesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageVersionList', 'listImagesResponse_imageVersionList' - The list of image semantic versions.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+--+-- 'nextToken', 'listImagesResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listImagesResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listImagesResponse_httpStatus' - The response's http status code.+newListImagesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListImagesResponse+newListImagesResponse pHttpStatus_ =+  ListImagesResponse'+    { imageVersionList =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of image semantic versions.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+listImagesResponse_imageVersionList :: Lens.Lens' ListImagesResponse (Prelude.Maybe [ImageVersion])+listImagesResponse_imageVersionList = Lens.lens (\ListImagesResponse' {imageVersionList} -> imageVersionList) (\s@ListImagesResponse' {} a -> s {imageVersionList = a} :: ListImagesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listImagesResponse_nextToken :: Lens.Lens' ListImagesResponse (Prelude.Maybe Prelude.Text)+listImagesResponse_nextToken = Lens.lens (\ListImagesResponse' {nextToken} -> nextToken) (\s@ListImagesResponse' {} a -> s {nextToken = a} :: ListImagesResponse)++-- | The request ID that uniquely identifies this request.+listImagesResponse_requestId :: Lens.Lens' ListImagesResponse (Prelude.Maybe Prelude.Text)+listImagesResponse_requestId = Lens.lens (\ListImagesResponse' {requestId} -> requestId) (\s@ListImagesResponse' {} a -> s {requestId = a} :: ListImagesResponse)++-- | The response's http status code.+listImagesResponse_httpStatus :: Lens.Lens' ListImagesResponse Prelude.Int+listImagesResponse_httpStatus = Lens.lens (\ListImagesResponse' {httpStatus} -> httpStatus) (\s@ListImagesResponse' {} a -> s {httpStatus = a} :: ListImagesResponse)++instance Prelude.NFData ListImagesResponse where+  rnf ListImagesResponse' {..} =+    Prelude.rnf imageVersionList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListInfrastructureConfigurations.hs view
@@ -0,0 +1,255 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListInfrastructureConfigurations+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns a list of infrastructure configurations.+module Amazonka.ImageBuilder.ListInfrastructureConfigurations+  ( -- * Creating a Request+    ListInfrastructureConfigurations (..),+    newListInfrastructureConfigurations,++    -- * Request Lenses+    listInfrastructureConfigurations_filters,+    listInfrastructureConfigurations_maxResults,+    listInfrastructureConfigurations_nextToken,++    -- * Destructuring the Response+    ListInfrastructureConfigurationsResponse (..),+    newListInfrastructureConfigurationsResponse,++    -- * Response Lenses+    listInfrastructureConfigurationsResponse_infrastructureConfigurationSummaryList,+    listInfrastructureConfigurationsResponse_nextToken,+    listInfrastructureConfigurationsResponse_requestId,+    listInfrastructureConfigurationsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListInfrastructureConfigurations' smart constructor.+data ListInfrastructureConfigurations = ListInfrastructureConfigurations'+  { -- | You can filter on @name@ to streamline results.+    filters :: Prelude.Maybe (Prelude.NonEmpty Filter),+    -- | The maximum items to return in a request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | A token to specify where to start paginating. This is the NextToken from+    -- a previously truncated response.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInfrastructureConfigurations' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filters', 'listInfrastructureConfigurations_filters' - You can filter on @name@ to streamline results.+--+-- 'maxResults', 'listInfrastructureConfigurations_maxResults' - The maximum items to return in a request.+--+-- 'nextToken', 'listInfrastructureConfigurations_nextToken' - A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+newListInfrastructureConfigurations ::+  ListInfrastructureConfigurations+newListInfrastructureConfigurations =+  ListInfrastructureConfigurations'+    { filters =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | You can filter on @name@ to streamline results.+listInfrastructureConfigurations_filters :: Lens.Lens' ListInfrastructureConfigurations (Prelude.Maybe (Prelude.NonEmpty Filter))+listInfrastructureConfigurations_filters = Lens.lens (\ListInfrastructureConfigurations' {filters} -> filters) (\s@ListInfrastructureConfigurations' {} a -> s {filters = a} :: ListInfrastructureConfigurations) Prelude.. Lens.mapping Lens.coerced++-- | The maximum items to return in a request.+listInfrastructureConfigurations_maxResults :: Lens.Lens' ListInfrastructureConfigurations (Prelude.Maybe Prelude.Natural)+listInfrastructureConfigurations_maxResults = Lens.lens (\ListInfrastructureConfigurations' {maxResults} -> maxResults) (\s@ListInfrastructureConfigurations' {} a -> s {maxResults = a} :: ListInfrastructureConfigurations)++-- | A token to specify where to start paginating. This is the NextToken from+-- a previously truncated response.+listInfrastructureConfigurations_nextToken :: Lens.Lens' ListInfrastructureConfigurations (Prelude.Maybe Prelude.Text)+listInfrastructureConfigurations_nextToken = Lens.lens (\ListInfrastructureConfigurations' {nextToken} -> nextToken) (\s@ListInfrastructureConfigurations' {} a -> s {nextToken = a} :: ListInfrastructureConfigurations)++instance+  Core.AWSRequest+    ListInfrastructureConfigurations+  where+  type+    AWSResponse ListInfrastructureConfigurations =+      ListInfrastructureConfigurationsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListInfrastructureConfigurationsResponse'+            Prelude.<$> ( x+                            Data..?> "infrastructureConfigurationSummaryList"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListInfrastructureConfigurations+  where+  hashWithSalt+    _salt+    ListInfrastructureConfigurations' {..} =+      _salt+        `Prelude.hashWithSalt` filters+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken++instance+  Prelude.NFData+    ListInfrastructureConfigurations+  where+  rnf ListInfrastructureConfigurations' {..} =+    Prelude.rnf filters+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance+  Data.ToHeaders+    ListInfrastructureConfigurations+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListInfrastructureConfigurations where+  toJSON ListInfrastructureConfigurations' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filters" Data..=) Prelude.<$> filters,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListInfrastructureConfigurations where+  toPath =+    Prelude.const "/ListInfrastructureConfigurations"++instance+  Data.ToQuery+    ListInfrastructureConfigurations+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListInfrastructureConfigurationsResponse' smart constructor.+data ListInfrastructureConfigurationsResponse = ListInfrastructureConfigurationsResponse'+  { -- | The list of infrastructure configurations.+    infrastructureConfigurationSummaryList :: Prelude.Maybe [InfrastructureConfigurationSummary],+    -- | The next token used for paginated responses. When this is not empty,+    -- there are additional elements that the service has not included in this+    -- request. Use this token with the next request to retrieve additional+    -- objects.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInfrastructureConfigurationsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'infrastructureConfigurationSummaryList', 'listInfrastructureConfigurationsResponse_infrastructureConfigurationSummaryList' - The list of infrastructure configurations.+--+-- 'nextToken', 'listInfrastructureConfigurationsResponse_nextToken' - The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+--+-- 'requestId', 'listInfrastructureConfigurationsResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'listInfrastructureConfigurationsResponse_httpStatus' - The response's http status code.+newListInfrastructureConfigurationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListInfrastructureConfigurationsResponse+newListInfrastructureConfigurationsResponse+  pHttpStatus_ =+    ListInfrastructureConfigurationsResponse'+      { infrastructureConfigurationSummaryList =+          Prelude.Nothing,+        nextToken = Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The list of infrastructure configurations.+listInfrastructureConfigurationsResponse_infrastructureConfigurationSummaryList :: Lens.Lens' ListInfrastructureConfigurationsResponse (Prelude.Maybe [InfrastructureConfigurationSummary])+listInfrastructureConfigurationsResponse_infrastructureConfigurationSummaryList = Lens.lens (\ListInfrastructureConfigurationsResponse' {infrastructureConfigurationSummaryList} -> infrastructureConfigurationSummaryList) (\s@ListInfrastructureConfigurationsResponse' {} a -> s {infrastructureConfigurationSummaryList = a} :: ListInfrastructureConfigurationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The next token used for paginated responses. When this is not empty,+-- there are additional elements that the service has not included in this+-- request. Use this token with the next request to retrieve additional+-- objects.+listInfrastructureConfigurationsResponse_nextToken :: Lens.Lens' ListInfrastructureConfigurationsResponse (Prelude.Maybe Prelude.Text)+listInfrastructureConfigurationsResponse_nextToken = Lens.lens (\ListInfrastructureConfigurationsResponse' {nextToken} -> nextToken) (\s@ListInfrastructureConfigurationsResponse' {} a -> s {nextToken = a} :: ListInfrastructureConfigurationsResponse)++-- | The request ID that uniquely identifies this request.+listInfrastructureConfigurationsResponse_requestId :: Lens.Lens' ListInfrastructureConfigurationsResponse (Prelude.Maybe Prelude.Text)+listInfrastructureConfigurationsResponse_requestId = Lens.lens (\ListInfrastructureConfigurationsResponse' {requestId} -> requestId) (\s@ListInfrastructureConfigurationsResponse' {} a -> s {requestId = a} :: ListInfrastructureConfigurationsResponse)++-- | The response's http status code.+listInfrastructureConfigurationsResponse_httpStatus :: Lens.Lens' ListInfrastructureConfigurationsResponse Prelude.Int+listInfrastructureConfigurationsResponse_httpStatus = Lens.lens (\ListInfrastructureConfigurationsResponse' {httpStatus} -> httpStatus) (\s@ListInfrastructureConfigurationsResponse' {} a -> s {httpStatus = a} :: ListInfrastructureConfigurationsResponse)++instance+  Prelude.NFData+    ListInfrastructureConfigurationsResponse+  where+  rnf ListInfrastructureConfigurationsResponse' {..} =+    Prelude.rnf infrastructureConfigurationSummaryList+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/ListTagsForResource.hs view
@@ -0,0 +1,162 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.ListTagsForResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the list of tags for the specified resource.+module Amazonka.ImageBuilder.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The Amazon Resource Name (ARN) of the resource whose tags you want to+    -- retrieve.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource whose tags you want to+-- retrieve.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the resource whose tags you want to+-- retrieve.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTagsForResource where+  toPath ListTagsForResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The tags for the specified resource.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'listTagsForResourceResponse_tags' - The tags for the specified resource.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The tags for the specified resource.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/PutComponentPolicy.hs view
@@ -0,0 +1,208 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.PutComponentPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Applies a policy to a component. We recommend that you call the RAM API+-- <https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html CreateResourceShare>+-- to share resources. If you call the Image Builder API+-- @PutComponentPolicy@, you must also call the RAM API+-- <https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html PromoteResourceShareCreatedFromPolicy>+-- in order for the resource to be visible to all principals with whom the+-- resource is shared.+module Amazonka.ImageBuilder.PutComponentPolicy+  ( -- * Creating a Request+    PutComponentPolicy (..),+    newPutComponentPolicy,++    -- * Request Lenses+    putComponentPolicy_componentArn,+    putComponentPolicy_policy,++    -- * Destructuring the Response+    PutComponentPolicyResponse (..),+    newPutComponentPolicyResponse,++    -- * Response Lenses+    putComponentPolicyResponse_componentArn,+    putComponentPolicyResponse_requestId,+    putComponentPolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutComponentPolicy' smart constructor.+data PutComponentPolicy = PutComponentPolicy'+  { -- | The Amazon Resource Name (ARN) of the component that this policy should+    -- be applied to.+    componentArn :: Prelude.Text,+    -- | The policy to apply.+    policy :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutComponentPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentArn', 'putComponentPolicy_componentArn' - The Amazon Resource Name (ARN) of the component that this policy should+-- be applied to.+--+-- 'policy', 'putComponentPolicy_policy' - The policy to apply.+newPutComponentPolicy ::+  -- | 'componentArn'+  Prelude.Text ->+  -- | 'policy'+  Prelude.Text ->+  PutComponentPolicy+newPutComponentPolicy pComponentArn_ pPolicy_ =+  PutComponentPolicy'+    { componentArn = pComponentArn_,+      policy = pPolicy_+    }++-- | The Amazon Resource Name (ARN) of the component that this policy should+-- be applied to.+putComponentPolicy_componentArn :: Lens.Lens' PutComponentPolicy Prelude.Text+putComponentPolicy_componentArn = Lens.lens (\PutComponentPolicy' {componentArn} -> componentArn) (\s@PutComponentPolicy' {} a -> s {componentArn = a} :: PutComponentPolicy)++-- | The policy to apply.+putComponentPolicy_policy :: Lens.Lens' PutComponentPolicy Prelude.Text+putComponentPolicy_policy = Lens.lens (\PutComponentPolicy' {policy} -> policy) (\s@PutComponentPolicy' {} a -> s {policy = a} :: PutComponentPolicy)++instance Core.AWSRequest PutComponentPolicy where+  type+    AWSResponse PutComponentPolicy =+      PutComponentPolicyResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutComponentPolicyResponse'+            Prelude.<$> (x Data..?> "componentArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutComponentPolicy where+  hashWithSalt _salt PutComponentPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` componentArn+      `Prelude.hashWithSalt` policy++instance Prelude.NFData PutComponentPolicy where+  rnf PutComponentPolicy' {..} =+    Prelude.rnf componentArn+      `Prelude.seq` Prelude.rnf policy++instance Data.ToHeaders PutComponentPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutComponentPolicy where+  toJSON PutComponentPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("componentArn" Data..= componentArn),+            Prelude.Just ("policy" Data..= policy)+          ]+      )++instance Data.ToPath PutComponentPolicy where+  toPath = Prelude.const "/PutComponentPolicy"++instance Data.ToQuery PutComponentPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutComponentPolicyResponse' smart constructor.+data PutComponentPolicyResponse = PutComponentPolicyResponse'+  { -- | The Amazon Resource Name (ARN) of the component that this policy was+    -- applied to.+    componentArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutComponentPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentArn', 'putComponentPolicyResponse_componentArn' - The Amazon Resource Name (ARN) of the component that this policy was+-- applied to.+--+-- 'requestId', 'putComponentPolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'putComponentPolicyResponse_httpStatus' - The response's http status code.+newPutComponentPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutComponentPolicyResponse+newPutComponentPolicyResponse pHttpStatus_ =+  PutComponentPolicyResponse'+    { componentArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the component that this policy was+-- applied to.+putComponentPolicyResponse_componentArn :: Lens.Lens' PutComponentPolicyResponse (Prelude.Maybe Prelude.Text)+putComponentPolicyResponse_componentArn = Lens.lens (\PutComponentPolicyResponse' {componentArn} -> componentArn) (\s@PutComponentPolicyResponse' {} a -> s {componentArn = a} :: PutComponentPolicyResponse)++-- | The request ID that uniquely identifies this request.+putComponentPolicyResponse_requestId :: Lens.Lens' PutComponentPolicyResponse (Prelude.Maybe Prelude.Text)+putComponentPolicyResponse_requestId = Lens.lens (\PutComponentPolicyResponse' {requestId} -> requestId) (\s@PutComponentPolicyResponse' {} a -> s {requestId = a} :: PutComponentPolicyResponse)++-- | The response's http status code.+putComponentPolicyResponse_httpStatus :: Lens.Lens' PutComponentPolicyResponse Prelude.Int+putComponentPolicyResponse_httpStatus = Lens.lens (\PutComponentPolicyResponse' {httpStatus} -> httpStatus) (\s@PutComponentPolicyResponse' {} a -> s {httpStatus = a} :: PutComponentPolicyResponse)++instance Prelude.NFData PutComponentPolicyResponse where+  rnf PutComponentPolicyResponse' {..} =+    Prelude.rnf componentArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/PutContainerRecipePolicy.hs view
@@ -0,0 +1,217 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.PutContainerRecipePolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Applies a policy to a container image. We recommend that you call the+-- RAM API CreateResourceShare+-- (https:\/\/docs.aws.amazon.com\/\/ram\/latest\/APIReference\/API_CreateResourceShare.html)+-- to share resources. If you call the Image Builder API+-- @PutContainerImagePolicy@, you must also call the RAM API+-- PromoteResourceShareCreatedFromPolicy+-- (https:\/\/docs.aws.amazon.com\/\/ram\/latest\/APIReference\/API_PromoteResourceShareCreatedFromPolicy.html)+-- in order for the resource to be visible to all principals with whom the+-- resource is shared.+module Amazonka.ImageBuilder.PutContainerRecipePolicy+  ( -- * Creating a Request+    PutContainerRecipePolicy (..),+    newPutContainerRecipePolicy,++    -- * Request Lenses+    putContainerRecipePolicy_containerRecipeArn,+    putContainerRecipePolicy_policy,++    -- * Destructuring the Response+    PutContainerRecipePolicyResponse (..),+    newPutContainerRecipePolicyResponse,++    -- * Response Lenses+    putContainerRecipePolicyResponse_containerRecipeArn,+    putContainerRecipePolicyResponse_requestId,+    putContainerRecipePolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutContainerRecipePolicy' smart constructor.+data PutContainerRecipePolicy = PutContainerRecipePolicy'+  { -- | The Amazon Resource Name (ARN) of the container recipe that this policy+    -- should be applied to.+    containerRecipeArn :: Prelude.Text,+    -- | The policy to apply to the container recipe.+    policy :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutContainerRecipePolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'putContainerRecipePolicy_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe that this policy+-- should be applied to.+--+-- 'policy', 'putContainerRecipePolicy_policy' - The policy to apply to the container recipe.+newPutContainerRecipePolicy ::+  -- | 'containerRecipeArn'+  Prelude.Text ->+  -- | 'policy'+  Prelude.Text ->+  PutContainerRecipePolicy+newPutContainerRecipePolicy+  pContainerRecipeArn_+  pPolicy_ =+    PutContainerRecipePolicy'+      { containerRecipeArn =+          pContainerRecipeArn_,+        policy = pPolicy_+      }++-- | The Amazon Resource Name (ARN) of the container recipe that this policy+-- should be applied to.+putContainerRecipePolicy_containerRecipeArn :: Lens.Lens' PutContainerRecipePolicy Prelude.Text+putContainerRecipePolicy_containerRecipeArn = Lens.lens (\PutContainerRecipePolicy' {containerRecipeArn} -> containerRecipeArn) (\s@PutContainerRecipePolicy' {} a -> s {containerRecipeArn = a} :: PutContainerRecipePolicy)++-- | The policy to apply to the container recipe.+putContainerRecipePolicy_policy :: Lens.Lens' PutContainerRecipePolicy Prelude.Text+putContainerRecipePolicy_policy = Lens.lens (\PutContainerRecipePolicy' {policy} -> policy) (\s@PutContainerRecipePolicy' {} a -> s {policy = a} :: PutContainerRecipePolicy)++instance Core.AWSRequest PutContainerRecipePolicy where+  type+    AWSResponse PutContainerRecipePolicy =+      PutContainerRecipePolicyResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutContainerRecipePolicyResponse'+            Prelude.<$> (x Data..?> "containerRecipeArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutContainerRecipePolicy where+  hashWithSalt _salt PutContainerRecipePolicy' {..} =+    _salt+      `Prelude.hashWithSalt` containerRecipeArn+      `Prelude.hashWithSalt` policy++instance Prelude.NFData PutContainerRecipePolicy where+  rnf PutContainerRecipePolicy' {..} =+    Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf policy++instance Data.ToHeaders PutContainerRecipePolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutContainerRecipePolicy where+  toJSON PutContainerRecipePolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("containerRecipeArn" Data..= containerRecipeArn),+            Prelude.Just ("policy" Data..= policy)+          ]+      )++instance Data.ToPath PutContainerRecipePolicy where+  toPath = Prelude.const "/PutContainerRecipePolicy"++instance Data.ToQuery PutContainerRecipePolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutContainerRecipePolicyResponse' smart constructor.+data PutContainerRecipePolicyResponse = PutContainerRecipePolicyResponse'+  { -- | The Amazon Resource Name (ARN) of the container recipe that this policy+    -- was applied to.+    containerRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutContainerRecipePolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'putContainerRecipePolicyResponse_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe that this policy+-- was applied to.+--+-- 'requestId', 'putContainerRecipePolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'putContainerRecipePolicyResponse_httpStatus' - The response's http status code.+newPutContainerRecipePolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutContainerRecipePolicyResponse+newPutContainerRecipePolicyResponse pHttpStatus_ =+  PutContainerRecipePolicyResponse'+    { containerRecipeArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the container recipe that this policy+-- was applied to.+putContainerRecipePolicyResponse_containerRecipeArn :: Lens.Lens' PutContainerRecipePolicyResponse (Prelude.Maybe Prelude.Text)+putContainerRecipePolicyResponse_containerRecipeArn = Lens.lens (\PutContainerRecipePolicyResponse' {containerRecipeArn} -> containerRecipeArn) (\s@PutContainerRecipePolicyResponse' {} a -> s {containerRecipeArn = a} :: PutContainerRecipePolicyResponse)++-- | The request ID that uniquely identifies this request.+putContainerRecipePolicyResponse_requestId :: Lens.Lens' PutContainerRecipePolicyResponse (Prelude.Maybe Prelude.Text)+putContainerRecipePolicyResponse_requestId = Lens.lens (\PutContainerRecipePolicyResponse' {requestId} -> requestId) (\s@PutContainerRecipePolicyResponse' {} a -> s {requestId = a} :: PutContainerRecipePolicyResponse)++-- | The response's http status code.+putContainerRecipePolicyResponse_httpStatus :: Lens.Lens' PutContainerRecipePolicyResponse Prelude.Int+putContainerRecipePolicyResponse_httpStatus = Lens.lens (\PutContainerRecipePolicyResponse' {httpStatus} -> httpStatus) (\s@PutContainerRecipePolicyResponse' {} a -> s {httpStatus = a} :: PutContainerRecipePolicyResponse)++instance+  Prelude.NFData+    PutContainerRecipePolicyResponse+  where+  rnf PutContainerRecipePolicyResponse' {..} =+    Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/PutImagePolicy.hs view
@@ -0,0 +1,207 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.PutImagePolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Applies a policy to an image. We recommend that you call the RAM API+-- <https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html CreateResourceShare>+-- to share resources. If you call the Image Builder API @PutImagePolicy@,+-- you must also call the RAM API+-- <https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html PromoteResourceShareCreatedFromPolicy>+-- in order for the resource to be visible to all principals with whom the+-- resource is shared.+module Amazonka.ImageBuilder.PutImagePolicy+  ( -- * Creating a Request+    PutImagePolicy (..),+    newPutImagePolicy,++    -- * Request Lenses+    putImagePolicy_imageArn,+    putImagePolicy_policy,++    -- * Destructuring the Response+    PutImagePolicyResponse (..),+    newPutImagePolicyResponse,++    -- * Response Lenses+    putImagePolicyResponse_imageArn,+    putImagePolicyResponse_requestId,+    putImagePolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutImagePolicy' smart constructor.+data PutImagePolicy = PutImagePolicy'+  { -- | The Amazon Resource Name (ARN) of the image that this policy should be+    -- applied to.+    imageArn :: Prelude.Text,+    -- | The policy to apply.+    policy :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutImagePolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageArn', 'putImagePolicy_imageArn' - The Amazon Resource Name (ARN) of the image that this policy should be+-- applied to.+--+-- 'policy', 'putImagePolicy_policy' - The policy to apply.+newPutImagePolicy ::+  -- | 'imageArn'+  Prelude.Text ->+  -- | 'policy'+  Prelude.Text ->+  PutImagePolicy+newPutImagePolicy pImageArn_ pPolicy_ =+  PutImagePolicy'+    { imageArn = pImageArn_,+      policy = pPolicy_+    }++-- | The Amazon Resource Name (ARN) of the image that this policy should be+-- applied to.+putImagePolicy_imageArn :: Lens.Lens' PutImagePolicy Prelude.Text+putImagePolicy_imageArn = Lens.lens (\PutImagePolicy' {imageArn} -> imageArn) (\s@PutImagePolicy' {} a -> s {imageArn = a} :: PutImagePolicy)++-- | The policy to apply.+putImagePolicy_policy :: Lens.Lens' PutImagePolicy Prelude.Text+putImagePolicy_policy = Lens.lens (\PutImagePolicy' {policy} -> policy) (\s@PutImagePolicy' {} a -> s {policy = a} :: PutImagePolicy)++instance Core.AWSRequest PutImagePolicy where+  type+    AWSResponse PutImagePolicy =+      PutImagePolicyResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutImagePolicyResponse'+            Prelude.<$> (x Data..?> "imageArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutImagePolicy where+  hashWithSalt _salt PutImagePolicy' {..} =+    _salt+      `Prelude.hashWithSalt` imageArn+      `Prelude.hashWithSalt` policy++instance Prelude.NFData PutImagePolicy where+  rnf PutImagePolicy' {..} =+    Prelude.rnf imageArn+      `Prelude.seq` Prelude.rnf policy++instance Data.ToHeaders PutImagePolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutImagePolicy where+  toJSON PutImagePolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("imageArn" Data..= imageArn),+            Prelude.Just ("policy" Data..= policy)+          ]+      )++instance Data.ToPath PutImagePolicy where+  toPath = Prelude.const "/PutImagePolicy"++instance Data.ToQuery PutImagePolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutImagePolicyResponse' smart constructor.+data PutImagePolicyResponse = PutImagePolicyResponse'+  { -- | The Amazon Resource Name (ARN) of the image that this policy was applied+    -- to.+    imageArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutImagePolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageArn', 'putImagePolicyResponse_imageArn' - The Amazon Resource Name (ARN) of the image that this policy was applied+-- to.+--+-- 'requestId', 'putImagePolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'putImagePolicyResponse_httpStatus' - The response's http status code.+newPutImagePolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutImagePolicyResponse+newPutImagePolicyResponse pHttpStatus_ =+  PutImagePolicyResponse'+    { imageArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the image that this policy was applied+-- to.+putImagePolicyResponse_imageArn :: Lens.Lens' PutImagePolicyResponse (Prelude.Maybe Prelude.Text)+putImagePolicyResponse_imageArn = Lens.lens (\PutImagePolicyResponse' {imageArn} -> imageArn) (\s@PutImagePolicyResponse' {} a -> s {imageArn = a} :: PutImagePolicyResponse)++-- | The request ID that uniquely identifies this request.+putImagePolicyResponse_requestId :: Lens.Lens' PutImagePolicyResponse (Prelude.Maybe Prelude.Text)+putImagePolicyResponse_requestId = Lens.lens (\PutImagePolicyResponse' {requestId} -> requestId) (\s@PutImagePolicyResponse' {} a -> s {requestId = a} :: PutImagePolicyResponse)++-- | The response's http status code.+putImagePolicyResponse_httpStatus :: Lens.Lens' PutImagePolicyResponse Prelude.Int+putImagePolicyResponse_httpStatus = Lens.lens (\PutImagePolicyResponse' {httpStatus} -> httpStatus) (\s@PutImagePolicyResponse' {} a -> s {httpStatus = a} :: PutImagePolicyResponse)++instance Prelude.NFData PutImagePolicyResponse where+  rnf PutImagePolicyResponse' {..} =+    Prelude.rnf imageArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/PutImageRecipePolicy.hs view
@@ -0,0 +1,211 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.PutImageRecipePolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Applies a policy to an image recipe. We recommend that you call the RAM+-- API+-- <https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html CreateResourceShare>+-- to share resources. If you call the Image Builder API+-- @PutImageRecipePolicy@, you must also call the RAM API+-- <https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html PromoteResourceShareCreatedFromPolicy>+-- in order for the resource to be visible to all principals with whom the+-- resource is shared.+module Amazonka.ImageBuilder.PutImageRecipePolicy+  ( -- * Creating a Request+    PutImageRecipePolicy (..),+    newPutImageRecipePolicy,++    -- * Request Lenses+    putImageRecipePolicy_imageRecipeArn,+    putImageRecipePolicy_policy,++    -- * Destructuring the Response+    PutImageRecipePolicyResponse (..),+    newPutImageRecipePolicyResponse,++    -- * Response Lenses+    putImageRecipePolicyResponse_imageRecipeArn,+    putImageRecipePolicyResponse_requestId,+    putImageRecipePolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutImageRecipePolicy' smart constructor.+data PutImageRecipePolicy = PutImageRecipePolicy'+  { -- | The Amazon Resource Name (ARN) of the image recipe that this policy+    -- should be applied to.+    imageRecipeArn :: Prelude.Text,+    -- | The policy to apply.+    policy :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutImageRecipePolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipeArn', 'putImageRecipePolicy_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that this policy+-- should be applied to.+--+-- 'policy', 'putImageRecipePolicy_policy' - The policy to apply.+newPutImageRecipePolicy ::+  -- | 'imageRecipeArn'+  Prelude.Text ->+  -- | 'policy'+  Prelude.Text ->+  PutImageRecipePolicy+newPutImageRecipePolicy pImageRecipeArn_ pPolicy_ =+  PutImageRecipePolicy'+    { imageRecipeArn =+        pImageRecipeArn_,+      policy = pPolicy_+    }++-- | The Amazon Resource Name (ARN) of the image recipe that this policy+-- should be applied to.+putImageRecipePolicy_imageRecipeArn :: Lens.Lens' PutImageRecipePolicy Prelude.Text+putImageRecipePolicy_imageRecipeArn = Lens.lens (\PutImageRecipePolicy' {imageRecipeArn} -> imageRecipeArn) (\s@PutImageRecipePolicy' {} a -> s {imageRecipeArn = a} :: PutImageRecipePolicy)++-- | The policy to apply.+putImageRecipePolicy_policy :: Lens.Lens' PutImageRecipePolicy Prelude.Text+putImageRecipePolicy_policy = Lens.lens (\PutImageRecipePolicy' {policy} -> policy) (\s@PutImageRecipePolicy' {} a -> s {policy = a} :: PutImageRecipePolicy)++instance Core.AWSRequest PutImageRecipePolicy where+  type+    AWSResponse PutImageRecipePolicy =+      PutImageRecipePolicyResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutImageRecipePolicyResponse'+            Prelude.<$> (x Data..?> "imageRecipeArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutImageRecipePolicy where+  hashWithSalt _salt PutImageRecipePolicy' {..} =+    _salt+      `Prelude.hashWithSalt` imageRecipeArn+      `Prelude.hashWithSalt` policy++instance Prelude.NFData PutImageRecipePolicy where+  rnf PutImageRecipePolicy' {..} =+    Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf policy++instance Data.ToHeaders PutImageRecipePolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutImageRecipePolicy where+  toJSON PutImageRecipePolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("imageRecipeArn" Data..= imageRecipeArn),+            Prelude.Just ("policy" Data..= policy)+          ]+      )++instance Data.ToPath PutImageRecipePolicy where+  toPath = Prelude.const "/PutImageRecipePolicy"++instance Data.ToQuery PutImageRecipePolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutImageRecipePolicyResponse' smart constructor.+data PutImageRecipePolicyResponse = PutImageRecipePolicyResponse'+  { -- | The Amazon Resource Name (ARN) of the image recipe that this policy was+    -- applied to.+    imageRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutImageRecipePolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageRecipeArn', 'putImageRecipePolicyResponse_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that this policy was+-- applied to.+--+-- 'requestId', 'putImageRecipePolicyResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'putImageRecipePolicyResponse_httpStatus' - The response's http status code.+newPutImageRecipePolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutImageRecipePolicyResponse+newPutImageRecipePolicyResponse pHttpStatus_ =+  PutImageRecipePolicyResponse'+    { imageRecipeArn =+        Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The Amazon Resource Name (ARN) of the image recipe that this policy was+-- applied to.+putImageRecipePolicyResponse_imageRecipeArn :: Lens.Lens' PutImageRecipePolicyResponse (Prelude.Maybe Prelude.Text)+putImageRecipePolicyResponse_imageRecipeArn = Lens.lens (\PutImageRecipePolicyResponse' {imageRecipeArn} -> imageRecipeArn) (\s@PutImageRecipePolicyResponse' {} a -> s {imageRecipeArn = a} :: PutImageRecipePolicyResponse)++-- | The request ID that uniquely identifies this request.+putImageRecipePolicyResponse_requestId :: Lens.Lens' PutImageRecipePolicyResponse (Prelude.Maybe Prelude.Text)+putImageRecipePolicyResponse_requestId = Lens.lens (\PutImageRecipePolicyResponse' {requestId} -> requestId) (\s@PutImageRecipePolicyResponse' {} a -> s {requestId = a} :: PutImageRecipePolicyResponse)++-- | The response's http status code.+putImageRecipePolicyResponse_httpStatus :: Lens.Lens' PutImageRecipePolicyResponse Prelude.Int+putImageRecipePolicyResponse_httpStatus = Lens.lens (\PutImageRecipePolicyResponse' {httpStatus} -> httpStatus) (\s@PutImageRecipePolicyResponse' {} a -> s {httpStatus = a} :: PutImageRecipePolicyResponse)++instance Prelude.NFData PutImageRecipePolicyResponse where+  rnf PutImageRecipePolicyResponse' {..} =+    Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/StartImagePipelineExecution.hs view
@@ -0,0 +1,221 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.StartImagePipelineExecution+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Manually triggers a pipeline to create an image.+module Amazonka.ImageBuilder.StartImagePipelineExecution+  ( -- * Creating a Request+    StartImagePipelineExecution (..),+    newStartImagePipelineExecution,++    -- * Request Lenses+    startImagePipelineExecution_imagePipelineArn,+    startImagePipelineExecution_clientToken,++    -- * Destructuring the Response+    StartImagePipelineExecutionResponse (..),+    newStartImagePipelineExecutionResponse,++    -- * Response Lenses+    startImagePipelineExecutionResponse_clientToken,+    startImagePipelineExecutionResponse_imageBuildVersionArn,+    startImagePipelineExecutionResponse_requestId,+    startImagePipelineExecutionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStartImagePipelineExecution' smart constructor.+data StartImagePipelineExecution = StartImagePipelineExecution'+  { -- | The Amazon Resource Name (ARN) of the image pipeline that you want to+    -- manually invoke.+    imagePipelineArn :: Prelude.Text,+    -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartImagePipelineExecution' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imagePipelineArn', 'startImagePipelineExecution_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline that you want to+-- manually invoke.+--+-- 'clientToken', 'startImagePipelineExecution_clientToken' - The idempotency token used to make this request idempotent.+newStartImagePipelineExecution ::+  -- | 'imagePipelineArn'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  StartImagePipelineExecution+newStartImagePipelineExecution+  pImagePipelineArn_+  pClientToken_ =+    StartImagePipelineExecution'+      { imagePipelineArn =+          pImagePipelineArn_,+        clientToken = pClientToken_+      }++-- | The Amazon Resource Name (ARN) of the image pipeline that you want to+-- manually invoke.+startImagePipelineExecution_imagePipelineArn :: Lens.Lens' StartImagePipelineExecution Prelude.Text+startImagePipelineExecution_imagePipelineArn = Lens.lens (\StartImagePipelineExecution' {imagePipelineArn} -> imagePipelineArn) (\s@StartImagePipelineExecution' {} a -> s {imagePipelineArn = a} :: StartImagePipelineExecution)++-- | The idempotency token used to make this request idempotent.+startImagePipelineExecution_clientToken :: Lens.Lens' StartImagePipelineExecution Prelude.Text+startImagePipelineExecution_clientToken = Lens.lens (\StartImagePipelineExecution' {clientToken} -> clientToken) (\s@StartImagePipelineExecution' {} a -> s {clientToken = a} :: StartImagePipelineExecution)++instance Core.AWSRequest StartImagePipelineExecution where+  type+    AWSResponse StartImagePipelineExecution =+      StartImagePipelineExecutionResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          StartImagePipelineExecutionResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "imageBuildVersionArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StartImagePipelineExecution where+  hashWithSalt _salt StartImagePipelineExecution' {..} =+    _salt+      `Prelude.hashWithSalt` imagePipelineArn+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData StartImagePipelineExecution where+  rnf StartImagePipelineExecution' {..} =+    Prelude.rnf imagePipelineArn+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders StartImagePipelineExecution where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StartImagePipelineExecution where+  toJSON StartImagePipelineExecution' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("imagePipelineArn" Data..= imagePipelineArn),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath StartImagePipelineExecution where+  toPath = Prelude.const "/StartImagePipelineExecution"++instance Data.ToQuery StartImagePipelineExecution where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStartImagePipelineExecutionResponse' smart constructor.+data StartImagePipelineExecutionResponse = StartImagePipelineExecutionResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image that was created by this+    -- request.+    imageBuildVersionArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StartImagePipelineExecutionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'startImagePipelineExecutionResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'imageBuildVersionArn', 'startImagePipelineExecutionResponse_imageBuildVersionArn' - The Amazon Resource Name (ARN) of the image that was created by this+-- request.+--+-- 'requestId', 'startImagePipelineExecutionResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'startImagePipelineExecutionResponse_httpStatus' - The response's http status code.+newStartImagePipelineExecutionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StartImagePipelineExecutionResponse+newStartImagePipelineExecutionResponse pHttpStatus_ =+  StartImagePipelineExecutionResponse'+    { clientToken =+        Prelude.Nothing,+      imageBuildVersionArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token used to make this request idempotent.+startImagePipelineExecutionResponse_clientToken :: Lens.Lens' StartImagePipelineExecutionResponse (Prelude.Maybe Prelude.Text)+startImagePipelineExecutionResponse_clientToken = Lens.lens (\StartImagePipelineExecutionResponse' {clientToken} -> clientToken) (\s@StartImagePipelineExecutionResponse' {} a -> s {clientToken = a} :: StartImagePipelineExecutionResponse)++-- | The Amazon Resource Name (ARN) of the image that was created by this+-- request.+startImagePipelineExecutionResponse_imageBuildVersionArn :: Lens.Lens' StartImagePipelineExecutionResponse (Prelude.Maybe Prelude.Text)+startImagePipelineExecutionResponse_imageBuildVersionArn = Lens.lens (\StartImagePipelineExecutionResponse' {imageBuildVersionArn} -> imageBuildVersionArn) (\s@StartImagePipelineExecutionResponse' {} a -> s {imageBuildVersionArn = a} :: StartImagePipelineExecutionResponse)++-- | The request ID that uniquely identifies this request.+startImagePipelineExecutionResponse_requestId :: Lens.Lens' StartImagePipelineExecutionResponse (Prelude.Maybe Prelude.Text)+startImagePipelineExecutionResponse_requestId = Lens.lens (\StartImagePipelineExecutionResponse' {requestId} -> requestId) (\s@StartImagePipelineExecutionResponse' {} a -> s {requestId = a} :: StartImagePipelineExecutionResponse)++-- | The response's http status code.+startImagePipelineExecutionResponse_httpStatus :: Lens.Lens' StartImagePipelineExecutionResponse Prelude.Int+startImagePipelineExecutionResponse_httpStatus = Lens.lens (\StartImagePipelineExecutionResponse' {httpStatus} -> httpStatus) (\s@StartImagePipelineExecutionResponse' {} a -> s {httpStatus = a} :: StartImagePipelineExecutionResponse)++instance+  Prelude.NFData+    StartImagePipelineExecutionResponse+  where+  rnf StartImagePipelineExecutionResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf imageBuildVersionArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/TagResource.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.TagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Adds a tag to a resource.+module Amazonka.ImageBuilder.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource that you want to tag.+    resourceArn :: Prelude.Text,+    -- | The tags to apply to the resource.+    tags :: Prelude.HashMap Prelude.Text Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to tag.+--+-- 'tags', 'tagResource_tags' - The tags to apply to the resource.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource that you want to tag.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The tags to apply to the resource.+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath TagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/Types.hs view
@@ -0,0 +1,816 @@+{-# LANGUAGE DisambiguateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _CallRateLimitExceededException,+    _ClientException,+    _ForbiddenException,+    _IdempotentParameterMismatchException,+    _InvalidPaginationTokenException,+    _InvalidParameterCombinationException,+    _InvalidParameterException,+    _InvalidParameterValueException,+    _InvalidRequestException,+    _InvalidVersionNumberException,+    _ResourceAlreadyExistsException,+    _ResourceDependencyException,+    _ResourceInUseException,+    _ResourceNotFoundException,+    _ServiceException,+    _ServiceQuotaExceededException,+    _ServiceUnavailableException,++    -- * BuildType+    BuildType (..),++    -- * ComponentFormat+    ComponentFormat (..),++    -- * ComponentStatus+    ComponentStatus (..),++    -- * ComponentType+    ComponentType (..),++    -- * ContainerRepositoryService+    ContainerRepositoryService (..),++    -- * ContainerType+    ContainerType (..),++    -- * DiskImageFormat+    DiskImageFormat (..),++    -- * EbsVolumeType+    EbsVolumeType (..),++    -- * ImageStatus+    ImageStatus (..),++    -- * ImageType+    ImageType (..),++    -- * Ownership+    Ownership (..),++    -- * PipelineExecutionStartCondition+    PipelineExecutionStartCondition (..),++    -- * PipelineStatus+    PipelineStatus (..),++    -- * Platform+    Platform (..),++    -- * AdditionalInstanceConfiguration+    AdditionalInstanceConfiguration (..),+    newAdditionalInstanceConfiguration,+    additionalInstanceConfiguration_systemsManagerAgent,+    additionalInstanceConfiguration_userDataOverride,++    -- * Ami+    Ami (..),+    newAmi,+    ami_accountId,+    ami_description,+    ami_image,+    ami_name,+    ami_region,+    ami_state,++    -- * AmiDistributionConfiguration+    AmiDistributionConfiguration (..),+    newAmiDistributionConfiguration,+    amiDistributionConfiguration_amiTags,+    amiDistributionConfiguration_description,+    amiDistributionConfiguration_kmsKeyId,+    amiDistributionConfiguration_launchPermission,+    amiDistributionConfiguration_name,+    amiDistributionConfiguration_targetAccountIds,++    -- * Component+    Component (..),+    newComponent,+    component_arn,+    component_changeDescription,+    component_data,+    component_dateCreated,+    component_description,+    component_encrypted,+    component_kmsKeyId,+    component_name,+    component_owner,+    component_parameters,+    component_platform,+    component_state,+    component_supportedOsVersions,+    component_tags,+    component_type,+    component_version,++    -- * ComponentConfiguration+    ComponentConfiguration (..),+    newComponentConfiguration,+    componentConfiguration_parameters,+    componentConfiguration_componentArn,++    -- * ComponentParameter+    ComponentParameter (..),+    newComponentParameter,+    componentParameter_name,+    componentParameter_value,++    -- * ComponentParameterDetail+    ComponentParameterDetail (..),+    newComponentParameterDetail,+    componentParameterDetail_defaultValue,+    componentParameterDetail_description,+    componentParameterDetail_name,+    componentParameterDetail_type,++    -- * ComponentState+    ComponentState (..),+    newComponentState,+    componentState_reason,+    componentState_status,++    -- * ComponentSummary+    ComponentSummary (..),+    newComponentSummary,+    componentSummary_arn,+    componentSummary_changeDescription,+    componentSummary_dateCreated,+    componentSummary_description,+    componentSummary_name,+    componentSummary_owner,+    componentSummary_platform,+    componentSummary_state,+    componentSummary_supportedOsVersions,+    componentSummary_tags,+    componentSummary_type,+    componentSummary_version,++    -- * ComponentVersion+    ComponentVersion (..),+    newComponentVersion,+    componentVersion_arn,+    componentVersion_dateCreated,+    componentVersion_description,+    componentVersion_name,+    componentVersion_owner,+    componentVersion_platform,+    componentVersion_supportedOsVersions,+    componentVersion_type,+    componentVersion_version,++    -- * Container+    Container (..),+    newContainer,+    container_imageUris,+    container_region,++    -- * ContainerDistributionConfiguration+    ContainerDistributionConfiguration (..),+    newContainerDistributionConfiguration,+    containerDistributionConfiguration_containerTags,+    containerDistributionConfiguration_description,+    containerDistributionConfiguration_targetRepository,++    -- * ContainerRecipe+    ContainerRecipe (..),+    newContainerRecipe,+    containerRecipe_arn,+    containerRecipe_components,+    containerRecipe_containerType,+    containerRecipe_dateCreated,+    containerRecipe_description,+    containerRecipe_dockerfileTemplateData,+    containerRecipe_encrypted,+    containerRecipe_instanceConfiguration,+    containerRecipe_kmsKeyId,+    containerRecipe_name,+    containerRecipe_owner,+    containerRecipe_parentImage,+    containerRecipe_platform,+    containerRecipe_tags,+    containerRecipe_targetRepository,+    containerRecipe_version,+    containerRecipe_workingDirectory,++    -- * ContainerRecipeSummary+    ContainerRecipeSummary (..),+    newContainerRecipeSummary,+    containerRecipeSummary_arn,+    containerRecipeSummary_containerType,+    containerRecipeSummary_dateCreated,+    containerRecipeSummary_name,+    containerRecipeSummary_owner,+    containerRecipeSummary_parentImage,+    containerRecipeSummary_platform,+    containerRecipeSummary_tags,++    -- * Distribution+    Distribution (..),+    newDistribution,+    distribution_amiDistributionConfiguration,+    distribution_containerDistributionConfiguration,+    distribution_fastLaunchConfigurations,+    distribution_launchTemplateConfigurations,+    distribution_licenseConfigurationArns,+    distribution_s3ExportConfiguration,+    distribution_region,++    -- * DistributionConfiguration+    DistributionConfiguration (..),+    newDistributionConfiguration,+    distributionConfiguration_arn,+    distributionConfiguration_dateCreated,+    distributionConfiguration_dateUpdated,+    distributionConfiguration_description,+    distributionConfiguration_distributions,+    distributionConfiguration_name,+    distributionConfiguration_tags,+    distributionConfiguration_timeoutMinutes,++    -- * DistributionConfigurationSummary+    DistributionConfigurationSummary (..),+    newDistributionConfigurationSummary,+    distributionConfigurationSummary_arn,+    distributionConfigurationSummary_dateCreated,+    distributionConfigurationSummary_dateUpdated,+    distributionConfigurationSummary_description,+    distributionConfigurationSummary_name,+    distributionConfigurationSummary_regions,+    distributionConfigurationSummary_tags,++    -- * EbsInstanceBlockDeviceSpecification+    EbsInstanceBlockDeviceSpecification (..),+    newEbsInstanceBlockDeviceSpecification,+    ebsInstanceBlockDeviceSpecification_deleteOnTermination,+    ebsInstanceBlockDeviceSpecification_encrypted,+    ebsInstanceBlockDeviceSpecification_iops,+    ebsInstanceBlockDeviceSpecification_kmsKeyId,+    ebsInstanceBlockDeviceSpecification_snapshotId,+    ebsInstanceBlockDeviceSpecification_throughput,+    ebsInstanceBlockDeviceSpecification_volumeSize,+    ebsInstanceBlockDeviceSpecification_volumeType,++    -- * FastLaunchConfiguration+    FastLaunchConfiguration (..),+    newFastLaunchConfiguration,+    fastLaunchConfiguration_accountId,+    fastLaunchConfiguration_launchTemplate,+    fastLaunchConfiguration_maxParallelLaunches,+    fastLaunchConfiguration_snapshotConfiguration,+    fastLaunchConfiguration_enabled,++    -- * FastLaunchLaunchTemplateSpecification+    FastLaunchLaunchTemplateSpecification (..),+    newFastLaunchLaunchTemplateSpecification,+    fastLaunchLaunchTemplateSpecification_launchTemplateId,+    fastLaunchLaunchTemplateSpecification_launchTemplateName,+    fastLaunchLaunchTemplateSpecification_launchTemplateVersion,++    -- * FastLaunchSnapshotConfiguration+    FastLaunchSnapshotConfiguration (..),+    newFastLaunchSnapshotConfiguration,+    fastLaunchSnapshotConfiguration_targetResourceCount,++    -- * Filter+    Filter (..),+    newFilter,+    filter_name,+    filter_values,++    -- * Image+    Image (..),+    newImage,+    image_arn,+    image_buildType,+    image_containerRecipe,+    image_dateCreated,+    image_distributionConfiguration,+    image_enhancedImageMetadataEnabled,+    image_imageRecipe,+    image_imageTestsConfiguration,+    image_infrastructureConfiguration,+    image_name,+    image_osVersion,+    image_outputResources,+    image_platform,+    image_sourcePipelineArn,+    image_sourcePipelineName,+    image_state,+    image_tags,+    image_type,+    image_version,++    -- * ImagePackage+    ImagePackage (..),+    newImagePackage,+    imagePackage_packageName,+    imagePackage_packageVersion,++    -- * ImagePipeline+    ImagePipeline (..),+    newImagePipeline,+    imagePipeline_arn,+    imagePipeline_containerRecipeArn,+    imagePipeline_dateCreated,+    imagePipeline_dateLastRun,+    imagePipeline_dateNextRun,+    imagePipeline_dateUpdated,+    imagePipeline_description,+    imagePipeline_distributionConfigurationArn,+    imagePipeline_enhancedImageMetadataEnabled,+    imagePipeline_imageRecipeArn,+    imagePipeline_imageTestsConfiguration,+    imagePipeline_infrastructureConfigurationArn,+    imagePipeline_name,+    imagePipeline_platform,+    imagePipeline_schedule,+    imagePipeline_status,+    imagePipeline_tags,++    -- * ImageRecipe+    ImageRecipe (..),+    newImageRecipe,+    imageRecipe_additionalInstanceConfiguration,+    imageRecipe_arn,+    imageRecipe_blockDeviceMappings,+    imageRecipe_components,+    imageRecipe_dateCreated,+    imageRecipe_description,+    imageRecipe_name,+    imageRecipe_owner,+    imageRecipe_parentImage,+    imageRecipe_platform,+    imageRecipe_tags,+    imageRecipe_type,+    imageRecipe_version,+    imageRecipe_workingDirectory,++    -- * ImageRecipeSummary+    ImageRecipeSummary (..),+    newImageRecipeSummary,+    imageRecipeSummary_arn,+    imageRecipeSummary_dateCreated,+    imageRecipeSummary_name,+    imageRecipeSummary_owner,+    imageRecipeSummary_parentImage,+    imageRecipeSummary_platform,+    imageRecipeSummary_tags,++    -- * ImageState+    ImageState (..),+    newImageState,+    imageState_reason,+    imageState_status,++    -- * ImageSummary+    ImageSummary (..),+    newImageSummary,+    imageSummary_arn,+    imageSummary_buildType,+    imageSummary_dateCreated,+    imageSummary_name,+    imageSummary_osVersion,+    imageSummary_outputResources,+    imageSummary_owner,+    imageSummary_platform,+    imageSummary_state,+    imageSummary_tags,+    imageSummary_type,+    imageSummary_version,++    -- * ImageTestsConfiguration+    ImageTestsConfiguration (..),+    newImageTestsConfiguration,+    imageTestsConfiguration_imageTestsEnabled,+    imageTestsConfiguration_timeoutMinutes,++    -- * ImageVersion+    ImageVersion (..),+    newImageVersion,+    imageVersion_arn,+    imageVersion_buildType,+    imageVersion_dateCreated,+    imageVersion_name,+    imageVersion_osVersion,+    imageVersion_owner,+    imageVersion_platform,+    imageVersion_type,+    imageVersion_version,++    -- * InfrastructureConfiguration+    InfrastructureConfiguration (..),+    newInfrastructureConfiguration,+    infrastructureConfiguration_arn,+    infrastructureConfiguration_dateCreated,+    infrastructureConfiguration_dateUpdated,+    infrastructureConfiguration_description,+    infrastructureConfiguration_instanceMetadataOptions,+    infrastructureConfiguration_instanceProfileName,+    infrastructureConfiguration_instanceTypes,+    infrastructureConfiguration_keyPair,+    infrastructureConfiguration_logging,+    infrastructureConfiguration_name,+    infrastructureConfiguration_resourceTags,+    infrastructureConfiguration_securityGroupIds,+    infrastructureConfiguration_snsTopicArn,+    infrastructureConfiguration_subnetId,+    infrastructureConfiguration_tags,+    infrastructureConfiguration_terminateInstanceOnFailure,++    -- * InfrastructureConfigurationSummary+    InfrastructureConfigurationSummary (..),+    newInfrastructureConfigurationSummary,+    infrastructureConfigurationSummary_arn,+    infrastructureConfigurationSummary_dateCreated,+    infrastructureConfigurationSummary_dateUpdated,+    infrastructureConfigurationSummary_description,+    infrastructureConfigurationSummary_instanceProfileName,+    infrastructureConfigurationSummary_instanceTypes,+    infrastructureConfigurationSummary_name,+    infrastructureConfigurationSummary_resourceTags,+    infrastructureConfigurationSummary_tags,++    -- * InstanceBlockDeviceMapping+    InstanceBlockDeviceMapping (..),+    newInstanceBlockDeviceMapping,+    instanceBlockDeviceMapping_deviceName,+    instanceBlockDeviceMapping_ebs,+    instanceBlockDeviceMapping_noDevice,+    instanceBlockDeviceMapping_virtualName,++    -- * InstanceConfiguration+    InstanceConfiguration (..),+    newInstanceConfiguration,+    instanceConfiguration_blockDeviceMappings,+    instanceConfiguration_image,++    -- * InstanceMetadataOptions+    InstanceMetadataOptions (..),+    newInstanceMetadataOptions,+    instanceMetadataOptions_httpPutResponseHopLimit,+    instanceMetadataOptions_httpTokens,++    -- * LaunchPermissionConfiguration+    LaunchPermissionConfiguration (..),+    newLaunchPermissionConfiguration,+    launchPermissionConfiguration_organizationArns,+    launchPermissionConfiguration_organizationalUnitArns,+    launchPermissionConfiguration_userGroups,+    launchPermissionConfiguration_userIds,++    -- * LaunchTemplateConfiguration+    LaunchTemplateConfiguration (..),+    newLaunchTemplateConfiguration,+    launchTemplateConfiguration_accountId,+    launchTemplateConfiguration_setDefaultVersion,+    launchTemplateConfiguration_launchTemplateId,++    -- * Logging+    Logging (..),+    newLogging,+    logging_s3Logs,++    -- * OutputResources+    OutputResources (..),+    newOutputResources,+    outputResources_amis,+    outputResources_containers,++    -- * S3ExportConfiguration+    S3ExportConfiguration (..),+    newS3ExportConfiguration,+    s3ExportConfiguration_s3Prefix,+    s3ExportConfiguration_roleName,+    s3ExportConfiguration_diskImageFormat,+    s3ExportConfiguration_s3Bucket,++    -- * S3Logs+    S3Logs (..),+    newS3Logs,+    s3Logs_s3BucketName,+    s3Logs_s3KeyPrefix,++    -- * Schedule+    Schedule (..),+    newSchedule,+    schedule_pipelineExecutionStartCondition,+    schedule_scheduleExpression,+    schedule_timezone,++    -- * SystemsManagerAgent+    SystemsManagerAgent (..),+    newSystemsManagerAgent,+    systemsManagerAgent_uninstallAfterBuild,++    -- * TargetContainerRepository+    TargetContainerRepository (..),+    newTargetContainerRepository,+    targetContainerRepository_service,+    targetContainerRepository_repositoryName,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.ImageBuilder.Types.AdditionalInstanceConfiguration+import Amazonka.ImageBuilder.Types.Ami+import Amazonka.ImageBuilder.Types.AmiDistributionConfiguration+import Amazonka.ImageBuilder.Types.BuildType+import Amazonka.ImageBuilder.Types.Component+import Amazonka.ImageBuilder.Types.ComponentConfiguration+import Amazonka.ImageBuilder.Types.ComponentFormat+import Amazonka.ImageBuilder.Types.ComponentParameter+import Amazonka.ImageBuilder.Types.ComponentParameterDetail+import Amazonka.ImageBuilder.Types.ComponentState+import Amazonka.ImageBuilder.Types.ComponentStatus+import Amazonka.ImageBuilder.Types.ComponentSummary+import Amazonka.ImageBuilder.Types.ComponentType+import Amazonka.ImageBuilder.Types.ComponentVersion+import Amazonka.ImageBuilder.Types.Container+import Amazonka.ImageBuilder.Types.ContainerDistributionConfiguration+import Amazonka.ImageBuilder.Types.ContainerRecipe+import Amazonka.ImageBuilder.Types.ContainerRecipeSummary+import Amazonka.ImageBuilder.Types.ContainerRepositoryService+import Amazonka.ImageBuilder.Types.ContainerType+import Amazonka.ImageBuilder.Types.DiskImageFormat+import Amazonka.ImageBuilder.Types.Distribution+import Amazonka.ImageBuilder.Types.DistributionConfiguration+import Amazonka.ImageBuilder.Types.DistributionConfigurationSummary+import Amazonka.ImageBuilder.Types.EbsInstanceBlockDeviceSpecification+import Amazonka.ImageBuilder.Types.EbsVolumeType+import Amazonka.ImageBuilder.Types.FastLaunchConfiguration+import Amazonka.ImageBuilder.Types.FastLaunchLaunchTemplateSpecification+import Amazonka.ImageBuilder.Types.FastLaunchSnapshotConfiguration+import Amazonka.ImageBuilder.Types.Filter+import Amazonka.ImageBuilder.Types.Image+import Amazonka.ImageBuilder.Types.ImagePackage+import Amazonka.ImageBuilder.Types.ImagePipeline+import Amazonka.ImageBuilder.Types.ImageRecipe+import Amazonka.ImageBuilder.Types.ImageRecipeSummary+import Amazonka.ImageBuilder.Types.ImageState+import Amazonka.ImageBuilder.Types.ImageStatus+import Amazonka.ImageBuilder.Types.ImageSummary+import Amazonka.ImageBuilder.Types.ImageTestsConfiguration+import Amazonka.ImageBuilder.Types.ImageType+import Amazonka.ImageBuilder.Types.ImageVersion+import Amazonka.ImageBuilder.Types.InfrastructureConfiguration+import Amazonka.ImageBuilder.Types.InfrastructureConfigurationSummary+import Amazonka.ImageBuilder.Types.InstanceBlockDeviceMapping+import Amazonka.ImageBuilder.Types.InstanceConfiguration+import Amazonka.ImageBuilder.Types.InstanceMetadataOptions+import Amazonka.ImageBuilder.Types.LaunchPermissionConfiguration+import Amazonka.ImageBuilder.Types.LaunchTemplateConfiguration+import Amazonka.ImageBuilder.Types.Logging+import Amazonka.ImageBuilder.Types.OutputResources+import Amazonka.ImageBuilder.Types.Ownership+import Amazonka.ImageBuilder.Types.PipelineExecutionStartCondition+import Amazonka.ImageBuilder.Types.PipelineStatus+import Amazonka.ImageBuilder.Types.Platform+import Amazonka.ImageBuilder.Types.S3ExportConfiguration+import Amazonka.ImageBuilder.Types.S3Logs+import Amazonka.ImageBuilder.Types.Schedule+import Amazonka.ImageBuilder.Types.SystemsManagerAgent+import Amazonka.ImageBuilder.Types.TargetContainerRepository+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2019-12-02@ of the Amazon EC2 Image Builder SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "ImageBuilder",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "imagebuilder",+      Core.signingName = "imagebuilder",+      Core.version = "2019-12-02",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "ImageBuilder",+      Core.retry = retry+    }+  where+    retry =+      Core.Exponential+        { Core.base = 5.0e-2,+          Core.growth = 2,+          Core.attempts = 5,+          Core.check = check+        }+    check e+      | Lens.has (Core.hasStatus 502) e =+          Prelude.Just "bad_gateway"+      | Lens.has (Core.hasStatus 504) e =+          Prelude.Just "gateway_timeout"+      | Lens.has (Core.hasStatus 500) e =+          Prelude.Just "general_server_error"+      | Lens.has (Core.hasStatus 509) e =+          Prelude.Just "limit_exceeded"+      | Lens.has+          ( Core.hasCode "RequestThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "request_throttled_exception"+      | Lens.has (Core.hasStatus 503) e =+          Prelude.Just "service_unavailable"+      | Lens.has+          ( Core.hasCode "ThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttled_exception"+      | Lens.has+          ( Core.hasCode "Throttling"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling"+      | Lens.has+          ( Core.hasCode "ThrottlingException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling_exception"+      | Lens.has+          ( Core.hasCode+              "ProvisionedThroughputExceededException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throughput_exceeded"+      | Lens.has (Core.hasStatus 429) e =+          Prelude.Just "too_many_requests"+      | Prelude.otherwise = Prelude.Nothing++-- | You have exceeded the permitted request rate for the specific operation.+_CallRateLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_CallRateLimitExceededException =+  Core._MatchServiceError+    defaultService+    "CallRateLimitExceededException"+    Prelude.. Core.hasStatus 429++-- | These errors are usually caused by a client action, such as using an+-- action or resource on behalf of a user that doesn\'t have permissions to+-- use the action or resource, or specifying an invalid resource+-- identifier.+_ClientException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ClientException =+  Core._MatchServiceError+    defaultService+    "ClientException"+    Prelude.. Core.hasStatus 400++-- | You are not authorized to perform the requested operation.+_ForbiddenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ForbiddenException =+  Core._MatchServiceError+    defaultService+    "ForbiddenException"+    Prelude.. Core.hasStatus 403++-- | You have specified a client token for an operation using parameter+-- values that differ from a previous request that used the same client+-- token.+_IdempotentParameterMismatchException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_IdempotentParameterMismatchException =+  Core._MatchServiceError+    defaultService+    "IdempotentParameterMismatchException"+    Prelude.. Core.hasStatus 400++-- | You have provided an invalid pagination token in your request.+_InvalidPaginationTokenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidPaginationTokenException =+  Core._MatchServiceError+    defaultService+    "InvalidPaginationTokenException"+    Prelude.. Core.hasStatus 400++-- | You have specified two or more mutually exclusive parameters. Review the+-- error message for details.+_InvalidParameterCombinationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterCombinationException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterCombinationException"+    Prelude.. Core.hasStatus 400++-- | The specified parameter is invalid. Review the available parameters for+-- the API request.+_InvalidParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterException"+    Prelude.. Core.hasStatus 400++-- | The value that you provided for the specified parameter is invalid.+_InvalidParameterValueException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterValueException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterValueException"+    Prelude.. Core.hasStatus 400++-- | You have made a request for an action that is not supported by the+-- service.+_InvalidRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidRequestException =+  Core._MatchServiceError+    defaultService+    "InvalidRequestException"+    Prelude.. Core.hasStatus 400++-- | Your version number is out of bounds or does not follow the required+-- syntax.+_InvalidVersionNumberException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidVersionNumberException =+  Core._MatchServiceError+    defaultService+    "InvalidVersionNumberException"+    Prelude.. Core.hasStatus 400++-- | The resource that you are trying to create already exists.+_ResourceAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "ResourceAlreadyExistsException"+    Prelude.. Core.hasStatus 400++-- | You have attempted to mutate or delete a resource with a dependency that+-- prohibits this action. See the error message for more details.+_ResourceDependencyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceDependencyException =+  Core._MatchServiceError+    defaultService+    "ResourceDependencyException"+    Prelude.. Core.hasStatus 400++-- | The resource that you are trying to operate on is currently in use.+-- Review the message details and retry later.+_ResourceInUseException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceInUseException =+  Core._MatchServiceError+    defaultService+    "ResourceInUseException"+    Prelude.. Core.hasStatus 400++-- | At least one of the resources referenced by your request does not exist.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | This exception is thrown when the service encounters an unrecoverable+-- exception.+_ServiceException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceException =+  Core._MatchServiceError+    defaultService+    "ServiceException"+    Prelude.. Core.hasStatus 500++-- | You have exceeded the number of permitted resources or operations for+-- this service. For service quotas, see+-- <https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder EC2 Image Builder endpoints and quotas>.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | The service is unable to process your request at this time.+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceUnavailableException =+  Core._MatchServiceError+    defaultService+    "ServiceUnavailableException"+    Prelude.. Core.hasStatus 503
+ gen/Amazonka/ImageBuilder/Types/AdditionalInstanceConfiguration.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.AdditionalInstanceConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.AdditionalInstanceConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.SystemsManagerAgent+import qualified Amazonka.Prelude as Prelude++-- | In addition to your infrastruction configuration, these settings provide+-- an extra layer of control over your build instances. For instances where+-- Image Builder installs the Systems Manager agent, you can choose whether+-- to keep it for the AMI that you create. You can also specify commands to+-- run on launch for all of your build instances.+--+-- /See:/ 'newAdditionalInstanceConfiguration' smart constructor.+data AdditionalInstanceConfiguration = AdditionalInstanceConfiguration'+  { -- | Contains settings for the Systems Manager agent on your build instance.+    systemsManagerAgent :: Prelude.Maybe SystemsManagerAgent,+    -- | Use this property to provide commands or a command script to run when+    -- you launch your build instance.+    --+    -- The userDataOverride property replaces any commands that Image Builder+    -- might have added to ensure that Systems Manager is installed on your+    -- Linux build instance. If you override the user data, make sure that you+    -- add commands to install Systems Manager, if it is not pre-installed on+    -- your base image.+    --+    -- The user data is always base 64 encoded. For example, the following+    -- commands are encoded as+    -- @IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhci$@:+    --+    -- /#!\/bin\/bash/+    --+    -- mkdir -p \/var\/bb\/+    --+    -- touch \/var+    userDataOverride :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AdditionalInstanceConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'systemsManagerAgent', 'additionalInstanceConfiguration_systemsManagerAgent' - Contains settings for the Systems Manager agent on your build instance.+--+-- 'userDataOverride', 'additionalInstanceConfiguration_userDataOverride' - Use this property to provide commands or a command script to run when+-- you launch your build instance.+--+-- The userDataOverride property replaces any commands that Image Builder+-- might have added to ensure that Systems Manager is installed on your+-- Linux build instance. If you override the user data, make sure that you+-- add commands to install Systems Manager, if it is not pre-installed on+-- your base image.+--+-- The user data is always base 64 encoded. For example, the following+-- commands are encoded as+-- @IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhci$@:+--+-- /#!\/bin\/bash/+--+-- mkdir -p \/var\/bb\/+--+-- touch \/var+newAdditionalInstanceConfiguration ::+  AdditionalInstanceConfiguration+newAdditionalInstanceConfiguration =+  AdditionalInstanceConfiguration'+    { systemsManagerAgent =+        Prelude.Nothing,+      userDataOverride = Prelude.Nothing+    }++-- | Contains settings for the Systems Manager agent on your build instance.+additionalInstanceConfiguration_systemsManagerAgent :: Lens.Lens' AdditionalInstanceConfiguration (Prelude.Maybe SystemsManagerAgent)+additionalInstanceConfiguration_systemsManagerAgent = Lens.lens (\AdditionalInstanceConfiguration' {systemsManagerAgent} -> systemsManagerAgent) (\s@AdditionalInstanceConfiguration' {} a -> s {systemsManagerAgent = a} :: AdditionalInstanceConfiguration)++-- | Use this property to provide commands or a command script to run when+-- you launch your build instance.+--+-- The userDataOverride property replaces any commands that Image Builder+-- might have added to ensure that Systems Manager is installed on your+-- Linux build instance. If you override the user data, make sure that you+-- add commands to install Systems Manager, if it is not pre-installed on+-- your base image.+--+-- The user data is always base 64 encoded. For example, the following+-- commands are encoded as+-- @IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhci$@:+--+-- /#!\/bin\/bash/+--+-- mkdir -p \/var\/bb\/+--+-- touch \/var+additionalInstanceConfiguration_userDataOverride :: Lens.Lens' AdditionalInstanceConfiguration (Prelude.Maybe Prelude.Text)+additionalInstanceConfiguration_userDataOverride = Lens.lens (\AdditionalInstanceConfiguration' {userDataOverride} -> userDataOverride) (\s@AdditionalInstanceConfiguration' {} a -> s {userDataOverride = a} :: AdditionalInstanceConfiguration)++instance+  Data.FromJSON+    AdditionalInstanceConfiguration+  where+  parseJSON =+    Data.withObject+      "AdditionalInstanceConfiguration"+      ( \x ->+          AdditionalInstanceConfiguration'+            Prelude.<$> (x Data..:? "systemsManagerAgent")+            Prelude.<*> (x Data..:? "userDataOverride")+      )++instance+  Prelude.Hashable+    AdditionalInstanceConfiguration+  where+  hashWithSalt+    _salt+    AdditionalInstanceConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` systemsManagerAgent+        `Prelude.hashWithSalt` userDataOverride++instance+  Prelude.NFData+    AdditionalInstanceConfiguration+  where+  rnf AdditionalInstanceConfiguration' {..} =+    Prelude.rnf systemsManagerAgent+      `Prelude.seq` Prelude.rnf userDataOverride++instance Data.ToJSON AdditionalInstanceConfiguration where+  toJSON AdditionalInstanceConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("systemsManagerAgent" Data..=)+              Prelude.<$> systemsManagerAgent,+            ("userDataOverride" Data..=)+              Prelude.<$> userDataOverride+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/Ami.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Ami+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Ami where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ImageState+import qualified Amazonka.Prelude as Prelude++-- | Details of an Amazon EC2 AMI.+--+-- /See:/ 'newAmi' smart constructor.+data Ami = Ami'+  { -- | The account ID of the owner of the AMI.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | The description of the Amazon EC2 AMI. Minimum and maximum length are in+    -- characters.+    description :: Prelude.Maybe Prelude.Text,+    -- | The AMI ID of the Amazon EC2 AMI.+    image :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon EC2 AMI.+    name :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Web Services Region of the Amazon EC2 AMI.+    region :: Prelude.Maybe Prelude.Text,+    state :: Prelude.Maybe ImageState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Ami' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'ami_accountId' - The account ID of the owner of the AMI.+--+-- 'description', 'ami_description' - The description of the Amazon EC2 AMI. Minimum and maximum length are in+-- characters.+--+-- 'image', 'ami_image' - The AMI ID of the Amazon EC2 AMI.+--+-- 'name', 'ami_name' - The name of the Amazon EC2 AMI.+--+-- 'region', 'ami_region' - The Amazon Web Services Region of the Amazon EC2 AMI.+--+-- 'state', 'ami_state' - Undocumented member.+newAmi ::+  Ami+newAmi =+  Ami'+    { accountId = Prelude.Nothing,+      description = Prelude.Nothing,+      image = Prelude.Nothing,+      name = Prelude.Nothing,+      region = Prelude.Nothing,+      state = Prelude.Nothing+    }++-- | The account ID of the owner of the AMI.+ami_accountId :: Lens.Lens' Ami (Prelude.Maybe Prelude.Text)+ami_accountId = Lens.lens (\Ami' {accountId} -> accountId) (\s@Ami' {} a -> s {accountId = a} :: Ami)++-- | The description of the Amazon EC2 AMI. Minimum and maximum length are in+-- characters.+ami_description :: Lens.Lens' Ami (Prelude.Maybe Prelude.Text)+ami_description = Lens.lens (\Ami' {description} -> description) (\s@Ami' {} a -> s {description = a} :: Ami)++-- | The AMI ID of the Amazon EC2 AMI.+ami_image :: Lens.Lens' Ami (Prelude.Maybe Prelude.Text)+ami_image = Lens.lens (\Ami' {image} -> image) (\s@Ami' {} a -> s {image = a} :: Ami)++-- | The name of the Amazon EC2 AMI.+ami_name :: Lens.Lens' Ami (Prelude.Maybe Prelude.Text)+ami_name = Lens.lens (\Ami' {name} -> name) (\s@Ami' {} a -> s {name = a} :: Ami)++-- | The Amazon Web Services Region of the Amazon EC2 AMI.+ami_region :: Lens.Lens' Ami (Prelude.Maybe Prelude.Text)+ami_region = Lens.lens (\Ami' {region} -> region) (\s@Ami' {} a -> s {region = a} :: Ami)++-- | Undocumented member.+ami_state :: Lens.Lens' Ami (Prelude.Maybe ImageState)+ami_state = Lens.lens (\Ami' {state} -> state) (\s@Ami' {} a -> s {state = a} :: Ami)++instance Data.FromJSON Ami where+  parseJSON =+    Data.withObject+      "Ami"+      ( \x ->+          Ami'+            Prelude.<$> (x Data..:? "accountId")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "image")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "region")+            Prelude.<*> (x Data..:? "state")+      )++instance Prelude.Hashable Ami where+  hashWithSalt _salt Ami' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` image+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` region+      `Prelude.hashWithSalt` state++instance Prelude.NFData Ami where+  rnf Ami' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf image+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf region+      `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/ImageBuilder/Types/AmiDistributionConfiguration.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.AmiDistributionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.AmiDistributionConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.LaunchPermissionConfiguration+import qualified Amazonka.Prelude as Prelude++-- | Define and configure the output AMIs of the pipeline.+--+-- /See:/ 'newAmiDistributionConfiguration' smart constructor.+data AmiDistributionConfiguration = AmiDistributionConfiguration'+  { -- | The tags to apply to AMIs distributed to this Region.+    amiTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The description of the AMI distribution configuration. Minimum and+    -- maximum length are in characters.+    description :: Prelude.Maybe Prelude.Text,+    -- | The KMS key identifier used to encrypt the distributed image.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | Launch permissions can be used to configure which Amazon Web Services+    -- accounts can use the AMI to launch instances.+    launchPermission :: Prelude.Maybe LaunchPermissionConfiguration,+    -- | The name of the output AMI.+    name :: Prelude.Maybe Prelude.Text,+    -- | The ID of an account to which you want to distribute an image.+    targetAccountIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AmiDistributionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'amiTags', 'amiDistributionConfiguration_amiTags' - The tags to apply to AMIs distributed to this Region.+--+-- 'description', 'amiDistributionConfiguration_description' - The description of the AMI distribution configuration. Minimum and+-- maximum length are in characters.+--+-- 'kmsKeyId', 'amiDistributionConfiguration_kmsKeyId' - The KMS key identifier used to encrypt the distributed image.+--+-- 'launchPermission', 'amiDistributionConfiguration_launchPermission' - Launch permissions can be used to configure which Amazon Web Services+-- accounts can use the AMI to launch instances.+--+-- 'name', 'amiDistributionConfiguration_name' - The name of the output AMI.+--+-- 'targetAccountIds', 'amiDistributionConfiguration_targetAccountIds' - The ID of an account to which you want to distribute an image.+newAmiDistributionConfiguration ::+  AmiDistributionConfiguration+newAmiDistributionConfiguration =+  AmiDistributionConfiguration'+    { amiTags =+        Prelude.Nothing,+      description = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      launchPermission = Prelude.Nothing,+      name = Prelude.Nothing,+      targetAccountIds = Prelude.Nothing+    }++-- | The tags to apply to AMIs distributed to this Region.+amiDistributionConfiguration_amiTags :: Lens.Lens' AmiDistributionConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+amiDistributionConfiguration_amiTags = Lens.lens (\AmiDistributionConfiguration' {amiTags} -> amiTags) (\s@AmiDistributionConfiguration' {} a -> s {amiTags = a} :: AmiDistributionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The description of the AMI distribution configuration. Minimum and+-- maximum length are in characters.+amiDistributionConfiguration_description :: Lens.Lens' AmiDistributionConfiguration (Prelude.Maybe Prelude.Text)+amiDistributionConfiguration_description = Lens.lens (\AmiDistributionConfiguration' {description} -> description) (\s@AmiDistributionConfiguration' {} a -> s {description = a} :: AmiDistributionConfiguration)++-- | The KMS key identifier used to encrypt the distributed image.+amiDistributionConfiguration_kmsKeyId :: Lens.Lens' AmiDistributionConfiguration (Prelude.Maybe Prelude.Text)+amiDistributionConfiguration_kmsKeyId = Lens.lens (\AmiDistributionConfiguration' {kmsKeyId} -> kmsKeyId) (\s@AmiDistributionConfiguration' {} a -> s {kmsKeyId = a} :: AmiDistributionConfiguration)++-- | Launch permissions can be used to configure which Amazon Web Services+-- accounts can use the AMI to launch instances.+amiDistributionConfiguration_launchPermission :: Lens.Lens' AmiDistributionConfiguration (Prelude.Maybe LaunchPermissionConfiguration)+amiDistributionConfiguration_launchPermission = Lens.lens (\AmiDistributionConfiguration' {launchPermission} -> launchPermission) (\s@AmiDistributionConfiguration' {} a -> s {launchPermission = a} :: AmiDistributionConfiguration)++-- | The name of the output AMI.+amiDistributionConfiguration_name :: Lens.Lens' AmiDistributionConfiguration (Prelude.Maybe Prelude.Text)+amiDistributionConfiguration_name = Lens.lens (\AmiDistributionConfiguration' {name} -> name) (\s@AmiDistributionConfiguration' {} a -> s {name = a} :: AmiDistributionConfiguration)++-- | The ID of an account to which you want to distribute an image.+amiDistributionConfiguration_targetAccountIds :: Lens.Lens' AmiDistributionConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+amiDistributionConfiguration_targetAccountIds = Lens.lens (\AmiDistributionConfiguration' {targetAccountIds} -> targetAccountIds) (\s@AmiDistributionConfiguration' {} a -> s {targetAccountIds = a} :: AmiDistributionConfiguration) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON AmiDistributionConfiguration where+  parseJSON =+    Data.withObject+      "AmiDistributionConfiguration"+      ( \x ->+          AmiDistributionConfiguration'+            Prelude.<$> (x Data..:? "amiTags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "kmsKeyId")+            Prelude.<*> (x Data..:? "launchPermission")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "targetAccountIds")+      )++instance+  Prelude.Hashable+    AmiDistributionConfiguration+  where+  hashWithSalt _salt AmiDistributionConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` amiTags+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` launchPermission+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` targetAccountIds++instance Prelude.NFData AmiDistributionConfiguration where+  rnf AmiDistributionConfiguration' {..} =+    Prelude.rnf amiTags+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf launchPermission+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf targetAccountIds++instance Data.ToJSON AmiDistributionConfiguration where+  toJSON AmiDistributionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("amiTags" Data..=) Prelude.<$> amiTags,+            ("description" Data..=) Prelude.<$> description,+            ("kmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("launchPermission" Data..=)+              Prelude.<$> launchPermission,+            ("name" Data..=) Prelude.<$> name,+            ("targetAccountIds" Data..=)+              Prelude.<$> targetAccountIds+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/BuildType.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.BuildType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.BuildType+  ( BuildType+      ( ..,+        BuildType_IMPORT,+        BuildType_SCHEDULED,+        BuildType_USER_INITIATED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BuildType = BuildType'+  { fromBuildType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern BuildType_IMPORT :: BuildType+pattern BuildType_IMPORT = BuildType' "IMPORT"++pattern BuildType_SCHEDULED :: BuildType+pattern BuildType_SCHEDULED = BuildType' "SCHEDULED"++pattern BuildType_USER_INITIATED :: BuildType+pattern BuildType_USER_INITIATED = BuildType' "USER_INITIATED"++{-# COMPLETE+  BuildType_IMPORT,+  BuildType_SCHEDULED,+  BuildType_USER_INITIATED,+  BuildType'+  #-}
+ gen/Amazonka/ImageBuilder/Types/Component.hs view
@@ -0,0 +1,271 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Component+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Component where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ComponentParameterDetail+import Amazonka.ImageBuilder.Types.ComponentState+import Amazonka.ImageBuilder.Types.ComponentType+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | A detailed view of a component.+--+-- /See:/ 'newComponent' smart constructor.+data Component = Component'+  { -- | The Amazon Resource Name (ARN) of the component.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The change description of the component.+    changeDescription :: Prelude.Maybe Prelude.Text,+    -- | Component data contains the YAML document content for the component.+    data' :: Prelude.Maybe Prelude.Text,+    -- | The date that the component was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The description of the component.+    description :: Prelude.Maybe Prelude.Text,+    -- | The encryption status of the component.+    encrypted :: Prelude.Maybe Prelude.Bool,+    -- | The KMS key identifier used to encrypt the component.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    name :: Prelude.Maybe Prelude.Text,+    -- | The owner of the component.+    owner :: Prelude.Maybe Prelude.Text,+    -- | Contains parameter details for each of the parameters that are defined+    -- for the component.+    parameters :: Prelude.Maybe [ComponentParameterDetail],+    -- | The platform of the component.+    platform :: Prelude.Maybe Platform,+    -- | Describes the current status of the component. This is used for+    -- components that are no longer active.+    state :: Prelude.Maybe ComponentState,+    -- | The operating system (OS) version supported by the component. If the OS+    -- information is available, a prefix match is performed against the base+    -- image OS version during image recipe creation.+    supportedOsVersions :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The tags associated with the component.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The type of the component denotes whether the component is used to build+    -- the image or only to test it.+    type' :: Prelude.Maybe ComponentType,+    -- | The version of the component.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Component' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'component_arn' - The Amazon Resource Name (ARN) of the component.+--+-- 'changeDescription', 'component_changeDescription' - The change description of the component.+--+-- 'data'', 'component_data' - Component data contains the YAML document content for the component.+--+-- 'dateCreated', 'component_dateCreated' - The date that the component was created.+--+-- 'description', 'component_description' - The description of the component.+--+-- 'encrypted', 'component_encrypted' - The encryption status of the component.+--+-- 'kmsKeyId', 'component_kmsKeyId' - The KMS key identifier used to encrypt the component.+--+-- 'name', 'component_name' - The name of the component.+--+-- 'owner', 'component_owner' - The owner of the component.+--+-- 'parameters', 'component_parameters' - Contains parameter details for each of the parameters that are defined+-- for the component.+--+-- 'platform', 'component_platform' - The platform of the component.+--+-- 'state', 'component_state' - Describes the current status of the component. This is used for+-- components that are no longer active.+--+-- 'supportedOsVersions', 'component_supportedOsVersions' - The operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+--+-- 'tags', 'component_tags' - The tags associated with the component.+--+-- 'type'', 'component_type' - The type of the component denotes whether the component is used to build+-- the image or only to test it.+--+-- 'version', 'component_version' - The version of the component.+newComponent ::+  Component+newComponent =+  Component'+    { arn = Prelude.Nothing,+      changeDescription = Prelude.Nothing,+      data' = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      description = Prelude.Nothing,+      encrypted = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      name = Prelude.Nothing,+      owner = Prelude.Nothing,+      parameters = Prelude.Nothing,+      platform = Prelude.Nothing,+      state = Prelude.Nothing,+      supportedOsVersions = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the component.+component_arn :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_arn = Lens.lens (\Component' {arn} -> arn) (\s@Component' {} a -> s {arn = a} :: Component)++-- | The change description of the component.+component_changeDescription :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_changeDescription = Lens.lens (\Component' {changeDescription} -> changeDescription) (\s@Component' {} a -> s {changeDescription = a} :: Component)++-- | Component data contains the YAML document content for the component.+component_data :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_data = Lens.lens (\Component' {data'} -> data') (\s@Component' {} a -> s {data' = a} :: Component)++-- | The date that the component was created.+component_dateCreated :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_dateCreated = Lens.lens (\Component' {dateCreated} -> dateCreated) (\s@Component' {} a -> s {dateCreated = a} :: Component)++-- | The description of the component.+component_description :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_description = Lens.lens (\Component' {description} -> description) (\s@Component' {} a -> s {description = a} :: Component)++-- | The encryption status of the component.+component_encrypted :: Lens.Lens' Component (Prelude.Maybe Prelude.Bool)+component_encrypted = Lens.lens (\Component' {encrypted} -> encrypted) (\s@Component' {} a -> s {encrypted = a} :: Component)++-- | The KMS key identifier used to encrypt the component.+component_kmsKeyId :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_kmsKeyId = Lens.lens (\Component' {kmsKeyId} -> kmsKeyId) (\s@Component' {} a -> s {kmsKeyId = a} :: Component)++-- | The name of the component.+component_name :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_name = Lens.lens (\Component' {name} -> name) (\s@Component' {} a -> s {name = a} :: Component)++-- | The owner of the component.+component_owner :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_owner = Lens.lens (\Component' {owner} -> owner) (\s@Component' {} a -> s {owner = a} :: Component)++-- | Contains parameter details for each of the parameters that are defined+-- for the component.+component_parameters :: Lens.Lens' Component (Prelude.Maybe [ComponentParameterDetail])+component_parameters = Lens.lens (\Component' {parameters} -> parameters) (\s@Component' {} a -> s {parameters = a} :: Component) Prelude.. Lens.mapping Lens.coerced++-- | The platform of the component.+component_platform :: Lens.Lens' Component (Prelude.Maybe Platform)+component_platform = Lens.lens (\Component' {platform} -> platform) (\s@Component' {} a -> s {platform = a} :: Component)++-- | Describes the current status of the component. This is used for+-- components that are no longer active.+component_state :: Lens.Lens' Component (Prelude.Maybe ComponentState)+component_state = Lens.lens (\Component' {state} -> state) (\s@Component' {} a -> s {state = a} :: Component)++-- | The operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+component_supportedOsVersions :: Lens.Lens' Component (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+component_supportedOsVersions = Lens.lens (\Component' {supportedOsVersions} -> supportedOsVersions) (\s@Component' {} a -> s {supportedOsVersions = a} :: Component) Prelude.. Lens.mapping Lens.coerced++-- | The tags associated with the component.+component_tags :: Lens.Lens' Component (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+component_tags = Lens.lens (\Component' {tags} -> tags) (\s@Component' {} a -> s {tags = a} :: Component) Prelude.. Lens.mapping Lens.coerced++-- | The type of the component denotes whether the component is used to build+-- the image or only to test it.+component_type :: Lens.Lens' Component (Prelude.Maybe ComponentType)+component_type = Lens.lens (\Component' {type'} -> type') (\s@Component' {} a -> s {type' = a} :: Component)++-- | The version of the component.+component_version :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_version = Lens.lens (\Component' {version} -> version) (\s@Component' {} a -> s {version = a} :: Component)++instance Data.FromJSON Component where+  parseJSON =+    Data.withObject+      "Component"+      ( \x ->+          Component'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "changeDescription")+            Prelude.<*> (x Data..:? "data")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "encrypted")+            Prelude.<*> (x Data..:? "kmsKeyId")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "parameters" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "supportedOsVersions")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable Component where+  hashWithSalt _salt Component' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` changeDescription+      `Prelude.hashWithSalt` data'+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` encrypted+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` supportedOsVersions+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` version++instance Prelude.NFData Component where+  rnf Component' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf changeDescription+      `Prelude.seq` Prelude.rnf data'+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf encrypted+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf supportedOsVersions+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/ImageBuilder/Types/ComponentConfiguration.hs view
@@ -0,0 +1,100 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ComponentParameter+import qualified Amazonka.Prelude as Prelude++-- | Configuration details of the component.+--+-- /See:/ 'newComponentConfiguration' smart constructor.+data ComponentConfiguration = ComponentConfiguration'+  { -- | A group of parameter settings that are used to configure the component+    -- for a specific recipe.+    parameters :: Prelude.Maybe (Prelude.NonEmpty ComponentParameter),+    -- | The Amazon Resource Name (ARN) of the component.+    componentArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'parameters', 'componentConfiguration_parameters' - A group of parameter settings that are used to configure the component+-- for a specific recipe.+--+-- 'componentArn', 'componentConfiguration_componentArn' - The Amazon Resource Name (ARN) of the component.+newComponentConfiguration ::+  -- | 'componentArn'+  Prelude.Text ->+  ComponentConfiguration+newComponentConfiguration pComponentArn_ =+  ComponentConfiguration'+    { parameters =+        Prelude.Nothing,+      componentArn = pComponentArn_+    }++-- | A group of parameter settings that are used to configure the component+-- for a specific recipe.+componentConfiguration_parameters :: Lens.Lens' ComponentConfiguration (Prelude.Maybe (Prelude.NonEmpty ComponentParameter))+componentConfiguration_parameters = Lens.lens (\ComponentConfiguration' {parameters} -> parameters) (\s@ComponentConfiguration' {} a -> s {parameters = a} :: ComponentConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) of the component.+componentConfiguration_componentArn :: Lens.Lens' ComponentConfiguration Prelude.Text+componentConfiguration_componentArn = Lens.lens (\ComponentConfiguration' {componentArn} -> componentArn) (\s@ComponentConfiguration' {} a -> s {componentArn = a} :: ComponentConfiguration)++instance Data.FromJSON ComponentConfiguration where+  parseJSON =+    Data.withObject+      "ComponentConfiguration"+      ( \x ->+          ComponentConfiguration'+            Prelude.<$> (x Data..:? "parameters")+            Prelude.<*> (x Data..: "componentArn")+      )++instance Prelude.Hashable ComponentConfiguration where+  hashWithSalt _salt ComponentConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` parameters+      `Prelude.hashWithSalt` componentArn++instance Prelude.NFData ComponentConfiguration where+  rnf ComponentConfiguration' {..} =+    Prelude.rnf parameters+      `Prelude.seq` Prelude.rnf componentArn++instance Data.ToJSON ComponentConfiguration where+  toJSON ComponentConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("parameters" Data..=) Prelude.<$> parameters,+            Prelude.Just ("componentArn" Data..= componentArn)+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/ComponentFormat.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentFormat+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentFormat+  ( ComponentFormat+      ( ..,+        ComponentFormat_SHELL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComponentFormat = ComponentFormat'+  { fromComponentFormat ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ComponentFormat_SHELL :: ComponentFormat+pattern ComponentFormat_SHELL = ComponentFormat' "SHELL"++{-# COMPLETE+  ComponentFormat_SHELL,+  ComponentFormat'+  #-}
+ gen/Amazonka/ImageBuilder/Types/ComponentParameter.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentParameter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentParameter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains a key\/value pair that sets the named component parameter.+--+-- /See:/ 'newComponentParameter' smart constructor.+data ComponentParameter = ComponentParameter'+  { -- | The name of the component parameter to set.+    name :: Prelude.Text,+    -- | Sets the value for the named component parameter.+    value :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentParameter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'componentParameter_name' - The name of the component parameter to set.+--+-- 'value', 'componentParameter_value' - Sets the value for the named component parameter.+newComponentParameter ::+  -- | 'name'+  Prelude.Text ->+  ComponentParameter+newComponentParameter pName_ =+  ComponentParameter'+    { name = pName_,+      value = Prelude.mempty+    }++-- | The name of the component parameter to set.+componentParameter_name :: Lens.Lens' ComponentParameter Prelude.Text+componentParameter_name = Lens.lens (\ComponentParameter' {name} -> name) (\s@ComponentParameter' {} a -> s {name = a} :: ComponentParameter)++-- | Sets the value for the named component parameter.+componentParameter_value :: Lens.Lens' ComponentParameter [Prelude.Text]+componentParameter_value = Lens.lens (\ComponentParameter' {value} -> value) (\s@ComponentParameter' {} a -> s {value = a} :: ComponentParameter) Prelude.. Lens.coerced++instance Data.FromJSON ComponentParameter where+  parseJSON =+    Data.withObject+      "ComponentParameter"+      ( \x ->+          ComponentParameter'+            Prelude.<$> (x Data..: "name")+            Prelude.<*> (x Data..:? "value" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ComponentParameter where+  hashWithSalt _salt ComponentParameter' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` value++instance Prelude.NFData ComponentParameter where+  rnf ComponentParameter' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf value++instance Data.ToJSON ComponentParameter where+  toJSON ComponentParameter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("name" Data..= name),+            Prelude.Just ("value" Data..= value)+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/ComponentParameterDetail.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentParameterDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentParameterDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Defines a parameter that is used to provide configuration details for+-- the component.+--+-- /See:/ 'newComponentParameterDetail' smart constructor.+data ComponentParameterDetail = ComponentParameterDetail'+  { -- | The default value of this parameter if no input is provided.+    defaultValue :: Prelude.Maybe [Prelude.Text],+    -- | Describes this parameter.+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of this input parameter.+    name :: Prelude.Text,+    -- | The type of input this parameter provides. The currently supported value+    -- is \"string\".+    type' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentParameterDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultValue', 'componentParameterDetail_defaultValue' - The default value of this parameter if no input is provided.+--+-- 'description', 'componentParameterDetail_description' - Describes this parameter.+--+-- 'name', 'componentParameterDetail_name' - The name of this input parameter.+--+-- 'type'', 'componentParameterDetail_type' - The type of input this parameter provides. The currently supported value+-- is \"string\".+newComponentParameterDetail ::+  -- | 'name'+  Prelude.Text ->+  -- | 'type''+  Prelude.Text ->+  ComponentParameterDetail+newComponentParameterDetail pName_ pType_ =+  ComponentParameterDetail'+    { defaultValue =+        Prelude.Nothing,+      description = Prelude.Nothing,+      name = pName_,+      type' = pType_+    }++-- | The default value of this parameter if no input is provided.+componentParameterDetail_defaultValue :: Lens.Lens' ComponentParameterDetail (Prelude.Maybe [Prelude.Text])+componentParameterDetail_defaultValue = Lens.lens (\ComponentParameterDetail' {defaultValue} -> defaultValue) (\s@ComponentParameterDetail' {} a -> s {defaultValue = a} :: ComponentParameterDetail) Prelude.. Lens.mapping Lens.coerced++-- | Describes this parameter.+componentParameterDetail_description :: Lens.Lens' ComponentParameterDetail (Prelude.Maybe Prelude.Text)+componentParameterDetail_description = Lens.lens (\ComponentParameterDetail' {description} -> description) (\s@ComponentParameterDetail' {} a -> s {description = a} :: ComponentParameterDetail)++-- | The name of this input parameter.+componentParameterDetail_name :: Lens.Lens' ComponentParameterDetail Prelude.Text+componentParameterDetail_name = Lens.lens (\ComponentParameterDetail' {name} -> name) (\s@ComponentParameterDetail' {} a -> s {name = a} :: ComponentParameterDetail)++-- | The type of input this parameter provides. The currently supported value+-- is \"string\".+componentParameterDetail_type :: Lens.Lens' ComponentParameterDetail Prelude.Text+componentParameterDetail_type = Lens.lens (\ComponentParameterDetail' {type'} -> type') (\s@ComponentParameterDetail' {} a -> s {type' = a} :: ComponentParameterDetail)++instance Data.FromJSON ComponentParameterDetail where+  parseJSON =+    Data.withObject+      "ComponentParameterDetail"+      ( \x ->+          ComponentParameterDetail'+            Prelude.<$> (x Data..:? "defaultValue" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable ComponentParameterDetail where+  hashWithSalt _salt ComponentParameterDetail' {..} =+    _salt+      `Prelude.hashWithSalt` defaultValue+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'++instance Prelude.NFData ComponentParameterDetail where+  rnf ComponentParameterDetail' {..} =+    Prelude.rnf defaultValue+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/ImageBuilder/Types/ComponentState.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentState where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ComponentStatus+import qualified Amazonka.Prelude as Prelude++-- | A group of fields that describe the current status of components that+-- are no longer active.+--+-- /See:/ 'newComponentState' smart constructor.+data ComponentState = ComponentState'+  { -- | Describes how or why the component changed state.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The current state of the component.+    status :: Prelude.Maybe ComponentStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentState' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'reason', 'componentState_reason' - Describes how or why the component changed state.+--+-- 'status', 'componentState_status' - The current state of the component.+newComponentState ::+  ComponentState+newComponentState =+  ComponentState'+    { reason = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | Describes how or why the component changed state.+componentState_reason :: Lens.Lens' ComponentState (Prelude.Maybe Prelude.Text)+componentState_reason = Lens.lens (\ComponentState' {reason} -> reason) (\s@ComponentState' {} a -> s {reason = a} :: ComponentState)++-- | The current state of the component.+componentState_status :: Lens.Lens' ComponentState (Prelude.Maybe ComponentStatus)+componentState_status = Lens.lens (\ComponentState' {status} -> status) (\s@ComponentState' {} a -> s {status = a} :: ComponentState)++instance Data.FromJSON ComponentState where+  parseJSON =+    Data.withObject+      "ComponentState"+      ( \x ->+          ComponentState'+            Prelude.<$> (x Data..:? "reason")+            Prelude.<*> (x Data..:? "status")+      )++instance Prelude.Hashable ComponentState where+  hashWithSalt _salt ComponentState' {..} =+    _salt+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` status++instance Prelude.NFData ComponentState where+  rnf ComponentState' {..} =+    Prelude.rnf reason `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/ImageBuilder/Types/ComponentStatus.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentStatus+  ( ComponentStatus+      ( ..,+        ComponentStatus_DEPRECATED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComponentStatus = ComponentStatus'+  { fromComponentStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ComponentStatus_DEPRECATED :: ComponentStatus+pattern ComponentStatus_DEPRECATED = ComponentStatus' "DEPRECATED"++{-# COMPLETE+  ComponentStatus_DEPRECATED,+  ComponentStatus'+  #-}
+ gen/Amazonka/ImageBuilder/Types/ComponentSummary.hs view
@@ -0,0 +1,216 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ComponentState+import Amazonka.ImageBuilder.Types.ComponentType+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | A high-level summary of a component.+--+-- /See:/ 'newComponentSummary' smart constructor.+data ComponentSummary = ComponentSummary'+  { -- | The Amazon Resource Name (ARN) of the component.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The change description of the component.+    changeDescription :: Prelude.Maybe Prelude.Text,+    -- | The date that the component was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The description of the component.+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    name :: Prelude.Maybe Prelude.Text,+    -- | The owner of the component.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The platform of the component.+    platform :: Prelude.Maybe Platform,+    -- | Describes the current status of the component.+    state :: Prelude.Maybe ComponentState,+    -- | The operating system (OS) version supported by the component. If the OS+    -- information is available, a prefix match is performed against the base+    -- image OS version during image recipe creation.+    supportedOsVersions :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The tags associated with the component.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The type of the component denotes whether the component is used to build+    -- the image or only to test it.+    type' :: Prelude.Maybe ComponentType,+    -- | The version of the component.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'componentSummary_arn' - The Amazon Resource Name (ARN) of the component.+--+-- 'changeDescription', 'componentSummary_changeDescription' - The change description of the component.+--+-- 'dateCreated', 'componentSummary_dateCreated' - The date that the component was created.+--+-- 'description', 'componentSummary_description' - The description of the component.+--+-- 'name', 'componentSummary_name' - The name of the component.+--+-- 'owner', 'componentSummary_owner' - The owner of the component.+--+-- 'platform', 'componentSummary_platform' - The platform of the component.+--+-- 'state', 'componentSummary_state' - Describes the current status of the component.+--+-- 'supportedOsVersions', 'componentSummary_supportedOsVersions' - The operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+--+-- 'tags', 'componentSummary_tags' - The tags associated with the component.+--+-- 'type'', 'componentSummary_type' - The type of the component denotes whether the component is used to build+-- the image or only to test it.+--+-- 'version', 'componentSummary_version' - The version of the component.+newComponentSummary ::+  ComponentSummary+newComponentSummary =+  ComponentSummary'+    { arn = Prelude.Nothing,+      changeDescription = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      description = Prelude.Nothing,+      name = Prelude.Nothing,+      owner = Prelude.Nothing,+      platform = Prelude.Nothing,+      state = Prelude.Nothing,+      supportedOsVersions = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the component.+componentSummary_arn :: Lens.Lens' ComponentSummary (Prelude.Maybe Prelude.Text)+componentSummary_arn = Lens.lens (\ComponentSummary' {arn} -> arn) (\s@ComponentSummary' {} a -> s {arn = a} :: ComponentSummary)++-- | The change description of the component.+componentSummary_changeDescription :: Lens.Lens' ComponentSummary (Prelude.Maybe Prelude.Text)+componentSummary_changeDescription = Lens.lens (\ComponentSummary' {changeDescription} -> changeDescription) (\s@ComponentSummary' {} a -> s {changeDescription = a} :: ComponentSummary)++-- | The date that the component was created.+componentSummary_dateCreated :: Lens.Lens' ComponentSummary (Prelude.Maybe Prelude.Text)+componentSummary_dateCreated = Lens.lens (\ComponentSummary' {dateCreated} -> dateCreated) (\s@ComponentSummary' {} a -> s {dateCreated = a} :: ComponentSummary)++-- | The description of the component.+componentSummary_description :: Lens.Lens' ComponentSummary (Prelude.Maybe Prelude.Text)+componentSummary_description = Lens.lens (\ComponentSummary' {description} -> description) (\s@ComponentSummary' {} a -> s {description = a} :: ComponentSummary)++-- | The name of the component.+componentSummary_name :: Lens.Lens' ComponentSummary (Prelude.Maybe Prelude.Text)+componentSummary_name = Lens.lens (\ComponentSummary' {name} -> name) (\s@ComponentSummary' {} a -> s {name = a} :: ComponentSummary)++-- | The owner of the component.+componentSummary_owner :: Lens.Lens' ComponentSummary (Prelude.Maybe Prelude.Text)+componentSummary_owner = Lens.lens (\ComponentSummary' {owner} -> owner) (\s@ComponentSummary' {} a -> s {owner = a} :: ComponentSummary)++-- | The platform of the component.+componentSummary_platform :: Lens.Lens' ComponentSummary (Prelude.Maybe Platform)+componentSummary_platform = Lens.lens (\ComponentSummary' {platform} -> platform) (\s@ComponentSummary' {} a -> s {platform = a} :: ComponentSummary)++-- | Describes the current status of the component.+componentSummary_state :: Lens.Lens' ComponentSummary (Prelude.Maybe ComponentState)+componentSummary_state = Lens.lens (\ComponentSummary' {state} -> state) (\s@ComponentSummary' {} a -> s {state = a} :: ComponentSummary)++-- | The operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+componentSummary_supportedOsVersions :: Lens.Lens' ComponentSummary (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+componentSummary_supportedOsVersions = Lens.lens (\ComponentSummary' {supportedOsVersions} -> supportedOsVersions) (\s@ComponentSummary' {} a -> s {supportedOsVersions = a} :: ComponentSummary) Prelude.. Lens.mapping Lens.coerced++-- | The tags associated with the component.+componentSummary_tags :: Lens.Lens' ComponentSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+componentSummary_tags = Lens.lens (\ComponentSummary' {tags} -> tags) (\s@ComponentSummary' {} a -> s {tags = a} :: ComponentSummary) Prelude.. Lens.mapping Lens.coerced++-- | The type of the component denotes whether the component is used to build+-- the image or only to test it.+componentSummary_type :: Lens.Lens' ComponentSummary (Prelude.Maybe ComponentType)+componentSummary_type = Lens.lens (\ComponentSummary' {type'} -> type') (\s@ComponentSummary' {} a -> s {type' = a} :: ComponentSummary)++-- | The version of the component.+componentSummary_version :: Lens.Lens' ComponentSummary (Prelude.Maybe Prelude.Text)+componentSummary_version = Lens.lens (\ComponentSummary' {version} -> version) (\s@ComponentSummary' {} a -> s {version = a} :: ComponentSummary)++instance Data.FromJSON ComponentSummary where+  parseJSON =+    Data.withObject+      "ComponentSummary"+      ( \x ->+          ComponentSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "changeDescription")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "supportedOsVersions")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable ComponentSummary where+  hashWithSalt _salt ComponentSummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` changeDescription+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` supportedOsVersions+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` version++instance Prelude.NFData ComponentSummary where+  rnf ComponentSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf changeDescription+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf supportedOsVersions+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/ImageBuilder/Types/ComponentType.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentType+  ( ComponentType+      ( ..,+        ComponentType_BUILD,+        ComponentType_TEST+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComponentType = ComponentType'+  { fromComponentType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ComponentType_BUILD :: ComponentType+pattern ComponentType_BUILD = ComponentType' "BUILD"++pattern ComponentType_TEST :: ComponentType+pattern ComponentType_TEST = ComponentType' "TEST"++{-# COMPLETE+  ComponentType_BUILD,+  ComponentType_TEST,+  ComponentType'+  #-}
+ gen/Amazonka/ImageBuilder/Types/ComponentVersion.hs view
@@ -0,0 +1,279 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ComponentVersion+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ComponentVersion where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ComponentType+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | The defining characteristics of a specific version of an Amazon Web+-- Services TOE component.+--+-- /See:/ 'newComponentVersion' smart constructor.+data ComponentVersion = ComponentVersion'+  { -- | The Amazon Resource Name (ARN) of the component.+    --+    -- Semantic versioning is included in each object\'s Amazon Resource Name+    -- (ARN), at the level that applies to that object as follows:+    --+    -- 1.  Versionless ARNs and Name ARNs do not include specific values in any+    --     of the nodes. The nodes are either left off entirely, or they are+    --     specified as wildcards, for example: x.x.x.+    --+    -- 2.  Version ARNs have only the first three nodes:+    --     \<major>.\<minor>.\<patch>+    --+    -- 3.  Build version ARNs have all four nodes, and point to a specific+    --     build for a specific version of an object.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The date that the component was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The description of the component.+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    name :: Prelude.Maybe Prelude.Text,+    -- | The owner of the component.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The platform of the component.+    platform :: Prelude.Maybe Platform,+    -- | he operating system (OS) version supported by the component. If the OS+    -- information is available, a prefix match is performed against the base+    -- image OS version during image recipe creation.+    supportedOsVersions :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The type of the component denotes whether the component is used to build+    -- the image or only to test it.+    type' :: Prelude.Maybe ComponentType,+    -- | The semantic version of the component.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    --+    -- __Filtering:__ With semantic versioning, you have the flexibility to use+    -- wildcards (x) to specify the most recent versions or nodes when+    -- selecting the base image or components for your recipe. When you use a+    -- wildcard in any node, all nodes to the right of the first wildcard must+    -- also be wildcards.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentVersion' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'componentVersion_arn' - The Amazon Resource Name (ARN) of the component.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+--+-- 'dateCreated', 'componentVersion_dateCreated' - The date that the component was created.+--+-- 'description', 'componentVersion_description' - The description of the component.+--+-- 'name', 'componentVersion_name' - The name of the component.+--+-- 'owner', 'componentVersion_owner' - The owner of the component.+--+-- 'platform', 'componentVersion_platform' - The platform of the component.+--+-- 'supportedOsVersions', 'componentVersion_supportedOsVersions' - he operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+--+-- 'type'', 'componentVersion_type' - The type of the component denotes whether the component is used to build+-- the image or only to test it.+--+-- 'version', 'componentVersion_version' - The semantic version of the component.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+newComponentVersion ::+  ComponentVersion+newComponentVersion =+  ComponentVersion'+    { arn = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      description = Prelude.Nothing,+      name = Prelude.Nothing,+      owner = Prelude.Nothing,+      platform = Prelude.Nothing,+      supportedOsVersions = Prelude.Nothing,+      type' = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the component.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+componentVersion_arn :: Lens.Lens' ComponentVersion (Prelude.Maybe Prelude.Text)+componentVersion_arn = Lens.lens (\ComponentVersion' {arn} -> arn) (\s@ComponentVersion' {} a -> s {arn = a} :: ComponentVersion)++-- | The date that the component was created.+componentVersion_dateCreated :: Lens.Lens' ComponentVersion (Prelude.Maybe Prelude.Text)+componentVersion_dateCreated = Lens.lens (\ComponentVersion' {dateCreated} -> dateCreated) (\s@ComponentVersion' {} a -> s {dateCreated = a} :: ComponentVersion)++-- | The description of the component.+componentVersion_description :: Lens.Lens' ComponentVersion (Prelude.Maybe Prelude.Text)+componentVersion_description = Lens.lens (\ComponentVersion' {description} -> description) (\s@ComponentVersion' {} a -> s {description = a} :: ComponentVersion)++-- | The name of the component.+componentVersion_name :: Lens.Lens' ComponentVersion (Prelude.Maybe Prelude.Text)+componentVersion_name = Lens.lens (\ComponentVersion' {name} -> name) (\s@ComponentVersion' {} a -> s {name = a} :: ComponentVersion)++-- | The owner of the component.+componentVersion_owner :: Lens.Lens' ComponentVersion (Prelude.Maybe Prelude.Text)+componentVersion_owner = Lens.lens (\ComponentVersion' {owner} -> owner) (\s@ComponentVersion' {} a -> s {owner = a} :: ComponentVersion)++-- | The platform of the component.+componentVersion_platform :: Lens.Lens' ComponentVersion (Prelude.Maybe Platform)+componentVersion_platform = Lens.lens (\ComponentVersion' {platform} -> platform) (\s@ComponentVersion' {} a -> s {platform = a} :: ComponentVersion)++-- | he operating system (OS) version supported by the component. If the OS+-- information is available, a prefix match is performed against the base+-- image OS version during image recipe creation.+componentVersion_supportedOsVersions :: Lens.Lens' ComponentVersion (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+componentVersion_supportedOsVersions = Lens.lens (\ComponentVersion' {supportedOsVersions} -> supportedOsVersions) (\s@ComponentVersion' {} a -> s {supportedOsVersions = a} :: ComponentVersion) Prelude.. Lens.mapping Lens.coerced++-- | The type of the component denotes whether the component is used to build+-- the image or only to test it.+componentVersion_type :: Lens.Lens' ComponentVersion (Prelude.Maybe ComponentType)+componentVersion_type = Lens.lens (\ComponentVersion' {type'} -> type') (\s@ComponentVersion' {} a -> s {type' = a} :: ComponentVersion)++-- | The semantic version of the component.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+componentVersion_version :: Lens.Lens' ComponentVersion (Prelude.Maybe Prelude.Text)+componentVersion_version = Lens.lens (\ComponentVersion' {version} -> version) (\s@ComponentVersion' {} a -> s {version = a} :: ComponentVersion)++instance Data.FromJSON ComponentVersion where+  parseJSON =+    Data.withObject+      "ComponentVersion"+      ( \x ->+          ComponentVersion'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "supportedOsVersions")+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable ComponentVersion where+  hashWithSalt _salt ComponentVersion' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` supportedOsVersions+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` version++instance Prelude.NFData ComponentVersion where+  rnf ComponentVersion' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf supportedOsVersions+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/ImageBuilder/Types/Container.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Container+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Container where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A container encapsulates the runtime environment for an application.+--+-- /See:/ 'newContainer' smart constructor.+data Container = Container'+  { -- | A list of URIs for containers created in the context Region.+    imageUris :: Prelude.Maybe [Prelude.Text],+    -- | Containers and container images are Region-specific. This is the Region+    -- context for the container.+    region :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Container' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageUris', 'container_imageUris' - A list of URIs for containers created in the context Region.+--+-- 'region', 'container_region' - Containers and container images are Region-specific. This is the Region+-- context for the container.+newContainer ::+  Container+newContainer =+  Container'+    { imageUris = Prelude.Nothing,+      region = Prelude.Nothing+    }++-- | A list of URIs for containers created in the context Region.+container_imageUris :: Lens.Lens' Container (Prelude.Maybe [Prelude.Text])+container_imageUris = Lens.lens (\Container' {imageUris} -> imageUris) (\s@Container' {} a -> s {imageUris = a} :: Container) Prelude.. Lens.mapping Lens.coerced++-- | Containers and container images are Region-specific. This is the Region+-- context for the container.+container_region :: Lens.Lens' Container (Prelude.Maybe Prelude.Text)+container_region = Lens.lens (\Container' {region} -> region) (\s@Container' {} a -> s {region = a} :: Container)++instance Data.FromJSON Container where+  parseJSON =+    Data.withObject+      "Container"+      ( \x ->+          Container'+            Prelude.<$> (x Data..:? "imageUris" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "region")+      )++instance Prelude.Hashable Container where+  hashWithSalt _salt Container' {..} =+    _salt+      `Prelude.hashWithSalt` imageUris+      `Prelude.hashWithSalt` region++instance Prelude.NFData Container where+  rnf Container' {..} =+    Prelude.rnf imageUris+      `Prelude.seq` Prelude.rnf region
+ gen/Amazonka/ImageBuilder/Types/ContainerDistributionConfiguration.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ContainerDistributionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ContainerDistributionConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.TargetContainerRepository+import qualified Amazonka.Prelude as Prelude++-- | Container distribution settings for encryption, licensing, and sharing+-- in a specific Region.+--+-- /See:/ 'newContainerDistributionConfiguration' smart constructor.+data ContainerDistributionConfiguration = ContainerDistributionConfiguration'+  { -- | Tags that are attached to the container distribution configuration.+    containerTags :: Prelude.Maybe [Prelude.Text],+    -- | The description of the container distribution configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The destination repository for the container distribution configuration.+    targetRepository :: TargetContainerRepository+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ContainerDistributionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerTags', 'containerDistributionConfiguration_containerTags' - Tags that are attached to the container distribution configuration.+--+-- 'description', 'containerDistributionConfiguration_description' - The description of the container distribution configuration.+--+-- 'targetRepository', 'containerDistributionConfiguration_targetRepository' - The destination repository for the container distribution configuration.+newContainerDistributionConfiguration ::+  -- | 'targetRepository'+  TargetContainerRepository ->+  ContainerDistributionConfiguration+newContainerDistributionConfiguration+  pTargetRepository_ =+    ContainerDistributionConfiguration'+      { containerTags =+          Prelude.Nothing,+        description = Prelude.Nothing,+        targetRepository = pTargetRepository_+      }++-- | Tags that are attached to the container distribution configuration.+containerDistributionConfiguration_containerTags :: Lens.Lens' ContainerDistributionConfiguration (Prelude.Maybe [Prelude.Text])+containerDistributionConfiguration_containerTags = Lens.lens (\ContainerDistributionConfiguration' {containerTags} -> containerTags) (\s@ContainerDistributionConfiguration' {} a -> s {containerTags = a} :: ContainerDistributionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The description of the container distribution configuration.+containerDistributionConfiguration_description :: Lens.Lens' ContainerDistributionConfiguration (Prelude.Maybe Prelude.Text)+containerDistributionConfiguration_description = Lens.lens (\ContainerDistributionConfiguration' {description} -> description) (\s@ContainerDistributionConfiguration' {} a -> s {description = a} :: ContainerDistributionConfiguration)++-- | The destination repository for the container distribution configuration.+containerDistributionConfiguration_targetRepository :: Lens.Lens' ContainerDistributionConfiguration TargetContainerRepository+containerDistributionConfiguration_targetRepository = Lens.lens (\ContainerDistributionConfiguration' {targetRepository} -> targetRepository) (\s@ContainerDistributionConfiguration' {} a -> s {targetRepository = a} :: ContainerDistributionConfiguration)++instance+  Data.FromJSON+    ContainerDistributionConfiguration+  where+  parseJSON =+    Data.withObject+      "ContainerDistributionConfiguration"+      ( \x ->+          ContainerDistributionConfiguration'+            Prelude.<$> (x Data..:? "containerTags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..: "targetRepository")+      )++instance+  Prelude.Hashable+    ContainerDistributionConfiguration+  where+  hashWithSalt+    _salt+    ContainerDistributionConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` containerTags+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` targetRepository++instance+  Prelude.NFData+    ContainerDistributionConfiguration+  where+  rnf ContainerDistributionConfiguration' {..} =+    Prelude.rnf containerTags+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf targetRepository++instance+  Data.ToJSON+    ContainerDistributionConfiguration+  where+  toJSON ContainerDistributionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("containerTags" Data..=) Prelude.<$> containerTags,+            ("description" Data..=) Prelude.<$> description,+            Prelude.Just+              ("targetRepository" Data..= targetRepository)+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/ContainerRecipe.hs view
@@ -0,0 +1,386 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ContainerRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ContainerRecipe where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ComponentConfiguration+import Amazonka.ImageBuilder.Types.ContainerType+import Amazonka.ImageBuilder.Types.InstanceConfiguration+import Amazonka.ImageBuilder.Types.Platform+import Amazonka.ImageBuilder.Types.TargetContainerRepository+import qualified Amazonka.Prelude as Prelude++-- | A container recipe.+--+-- /See:/ 'newContainerRecipe' smart constructor.+data ContainerRecipe = ContainerRecipe'+  { -- | The Amazon Resource Name (ARN) of the container recipe.+    --+    -- Semantic versioning is included in each object\'s Amazon Resource Name+    -- (ARN), at the level that applies to that object as follows:+    --+    -- 1.  Versionless ARNs and Name ARNs do not include specific values in any+    --     of the nodes. The nodes are either left off entirely, or they are+    --     specified as wildcards, for example: x.x.x.+    --+    -- 2.  Version ARNs have only the first three nodes:+    --     \<major>.\<minor>.\<patch>+    --+    -- 3.  Build version ARNs have all four nodes, and point to a specific+    --     build for a specific version of an object.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Components for build and test that are included in the container recipe.+    components :: Prelude.Maybe (Prelude.NonEmpty ComponentConfiguration),+    -- | Specifies the type of container, such as Docker.+    containerType :: Prelude.Maybe ContainerType,+    -- | The date when this container recipe was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The description of the container recipe.+    description :: Prelude.Maybe Prelude.Text,+    -- | Dockerfiles are text documents that are used to build Docker containers,+    -- and ensure that they contain all of the elements required by the+    -- application running inside. The template data consists of contextual+    -- variables where Image Builder places build information or scripts, based+    -- on your container image recipe.+    dockerfileTemplateData :: Prelude.Maybe Prelude.Text,+    -- | A flag that indicates if the target container is encrypted.+    encrypted :: Prelude.Maybe Prelude.Bool,+    -- | A group of options that can be used to configure an instance for+    -- building and testing container images.+    instanceConfiguration :: Prelude.Maybe InstanceConfiguration,+    -- | Identifies which KMS key is used to encrypt the container image for+    -- distribution to the target Region.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The name of the container recipe.+    name :: Prelude.Maybe Prelude.Text,+    -- | The owner of the container recipe.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The base image for the container recipe.+    parentImage :: Prelude.Maybe Prelude.Text,+    -- | The system platform for the container, such as Windows or Linux.+    platform :: Prelude.Maybe Platform,+    -- | Tags that are attached to the container recipe.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The destination repository for the container image.+    targetRepository :: Prelude.Maybe TargetContainerRepository,+    -- | The semantic version of the container recipe.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    --+    -- __Filtering:__ With semantic versioning, you have the flexibility to use+    -- wildcards (x) to specify the most recent versions or nodes when+    -- selecting the base image or components for your recipe. When you use a+    -- wildcard in any node, all nodes to the right of the first wildcard must+    -- also be wildcards.+    version :: Prelude.Maybe Prelude.Text,+    -- | The working directory for use during build and test workflows.+    workingDirectory :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ContainerRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'containerRecipe_arn' - The Amazon Resource Name (ARN) of the container recipe.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+--+-- 'components', 'containerRecipe_components' - Components for build and test that are included in the container recipe.+--+-- 'containerType', 'containerRecipe_containerType' - Specifies the type of container, such as Docker.+--+-- 'dateCreated', 'containerRecipe_dateCreated' - The date when this container recipe was created.+--+-- 'description', 'containerRecipe_description' - The description of the container recipe.+--+-- 'dockerfileTemplateData', 'containerRecipe_dockerfileTemplateData' - Dockerfiles are text documents that are used to build Docker containers,+-- and ensure that they contain all of the elements required by the+-- application running inside. The template data consists of contextual+-- variables where Image Builder places build information or scripts, based+-- on your container image recipe.+--+-- 'encrypted', 'containerRecipe_encrypted' - A flag that indicates if the target container is encrypted.+--+-- 'instanceConfiguration', 'containerRecipe_instanceConfiguration' - A group of options that can be used to configure an instance for+-- building and testing container images.+--+-- 'kmsKeyId', 'containerRecipe_kmsKeyId' - Identifies which KMS key is used to encrypt the container image for+-- distribution to the target Region.+--+-- 'name', 'containerRecipe_name' - The name of the container recipe.+--+-- 'owner', 'containerRecipe_owner' - The owner of the container recipe.+--+-- 'parentImage', 'containerRecipe_parentImage' - The base image for the container recipe.+--+-- 'platform', 'containerRecipe_platform' - The system platform for the container, such as Windows or Linux.+--+-- 'tags', 'containerRecipe_tags' - Tags that are attached to the container recipe.+--+-- 'targetRepository', 'containerRecipe_targetRepository' - The destination repository for the container image.+--+-- 'version', 'containerRecipe_version' - The semantic version of the container recipe.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+--+-- 'workingDirectory', 'containerRecipe_workingDirectory' - The working directory for use during build and test workflows.+newContainerRecipe ::+  ContainerRecipe+newContainerRecipe =+  ContainerRecipe'+    { arn = Prelude.Nothing,+      components = Prelude.Nothing,+      containerType = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      description = Prelude.Nothing,+      dockerfileTemplateData = Prelude.Nothing,+      encrypted = Prelude.Nothing,+      instanceConfiguration = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      name = Prelude.Nothing,+      owner = Prelude.Nothing,+      parentImage = Prelude.Nothing,+      platform = Prelude.Nothing,+      tags = Prelude.Nothing,+      targetRepository = Prelude.Nothing,+      version = Prelude.Nothing,+      workingDirectory = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the container recipe.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+containerRecipe_arn :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_arn = Lens.lens (\ContainerRecipe' {arn} -> arn) (\s@ContainerRecipe' {} a -> s {arn = a} :: ContainerRecipe)++-- | Components for build and test that are included in the container recipe.+containerRecipe_components :: Lens.Lens' ContainerRecipe (Prelude.Maybe (Prelude.NonEmpty ComponentConfiguration))+containerRecipe_components = Lens.lens (\ContainerRecipe' {components} -> components) (\s@ContainerRecipe' {} a -> s {components = a} :: ContainerRecipe) Prelude.. Lens.mapping Lens.coerced++-- | Specifies the type of container, such as Docker.+containerRecipe_containerType :: Lens.Lens' ContainerRecipe (Prelude.Maybe ContainerType)+containerRecipe_containerType = Lens.lens (\ContainerRecipe' {containerType} -> containerType) (\s@ContainerRecipe' {} a -> s {containerType = a} :: ContainerRecipe)++-- | The date when this container recipe was created.+containerRecipe_dateCreated :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_dateCreated = Lens.lens (\ContainerRecipe' {dateCreated} -> dateCreated) (\s@ContainerRecipe' {} a -> s {dateCreated = a} :: ContainerRecipe)++-- | The description of the container recipe.+containerRecipe_description :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_description = Lens.lens (\ContainerRecipe' {description} -> description) (\s@ContainerRecipe' {} a -> s {description = a} :: ContainerRecipe)++-- | Dockerfiles are text documents that are used to build Docker containers,+-- and ensure that they contain all of the elements required by the+-- application running inside. The template data consists of contextual+-- variables where Image Builder places build information or scripts, based+-- on your container image recipe.+containerRecipe_dockerfileTemplateData :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_dockerfileTemplateData = Lens.lens (\ContainerRecipe' {dockerfileTemplateData} -> dockerfileTemplateData) (\s@ContainerRecipe' {} a -> s {dockerfileTemplateData = a} :: ContainerRecipe)++-- | A flag that indicates if the target container is encrypted.+containerRecipe_encrypted :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Bool)+containerRecipe_encrypted = Lens.lens (\ContainerRecipe' {encrypted} -> encrypted) (\s@ContainerRecipe' {} a -> s {encrypted = a} :: ContainerRecipe)++-- | A group of options that can be used to configure an instance for+-- building and testing container images.+containerRecipe_instanceConfiguration :: Lens.Lens' ContainerRecipe (Prelude.Maybe InstanceConfiguration)+containerRecipe_instanceConfiguration = Lens.lens (\ContainerRecipe' {instanceConfiguration} -> instanceConfiguration) (\s@ContainerRecipe' {} a -> s {instanceConfiguration = a} :: ContainerRecipe)++-- | Identifies which KMS key is used to encrypt the container image for+-- distribution to the target Region.+containerRecipe_kmsKeyId :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_kmsKeyId = Lens.lens (\ContainerRecipe' {kmsKeyId} -> kmsKeyId) (\s@ContainerRecipe' {} a -> s {kmsKeyId = a} :: ContainerRecipe)++-- | The name of the container recipe.+containerRecipe_name :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_name = Lens.lens (\ContainerRecipe' {name} -> name) (\s@ContainerRecipe' {} a -> s {name = a} :: ContainerRecipe)++-- | The owner of the container recipe.+containerRecipe_owner :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_owner = Lens.lens (\ContainerRecipe' {owner} -> owner) (\s@ContainerRecipe' {} a -> s {owner = a} :: ContainerRecipe)++-- | The base image for the container recipe.+containerRecipe_parentImage :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_parentImage = Lens.lens (\ContainerRecipe' {parentImage} -> parentImage) (\s@ContainerRecipe' {} a -> s {parentImage = a} :: ContainerRecipe)++-- | The system platform for the container, such as Windows or Linux.+containerRecipe_platform :: Lens.Lens' ContainerRecipe (Prelude.Maybe Platform)+containerRecipe_platform = Lens.lens (\ContainerRecipe' {platform} -> platform) (\s@ContainerRecipe' {} a -> s {platform = a} :: ContainerRecipe)++-- | Tags that are attached to the container recipe.+containerRecipe_tags :: Lens.Lens' ContainerRecipe (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+containerRecipe_tags = Lens.lens (\ContainerRecipe' {tags} -> tags) (\s@ContainerRecipe' {} a -> s {tags = a} :: ContainerRecipe) Prelude.. Lens.mapping Lens.coerced++-- | The destination repository for the container image.+containerRecipe_targetRepository :: Lens.Lens' ContainerRecipe (Prelude.Maybe TargetContainerRepository)+containerRecipe_targetRepository = Lens.lens (\ContainerRecipe' {targetRepository} -> targetRepository) (\s@ContainerRecipe' {} a -> s {targetRepository = a} :: ContainerRecipe)++-- | The semantic version of the container recipe.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+containerRecipe_version :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_version = Lens.lens (\ContainerRecipe' {version} -> version) (\s@ContainerRecipe' {} a -> s {version = a} :: ContainerRecipe)++-- | The working directory for use during build and test workflows.+containerRecipe_workingDirectory :: Lens.Lens' ContainerRecipe (Prelude.Maybe Prelude.Text)+containerRecipe_workingDirectory = Lens.lens (\ContainerRecipe' {workingDirectory} -> workingDirectory) (\s@ContainerRecipe' {} a -> s {workingDirectory = a} :: ContainerRecipe)++instance Data.FromJSON ContainerRecipe where+  parseJSON =+    Data.withObject+      "ContainerRecipe"+      ( \x ->+          ContainerRecipe'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "components")+            Prelude.<*> (x Data..:? "containerType")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "dockerfileTemplateData")+            Prelude.<*> (x Data..:? "encrypted")+            Prelude.<*> (x Data..:? "instanceConfiguration")+            Prelude.<*> (x Data..:? "kmsKeyId")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "parentImage")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "targetRepository")+            Prelude.<*> (x Data..:? "version")+            Prelude.<*> (x Data..:? "workingDirectory")+      )++instance Prelude.Hashable ContainerRecipe where+  hashWithSalt _salt ContainerRecipe' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` components+      `Prelude.hashWithSalt` containerType+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` dockerfileTemplateData+      `Prelude.hashWithSalt` encrypted+      `Prelude.hashWithSalt` instanceConfiguration+      `Prelude.hashWithSalt` kmsKeyId+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` parentImage+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targetRepository+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` workingDirectory++instance Prelude.NFData ContainerRecipe where+  rnf ContainerRecipe' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf components+      `Prelude.seq` Prelude.rnf containerType+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf dockerfileTemplateData+      `Prelude.seq` Prelude.rnf encrypted+      `Prelude.seq` Prelude.rnf instanceConfiguration+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf parentImage+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targetRepository+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf workingDirectory
+ gen/Amazonka/ImageBuilder/Types/ContainerRecipeSummary.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ContainerRecipeSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ContainerRecipeSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ContainerType+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | A summary of a container recipe+--+-- /See:/ 'newContainerRecipeSummary' smart constructor.+data ContainerRecipeSummary = ContainerRecipeSummary'+  { -- | The Amazon Resource Name (ARN) of the container recipe.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Specifies the type of container, such as \"Docker\".+    containerType :: Prelude.Maybe ContainerType,+    -- | The date when this container recipe was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The name of the container recipe.+    name :: Prelude.Maybe Prelude.Text,+    -- | The owner of the container recipe.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The base image for the container recipe.+    parentImage :: Prelude.Maybe Prelude.Text,+    -- | The system platform for the container, such as Windows or Linux.+    platform :: Prelude.Maybe Platform,+    -- | Tags that are attached to the container recipe.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ContainerRecipeSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'containerRecipeSummary_arn' - The Amazon Resource Name (ARN) of the container recipe.+--+-- 'containerType', 'containerRecipeSummary_containerType' - Specifies the type of container, such as \"Docker\".+--+-- 'dateCreated', 'containerRecipeSummary_dateCreated' - The date when this container recipe was created.+--+-- 'name', 'containerRecipeSummary_name' - The name of the container recipe.+--+-- 'owner', 'containerRecipeSummary_owner' - The owner of the container recipe.+--+-- 'parentImage', 'containerRecipeSummary_parentImage' - The base image for the container recipe.+--+-- 'platform', 'containerRecipeSummary_platform' - The system platform for the container, such as Windows or Linux.+--+-- 'tags', 'containerRecipeSummary_tags' - Tags that are attached to the container recipe.+newContainerRecipeSummary ::+  ContainerRecipeSummary+newContainerRecipeSummary =+  ContainerRecipeSummary'+    { arn = Prelude.Nothing,+      containerType = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      name = Prelude.Nothing,+      owner = Prelude.Nothing,+      parentImage = Prelude.Nothing,+      platform = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the container recipe.+containerRecipeSummary_arn :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe Prelude.Text)+containerRecipeSummary_arn = Lens.lens (\ContainerRecipeSummary' {arn} -> arn) (\s@ContainerRecipeSummary' {} a -> s {arn = a} :: ContainerRecipeSummary)++-- | Specifies the type of container, such as \"Docker\".+containerRecipeSummary_containerType :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe ContainerType)+containerRecipeSummary_containerType = Lens.lens (\ContainerRecipeSummary' {containerType} -> containerType) (\s@ContainerRecipeSummary' {} a -> s {containerType = a} :: ContainerRecipeSummary)++-- | The date when this container recipe was created.+containerRecipeSummary_dateCreated :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe Prelude.Text)+containerRecipeSummary_dateCreated = Lens.lens (\ContainerRecipeSummary' {dateCreated} -> dateCreated) (\s@ContainerRecipeSummary' {} a -> s {dateCreated = a} :: ContainerRecipeSummary)++-- | The name of the container recipe.+containerRecipeSummary_name :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe Prelude.Text)+containerRecipeSummary_name = Lens.lens (\ContainerRecipeSummary' {name} -> name) (\s@ContainerRecipeSummary' {} a -> s {name = a} :: ContainerRecipeSummary)++-- | The owner of the container recipe.+containerRecipeSummary_owner :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe Prelude.Text)+containerRecipeSummary_owner = Lens.lens (\ContainerRecipeSummary' {owner} -> owner) (\s@ContainerRecipeSummary' {} a -> s {owner = a} :: ContainerRecipeSummary)++-- | The base image for the container recipe.+containerRecipeSummary_parentImage :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe Prelude.Text)+containerRecipeSummary_parentImage = Lens.lens (\ContainerRecipeSummary' {parentImage} -> parentImage) (\s@ContainerRecipeSummary' {} a -> s {parentImage = a} :: ContainerRecipeSummary)++-- | The system platform for the container, such as Windows or Linux.+containerRecipeSummary_platform :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe Platform)+containerRecipeSummary_platform = Lens.lens (\ContainerRecipeSummary' {platform} -> platform) (\s@ContainerRecipeSummary' {} a -> s {platform = a} :: ContainerRecipeSummary)++-- | Tags that are attached to the container recipe.+containerRecipeSummary_tags :: Lens.Lens' ContainerRecipeSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+containerRecipeSummary_tags = Lens.lens (\ContainerRecipeSummary' {tags} -> tags) (\s@ContainerRecipeSummary' {} a -> s {tags = a} :: ContainerRecipeSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ContainerRecipeSummary where+  parseJSON =+    Data.withObject+      "ContainerRecipeSummary"+      ( \x ->+          ContainerRecipeSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "containerType")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "parentImage")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ContainerRecipeSummary where+  hashWithSalt _salt ContainerRecipeSummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` containerType+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` parentImage+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ContainerRecipeSummary where+  rnf ContainerRecipeSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf containerType+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf parentImage+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/ImageBuilder/Types/ContainerRepositoryService.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ContainerRepositoryService+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ContainerRepositoryService+  ( ContainerRepositoryService+      ( ..,+        ContainerRepositoryService_ECR+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ContainerRepositoryService = ContainerRepositoryService'+  { fromContainerRepositoryService ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ContainerRepositoryService_ECR :: ContainerRepositoryService+pattern ContainerRepositoryService_ECR = ContainerRepositoryService' "ECR"++{-# COMPLETE+  ContainerRepositoryService_ECR,+  ContainerRepositoryService'+  #-}
+ gen/Amazonka/ImageBuilder/Types/ContainerType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ContainerType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ContainerType+  ( ContainerType+      ( ..,+        ContainerType_DOCKER+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ContainerType = ContainerType'+  { fromContainerType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ContainerType_DOCKER :: ContainerType+pattern ContainerType_DOCKER = ContainerType' "DOCKER"++{-# COMPLETE+  ContainerType_DOCKER,+  ContainerType'+  #-}
+ gen/Amazonka/ImageBuilder/Types/DiskImageFormat.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.DiskImageFormat+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.DiskImageFormat+  ( DiskImageFormat+      ( ..,+        DiskImageFormat_RAW,+        DiskImageFormat_VHD,+        DiskImageFormat_VMDK+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DiskImageFormat = DiskImageFormat'+  { fromDiskImageFormat ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern DiskImageFormat_RAW :: DiskImageFormat+pattern DiskImageFormat_RAW = DiskImageFormat' "RAW"++pattern DiskImageFormat_VHD :: DiskImageFormat+pattern DiskImageFormat_VHD = DiskImageFormat' "VHD"++pattern DiskImageFormat_VMDK :: DiskImageFormat+pattern DiskImageFormat_VMDK = DiskImageFormat' "VMDK"++{-# COMPLETE+  DiskImageFormat_RAW,+  DiskImageFormat_VHD,+  DiskImageFormat_VMDK,+  DiskImageFormat'+  #-}
+ gen/Amazonka/ImageBuilder/Types/Distribution.hs view
@@ -0,0 +1,187 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Distribution+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Distribution where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.AmiDistributionConfiguration+import Amazonka.ImageBuilder.Types.ContainerDistributionConfiguration+import Amazonka.ImageBuilder.Types.FastLaunchConfiguration+import Amazonka.ImageBuilder.Types.LaunchTemplateConfiguration+import Amazonka.ImageBuilder.Types.S3ExportConfiguration+import qualified Amazonka.Prelude as Prelude++-- | Defines the settings for a specific Region.+--+-- /See:/ 'newDistribution' smart constructor.+data Distribution = Distribution'+  { -- | The specific AMI settings; for example, launch permissions or AMI tags.+    amiDistributionConfiguration :: Prelude.Maybe AmiDistributionConfiguration,+    -- | Container distribution settings for encryption, licensing, and sharing+    -- in a specific Region.+    containerDistributionConfiguration :: Prelude.Maybe ContainerDistributionConfiguration,+    -- | The Windows faster-launching configurations to use for AMI distribution.+    fastLaunchConfigurations :: Prelude.Maybe (Prelude.NonEmpty FastLaunchConfiguration),+    -- | A group of launchTemplateConfiguration settings that apply to image+    -- distribution for specified accounts.+    launchTemplateConfigurations :: Prelude.Maybe (Prelude.NonEmpty LaunchTemplateConfiguration),+    -- | The License Manager Configuration to associate with the AMI in the+    -- specified Region.+    licenseConfigurationArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | Configure export settings to deliver disk images created from your image+    -- build, using a file format that is compatible with your VMs in that+    -- Region.+    s3ExportConfiguration :: Prelude.Maybe S3ExportConfiguration,+    -- | The target Region.+    region :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Distribution' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'amiDistributionConfiguration', 'distribution_amiDistributionConfiguration' - The specific AMI settings; for example, launch permissions or AMI tags.+--+-- 'containerDistributionConfiguration', 'distribution_containerDistributionConfiguration' - Container distribution settings for encryption, licensing, and sharing+-- in a specific Region.+--+-- 'fastLaunchConfigurations', 'distribution_fastLaunchConfigurations' - The Windows faster-launching configurations to use for AMI distribution.+--+-- 'launchTemplateConfigurations', 'distribution_launchTemplateConfigurations' - A group of launchTemplateConfiguration settings that apply to image+-- distribution for specified accounts.+--+-- 'licenseConfigurationArns', 'distribution_licenseConfigurationArns' - The License Manager Configuration to associate with the AMI in the+-- specified Region.+--+-- 's3ExportConfiguration', 'distribution_s3ExportConfiguration' - Configure export settings to deliver disk images created from your image+-- build, using a file format that is compatible with your VMs in that+-- Region.+--+-- 'region', 'distribution_region' - The target Region.+newDistribution ::+  -- | 'region'+  Prelude.Text ->+  Distribution+newDistribution pRegion_ =+  Distribution'+    { amiDistributionConfiguration =+        Prelude.Nothing,+      containerDistributionConfiguration = Prelude.Nothing,+      fastLaunchConfigurations = Prelude.Nothing,+      launchTemplateConfigurations = Prelude.Nothing,+      licenseConfigurationArns = Prelude.Nothing,+      s3ExportConfiguration = Prelude.Nothing,+      region = pRegion_+    }++-- | The specific AMI settings; for example, launch permissions or AMI tags.+distribution_amiDistributionConfiguration :: Lens.Lens' Distribution (Prelude.Maybe AmiDistributionConfiguration)+distribution_amiDistributionConfiguration = Lens.lens (\Distribution' {amiDistributionConfiguration} -> amiDistributionConfiguration) (\s@Distribution' {} a -> s {amiDistributionConfiguration = a} :: Distribution)++-- | Container distribution settings for encryption, licensing, and sharing+-- in a specific Region.+distribution_containerDistributionConfiguration :: Lens.Lens' Distribution (Prelude.Maybe ContainerDistributionConfiguration)+distribution_containerDistributionConfiguration = Lens.lens (\Distribution' {containerDistributionConfiguration} -> containerDistributionConfiguration) (\s@Distribution' {} a -> s {containerDistributionConfiguration = a} :: Distribution)++-- | The Windows faster-launching configurations to use for AMI distribution.+distribution_fastLaunchConfigurations :: Lens.Lens' Distribution (Prelude.Maybe (Prelude.NonEmpty FastLaunchConfiguration))+distribution_fastLaunchConfigurations = Lens.lens (\Distribution' {fastLaunchConfigurations} -> fastLaunchConfigurations) (\s@Distribution' {} a -> s {fastLaunchConfigurations = a} :: Distribution) Prelude.. Lens.mapping Lens.coerced++-- | A group of launchTemplateConfiguration settings that apply to image+-- distribution for specified accounts.+distribution_launchTemplateConfigurations :: Lens.Lens' Distribution (Prelude.Maybe (Prelude.NonEmpty LaunchTemplateConfiguration))+distribution_launchTemplateConfigurations = Lens.lens (\Distribution' {launchTemplateConfigurations} -> launchTemplateConfigurations) (\s@Distribution' {} a -> s {launchTemplateConfigurations = a} :: Distribution) Prelude.. Lens.mapping Lens.coerced++-- | The License Manager Configuration to associate with the AMI in the+-- specified Region.+distribution_licenseConfigurationArns :: Lens.Lens' Distribution (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+distribution_licenseConfigurationArns = Lens.lens (\Distribution' {licenseConfigurationArns} -> licenseConfigurationArns) (\s@Distribution' {} a -> s {licenseConfigurationArns = a} :: Distribution) Prelude.. Lens.mapping Lens.coerced++-- | Configure export settings to deliver disk images created from your image+-- build, using a file format that is compatible with your VMs in that+-- Region.+distribution_s3ExportConfiguration :: Lens.Lens' Distribution (Prelude.Maybe S3ExportConfiguration)+distribution_s3ExportConfiguration = Lens.lens (\Distribution' {s3ExportConfiguration} -> s3ExportConfiguration) (\s@Distribution' {} a -> s {s3ExportConfiguration = a} :: Distribution)++-- | The target Region.+distribution_region :: Lens.Lens' Distribution Prelude.Text+distribution_region = Lens.lens (\Distribution' {region} -> region) (\s@Distribution' {} a -> s {region = a} :: Distribution)++instance Data.FromJSON Distribution where+  parseJSON =+    Data.withObject+      "Distribution"+      ( \x ->+          Distribution'+            Prelude.<$> (x Data..:? "amiDistributionConfiguration")+            Prelude.<*> (x Data..:? "containerDistributionConfiguration")+            Prelude.<*> (x Data..:? "fastLaunchConfigurations")+            Prelude.<*> (x Data..:? "launchTemplateConfigurations")+            Prelude.<*> (x Data..:? "licenseConfigurationArns")+            Prelude.<*> (x Data..:? "s3ExportConfiguration")+            Prelude.<*> (x Data..: "region")+      )++instance Prelude.Hashable Distribution where+  hashWithSalt _salt Distribution' {..} =+    _salt+      `Prelude.hashWithSalt` amiDistributionConfiguration+      `Prelude.hashWithSalt` containerDistributionConfiguration+      `Prelude.hashWithSalt` fastLaunchConfigurations+      `Prelude.hashWithSalt` launchTemplateConfigurations+      `Prelude.hashWithSalt` licenseConfigurationArns+      `Prelude.hashWithSalt` s3ExportConfiguration+      `Prelude.hashWithSalt` region++instance Prelude.NFData Distribution where+  rnf Distribution' {..} =+    Prelude.rnf amiDistributionConfiguration+      `Prelude.seq` Prelude.rnf containerDistributionConfiguration+      `Prelude.seq` Prelude.rnf fastLaunchConfigurations+      `Prelude.seq` Prelude.rnf launchTemplateConfigurations+      `Prelude.seq` Prelude.rnf licenseConfigurationArns+      `Prelude.seq` Prelude.rnf s3ExportConfiguration+      `Prelude.seq` Prelude.rnf region++instance Data.ToJSON Distribution where+  toJSON Distribution' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("amiDistributionConfiguration" Data..=)+              Prelude.<$> amiDistributionConfiguration,+            ("containerDistributionConfiguration" Data..=)+              Prelude.<$> containerDistributionConfiguration,+            ("fastLaunchConfigurations" Data..=)+              Prelude.<$> fastLaunchConfigurations,+            ("launchTemplateConfigurations" Data..=)+              Prelude.<$> launchTemplateConfigurations,+            ("licenseConfigurationArns" Data..=)+              Prelude.<$> licenseConfigurationArns,+            ("s3ExportConfiguration" Data..=)+              Prelude.<$> s3ExportConfiguration,+            Prelude.Just ("region" Data..= region)+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/DistributionConfiguration.hs view
@@ -0,0 +1,162 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.DistributionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.DistributionConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.Distribution+import qualified Amazonka.Prelude as Prelude++-- | A distribution configuration.+--+-- /See:/ 'newDistributionConfiguration' smart constructor.+data DistributionConfiguration = DistributionConfiguration'+  { -- | The Amazon Resource Name (ARN) of the distribution configuration.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The date on which this distribution configuration was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The date on which this distribution configuration was last updated.+    dateUpdated :: Prelude.Maybe Prelude.Text,+    -- | The description of the distribution configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The distribution objects that apply Region-specific settings for the+    -- deployment of the image to targeted Regions.+    distributions :: Prelude.Maybe [Distribution],+    -- | The name of the distribution configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | The tags of the distribution configuration.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The maximum duration in minutes for this distribution configuration.+    timeoutMinutes :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DistributionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'distributionConfiguration_arn' - The Amazon Resource Name (ARN) of the distribution configuration.+--+-- 'dateCreated', 'distributionConfiguration_dateCreated' - The date on which this distribution configuration was created.+--+-- 'dateUpdated', 'distributionConfiguration_dateUpdated' - The date on which this distribution configuration was last updated.+--+-- 'description', 'distributionConfiguration_description' - The description of the distribution configuration.+--+-- 'distributions', 'distributionConfiguration_distributions' - The distribution objects that apply Region-specific settings for the+-- deployment of the image to targeted Regions.+--+-- 'name', 'distributionConfiguration_name' - The name of the distribution configuration.+--+-- 'tags', 'distributionConfiguration_tags' - The tags of the distribution configuration.+--+-- 'timeoutMinutes', 'distributionConfiguration_timeoutMinutes' - The maximum duration in minutes for this distribution configuration.+newDistributionConfiguration ::+  -- | 'timeoutMinutes'+  Prelude.Natural ->+  DistributionConfiguration+newDistributionConfiguration pTimeoutMinutes_ =+  DistributionConfiguration'+    { arn = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      dateUpdated = Prelude.Nothing,+      description = Prelude.Nothing,+      distributions = Prelude.Nothing,+      name = Prelude.Nothing,+      tags = Prelude.Nothing,+      timeoutMinutes = pTimeoutMinutes_+    }++-- | The Amazon Resource Name (ARN) of the distribution configuration.+distributionConfiguration_arn :: Lens.Lens' DistributionConfiguration (Prelude.Maybe Prelude.Text)+distributionConfiguration_arn = Lens.lens (\DistributionConfiguration' {arn} -> arn) (\s@DistributionConfiguration' {} a -> s {arn = a} :: DistributionConfiguration)++-- | The date on which this distribution configuration was created.+distributionConfiguration_dateCreated :: Lens.Lens' DistributionConfiguration (Prelude.Maybe Prelude.Text)+distributionConfiguration_dateCreated = Lens.lens (\DistributionConfiguration' {dateCreated} -> dateCreated) (\s@DistributionConfiguration' {} a -> s {dateCreated = a} :: DistributionConfiguration)++-- | The date on which this distribution configuration was last updated.+distributionConfiguration_dateUpdated :: Lens.Lens' DistributionConfiguration (Prelude.Maybe Prelude.Text)+distributionConfiguration_dateUpdated = Lens.lens (\DistributionConfiguration' {dateUpdated} -> dateUpdated) (\s@DistributionConfiguration' {} a -> s {dateUpdated = a} :: DistributionConfiguration)++-- | The description of the distribution configuration.+distributionConfiguration_description :: Lens.Lens' DistributionConfiguration (Prelude.Maybe Prelude.Text)+distributionConfiguration_description = Lens.lens (\DistributionConfiguration' {description} -> description) (\s@DistributionConfiguration' {} a -> s {description = a} :: DistributionConfiguration)++-- | The distribution objects that apply Region-specific settings for the+-- deployment of the image to targeted Regions.+distributionConfiguration_distributions :: Lens.Lens' DistributionConfiguration (Prelude.Maybe [Distribution])+distributionConfiguration_distributions = Lens.lens (\DistributionConfiguration' {distributions} -> distributions) (\s@DistributionConfiguration' {} a -> s {distributions = a} :: DistributionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The name of the distribution configuration.+distributionConfiguration_name :: Lens.Lens' DistributionConfiguration (Prelude.Maybe Prelude.Text)+distributionConfiguration_name = Lens.lens (\DistributionConfiguration' {name} -> name) (\s@DistributionConfiguration' {} a -> s {name = a} :: DistributionConfiguration)++-- | The tags of the distribution configuration.+distributionConfiguration_tags :: Lens.Lens' DistributionConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+distributionConfiguration_tags = Lens.lens (\DistributionConfiguration' {tags} -> tags) (\s@DistributionConfiguration' {} a -> s {tags = a} :: DistributionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The maximum duration in minutes for this distribution configuration.+distributionConfiguration_timeoutMinutes :: Lens.Lens' DistributionConfiguration Prelude.Natural+distributionConfiguration_timeoutMinutes = Lens.lens (\DistributionConfiguration' {timeoutMinutes} -> timeoutMinutes) (\s@DistributionConfiguration' {} a -> s {timeoutMinutes = a} :: DistributionConfiguration)++instance Data.FromJSON DistributionConfiguration where+  parseJSON =+    Data.withObject+      "DistributionConfiguration"+      ( \x ->+          DistributionConfiguration'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "dateUpdated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "distributions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "timeoutMinutes")+      )++instance Prelude.Hashable DistributionConfiguration where+  hashWithSalt _salt DistributionConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` dateUpdated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` distributions+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` timeoutMinutes++instance Prelude.NFData DistributionConfiguration where+  rnf DistributionConfiguration' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf dateUpdated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf distributions+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf timeoutMinutes
+ gen/Amazonka/ImageBuilder/Types/DistributionConfigurationSummary.hs view
@@ -0,0 +1,156 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.DistributionConfigurationSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.DistributionConfigurationSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A high-level overview of a distribution configuration.+--+-- /See:/ 'newDistributionConfigurationSummary' smart constructor.+data DistributionConfigurationSummary = DistributionConfigurationSummary'+  { -- | The Amazon Resource Name (ARN) of the distribution configuration.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The date on which the distribution configuration was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The date on which the distribution configuration was updated.+    dateUpdated :: Prelude.Maybe Prelude.Text,+    -- | The description of the distribution configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of the distribution configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | A list of Regions where the container image is distributed to.+    regions :: Prelude.Maybe [Prelude.Text],+    -- | The tags associated with the distribution configuration.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DistributionConfigurationSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'distributionConfigurationSummary_arn' - The Amazon Resource Name (ARN) of the distribution configuration.+--+-- 'dateCreated', 'distributionConfigurationSummary_dateCreated' - The date on which the distribution configuration was created.+--+-- 'dateUpdated', 'distributionConfigurationSummary_dateUpdated' - The date on which the distribution configuration was updated.+--+-- 'description', 'distributionConfigurationSummary_description' - The description of the distribution configuration.+--+-- 'name', 'distributionConfigurationSummary_name' - The name of the distribution configuration.+--+-- 'regions', 'distributionConfigurationSummary_regions' - A list of Regions where the container image is distributed to.+--+-- 'tags', 'distributionConfigurationSummary_tags' - The tags associated with the distribution configuration.+newDistributionConfigurationSummary ::+  DistributionConfigurationSummary+newDistributionConfigurationSummary =+  DistributionConfigurationSummary'+    { arn =+        Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      dateUpdated = Prelude.Nothing,+      description = Prelude.Nothing,+      name = Prelude.Nothing,+      regions = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the distribution configuration.+distributionConfigurationSummary_arn :: Lens.Lens' DistributionConfigurationSummary (Prelude.Maybe Prelude.Text)+distributionConfigurationSummary_arn = Lens.lens (\DistributionConfigurationSummary' {arn} -> arn) (\s@DistributionConfigurationSummary' {} a -> s {arn = a} :: DistributionConfigurationSummary)++-- | The date on which the distribution configuration was created.+distributionConfigurationSummary_dateCreated :: Lens.Lens' DistributionConfigurationSummary (Prelude.Maybe Prelude.Text)+distributionConfigurationSummary_dateCreated = Lens.lens (\DistributionConfigurationSummary' {dateCreated} -> dateCreated) (\s@DistributionConfigurationSummary' {} a -> s {dateCreated = a} :: DistributionConfigurationSummary)++-- | The date on which the distribution configuration was updated.+distributionConfigurationSummary_dateUpdated :: Lens.Lens' DistributionConfigurationSummary (Prelude.Maybe Prelude.Text)+distributionConfigurationSummary_dateUpdated = Lens.lens (\DistributionConfigurationSummary' {dateUpdated} -> dateUpdated) (\s@DistributionConfigurationSummary' {} a -> s {dateUpdated = a} :: DistributionConfigurationSummary)++-- | The description of the distribution configuration.+distributionConfigurationSummary_description :: Lens.Lens' DistributionConfigurationSummary (Prelude.Maybe Prelude.Text)+distributionConfigurationSummary_description = Lens.lens (\DistributionConfigurationSummary' {description} -> description) (\s@DistributionConfigurationSummary' {} a -> s {description = a} :: DistributionConfigurationSummary)++-- | The name of the distribution configuration.+distributionConfigurationSummary_name :: Lens.Lens' DistributionConfigurationSummary (Prelude.Maybe Prelude.Text)+distributionConfigurationSummary_name = Lens.lens (\DistributionConfigurationSummary' {name} -> name) (\s@DistributionConfigurationSummary' {} a -> s {name = a} :: DistributionConfigurationSummary)++-- | A list of Regions where the container image is distributed to.+distributionConfigurationSummary_regions :: Lens.Lens' DistributionConfigurationSummary (Prelude.Maybe [Prelude.Text])+distributionConfigurationSummary_regions = Lens.lens (\DistributionConfigurationSummary' {regions} -> regions) (\s@DistributionConfigurationSummary' {} a -> s {regions = a} :: DistributionConfigurationSummary) Prelude.. Lens.mapping Lens.coerced++-- | The tags associated with the distribution configuration.+distributionConfigurationSummary_tags :: Lens.Lens' DistributionConfigurationSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+distributionConfigurationSummary_tags = Lens.lens (\DistributionConfigurationSummary' {tags} -> tags) (\s@DistributionConfigurationSummary' {} a -> s {tags = a} :: DistributionConfigurationSummary) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    DistributionConfigurationSummary+  where+  parseJSON =+    Data.withObject+      "DistributionConfigurationSummary"+      ( \x ->+          DistributionConfigurationSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "dateUpdated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "regions" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    DistributionConfigurationSummary+  where+  hashWithSalt+    _salt+    DistributionConfigurationSummary' {..} =+      _salt+        `Prelude.hashWithSalt` arn+        `Prelude.hashWithSalt` dateCreated+        `Prelude.hashWithSalt` dateUpdated+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` regions+        `Prelude.hashWithSalt` tags++instance+  Prelude.NFData+    DistributionConfigurationSummary+  where+  rnf DistributionConfigurationSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf dateUpdated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf regions+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/ImageBuilder/Types/EbsInstanceBlockDeviceSpecification.hs view
@@ -0,0 +1,191 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.EbsInstanceBlockDeviceSpecification+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.EbsInstanceBlockDeviceSpecification where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.EbsVolumeType+import qualified Amazonka.Prelude as Prelude++-- | Amazon EBS-specific block device mapping specifications.+--+-- /See:/ 'newEbsInstanceBlockDeviceSpecification' smart constructor.+data EbsInstanceBlockDeviceSpecification = EbsInstanceBlockDeviceSpecification'+  { -- | Use to configure delete on termination of the associated device.+    deleteOnTermination :: Prelude.Maybe Prelude.Bool,+    -- | Use to configure device encryption.+    encrypted :: Prelude.Maybe Prelude.Bool,+    -- | Use to configure device IOPS.+    iops :: Prelude.Maybe Prelude.Natural,+    -- | Use to configure the KMS key to use when encrypting the device.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The snapshot that defines the device contents.+    snapshotId :: Prelude.Maybe Prelude.Text,+    -- | __For GP3 volumes only__ – The throughput in MiB\/s that the volume+    -- supports.+    throughput :: Prelude.Maybe Prelude.Natural,+    -- | Use to override the device\'s volume size.+    volumeSize :: Prelude.Maybe Prelude.Natural,+    -- | Use to override the device\'s volume type.+    volumeType :: Prelude.Maybe EbsVolumeType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EbsInstanceBlockDeviceSpecification' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deleteOnTermination', 'ebsInstanceBlockDeviceSpecification_deleteOnTermination' - Use to configure delete on termination of the associated device.+--+-- 'encrypted', 'ebsInstanceBlockDeviceSpecification_encrypted' - Use to configure device encryption.+--+-- 'iops', 'ebsInstanceBlockDeviceSpecification_iops' - Use to configure device IOPS.+--+-- 'kmsKeyId', 'ebsInstanceBlockDeviceSpecification_kmsKeyId' - Use to configure the KMS key to use when encrypting the device.+--+-- 'snapshotId', 'ebsInstanceBlockDeviceSpecification_snapshotId' - The snapshot that defines the device contents.+--+-- 'throughput', 'ebsInstanceBlockDeviceSpecification_throughput' - __For GP3 volumes only__ – The throughput in MiB\/s that the volume+-- supports.+--+-- 'volumeSize', 'ebsInstanceBlockDeviceSpecification_volumeSize' - Use to override the device\'s volume size.+--+-- 'volumeType', 'ebsInstanceBlockDeviceSpecification_volumeType' - Use to override the device\'s volume type.+newEbsInstanceBlockDeviceSpecification ::+  EbsInstanceBlockDeviceSpecification+newEbsInstanceBlockDeviceSpecification =+  EbsInstanceBlockDeviceSpecification'+    { deleteOnTermination =+        Prelude.Nothing,+      encrypted = Prelude.Nothing,+      iops = Prelude.Nothing,+      kmsKeyId = Prelude.Nothing,+      snapshotId = Prelude.Nothing,+      throughput = Prelude.Nothing,+      volumeSize = Prelude.Nothing,+      volumeType = Prelude.Nothing+    }++-- | Use to configure delete on termination of the associated device.+ebsInstanceBlockDeviceSpecification_deleteOnTermination :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe Prelude.Bool)+ebsInstanceBlockDeviceSpecification_deleteOnTermination = Lens.lens (\EbsInstanceBlockDeviceSpecification' {deleteOnTermination} -> deleteOnTermination) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {deleteOnTermination = a} :: EbsInstanceBlockDeviceSpecification)++-- | Use to configure device encryption.+ebsInstanceBlockDeviceSpecification_encrypted :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe Prelude.Bool)+ebsInstanceBlockDeviceSpecification_encrypted = Lens.lens (\EbsInstanceBlockDeviceSpecification' {encrypted} -> encrypted) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {encrypted = a} :: EbsInstanceBlockDeviceSpecification)++-- | Use to configure device IOPS.+ebsInstanceBlockDeviceSpecification_iops :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe Prelude.Natural)+ebsInstanceBlockDeviceSpecification_iops = Lens.lens (\EbsInstanceBlockDeviceSpecification' {iops} -> iops) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {iops = a} :: EbsInstanceBlockDeviceSpecification)++-- | Use to configure the KMS key to use when encrypting the device.+ebsInstanceBlockDeviceSpecification_kmsKeyId :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe Prelude.Text)+ebsInstanceBlockDeviceSpecification_kmsKeyId = Lens.lens (\EbsInstanceBlockDeviceSpecification' {kmsKeyId} -> kmsKeyId) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {kmsKeyId = a} :: EbsInstanceBlockDeviceSpecification)++-- | The snapshot that defines the device contents.+ebsInstanceBlockDeviceSpecification_snapshotId :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe Prelude.Text)+ebsInstanceBlockDeviceSpecification_snapshotId = Lens.lens (\EbsInstanceBlockDeviceSpecification' {snapshotId} -> snapshotId) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {snapshotId = a} :: EbsInstanceBlockDeviceSpecification)++-- | __For GP3 volumes only__ – The throughput in MiB\/s that the volume+-- supports.+ebsInstanceBlockDeviceSpecification_throughput :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe Prelude.Natural)+ebsInstanceBlockDeviceSpecification_throughput = Lens.lens (\EbsInstanceBlockDeviceSpecification' {throughput} -> throughput) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {throughput = a} :: EbsInstanceBlockDeviceSpecification)++-- | Use to override the device\'s volume size.+ebsInstanceBlockDeviceSpecification_volumeSize :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe Prelude.Natural)+ebsInstanceBlockDeviceSpecification_volumeSize = Lens.lens (\EbsInstanceBlockDeviceSpecification' {volumeSize} -> volumeSize) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {volumeSize = a} :: EbsInstanceBlockDeviceSpecification)++-- | Use to override the device\'s volume type.+ebsInstanceBlockDeviceSpecification_volumeType :: Lens.Lens' EbsInstanceBlockDeviceSpecification (Prelude.Maybe EbsVolumeType)+ebsInstanceBlockDeviceSpecification_volumeType = Lens.lens (\EbsInstanceBlockDeviceSpecification' {volumeType} -> volumeType) (\s@EbsInstanceBlockDeviceSpecification' {} a -> s {volumeType = a} :: EbsInstanceBlockDeviceSpecification)++instance+  Data.FromJSON+    EbsInstanceBlockDeviceSpecification+  where+  parseJSON =+    Data.withObject+      "EbsInstanceBlockDeviceSpecification"+      ( \x ->+          EbsInstanceBlockDeviceSpecification'+            Prelude.<$> (x Data..:? "deleteOnTermination")+            Prelude.<*> (x Data..:? "encrypted")+            Prelude.<*> (x Data..:? "iops")+            Prelude.<*> (x Data..:? "kmsKeyId")+            Prelude.<*> (x Data..:? "snapshotId")+            Prelude.<*> (x Data..:? "throughput")+            Prelude.<*> (x Data..:? "volumeSize")+            Prelude.<*> (x Data..:? "volumeType")+      )++instance+  Prelude.Hashable+    EbsInstanceBlockDeviceSpecification+  where+  hashWithSalt+    _salt+    EbsInstanceBlockDeviceSpecification' {..} =+      _salt+        `Prelude.hashWithSalt` deleteOnTermination+        `Prelude.hashWithSalt` encrypted+        `Prelude.hashWithSalt` iops+        `Prelude.hashWithSalt` kmsKeyId+        `Prelude.hashWithSalt` snapshotId+        `Prelude.hashWithSalt` throughput+        `Prelude.hashWithSalt` volumeSize+        `Prelude.hashWithSalt` volumeType++instance+  Prelude.NFData+    EbsInstanceBlockDeviceSpecification+  where+  rnf EbsInstanceBlockDeviceSpecification' {..} =+    Prelude.rnf deleteOnTermination+      `Prelude.seq` Prelude.rnf encrypted+      `Prelude.seq` Prelude.rnf iops+      `Prelude.seq` Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf snapshotId+      `Prelude.seq` Prelude.rnf throughput+      `Prelude.seq` Prelude.rnf volumeSize+      `Prelude.seq` Prelude.rnf volumeType++instance+  Data.ToJSON+    EbsInstanceBlockDeviceSpecification+  where+  toJSON EbsInstanceBlockDeviceSpecification' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("deleteOnTermination" Data..=)+              Prelude.<$> deleteOnTermination,+            ("encrypted" Data..=) Prelude.<$> encrypted,+            ("iops" Data..=) Prelude.<$> iops,+            ("kmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            ("snapshotId" Data..=) Prelude.<$> snapshotId,+            ("throughput" Data..=) Prelude.<$> throughput,+            ("volumeSize" Data..=) Prelude.<$> volumeSize,+            ("volumeType" Data..=) Prelude.<$> volumeType+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/EbsVolumeType.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.EbsVolumeType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.EbsVolumeType+  ( EbsVolumeType+      ( ..,+        EbsVolumeType_Gp2,+        EbsVolumeType_Gp3,+        EbsVolumeType_Io1,+        EbsVolumeType_Io2,+        EbsVolumeType_Sc1,+        EbsVolumeType_St1,+        EbsVolumeType_Standard+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EbsVolumeType = EbsVolumeType'+  { fromEbsVolumeType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern EbsVolumeType_Gp2 :: EbsVolumeType+pattern EbsVolumeType_Gp2 = EbsVolumeType' "gp2"++pattern EbsVolumeType_Gp3 :: EbsVolumeType+pattern EbsVolumeType_Gp3 = EbsVolumeType' "gp3"++pattern EbsVolumeType_Io1 :: EbsVolumeType+pattern EbsVolumeType_Io1 = EbsVolumeType' "io1"++pattern EbsVolumeType_Io2 :: EbsVolumeType+pattern EbsVolumeType_Io2 = EbsVolumeType' "io2"++pattern EbsVolumeType_Sc1 :: EbsVolumeType+pattern EbsVolumeType_Sc1 = EbsVolumeType' "sc1"++pattern EbsVolumeType_St1 :: EbsVolumeType+pattern EbsVolumeType_St1 = EbsVolumeType' "st1"++pattern EbsVolumeType_Standard :: EbsVolumeType+pattern EbsVolumeType_Standard = EbsVolumeType' "standard"++{-# COMPLETE+  EbsVolumeType_Gp2,+  EbsVolumeType_Gp3,+  EbsVolumeType_Io1,+  EbsVolumeType_Io2,+  EbsVolumeType_Sc1,+  EbsVolumeType_St1,+  EbsVolumeType_Standard,+  EbsVolumeType'+  #-}
+ gen/Amazonka/ImageBuilder/Types/FastLaunchConfiguration.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.FastLaunchConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.FastLaunchConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.FastLaunchLaunchTemplateSpecification+import Amazonka.ImageBuilder.Types.FastLaunchSnapshotConfiguration+import qualified Amazonka.Prelude as Prelude++-- | Define and configure faster launching for output Windows AMIs.+--+-- /See:/ 'newFastLaunchConfiguration' smart constructor.+data FastLaunchConfiguration = FastLaunchConfiguration'+  { -- | The owner account ID for the fast-launch enabled Windows AMI.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | The launch template that the fast-launch enabled Windows AMI uses when+    -- it launches Windows instances to create pre-provisioned snapshots.+    launchTemplate :: Prelude.Maybe FastLaunchLaunchTemplateSpecification,+    -- | The maximum number of parallel instances that are launched for creating+    -- resources.+    maxParallelLaunches :: Prelude.Maybe Prelude.Natural,+    -- | Configuration settings for managing the number of snapshots that are+    -- created from pre-provisioned instances for the Windows AMI when faster+    -- launching is enabled.+    snapshotConfiguration :: Prelude.Maybe FastLaunchSnapshotConfiguration,+    -- | A Boolean that represents the current state of faster launching for the+    -- Windows AMI. Set to @true@ to start using Windows faster launching, or+    -- @false@ to stop using it.+    enabled :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FastLaunchConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'fastLaunchConfiguration_accountId' - The owner account ID for the fast-launch enabled Windows AMI.+--+-- 'launchTemplate', 'fastLaunchConfiguration_launchTemplate' - The launch template that the fast-launch enabled Windows AMI uses when+-- it launches Windows instances to create pre-provisioned snapshots.+--+-- 'maxParallelLaunches', 'fastLaunchConfiguration_maxParallelLaunches' - The maximum number of parallel instances that are launched for creating+-- resources.+--+-- 'snapshotConfiguration', 'fastLaunchConfiguration_snapshotConfiguration' - Configuration settings for managing the number of snapshots that are+-- created from pre-provisioned instances for the Windows AMI when faster+-- launching is enabled.+--+-- 'enabled', 'fastLaunchConfiguration_enabled' - A Boolean that represents the current state of faster launching for the+-- Windows AMI. Set to @true@ to start using Windows faster launching, or+-- @false@ to stop using it.+newFastLaunchConfiguration ::+  -- | 'enabled'+  Prelude.Bool ->+  FastLaunchConfiguration+newFastLaunchConfiguration pEnabled_ =+  FastLaunchConfiguration'+    { accountId =+        Prelude.Nothing,+      launchTemplate = Prelude.Nothing,+      maxParallelLaunches = Prelude.Nothing,+      snapshotConfiguration = Prelude.Nothing,+      enabled = pEnabled_+    }++-- | The owner account ID for the fast-launch enabled Windows AMI.+fastLaunchConfiguration_accountId :: Lens.Lens' FastLaunchConfiguration (Prelude.Maybe Prelude.Text)+fastLaunchConfiguration_accountId = Lens.lens (\FastLaunchConfiguration' {accountId} -> accountId) (\s@FastLaunchConfiguration' {} a -> s {accountId = a} :: FastLaunchConfiguration)++-- | The launch template that the fast-launch enabled Windows AMI uses when+-- it launches Windows instances to create pre-provisioned snapshots.+fastLaunchConfiguration_launchTemplate :: Lens.Lens' FastLaunchConfiguration (Prelude.Maybe FastLaunchLaunchTemplateSpecification)+fastLaunchConfiguration_launchTemplate = Lens.lens (\FastLaunchConfiguration' {launchTemplate} -> launchTemplate) (\s@FastLaunchConfiguration' {} a -> s {launchTemplate = a} :: FastLaunchConfiguration)++-- | The maximum number of parallel instances that are launched for creating+-- resources.+fastLaunchConfiguration_maxParallelLaunches :: Lens.Lens' FastLaunchConfiguration (Prelude.Maybe Prelude.Natural)+fastLaunchConfiguration_maxParallelLaunches = Lens.lens (\FastLaunchConfiguration' {maxParallelLaunches} -> maxParallelLaunches) (\s@FastLaunchConfiguration' {} a -> s {maxParallelLaunches = a} :: FastLaunchConfiguration)++-- | Configuration settings for managing the number of snapshots that are+-- created from pre-provisioned instances for the Windows AMI when faster+-- launching is enabled.+fastLaunchConfiguration_snapshotConfiguration :: Lens.Lens' FastLaunchConfiguration (Prelude.Maybe FastLaunchSnapshotConfiguration)+fastLaunchConfiguration_snapshotConfiguration = Lens.lens (\FastLaunchConfiguration' {snapshotConfiguration} -> snapshotConfiguration) (\s@FastLaunchConfiguration' {} a -> s {snapshotConfiguration = a} :: FastLaunchConfiguration)++-- | A Boolean that represents the current state of faster launching for the+-- Windows AMI. Set to @true@ to start using Windows faster launching, or+-- @false@ to stop using it.+fastLaunchConfiguration_enabled :: Lens.Lens' FastLaunchConfiguration Prelude.Bool+fastLaunchConfiguration_enabled = Lens.lens (\FastLaunchConfiguration' {enabled} -> enabled) (\s@FastLaunchConfiguration' {} a -> s {enabled = a} :: FastLaunchConfiguration)++instance Data.FromJSON FastLaunchConfiguration where+  parseJSON =+    Data.withObject+      "FastLaunchConfiguration"+      ( \x ->+          FastLaunchConfiguration'+            Prelude.<$> (x Data..:? "accountId")+            Prelude.<*> (x Data..:? "launchTemplate")+            Prelude.<*> (x Data..:? "maxParallelLaunches")+            Prelude.<*> (x Data..:? "snapshotConfiguration")+            Prelude.<*> (x Data..: "enabled")+      )++instance Prelude.Hashable FastLaunchConfiguration where+  hashWithSalt _salt FastLaunchConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` launchTemplate+      `Prelude.hashWithSalt` maxParallelLaunches+      `Prelude.hashWithSalt` snapshotConfiguration+      `Prelude.hashWithSalt` enabled++instance Prelude.NFData FastLaunchConfiguration where+  rnf FastLaunchConfiguration' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf launchTemplate+      `Prelude.seq` Prelude.rnf maxParallelLaunches+      `Prelude.seq` Prelude.rnf snapshotConfiguration+      `Prelude.seq` Prelude.rnf enabled++instance Data.ToJSON FastLaunchConfiguration where+  toJSON FastLaunchConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("accountId" Data..=) Prelude.<$> accountId,+            ("launchTemplate" Data..=)+              Prelude.<$> launchTemplate,+            ("maxParallelLaunches" Data..=)+              Prelude.<$> maxParallelLaunches,+            ("snapshotConfiguration" Data..=)+              Prelude.<$> snapshotConfiguration,+            Prelude.Just ("enabled" Data..= enabled)+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/FastLaunchLaunchTemplateSpecification.hs view
@@ -0,0 +1,138 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.FastLaunchLaunchTemplateSpecification+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.FastLaunchLaunchTemplateSpecification where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Identifies the launch template that the associated Windows AMI uses for+-- launching an instance when faster launching is enabled.+--+-- You can specify either the @launchTemplateName@ or the+-- @launchTemplateId@, but not both.+--+-- /See:/ 'newFastLaunchLaunchTemplateSpecification' smart constructor.+data FastLaunchLaunchTemplateSpecification = FastLaunchLaunchTemplateSpecification'+  { -- | The ID of the launch template to use for faster launching for a Windows+    -- AMI.+    launchTemplateId :: Prelude.Maybe Prelude.Text,+    -- | The name of the launch template to use for faster launching for a+    -- Windows AMI.+    launchTemplateName :: Prelude.Maybe Prelude.Text,+    -- | The version of the launch template to use for faster launching for a+    -- Windows AMI.+    launchTemplateVersion :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FastLaunchLaunchTemplateSpecification' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'launchTemplateId', 'fastLaunchLaunchTemplateSpecification_launchTemplateId' - The ID of the launch template to use for faster launching for a Windows+-- AMI.+--+-- 'launchTemplateName', 'fastLaunchLaunchTemplateSpecification_launchTemplateName' - The name of the launch template to use for faster launching for a+-- Windows AMI.+--+-- 'launchTemplateVersion', 'fastLaunchLaunchTemplateSpecification_launchTemplateVersion' - The version of the launch template to use for faster launching for a+-- Windows AMI.+newFastLaunchLaunchTemplateSpecification ::+  FastLaunchLaunchTemplateSpecification+newFastLaunchLaunchTemplateSpecification =+  FastLaunchLaunchTemplateSpecification'+    { launchTemplateId =+        Prelude.Nothing,+      launchTemplateName = Prelude.Nothing,+      launchTemplateVersion =+        Prelude.Nothing+    }++-- | The ID of the launch template to use for faster launching for a Windows+-- AMI.+fastLaunchLaunchTemplateSpecification_launchTemplateId :: Lens.Lens' FastLaunchLaunchTemplateSpecification (Prelude.Maybe Prelude.Text)+fastLaunchLaunchTemplateSpecification_launchTemplateId = Lens.lens (\FastLaunchLaunchTemplateSpecification' {launchTemplateId} -> launchTemplateId) (\s@FastLaunchLaunchTemplateSpecification' {} a -> s {launchTemplateId = a} :: FastLaunchLaunchTemplateSpecification)++-- | The name of the launch template to use for faster launching for a+-- Windows AMI.+fastLaunchLaunchTemplateSpecification_launchTemplateName :: Lens.Lens' FastLaunchLaunchTemplateSpecification (Prelude.Maybe Prelude.Text)+fastLaunchLaunchTemplateSpecification_launchTemplateName = Lens.lens (\FastLaunchLaunchTemplateSpecification' {launchTemplateName} -> launchTemplateName) (\s@FastLaunchLaunchTemplateSpecification' {} a -> s {launchTemplateName = a} :: FastLaunchLaunchTemplateSpecification)++-- | The version of the launch template to use for faster launching for a+-- Windows AMI.+fastLaunchLaunchTemplateSpecification_launchTemplateVersion :: Lens.Lens' FastLaunchLaunchTemplateSpecification (Prelude.Maybe Prelude.Text)+fastLaunchLaunchTemplateSpecification_launchTemplateVersion = Lens.lens (\FastLaunchLaunchTemplateSpecification' {launchTemplateVersion} -> launchTemplateVersion) (\s@FastLaunchLaunchTemplateSpecification' {} a -> s {launchTemplateVersion = a} :: FastLaunchLaunchTemplateSpecification)++instance+  Data.FromJSON+    FastLaunchLaunchTemplateSpecification+  where+  parseJSON =+    Data.withObject+      "FastLaunchLaunchTemplateSpecification"+      ( \x ->+          FastLaunchLaunchTemplateSpecification'+            Prelude.<$> (x Data..:? "launchTemplateId")+            Prelude.<*> (x Data..:? "launchTemplateName")+            Prelude.<*> (x Data..:? "launchTemplateVersion")+      )++instance+  Prelude.Hashable+    FastLaunchLaunchTemplateSpecification+  where+  hashWithSalt+    _salt+    FastLaunchLaunchTemplateSpecification' {..} =+      _salt+        `Prelude.hashWithSalt` launchTemplateId+        `Prelude.hashWithSalt` launchTemplateName+        `Prelude.hashWithSalt` launchTemplateVersion++instance+  Prelude.NFData+    FastLaunchLaunchTemplateSpecification+  where+  rnf FastLaunchLaunchTemplateSpecification' {..} =+    Prelude.rnf launchTemplateId+      `Prelude.seq` Prelude.rnf launchTemplateName+      `Prelude.seq` Prelude.rnf launchTemplateVersion++instance+  Data.ToJSON+    FastLaunchLaunchTemplateSpecification+  where+  toJSON FastLaunchLaunchTemplateSpecification' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("launchTemplateId" Data..=)+              Prelude.<$> launchTemplateId,+            ("launchTemplateName" Data..=)+              Prelude.<$> launchTemplateName,+            ("launchTemplateVersion" Data..=)+              Prelude.<$> launchTemplateVersion+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/FastLaunchSnapshotConfiguration.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.FastLaunchSnapshotConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.FastLaunchSnapshotConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Configuration settings for creating and managing pre-provisioned+-- snapshots for a fast-launch enabled Windows AMI.+--+-- /See:/ 'newFastLaunchSnapshotConfiguration' smart constructor.+data FastLaunchSnapshotConfiguration = FastLaunchSnapshotConfiguration'+  { -- | The number of pre-provisioned snapshots to keep on hand for a+    -- fast-launch enabled Windows AMI.+    targetResourceCount :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FastLaunchSnapshotConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'targetResourceCount', 'fastLaunchSnapshotConfiguration_targetResourceCount' - The number of pre-provisioned snapshots to keep on hand for a+-- fast-launch enabled Windows AMI.+newFastLaunchSnapshotConfiguration ::+  FastLaunchSnapshotConfiguration+newFastLaunchSnapshotConfiguration =+  FastLaunchSnapshotConfiguration'+    { targetResourceCount =+        Prelude.Nothing+    }++-- | The number of pre-provisioned snapshots to keep on hand for a+-- fast-launch enabled Windows AMI.+fastLaunchSnapshotConfiguration_targetResourceCount :: Lens.Lens' FastLaunchSnapshotConfiguration (Prelude.Maybe Prelude.Natural)+fastLaunchSnapshotConfiguration_targetResourceCount = Lens.lens (\FastLaunchSnapshotConfiguration' {targetResourceCount} -> targetResourceCount) (\s@FastLaunchSnapshotConfiguration' {} a -> s {targetResourceCount = a} :: FastLaunchSnapshotConfiguration)++instance+  Data.FromJSON+    FastLaunchSnapshotConfiguration+  where+  parseJSON =+    Data.withObject+      "FastLaunchSnapshotConfiguration"+      ( \x ->+          FastLaunchSnapshotConfiguration'+            Prelude.<$> (x Data..:? "targetResourceCount")+      )++instance+  Prelude.Hashable+    FastLaunchSnapshotConfiguration+  where+  hashWithSalt+    _salt+    FastLaunchSnapshotConfiguration' {..} =+      _salt `Prelude.hashWithSalt` targetResourceCount++instance+  Prelude.NFData+    FastLaunchSnapshotConfiguration+  where+  rnf FastLaunchSnapshotConfiguration' {..} =+    Prelude.rnf targetResourceCount++instance Data.ToJSON FastLaunchSnapshotConfiguration where+  toJSON FastLaunchSnapshotConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("targetResourceCount" Data..=)+              Prelude.<$> targetResourceCount+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/Filter.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Filter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Filter where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A filter name and value pair that is used to return a more specific list+-- of results from a list operation. Filters can be used to match a set of+-- resources by specific criteria, such as tags, attributes, or IDs.+--+-- /See:/ 'newFilter' smart constructor.+data Filter = Filter'+  { -- | The name of the filter. Filter names are case-sensitive.+    name :: Prelude.Maybe Prelude.Text,+    -- | The filter values. Filter values are case-sensitive.+    values :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Filter' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'filter_name' - The name of the filter. Filter names are case-sensitive.+--+-- 'values', 'filter_values' - The filter values. Filter values are case-sensitive.+newFilter ::+  Filter+newFilter =+  Filter'+    { name = Prelude.Nothing,+      values = Prelude.Nothing+    }++-- | The name of the filter. Filter names are case-sensitive.+filter_name :: Lens.Lens' Filter (Prelude.Maybe Prelude.Text)+filter_name = Lens.lens (\Filter' {name} -> name) (\s@Filter' {} a -> s {name = a} :: Filter)++-- | The filter values. Filter values are case-sensitive.+filter_values :: Lens.Lens' Filter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+filter_values = Lens.lens (\Filter' {values} -> values) (\s@Filter' {} a -> s {values = a} :: Filter) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable Filter where+  hashWithSalt _salt Filter' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` values++instance Prelude.NFData Filter where+  rnf Filter' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf values++instance Data.ToJSON Filter where+  toJSON Filter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("name" Data..=) Prelude.<$> name,+            ("values" Data..=) Prelude.<$> values+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/Image.hs view
@@ -0,0 +1,442 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Image+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Image where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.BuildType+import Amazonka.ImageBuilder.Types.ContainerRecipe+import Amazonka.ImageBuilder.Types.DistributionConfiguration+import Amazonka.ImageBuilder.Types.ImageRecipe+import Amazonka.ImageBuilder.Types.ImageState+import Amazonka.ImageBuilder.Types.ImageTestsConfiguration+import Amazonka.ImageBuilder.Types.ImageType+import Amazonka.ImageBuilder.Types.InfrastructureConfiguration+import Amazonka.ImageBuilder.Types.OutputResources+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | An Image Builder image. You must specify exactly one recipe for the+-- image – either a container recipe (@containerRecipe@), which creates a+-- container image, or an image recipe (@imageRecipe@), which creates an+-- AMI.+--+-- /See:/ 'newImage' smart constructor.+data Image = Image'+  { -- | The Amazon Resource Name (ARN) of the image.+    --+    -- Semantic versioning is included in each object\'s Amazon Resource Name+    -- (ARN), at the level that applies to that object as follows:+    --+    -- 1.  Versionless ARNs and Name ARNs do not include specific values in any+    --     of the nodes. The nodes are either left off entirely, or they are+    --     specified as wildcards, for example: x.x.x.+    --+    -- 2.  Version ARNs have only the first three nodes:+    --     \<major>.\<minor>.\<patch>+    --+    -- 3.  Build version ARNs have all four nodes, and point to a specific+    --     build for a specific version of an object.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Indicates the type of build that created this image. The build can be+    -- initiated in the following ways:+    --+    -- -   __USER_INITIATED__ – A manual pipeline build request.+    --+    -- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+    --     the Image Builder pipeline, or from EventBridge.+    --+    -- -   __IMPORT__ – A VM import created the image to use as the base image+    --     for the recipe.+    buildType :: Prelude.Maybe BuildType,+    -- | The recipe that is used to create an Image Builder container image.+    containerRecipe :: Prelude.Maybe ContainerRecipe,+    -- | The date on which this image was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The distribution configuration used when creating this image.+    distributionConfiguration :: Prelude.Maybe DistributionConfiguration,+    -- | Collects additional information about the image being created, including+    -- the operating system (OS) version and package list. This information is+    -- used to enhance the overall experience of using EC2 Image Builder.+    -- Enabled by default.+    enhancedImageMetadataEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The image recipe used when creating the image.+    imageRecipe :: Prelude.Maybe ImageRecipe,+    -- | The image tests configuration used when creating this image.+    imageTestsConfiguration :: Prelude.Maybe ImageTestsConfiguration,+    -- | The infrastructure used when creating this image.+    infrastructureConfiguration :: Prelude.Maybe InfrastructureConfiguration,+    -- | The name of the image.+    name :: Prelude.Maybe Prelude.Text,+    -- | The operating system version of the instance. For example, Amazon Linux+    -- 2, Ubuntu 18, or Microsoft Windows Server 2019.+    osVersion :: Prelude.Maybe Prelude.Text,+    -- | The output resources produced when creating this image.+    outputResources :: Prelude.Maybe OutputResources,+    -- | The platform of the image.+    platform :: Prelude.Maybe Platform,+    -- | The Amazon Resource Name (ARN) of the image pipeline that created this+    -- image.+    sourcePipelineArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the image pipeline that created this image.+    sourcePipelineName :: Prelude.Maybe Prelude.Text,+    -- | The state of the image.+    state :: Prelude.Maybe ImageState,+    -- | The tags of the image.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Specifies whether this is an AMI or container image.+    type' :: Prelude.Maybe ImageType,+    -- | The semantic version of the image.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    --+    -- __Filtering:__ With semantic versioning, you have the flexibility to use+    -- wildcards (x) to specify the most recent versions or nodes when+    -- selecting the base image or components for your recipe. When you use a+    -- wildcard in any node, all nodes to the right of the first wildcard must+    -- also be wildcards.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Image' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'image_arn' - The Amazon Resource Name (ARN) of the image.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+--+-- 'buildType', 'image_buildType' - Indicates the type of build that created this image. The build can be+-- initiated in the following ways:+--+-- -   __USER_INITIATED__ – A manual pipeline build request.+--+-- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+--     the Image Builder pipeline, or from EventBridge.+--+-- -   __IMPORT__ – A VM import created the image to use as the base image+--     for the recipe.+--+-- 'containerRecipe', 'image_containerRecipe' - The recipe that is used to create an Image Builder container image.+--+-- 'dateCreated', 'image_dateCreated' - The date on which this image was created.+--+-- 'distributionConfiguration', 'image_distributionConfiguration' - The distribution configuration used when creating this image.+--+-- 'enhancedImageMetadataEnabled', 'image_enhancedImageMetadataEnabled' - Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+--+-- 'imageRecipe', 'image_imageRecipe' - The image recipe used when creating the image.+--+-- 'imageTestsConfiguration', 'image_imageTestsConfiguration' - The image tests configuration used when creating this image.+--+-- 'infrastructureConfiguration', 'image_infrastructureConfiguration' - The infrastructure used when creating this image.+--+-- 'name', 'image_name' - The name of the image.+--+-- 'osVersion', 'image_osVersion' - The operating system version of the instance. For example, Amazon Linux+-- 2, Ubuntu 18, or Microsoft Windows Server 2019.+--+-- 'outputResources', 'image_outputResources' - The output resources produced when creating this image.+--+-- 'platform', 'image_platform' - The platform of the image.+--+-- 'sourcePipelineArn', 'image_sourcePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline that created this+-- image.+--+-- 'sourcePipelineName', 'image_sourcePipelineName' - The name of the image pipeline that created this image.+--+-- 'state', 'image_state' - The state of the image.+--+-- 'tags', 'image_tags' - The tags of the image.+--+-- 'type'', 'image_type' - Specifies whether this is an AMI or container image.+--+-- 'version', 'image_version' - The semantic version of the image.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+newImage ::+  Image+newImage =+  Image'+    { arn = Prelude.Nothing,+      buildType = Prelude.Nothing,+      containerRecipe = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      distributionConfiguration = Prelude.Nothing,+      enhancedImageMetadataEnabled = Prelude.Nothing,+      imageRecipe = Prelude.Nothing,+      imageTestsConfiguration = Prelude.Nothing,+      infrastructureConfiguration = Prelude.Nothing,+      name = Prelude.Nothing,+      osVersion = Prelude.Nothing,+      outputResources = Prelude.Nothing,+      platform = Prelude.Nothing,+      sourcePipelineArn = Prelude.Nothing,+      sourcePipelineName = Prelude.Nothing,+      state = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the image.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+image_arn :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_arn = Lens.lens (\Image' {arn} -> arn) (\s@Image' {} a -> s {arn = a} :: Image)++-- | Indicates the type of build that created this image. The build can be+-- initiated in the following ways:+--+-- -   __USER_INITIATED__ – A manual pipeline build request.+--+-- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+--     the Image Builder pipeline, or from EventBridge.+--+-- -   __IMPORT__ – A VM import created the image to use as the base image+--     for the recipe.+image_buildType :: Lens.Lens' Image (Prelude.Maybe BuildType)+image_buildType = Lens.lens (\Image' {buildType} -> buildType) (\s@Image' {} a -> s {buildType = a} :: Image)++-- | The recipe that is used to create an Image Builder container image.+image_containerRecipe :: Lens.Lens' Image (Prelude.Maybe ContainerRecipe)+image_containerRecipe = Lens.lens (\Image' {containerRecipe} -> containerRecipe) (\s@Image' {} a -> s {containerRecipe = a} :: Image)++-- | The date on which this image was created.+image_dateCreated :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_dateCreated = Lens.lens (\Image' {dateCreated} -> dateCreated) (\s@Image' {} a -> s {dateCreated = a} :: Image)++-- | The distribution configuration used when creating this image.+image_distributionConfiguration :: Lens.Lens' Image (Prelude.Maybe DistributionConfiguration)+image_distributionConfiguration = Lens.lens (\Image' {distributionConfiguration} -> distributionConfiguration) (\s@Image' {} a -> s {distributionConfiguration = a} :: Image)++-- | Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+image_enhancedImageMetadataEnabled :: Lens.Lens' Image (Prelude.Maybe Prelude.Bool)+image_enhancedImageMetadataEnabled = Lens.lens (\Image' {enhancedImageMetadataEnabled} -> enhancedImageMetadataEnabled) (\s@Image' {} a -> s {enhancedImageMetadataEnabled = a} :: Image)++-- | The image recipe used when creating the image.+image_imageRecipe :: Lens.Lens' Image (Prelude.Maybe ImageRecipe)+image_imageRecipe = Lens.lens (\Image' {imageRecipe} -> imageRecipe) (\s@Image' {} a -> s {imageRecipe = a} :: Image)++-- | The image tests configuration used when creating this image.+image_imageTestsConfiguration :: Lens.Lens' Image (Prelude.Maybe ImageTestsConfiguration)+image_imageTestsConfiguration = Lens.lens (\Image' {imageTestsConfiguration} -> imageTestsConfiguration) (\s@Image' {} a -> s {imageTestsConfiguration = a} :: Image)++-- | The infrastructure used when creating this image.+image_infrastructureConfiguration :: Lens.Lens' Image (Prelude.Maybe InfrastructureConfiguration)+image_infrastructureConfiguration = Lens.lens (\Image' {infrastructureConfiguration} -> infrastructureConfiguration) (\s@Image' {} a -> s {infrastructureConfiguration = a} :: Image)++-- | The name of the image.+image_name :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_name = Lens.lens (\Image' {name} -> name) (\s@Image' {} a -> s {name = a} :: Image)++-- | The operating system version of the instance. For example, Amazon Linux+-- 2, Ubuntu 18, or Microsoft Windows Server 2019.+image_osVersion :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_osVersion = Lens.lens (\Image' {osVersion} -> osVersion) (\s@Image' {} a -> s {osVersion = a} :: Image)++-- | The output resources produced when creating this image.+image_outputResources :: Lens.Lens' Image (Prelude.Maybe OutputResources)+image_outputResources = Lens.lens (\Image' {outputResources} -> outputResources) (\s@Image' {} a -> s {outputResources = a} :: Image)++-- | The platform of the image.+image_platform :: Lens.Lens' Image (Prelude.Maybe Platform)+image_platform = Lens.lens (\Image' {platform} -> platform) (\s@Image' {} a -> s {platform = a} :: Image)++-- | The Amazon Resource Name (ARN) of the image pipeline that created this+-- image.+image_sourcePipelineArn :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_sourcePipelineArn = Lens.lens (\Image' {sourcePipelineArn} -> sourcePipelineArn) (\s@Image' {} a -> s {sourcePipelineArn = a} :: Image)++-- | The name of the image pipeline that created this image.+image_sourcePipelineName :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_sourcePipelineName = Lens.lens (\Image' {sourcePipelineName} -> sourcePipelineName) (\s@Image' {} a -> s {sourcePipelineName = a} :: Image)++-- | The state of the image.+image_state :: Lens.Lens' Image (Prelude.Maybe ImageState)+image_state = Lens.lens (\Image' {state} -> state) (\s@Image' {} a -> s {state = a} :: Image)++-- | The tags of the image.+image_tags :: Lens.Lens' Image (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+image_tags = Lens.lens (\Image' {tags} -> tags) (\s@Image' {} a -> s {tags = a} :: Image) Prelude.. Lens.mapping Lens.coerced++-- | Specifies whether this is an AMI or container image.+image_type :: Lens.Lens' Image (Prelude.Maybe ImageType)+image_type = Lens.lens (\Image' {type'} -> type') (\s@Image' {} a -> s {type' = a} :: Image)++-- | The semantic version of the image.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+image_version :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_version = Lens.lens (\Image' {version} -> version) (\s@Image' {} a -> s {version = a} :: Image)++instance Data.FromJSON Image where+  parseJSON =+    Data.withObject+      "Image"+      ( \x ->+          Image'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "buildType")+            Prelude.<*> (x Data..:? "containerRecipe")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "distributionConfiguration")+            Prelude.<*> (x Data..:? "enhancedImageMetadataEnabled")+            Prelude.<*> (x Data..:? "imageRecipe")+            Prelude.<*> (x Data..:? "imageTestsConfiguration")+            Prelude.<*> (x Data..:? "infrastructureConfiguration")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "osVersion")+            Prelude.<*> (x Data..:? "outputResources")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "sourcePipelineArn")+            Prelude.<*> (x Data..:? "sourcePipelineName")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable Image where+  hashWithSalt _salt Image' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` buildType+      `Prelude.hashWithSalt` containerRecipe+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` distributionConfiguration+      `Prelude.hashWithSalt` enhancedImageMetadataEnabled+      `Prelude.hashWithSalt` imageRecipe+      `Prelude.hashWithSalt` imageTestsConfiguration+      `Prelude.hashWithSalt` infrastructureConfiguration+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` osVersion+      `Prelude.hashWithSalt` outputResources+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` sourcePipelineArn+      `Prelude.hashWithSalt` sourcePipelineName+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` version++instance Prelude.NFData Image where+  rnf Image' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf buildType+      `Prelude.seq` Prelude.rnf containerRecipe+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf distributionConfiguration+      `Prelude.seq` Prelude.rnf enhancedImageMetadataEnabled+      `Prelude.seq` Prelude.rnf imageRecipe+      `Prelude.seq` Prelude.rnf imageTestsConfiguration+      `Prelude.seq` Prelude.rnf infrastructureConfiguration+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf osVersion+      `Prelude.seq` Prelude.rnf outputResources+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf sourcePipelineArn+      `Prelude.seq` Prelude.rnf sourcePipelineName+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/ImageBuilder/Types/ImagePackage.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImagePackage+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImagePackage where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Represents a package installed on an Image Builder image.+--+-- /See:/ 'newImagePackage' smart constructor.+data ImagePackage = ImagePackage'+  { -- | The name of the package as reported to the operating system package+    -- manager.+    packageName :: Prelude.Maybe Prelude.Text,+    -- | The version of the package as reported to the operating system package+    -- manager.+    packageVersion :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImagePackage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'packageName', 'imagePackage_packageName' - The name of the package as reported to the operating system package+-- manager.+--+-- 'packageVersion', 'imagePackage_packageVersion' - The version of the package as reported to the operating system package+-- manager.+newImagePackage ::+  ImagePackage+newImagePackage =+  ImagePackage'+    { packageName = Prelude.Nothing,+      packageVersion = Prelude.Nothing+    }++-- | The name of the package as reported to the operating system package+-- manager.+imagePackage_packageName :: Lens.Lens' ImagePackage (Prelude.Maybe Prelude.Text)+imagePackage_packageName = Lens.lens (\ImagePackage' {packageName} -> packageName) (\s@ImagePackage' {} a -> s {packageName = a} :: ImagePackage)++-- | The version of the package as reported to the operating system package+-- manager.+imagePackage_packageVersion :: Lens.Lens' ImagePackage (Prelude.Maybe Prelude.Text)+imagePackage_packageVersion = Lens.lens (\ImagePackage' {packageVersion} -> packageVersion) (\s@ImagePackage' {} a -> s {packageVersion = a} :: ImagePackage)++instance Data.FromJSON ImagePackage where+  parseJSON =+    Data.withObject+      "ImagePackage"+      ( \x ->+          ImagePackage'+            Prelude.<$> (x Data..:? "packageName")+            Prelude.<*> (x Data..:? "packageVersion")+      )++instance Prelude.Hashable ImagePackage where+  hashWithSalt _salt ImagePackage' {..} =+    _salt+      `Prelude.hashWithSalt` packageName+      `Prelude.hashWithSalt` packageVersion++instance Prelude.NFData ImagePackage where+  rnf ImagePackage' {..} =+    Prelude.rnf packageName+      `Prelude.seq` Prelude.rnf packageVersion
+ gen/Amazonka/ImageBuilder/Types/ImagePipeline.hs view
@@ -0,0 +1,289 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImagePipeline+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImagePipeline where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ImageTestsConfiguration+import Amazonka.ImageBuilder.Types.PipelineStatus+import Amazonka.ImageBuilder.Types.Platform+import Amazonka.ImageBuilder.Types.Schedule+import qualified Amazonka.Prelude as Prelude++-- | Details of an image pipeline.+--+-- /See:/ 'newImagePipeline' smart constructor.+data ImagePipeline = ImagePipeline'+  { -- | The Amazon Resource Name (ARN) of the image pipeline.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the container recipe that is used for+    -- this pipeline.+    containerRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The date on which this image pipeline was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The date on which this image pipeline was last run.+    dateLastRun :: Prelude.Maybe Prelude.Text,+    -- | The date on which this image pipeline will next be run.+    dateNextRun :: Prelude.Maybe Prelude.Text,+    -- | The date on which this image pipeline was last updated.+    dateUpdated :: Prelude.Maybe Prelude.Text,+    -- | The description of the image pipeline.+    description :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the distribution configuration+    -- associated with this image pipeline.+    distributionConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Collects additional information about the image being created, including+    -- the operating system (OS) version and package list. This information is+    -- used to enhance the overall experience of using EC2 Image Builder.+    -- Enabled by default.+    enhancedImageMetadataEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The Amazon Resource Name (ARN) of the image recipe associated with this+    -- image pipeline.+    imageRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The image tests configuration of the image pipeline.+    imageTestsConfiguration :: Prelude.Maybe ImageTestsConfiguration,+    -- | The Amazon Resource Name (ARN) of the infrastructure configuration+    -- associated with this image pipeline.+    infrastructureConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the image pipeline.+    name :: Prelude.Maybe Prelude.Text,+    -- | The platform of the image pipeline.+    platform :: Prelude.Maybe Platform,+    -- | The schedule of the image pipeline.+    schedule :: Prelude.Maybe Schedule,+    -- | The status of the image pipeline.+    status :: Prelude.Maybe PipelineStatus,+    -- | The tags of this image pipeline.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImagePipeline' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'imagePipeline_arn' - The Amazon Resource Name (ARN) of the image pipeline.+--+-- 'containerRecipeArn', 'imagePipeline_containerRecipeArn' - The Amazon Resource Name (ARN) of the container recipe that is used for+-- this pipeline.+--+-- 'dateCreated', 'imagePipeline_dateCreated' - The date on which this image pipeline was created.+--+-- 'dateLastRun', 'imagePipeline_dateLastRun' - The date on which this image pipeline was last run.+--+-- 'dateNextRun', 'imagePipeline_dateNextRun' - The date on which this image pipeline will next be run.+--+-- 'dateUpdated', 'imagePipeline_dateUpdated' - The date on which this image pipeline was last updated.+--+-- 'description', 'imagePipeline_description' - The description of the image pipeline.+--+-- 'distributionConfigurationArn', 'imagePipeline_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration+-- associated with this image pipeline.+--+-- 'enhancedImageMetadataEnabled', 'imagePipeline_enhancedImageMetadataEnabled' - Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+--+-- 'imageRecipeArn', 'imagePipeline_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe associated with this+-- image pipeline.+--+-- 'imageTestsConfiguration', 'imagePipeline_imageTestsConfiguration' - The image tests configuration of the image pipeline.+--+-- 'infrastructureConfigurationArn', 'imagePipeline_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration+-- associated with this image pipeline.+--+-- 'name', 'imagePipeline_name' - The name of the image pipeline.+--+-- 'platform', 'imagePipeline_platform' - The platform of the image pipeline.+--+-- 'schedule', 'imagePipeline_schedule' - The schedule of the image pipeline.+--+-- 'status', 'imagePipeline_status' - The status of the image pipeline.+--+-- 'tags', 'imagePipeline_tags' - The tags of this image pipeline.+newImagePipeline ::+  ImagePipeline+newImagePipeline =+  ImagePipeline'+    { arn = Prelude.Nothing,+      containerRecipeArn = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      dateLastRun = Prelude.Nothing,+      dateNextRun = Prelude.Nothing,+      dateUpdated = Prelude.Nothing,+      description = Prelude.Nothing,+      distributionConfigurationArn = Prelude.Nothing,+      enhancedImageMetadataEnabled = Prelude.Nothing,+      imageRecipeArn = Prelude.Nothing,+      imageTestsConfiguration = Prelude.Nothing,+      infrastructureConfigurationArn = Prelude.Nothing,+      name = Prelude.Nothing,+      platform = Prelude.Nothing,+      schedule = Prelude.Nothing,+      status = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the image pipeline.+imagePipeline_arn :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_arn = Lens.lens (\ImagePipeline' {arn} -> arn) (\s@ImagePipeline' {} a -> s {arn = a} :: ImagePipeline)++-- | The Amazon Resource Name (ARN) of the container recipe that is used for+-- this pipeline.+imagePipeline_containerRecipeArn :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_containerRecipeArn = Lens.lens (\ImagePipeline' {containerRecipeArn} -> containerRecipeArn) (\s@ImagePipeline' {} a -> s {containerRecipeArn = a} :: ImagePipeline)++-- | The date on which this image pipeline was created.+imagePipeline_dateCreated :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_dateCreated = Lens.lens (\ImagePipeline' {dateCreated} -> dateCreated) (\s@ImagePipeline' {} a -> s {dateCreated = a} :: ImagePipeline)++-- | The date on which this image pipeline was last run.+imagePipeline_dateLastRun :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_dateLastRun = Lens.lens (\ImagePipeline' {dateLastRun} -> dateLastRun) (\s@ImagePipeline' {} a -> s {dateLastRun = a} :: ImagePipeline)++-- | The date on which this image pipeline will next be run.+imagePipeline_dateNextRun :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_dateNextRun = Lens.lens (\ImagePipeline' {dateNextRun} -> dateNextRun) (\s@ImagePipeline' {} a -> s {dateNextRun = a} :: ImagePipeline)++-- | The date on which this image pipeline was last updated.+imagePipeline_dateUpdated :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_dateUpdated = Lens.lens (\ImagePipeline' {dateUpdated} -> dateUpdated) (\s@ImagePipeline' {} a -> s {dateUpdated = a} :: ImagePipeline)++-- | The description of the image pipeline.+imagePipeline_description :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_description = Lens.lens (\ImagePipeline' {description} -> description) (\s@ImagePipeline' {} a -> s {description = a} :: ImagePipeline)++-- | The Amazon Resource Name (ARN) of the distribution configuration+-- associated with this image pipeline.+imagePipeline_distributionConfigurationArn :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_distributionConfigurationArn = Lens.lens (\ImagePipeline' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@ImagePipeline' {} a -> s {distributionConfigurationArn = a} :: ImagePipeline)++-- | Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+imagePipeline_enhancedImageMetadataEnabled :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Bool)+imagePipeline_enhancedImageMetadataEnabled = Lens.lens (\ImagePipeline' {enhancedImageMetadataEnabled} -> enhancedImageMetadataEnabled) (\s@ImagePipeline' {} a -> s {enhancedImageMetadataEnabled = a} :: ImagePipeline)++-- | The Amazon Resource Name (ARN) of the image recipe associated with this+-- image pipeline.+imagePipeline_imageRecipeArn :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_imageRecipeArn = Lens.lens (\ImagePipeline' {imageRecipeArn} -> imageRecipeArn) (\s@ImagePipeline' {} a -> s {imageRecipeArn = a} :: ImagePipeline)++-- | The image tests configuration of the image pipeline.+imagePipeline_imageTestsConfiguration :: Lens.Lens' ImagePipeline (Prelude.Maybe ImageTestsConfiguration)+imagePipeline_imageTestsConfiguration = Lens.lens (\ImagePipeline' {imageTestsConfiguration} -> imageTestsConfiguration) (\s@ImagePipeline' {} a -> s {imageTestsConfiguration = a} :: ImagePipeline)++-- | The Amazon Resource Name (ARN) of the infrastructure configuration+-- associated with this image pipeline.+imagePipeline_infrastructureConfigurationArn :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_infrastructureConfigurationArn = Lens.lens (\ImagePipeline' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@ImagePipeline' {} a -> s {infrastructureConfigurationArn = a} :: ImagePipeline)++-- | The name of the image pipeline.+imagePipeline_name :: Lens.Lens' ImagePipeline (Prelude.Maybe Prelude.Text)+imagePipeline_name = Lens.lens (\ImagePipeline' {name} -> name) (\s@ImagePipeline' {} a -> s {name = a} :: ImagePipeline)++-- | The platform of the image pipeline.+imagePipeline_platform :: Lens.Lens' ImagePipeline (Prelude.Maybe Platform)+imagePipeline_platform = Lens.lens (\ImagePipeline' {platform} -> platform) (\s@ImagePipeline' {} a -> s {platform = a} :: ImagePipeline)++-- | The schedule of the image pipeline.+imagePipeline_schedule :: Lens.Lens' ImagePipeline (Prelude.Maybe Schedule)+imagePipeline_schedule = Lens.lens (\ImagePipeline' {schedule} -> schedule) (\s@ImagePipeline' {} a -> s {schedule = a} :: ImagePipeline)++-- | The status of the image pipeline.+imagePipeline_status :: Lens.Lens' ImagePipeline (Prelude.Maybe PipelineStatus)+imagePipeline_status = Lens.lens (\ImagePipeline' {status} -> status) (\s@ImagePipeline' {} a -> s {status = a} :: ImagePipeline)++-- | The tags of this image pipeline.+imagePipeline_tags :: Lens.Lens' ImagePipeline (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+imagePipeline_tags = Lens.lens (\ImagePipeline' {tags} -> tags) (\s@ImagePipeline' {} a -> s {tags = a} :: ImagePipeline) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ImagePipeline where+  parseJSON =+    Data.withObject+      "ImagePipeline"+      ( \x ->+          ImagePipeline'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "containerRecipeArn")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "dateLastRun")+            Prelude.<*> (x Data..:? "dateNextRun")+            Prelude.<*> (x Data..:? "dateUpdated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "distributionConfigurationArn")+            Prelude.<*> (x Data..:? "enhancedImageMetadataEnabled")+            Prelude.<*> (x Data..:? "imageRecipeArn")+            Prelude.<*> (x Data..:? "imageTestsConfiguration")+            Prelude.<*> (x Data..:? "infrastructureConfigurationArn")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "schedule")+            Prelude.<*> (x Data..:? "status")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ImagePipeline where+  hashWithSalt _salt ImagePipeline' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` containerRecipeArn+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` dateLastRun+      `Prelude.hashWithSalt` dateNextRun+      `Prelude.hashWithSalt` dateUpdated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` distributionConfigurationArn+      `Prelude.hashWithSalt` enhancedImageMetadataEnabled+      `Prelude.hashWithSalt` imageRecipeArn+      `Prelude.hashWithSalt` imageTestsConfiguration+      `Prelude.hashWithSalt` infrastructureConfigurationArn+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` schedule+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ImagePipeline where+  rnf ImagePipeline' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf dateLastRun+      `Prelude.seq` Prelude.rnf dateNextRun+      `Prelude.seq` Prelude.rnf dateUpdated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf enhancedImageMetadataEnabled+      `Prelude.seq` Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf imageTestsConfiguration+      `Prelude.seq` Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf schedule+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/ImageBuilder/Types/ImageRecipe.hs view
@@ -0,0 +1,255 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageRecipe+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageRecipe where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.AdditionalInstanceConfiguration+import Amazonka.ImageBuilder.Types.ComponentConfiguration+import Amazonka.ImageBuilder.Types.ImageType+import Amazonka.ImageBuilder.Types.InstanceBlockDeviceMapping+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | An image recipe.+--+-- /See:/ 'newImageRecipe' smart constructor.+data ImageRecipe = ImageRecipe'+  { -- | Before you create a new AMI, Image Builder launches temporary Amazon EC2+    -- instances to build and test your image configuration. Instance+    -- configuration adds a layer of control over those instances. You can+    -- define settings and add scripts to run when an instance is launched from+    -- your AMI.+    additionalInstanceConfiguration :: Prelude.Maybe AdditionalInstanceConfiguration,+    -- | The Amazon Resource Name (ARN) of the image recipe.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The block device mappings to apply when creating images from this+    -- recipe.+    blockDeviceMappings :: Prelude.Maybe [InstanceBlockDeviceMapping],+    -- | The components of the image recipe.+    components :: Prelude.Maybe (Prelude.NonEmpty ComponentConfiguration),+    -- | The date on which this image recipe was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The description of the image recipe.+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of the image recipe.+    name :: Prelude.Maybe Prelude.Text,+    -- | The owner of the image recipe.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The base image of the image recipe.+    parentImage :: Prelude.Maybe Prelude.Text,+    -- | The platform of the image recipe.+    platform :: Prelude.Maybe Platform,+    -- | The tags of the image recipe.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Specifies which type of image is created by the recipe - an AMI or a+    -- container image.+    type' :: Prelude.Maybe ImageType,+    -- | The version of the image recipe.+    version :: Prelude.Maybe Prelude.Text,+    -- | The working directory to be used during build and test workflows.+    workingDirectory :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageRecipe' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'additionalInstanceConfiguration', 'imageRecipe_additionalInstanceConfiguration' - Before you create a new AMI, Image Builder launches temporary Amazon EC2+-- instances to build and test your image configuration. Instance+-- configuration adds a layer of control over those instances. You can+-- define settings and add scripts to run when an instance is launched from+-- your AMI.+--+-- 'arn', 'imageRecipe_arn' - The Amazon Resource Name (ARN) of the image recipe.+--+-- 'blockDeviceMappings', 'imageRecipe_blockDeviceMappings' - The block device mappings to apply when creating images from this+-- recipe.+--+-- 'components', 'imageRecipe_components' - The components of the image recipe.+--+-- 'dateCreated', 'imageRecipe_dateCreated' - The date on which this image recipe was created.+--+-- 'description', 'imageRecipe_description' - The description of the image recipe.+--+-- 'name', 'imageRecipe_name' - The name of the image recipe.+--+-- 'owner', 'imageRecipe_owner' - The owner of the image recipe.+--+-- 'parentImage', 'imageRecipe_parentImage' - The base image of the image recipe.+--+-- 'platform', 'imageRecipe_platform' - The platform of the image recipe.+--+-- 'tags', 'imageRecipe_tags' - The tags of the image recipe.+--+-- 'type'', 'imageRecipe_type' - Specifies which type of image is created by the recipe - an AMI or a+-- container image.+--+-- 'version', 'imageRecipe_version' - The version of the image recipe.+--+-- 'workingDirectory', 'imageRecipe_workingDirectory' - The working directory to be used during build and test workflows.+newImageRecipe ::+  ImageRecipe+newImageRecipe =+  ImageRecipe'+    { additionalInstanceConfiguration =+        Prelude.Nothing,+      arn = Prelude.Nothing,+      blockDeviceMappings = Prelude.Nothing,+      components = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      description = Prelude.Nothing,+      name = Prelude.Nothing,+      owner = Prelude.Nothing,+      parentImage = Prelude.Nothing,+      platform = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing,+      version = Prelude.Nothing,+      workingDirectory = Prelude.Nothing+    }++-- | Before you create a new AMI, Image Builder launches temporary Amazon EC2+-- instances to build and test your image configuration. Instance+-- configuration adds a layer of control over those instances. You can+-- define settings and add scripts to run when an instance is launched from+-- your AMI.+imageRecipe_additionalInstanceConfiguration :: Lens.Lens' ImageRecipe (Prelude.Maybe AdditionalInstanceConfiguration)+imageRecipe_additionalInstanceConfiguration = Lens.lens (\ImageRecipe' {additionalInstanceConfiguration} -> additionalInstanceConfiguration) (\s@ImageRecipe' {} a -> s {additionalInstanceConfiguration = a} :: ImageRecipe)++-- | The Amazon Resource Name (ARN) of the image recipe.+imageRecipe_arn :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_arn = Lens.lens (\ImageRecipe' {arn} -> arn) (\s@ImageRecipe' {} a -> s {arn = a} :: ImageRecipe)++-- | The block device mappings to apply when creating images from this+-- recipe.+imageRecipe_blockDeviceMappings :: Lens.Lens' ImageRecipe (Prelude.Maybe [InstanceBlockDeviceMapping])+imageRecipe_blockDeviceMappings = Lens.lens (\ImageRecipe' {blockDeviceMappings} -> blockDeviceMappings) (\s@ImageRecipe' {} a -> s {blockDeviceMappings = a} :: ImageRecipe) Prelude.. Lens.mapping Lens.coerced++-- | The components of the image recipe.+imageRecipe_components :: Lens.Lens' ImageRecipe (Prelude.Maybe (Prelude.NonEmpty ComponentConfiguration))+imageRecipe_components = Lens.lens (\ImageRecipe' {components} -> components) (\s@ImageRecipe' {} a -> s {components = a} :: ImageRecipe) Prelude.. Lens.mapping Lens.coerced++-- | The date on which this image recipe was created.+imageRecipe_dateCreated :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_dateCreated = Lens.lens (\ImageRecipe' {dateCreated} -> dateCreated) (\s@ImageRecipe' {} a -> s {dateCreated = a} :: ImageRecipe)++-- | The description of the image recipe.+imageRecipe_description :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_description = Lens.lens (\ImageRecipe' {description} -> description) (\s@ImageRecipe' {} a -> s {description = a} :: ImageRecipe)++-- | The name of the image recipe.+imageRecipe_name :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_name = Lens.lens (\ImageRecipe' {name} -> name) (\s@ImageRecipe' {} a -> s {name = a} :: ImageRecipe)++-- | The owner of the image recipe.+imageRecipe_owner :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_owner = Lens.lens (\ImageRecipe' {owner} -> owner) (\s@ImageRecipe' {} a -> s {owner = a} :: ImageRecipe)++-- | The base image of the image recipe.+imageRecipe_parentImage :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_parentImage = Lens.lens (\ImageRecipe' {parentImage} -> parentImage) (\s@ImageRecipe' {} a -> s {parentImage = a} :: ImageRecipe)++-- | The platform of the image recipe.+imageRecipe_platform :: Lens.Lens' ImageRecipe (Prelude.Maybe Platform)+imageRecipe_platform = Lens.lens (\ImageRecipe' {platform} -> platform) (\s@ImageRecipe' {} a -> s {platform = a} :: ImageRecipe)++-- | The tags of the image recipe.+imageRecipe_tags :: Lens.Lens' ImageRecipe (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+imageRecipe_tags = Lens.lens (\ImageRecipe' {tags} -> tags) (\s@ImageRecipe' {} a -> s {tags = a} :: ImageRecipe) Prelude.. Lens.mapping Lens.coerced++-- | Specifies which type of image is created by the recipe - an AMI or a+-- container image.+imageRecipe_type :: Lens.Lens' ImageRecipe (Prelude.Maybe ImageType)+imageRecipe_type = Lens.lens (\ImageRecipe' {type'} -> type') (\s@ImageRecipe' {} a -> s {type' = a} :: ImageRecipe)++-- | The version of the image recipe.+imageRecipe_version :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_version = Lens.lens (\ImageRecipe' {version} -> version) (\s@ImageRecipe' {} a -> s {version = a} :: ImageRecipe)++-- | The working directory to be used during build and test workflows.+imageRecipe_workingDirectory :: Lens.Lens' ImageRecipe (Prelude.Maybe Prelude.Text)+imageRecipe_workingDirectory = Lens.lens (\ImageRecipe' {workingDirectory} -> workingDirectory) (\s@ImageRecipe' {} a -> s {workingDirectory = a} :: ImageRecipe)++instance Data.FromJSON ImageRecipe where+  parseJSON =+    Data.withObject+      "ImageRecipe"+      ( \x ->+          ImageRecipe'+            Prelude.<$> (x Data..:? "additionalInstanceConfiguration")+            Prelude.<*> (x Data..:? "arn")+            Prelude.<*> ( x+                            Data..:? "blockDeviceMappings"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "components")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "parentImage")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "version")+            Prelude.<*> (x Data..:? "workingDirectory")+      )++instance Prelude.Hashable ImageRecipe where+  hashWithSalt _salt ImageRecipe' {..} =+    _salt+      `Prelude.hashWithSalt` additionalInstanceConfiguration+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` blockDeviceMappings+      `Prelude.hashWithSalt` components+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` parentImage+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` version+      `Prelude.hashWithSalt` workingDirectory++instance Prelude.NFData ImageRecipe where+  rnf ImageRecipe' {..} =+    Prelude.rnf additionalInstanceConfiguration+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf blockDeviceMappings+      `Prelude.seq` Prelude.rnf components+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf parentImage+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf workingDirectory
+ gen/Amazonka/ImageBuilder/Types/ImageRecipeSummary.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageRecipeSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageRecipeSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | A summary of an image recipe.+--+-- /See:/ 'newImageRecipeSummary' smart constructor.+data ImageRecipeSummary = ImageRecipeSummary'+  { -- | The Amazon Resource Name (ARN) of the image recipe.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The date on which this image recipe was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The name of the image recipe.+    name :: Prelude.Maybe Prelude.Text,+    -- | The owner of the image recipe.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The base image of the image recipe.+    parentImage :: Prelude.Maybe Prelude.Text,+    -- | The platform of the image recipe.+    platform :: Prelude.Maybe Platform,+    -- | The tags of the image recipe.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageRecipeSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'imageRecipeSummary_arn' - The Amazon Resource Name (ARN) of the image recipe.+--+-- 'dateCreated', 'imageRecipeSummary_dateCreated' - The date on which this image recipe was created.+--+-- 'name', 'imageRecipeSummary_name' - The name of the image recipe.+--+-- 'owner', 'imageRecipeSummary_owner' - The owner of the image recipe.+--+-- 'parentImage', 'imageRecipeSummary_parentImage' - The base image of the image recipe.+--+-- 'platform', 'imageRecipeSummary_platform' - The platform of the image recipe.+--+-- 'tags', 'imageRecipeSummary_tags' - The tags of the image recipe.+newImageRecipeSummary ::+  ImageRecipeSummary+newImageRecipeSummary =+  ImageRecipeSummary'+    { arn = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      name = Prelude.Nothing,+      owner = Prelude.Nothing,+      parentImage = Prelude.Nothing,+      platform = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the image recipe.+imageRecipeSummary_arn :: Lens.Lens' ImageRecipeSummary (Prelude.Maybe Prelude.Text)+imageRecipeSummary_arn = Lens.lens (\ImageRecipeSummary' {arn} -> arn) (\s@ImageRecipeSummary' {} a -> s {arn = a} :: ImageRecipeSummary)++-- | The date on which this image recipe was created.+imageRecipeSummary_dateCreated :: Lens.Lens' ImageRecipeSummary (Prelude.Maybe Prelude.Text)+imageRecipeSummary_dateCreated = Lens.lens (\ImageRecipeSummary' {dateCreated} -> dateCreated) (\s@ImageRecipeSummary' {} a -> s {dateCreated = a} :: ImageRecipeSummary)++-- | The name of the image recipe.+imageRecipeSummary_name :: Lens.Lens' ImageRecipeSummary (Prelude.Maybe Prelude.Text)+imageRecipeSummary_name = Lens.lens (\ImageRecipeSummary' {name} -> name) (\s@ImageRecipeSummary' {} a -> s {name = a} :: ImageRecipeSummary)++-- | The owner of the image recipe.+imageRecipeSummary_owner :: Lens.Lens' ImageRecipeSummary (Prelude.Maybe Prelude.Text)+imageRecipeSummary_owner = Lens.lens (\ImageRecipeSummary' {owner} -> owner) (\s@ImageRecipeSummary' {} a -> s {owner = a} :: ImageRecipeSummary)++-- | The base image of the image recipe.+imageRecipeSummary_parentImage :: Lens.Lens' ImageRecipeSummary (Prelude.Maybe Prelude.Text)+imageRecipeSummary_parentImage = Lens.lens (\ImageRecipeSummary' {parentImage} -> parentImage) (\s@ImageRecipeSummary' {} a -> s {parentImage = a} :: ImageRecipeSummary)++-- | The platform of the image recipe.+imageRecipeSummary_platform :: Lens.Lens' ImageRecipeSummary (Prelude.Maybe Platform)+imageRecipeSummary_platform = Lens.lens (\ImageRecipeSummary' {platform} -> platform) (\s@ImageRecipeSummary' {} a -> s {platform = a} :: ImageRecipeSummary)++-- | The tags of the image recipe.+imageRecipeSummary_tags :: Lens.Lens' ImageRecipeSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+imageRecipeSummary_tags = Lens.lens (\ImageRecipeSummary' {tags} -> tags) (\s@ImageRecipeSummary' {} a -> s {tags = a} :: ImageRecipeSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ImageRecipeSummary where+  parseJSON =+    Data.withObject+      "ImageRecipeSummary"+      ( \x ->+          ImageRecipeSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "parentImage")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ImageRecipeSummary where+  hashWithSalt _salt ImageRecipeSummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` parentImage+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ImageRecipeSummary where+  rnf ImageRecipeSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf parentImage+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/ImageBuilder/Types/ImageState.hs view
@@ -0,0 +1,84 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageState where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ImageStatus+import qualified Amazonka.Prelude as Prelude++-- | Image state shows the image status and the reason for that status.+--+-- /See:/ 'newImageState' smart constructor.+data ImageState = ImageState'+  { -- | The reason for the image\'s status.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The status of the image.+    status :: Prelude.Maybe ImageStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageState' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'reason', 'imageState_reason' - The reason for the image\'s status.+--+-- 'status', 'imageState_status' - The status of the image.+newImageState ::+  ImageState+newImageState =+  ImageState'+    { reason = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The reason for the image\'s status.+imageState_reason :: Lens.Lens' ImageState (Prelude.Maybe Prelude.Text)+imageState_reason = Lens.lens (\ImageState' {reason} -> reason) (\s@ImageState' {} a -> s {reason = a} :: ImageState)++-- | The status of the image.+imageState_status :: Lens.Lens' ImageState (Prelude.Maybe ImageStatus)+imageState_status = Lens.lens (\ImageState' {status} -> status) (\s@ImageState' {} a -> s {status = a} :: ImageState)++instance Data.FromJSON ImageState where+  parseJSON =+    Data.withObject+      "ImageState"+      ( \x ->+          ImageState'+            Prelude.<$> (x Data..:? "reason")+            Prelude.<*> (x Data..:? "status")+      )++instance Prelude.Hashable ImageState where+  hashWithSalt _salt ImageState' {..} =+    _salt+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` status++instance Prelude.NFData ImageState where+  rnf ImageState' {..} =+    Prelude.rnf reason `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/ImageBuilder/Types/ImageStatus.hs view
@@ -0,0 +1,116 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageStatus+  ( ImageStatus+      ( ..,+        ImageStatus_AVAILABLE,+        ImageStatus_BUILDING,+        ImageStatus_CANCELLED,+        ImageStatus_CREATING,+        ImageStatus_DELETED,+        ImageStatus_DEPRECATED,+        ImageStatus_DISTRIBUTING,+        ImageStatus_FAILED,+        ImageStatus_INTEGRATING,+        ImageStatus_PENDING,+        ImageStatus_TESTING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ImageStatus = ImageStatus'+  { fromImageStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ImageStatus_AVAILABLE :: ImageStatus+pattern ImageStatus_AVAILABLE = ImageStatus' "AVAILABLE"++pattern ImageStatus_BUILDING :: ImageStatus+pattern ImageStatus_BUILDING = ImageStatus' "BUILDING"++pattern ImageStatus_CANCELLED :: ImageStatus+pattern ImageStatus_CANCELLED = ImageStatus' "CANCELLED"++pattern ImageStatus_CREATING :: ImageStatus+pattern ImageStatus_CREATING = ImageStatus' "CREATING"++pattern ImageStatus_DELETED :: ImageStatus+pattern ImageStatus_DELETED = ImageStatus' "DELETED"++pattern ImageStatus_DEPRECATED :: ImageStatus+pattern ImageStatus_DEPRECATED = ImageStatus' "DEPRECATED"++pattern ImageStatus_DISTRIBUTING :: ImageStatus+pattern ImageStatus_DISTRIBUTING = ImageStatus' "DISTRIBUTING"++pattern ImageStatus_FAILED :: ImageStatus+pattern ImageStatus_FAILED = ImageStatus' "FAILED"++pattern ImageStatus_INTEGRATING :: ImageStatus+pattern ImageStatus_INTEGRATING = ImageStatus' "INTEGRATING"++pattern ImageStatus_PENDING :: ImageStatus+pattern ImageStatus_PENDING = ImageStatus' "PENDING"++pattern ImageStatus_TESTING :: ImageStatus+pattern ImageStatus_TESTING = ImageStatus' "TESTING"++{-# COMPLETE+  ImageStatus_AVAILABLE,+  ImageStatus_BUILDING,+  ImageStatus_CANCELLED,+  ImageStatus_CREATING,+  ImageStatus_DELETED,+  ImageStatus_DEPRECATED,+  ImageStatus_DISTRIBUTING,+  ImageStatus_FAILED,+  ImageStatus_INTEGRATING,+  ImageStatus_PENDING,+  ImageStatus_TESTING,+  ImageStatus'+  #-}
+ gen/Amazonka/ImageBuilder/Types/ImageSummary.hs view
@@ -0,0 +1,239 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.BuildType+import Amazonka.ImageBuilder.Types.ImageState+import Amazonka.ImageBuilder.Types.ImageType+import Amazonka.ImageBuilder.Types.OutputResources+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | An image summary.+--+-- /See:/ 'newImageSummary' smart constructor.+data ImageSummary = ImageSummary'+  { -- | The Amazon Resource Name (ARN) of the image.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Indicates the type of build that created this image. The build can be+    -- initiated in the following ways:+    --+    -- -   __USER_INITIATED__ – A manual pipeline build request.+    --+    -- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+    --     the Image Builder pipeline, or from EventBridge.+    --+    -- -   __IMPORT__ – A VM import created the image to use as the base image+    --     for the recipe.+    buildType :: Prelude.Maybe BuildType,+    -- | The date on which this image was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The name of the image.+    name :: Prelude.Maybe Prelude.Text,+    -- | The operating system version of the instance. For example, Amazon Linux+    -- 2, Ubuntu 18, or Microsoft Windows Server 2019.+    osVersion :: Prelude.Maybe Prelude.Text,+    -- | The output resources produced when creating this image.+    outputResources :: Prelude.Maybe OutputResources,+    -- | The owner of the image.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The platform of the image.+    platform :: Prelude.Maybe Platform,+    -- | The state of the image.+    state :: Prelude.Maybe ImageState,+    -- | The tags of the image.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Specifies whether this is an AMI or container image.+    type' :: Prelude.Maybe ImageType,+    -- | The version of the image.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'imageSummary_arn' - The Amazon Resource Name (ARN) of the image.+--+-- 'buildType', 'imageSummary_buildType' - Indicates the type of build that created this image. The build can be+-- initiated in the following ways:+--+-- -   __USER_INITIATED__ – A manual pipeline build request.+--+-- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+--     the Image Builder pipeline, or from EventBridge.+--+-- -   __IMPORT__ – A VM import created the image to use as the base image+--     for the recipe.+--+-- 'dateCreated', 'imageSummary_dateCreated' - The date on which this image was created.+--+-- 'name', 'imageSummary_name' - The name of the image.+--+-- 'osVersion', 'imageSummary_osVersion' - The operating system version of the instance. For example, Amazon Linux+-- 2, Ubuntu 18, or Microsoft Windows Server 2019.+--+-- 'outputResources', 'imageSummary_outputResources' - The output resources produced when creating this image.+--+-- 'owner', 'imageSummary_owner' - The owner of the image.+--+-- 'platform', 'imageSummary_platform' - The platform of the image.+--+-- 'state', 'imageSummary_state' - The state of the image.+--+-- 'tags', 'imageSummary_tags' - The tags of the image.+--+-- 'type'', 'imageSummary_type' - Specifies whether this is an AMI or container image.+--+-- 'version', 'imageSummary_version' - The version of the image.+newImageSummary ::+  ImageSummary+newImageSummary =+  ImageSummary'+    { arn = Prelude.Nothing,+      buildType = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      name = Prelude.Nothing,+      osVersion = Prelude.Nothing,+      outputResources = Prelude.Nothing,+      owner = Prelude.Nothing,+      platform = Prelude.Nothing,+      state = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the image.+imageSummary_arn :: Lens.Lens' ImageSummary (Prelude.Maybe Prelude.Text)+imageSummary_arn = Lens.lens (\ImageSummary' {arn} -> arn) (\s@ImageSummary' {} a -> s {arn = a} :: ImageSummary)++-- | Indicates the type of build that created this image. The build can be+-- initiated in the following ways:+--+-- -   __USER_INITIATED__ – A manual pipeline build request.+--+-- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+--     the Image Builder pipeline, or from EventBridge.+--+-- -   __IMPORT__ – A VM import created the image to use as the base image+--     for the recipe.+imageSummary_buildType :: Lens.Lens' ImageSummary (Prelude.Maybe BuildType)+imageSummary_buildType = Lens.lens (\ImageSummary' {buildType} -> buildType) (\s@ImageSummary' {} a -> s {buildType = a} :: ImageSummary)++-- | The date on which this image was created.+imageSummary_dateCreated :: Lens.Lens' ImageSummary (Prelude.Maybe Prelude.Text)+imageSummary_dateCreated = Lens.lens (\ImageSummary' {dateCreated} -> dateCreated) (\s@ImageSummary' {} a -> s {dateCreated = a} :: ImageSummary)++-- | The name of the image.+imageSummary_name :: Lens.Lens' ImageSummary (Prelude.Maybe Prelude.Text)+imageSummary_name = Lens.lens (\ImageSummary' {name} -> name) (\s@ImageSummary' {} a -> s {name = a} :: ImageSummary)++-- | The operating system version of the instance. For example, Amazon Linux+-- 2, Ubuntu 18, or Microsoft Windows Server 2019.+imageSummary_osVersion :: Lens.Lens' ImageSummary (Prelude.Maybe Prelude.Text)+imageSummary_osVersion = Lens.lens (\ImageSummary' {osVersion} -> osVersion) (\s@ImageSummary' {} a -> s {osVersion = a} :: ImageSummary)++-- | The output resources produced when creating this image.+imageSummary_outputResources :: Lens.Lens' ImageSummary (Prelude.Maybe OutputResources)+imageSummary_outputResources = Lens.lens (\ImageSummary' {outputResources} -> outputResources) (\s@ImageSummary' {} a -> s {outputResources = a} :: ImageSummary)++-- | The owner of the image.+imageSummary_owner :: Lens.Lens' ImageSummary (Prelude.Maybe Prelude.Text)+imageSummary_owner = Lens.lens (\ImageSummary' {owner} -> owner) (\s@ImageSummary' {} a -> s {owner = a} :: ImageSummary)++-- | The platform of the image.+imageSummary_platform :: Lens.Lens' ImageSummary (Prelude.Maybe Platform)+imageSummary_platform = Lens.lens (\ImageSummary' {platform} -> platform) (\s@ImageSummary' {} a -> s {platform = a} :: ImageSummary)++-- | The state of the image.+imageSummary_state :: Lens.Lens' ImageSummary (Prelude.Maybe ImageState)+imageSummary_state = Lens.lens (\ImageSummary' {state} -> state) (\s@ImageSummary' {} a -> s {state = a} :: ImageSummary)++-- | The tags of the image.+imageSummary_tags :: Lens.Lens' ImageSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+imageSummary_tags = Lens.lens (\ImageSummary' {tags} -> tags) (\s@ImageSummary' {} a -> s {tags = a} :: ImageSummary) Prelude.. Lens.mapping Lens.coerced++-- | Specifies whether this is an AMI or container image.+imageSummary_type :: Lens.Lens' ImageSummary (Prelude.Maybe ImageType)+imageSummary_type = Lens.lens (\ImageSummary' {type'} -> type') (\s@ImageSummary' {} a -> s {type' = a} :: ImageSummary)++-- | The version of the image.+imageSummary_version :: Lens.Lens' ImageSummary (Prelude.Maybe Prelude.Text)+imageSummary_version = Lens.lens (\ImageSummary' {version} -> version) (\s@ImageSummary' {} a -> s {version = a} :: ImageSummary)++instance Data.FromJSON ImageSummary where+  parseJSON =+    Data.withObject+      "ImageSummary"+      ( \x ->+          ImageSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "buildType")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "osVersion")+            Prelude.<*> (x Data..:? "outputResources")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable ImageSummary where+  hashWithSalt _salt ImageSummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` buildType+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` osVersion+      `Prelude.hashWithSalt` outputResources+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` version++instance Prelude.NFData ImageSummary where+  rnf ImageSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf buildType+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf osVersion+      `Prelude.seq` Prelude.rnf outputResources+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/ImageBuilder/Types/ImageTestsConfiguration.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageTestsConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageTestsConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Configure image tests for your pipeline build. Tests run after building+-- the image, to verify that the AMI or container image is valid before+-- distributing it.+--+-- /See:/ 'newImageTestsConfiguration' smart constructor.+data ImageTestsConfiguration = ImageTestsConfiguration'+  { -- | Determines if tests should run after building the image. Image Builder+    -- defaults to enable tests to run following the image build, before image+    -- distribution.+    imageTestsEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The maximum time in minutes that tests are permitted to run.+    timeoutMinutes :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageTestsConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageTestsEnabled', 'imageTestsConfiguration_imageTestsEnabled' - Determines if tests should run after building the image. Image Builder+-- defaults to enable tests to run following the image build, before image+-- distribution.+--+-- 'timeoutMinutes', 'imageTestsConfiguration_timeoutMinutes' - The maximum time in minutes that tests are permitted to run.+newImageTestsConfiguration ::+  ImageTestsConfiguration+newImageTestsConfiguration =+  ImageTestsConfiguration'+    { imageTestsEnabled =+        Prelude.Nothing,+      timeoutMinutes = Prelude.Nothing+    }++-- | Determines if tests should run after building the image. Image Builder+-- defaults to enable tests to run following the image build, before image+-- distribution.+imageTestsConfiguration_imageTestsEnabled :: Lens.Lens' ImageTestsConfiguration (Prelude.Maybe Prelude.Bool)+imageTestsConfiguration_imageTestsEnabled = Lens.lens (\ImageTestsConfiguration' {imageTestsEnabled} -> imageTestsEnabled) (\s@ImageTestsConfiguration' {} a -> s {imageTestsEnabled = a} :: ImageTestsConfiguration)++-- | The maximum time in minutes that tests are permitted to run.+imageTestsConfiguration_timeoutMinutes :: Lens.Lens' ImageTestsConfiguration (Prelude.Maybe Prelude.Natural)+imageTestsConfiguration_timeoutMinutes = Lens.lens (\ImageTestsConfiguration' {timeoutMinutes} -> timeoutMinutes) (\s@ImageTestsConfiguration' {} a -> s {timeoutMinutes = a} :: ImageTestsConfiguration)++instance Data.FromJSON ImageTestsConfiguration where+  parseJSON =+    Data.withObject+      "ImageTestsConfiguration"+      ( \x ->+          ImageTestsConfiguration'+            Prelude.<$> (x Data..:? "imageTestsEnabled")+            Prelude.<*> (x Data..:? "timeoutMinutes")+      )++instance Prelude.Hashable ImageTestsConfiguration where+  hashWithSalt _salt ImageTestsConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` imageTestsEnabled+      `Prelude.hashWithSalt` timeoutMinutes++instance Prelude.NFData ImageTestsConfiguration where+  rnf ImageTestsConfiguration' {..} =+    Prelude.rnf imageTestsEnabled+      `Prelude.seq` Prelude.rnf timeoutMinutes++instance Data.ToJSON ImageTestsConfiguration where+  toJSON ImageTestsConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("imageTestsEnabled" Data..=)+              Prelude.<$> imageTestsEnabled,+            ("timeoutMinutes" Data..=)+              Prelude.<$> timeoutMinutes+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/ImageType.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageType+  ( ImageType+      ( ..,+        ImageType_AMI,+        ImageType_DOCKER+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ImageType = ImageType'+  { fromImageType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ImageType_AMI :: ImageType+pattern ImageType_AMI = ImageType' "AMI"++pattern ImageType_DOCKER :: ImageType+pattern ImageType_DOCKER = ImageType' "DOCKER"++{-# COMPLETE+  ImageType_AMI,+  ImageType_DOCKER,+  ImageType'+  #-}
+ gen/Amazonka/ImageBuilder/Types/ImageVersion.hs view
@@ -0,0 +1,310 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.ImageVersion+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.ImageVersion where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.BuildType+import Amazonka.ImageBuilder.Types.ImageType+import Amazonka.ImageBuilder.Types.Platform+import qualified Amazonka.Prelude as Prelude++-- | The defining characteristics of a specific version of an Image Builder+-- image.+--+-- /See:/ 'newImageVersion' smart constructor.+data ImageVersion = ImageVersion'+  { -- | The Amazon Resource Name (ARN) of a specific version of an Image Builder+    -- image.+    --+    -- Semantic versioning is included in each object\'s Amazon Resource Name+    -- (ARN), at the level that applies to that object as follows:+    --+    -- 1.  Versionless ARNs and Name ARNs do not include specific values in any+    --     of the nodes. The nodes are either left off entirely, or they are+    --     specified as wildcards, for example: x.x.x.+    --+    -- 2.  Version ARNs have only the first three nodes:+    --     \<major>.\<minor>.\<patch>+    --+    -- 3.  Build version ARNs have all four nodes, and point to a specific+    --     build for a specific version of an object.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Indicates the type of build that created this image. The build can be+    -- initiated in the following ways:+    --+    -- -   __USER_INITIATED__ – A manual pipeline build request.+    --+    -- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+    --     the Image Builder pipeline, or from EventBridge.+    --+    -- -   __IMPORT__ – A VM import created the image to use as the base image+    --     for the recipe.+    buildType :: Prelude.Maybe BuildType,+    -- | The date on which this specific version of the Image Builder image was+    -- created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The name of this specific version of an Image Builder image.+    name :: Prelude.Maybe Prelude.Text,+    -- | The operating system version of the Amazon EC2 build instance. For+    -- example, Amazon Linux 2, Ubuntu 18, or Microsoft Windows Server 2019.+    osVersion :: Prelude.Maybe Prelude.Text,+    -- | The owner of the image version.+    owner :: Prelude.Maybe Prelude.Text,+    -- | The platform of the image version, for example \"Windows\" or \"Linux\".+    platform :: Prelude.Maybe Platform,+    -- | Specifies whether this image is an AMI or a container image.+    type' :: Prelude.Maybe ImageType,+    -- | Details for a specific version of an Image Builder image. This version+    -- follows the semantic version syntax.+    --+    -- The semantic version has four nodes:+    -- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+    -- first three, and can filter on all of them.+    --+    -- __Assignment:__ For the first three nodes you can assign any positive+    -- integer value, including zero, with an upper limit of 2^30-1, or+    -- 1073741823 for each node. Image Builder automatically assigns the build+    -- number to the fourth node.+    --+    -- __Patterns:__ You can use any numeric pattern that adheres to the+    -- assignment requirements for the nodes that you can assign. For example,+    -- you might choose a software version pattern, such as 1.0.0, or a date,+    -- such as 2021.01.01.+    --+    -- __Filtering:__ With semantic versioning, you have the flexibility to use+    -- wildcards (x) to specify the most recent versions or nodes when+    -- selecting the base image or components for your recipe. When you use a+    -- wildcard in any node, all nodes to the right of the first wildcard must+    -- also be wildcards.+    version :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageVersion' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'imageVersion_arn' - The Amazon Resource Name (ARN) of a specific version of an Image Builder+-- image.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+--+-- 'buildType', 'imageVersion_buildType' - Indicates the type of build that created this image. The build can be+-- initiated in the following ways:+--+-- -   __USER_INITIATED__ – A manual pipeline build request.+--+-- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+--     the Image Builder pipeline, or from EventBridge.+--+-- -   __IMPORT__ – A VM import created the image to use as the base image+--     for the recipe.+--+-- 'dateCreated', 'imageVersion_dateCreated' - The date on which this specific version of the Image Builder image was+-- created.+--+-- 'name', 'imageVersion_name' - The name of this specific version of an Image Builder image.+--+-- 'osVersion', 'imageVersion_osVersion' - The operating system version of the Amazon EC2 build instance. For+-- example, Amazon Linux 2, Ubuntu 18, or Microsoft Windows Server 2019.+--+-- 'owner', 'imageVersion_owner' - The owner of the image version.+--+-- 'platform', 'imageVersion_platform' - The platform of the image version, for example \"Windows\" or \"Linux\".+--+-- 'type'', 'imageVersion_type' - Specifies whether this image is an AMI or a container image.+--+-- 'version', 'imageVersion_version' - Details for a specific version of an Image Builder image. This version+-- follows the semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+newImageVersion ::+  ImageVersion+newImageVersion =+  ImageVersion'+    { arn = Prelude.Nothing,+      buildType = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      name = Prelude.Nothing,+      osVersion = Prelude.Nothing,+      owner = Prelude.Nothing,+      platform = Prelude.Nothing,+      type' = Prelude.Nothing,+      version = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of a specific version of an Image Builder+-- image.+--+-- Semantic versioning is included in each object\'s Amazon Resource Name+-- (ARN), at the level that applies to that object as follows:+--+-- 1.  Versionless ARNs and Name ARNs do not include specific values in any+--     of the nodes. The nodes are either left off entirely, or they are+--     specified as wildcards, for example: x.x.x.+--+-- 2.  Version ARNs have only the first three nodes:+--     \<major>.\<minor>.\<patch>+--+-- 3.  Build version ARNs have all four nodes, and point to a specific+--     build for a specific version of an object.+imageVersion_arn :: Lens.Lens' ImageVersion (Prelude.Maybe Prelude.Text)+imageVersion_arn = Lens.lens (\ImageVersion' {arn} -> arn) (\s@ImageVersion' {} a -> s {arn = a} :: ImageVersion)++-- | Indicates the type of build that created this image. The build can be+-- initiated in the following ways:+--+-- -   __USER_INITIATED__ – A manual pipeline build request.+--+-- -   __SCHEDULED__ – A pipeline build initiated by a cron expression in+--     the Image Builder pipeline, or from EventBridge.+--+-- -   __IMPORT__ – A VM import created the image to use as the base image+--     for the recipe.+imageVersion_buildType :: Lens.Lens' ImageVersion (Prelude.Maybe BuildType)+imageVersion_buildType = Lens.lens (\ImageVersion' {buildType} -> buildType) (\s@ImageVersion' {} a -> s {buildType = a} :: ImageVersion)++-- | The date on which this specific version of the Image Builder image was+-- created.+imageVersion_dateCreated :: Lens.Lens' ImageVersion (Prelude.Maybe Prelude.Text)+imageVersion_dateCreated = Lens.lens (\ImageVersion' {dateCreated} -> dateCreated) (\s@ImageVersion' {} a -> s {dateCreated = a} :: ImageVersion)++-- | The name of this specific version of an Image Builder image.+imageVersion_name :: Lens.Lens' ImageVersion (Prelude.Maybe Prelude.Text)+imageVersion_name = Lens.lens (\ImageVersion' {name} -> name) (\s@ImageVersion' {} a -> s {name = a} :: ImageVersion)++-- | The operating system version of the Amazon EC2 build instance. For+-- example, Amazon Linux 2, Ubuntu 18, or Microsoft Windows Server 2019.+imageVersion_osVersion :: Lens.Lens' ImageVersion (Prelude.Maybe Prelude.Text)+imageVersion_osVersion = Lens.lens (\ImageVersion' {osVersion} -> osVersion) (\s@ImageVersion' {} a -> s {osVersion = a} :: ImageVersion)++-- | The owner of the image version.+imageVersion_owner :: Lens.Lens' ImageVersion (Prelude.Maybe Prelude.Text)+imageVersion_owner = Lens.lens (\ImageVersion' {owner} -> owner) (\s@ImageVersion' {} a -> s {owner = a} :: ImageVersion)++-- | The platform of the image version, for example \"Windows\" or \"Linux\".+imageVersion_platform :: Lens.Lens' ImageVersion (Prelude.Maybe Platform)+imageVersion_platform = Lens.lens (\ImageVersion' {platform} -> platform) (\s@ImageVersion' {} a -> s {platform = a} :: ImageVersion)++-- | Specifies whether this image is an AMI or a container image.+imageVersion_type :: Lens.Lens' ImageVersion (Prelude.Maybe ImageType)+imageVersion_type = Lens.lens (\ImageVersion' {type'} -> type') (\s@ImageVersion' {} a -> s {type' = a} :: ImageVersion)++-- | Details for a specific version of an Image Builder image. This version+-- follows the semantic version syntax.+--+-- The semantic version has four nodes:+-- \<major>.\<minor>.\<patch>\/\<build>. You can assign values for the+-- first three, and can filter on all of them.+--+-- __Assignment:__ For the first three nodes you can assign any positive+-- integer value, including zero, with an upper limit of 2^30-1, or+-- 1073741823 for each node. Image Builder automatically assigns the build+-- number to the fourth node.+--+-- __Patterns:__ You can use any numeric pattern that adheres to the+-- assignment requirements for the nodes that you can assign. For example,+-- you might choose a software version pattern, such as 1.0.0, or a date,+-- such as 2021.01.01.+--+-- __Filtering:__ With semantic versioning, you have the flexibility to use+-- wildcards (x) to specify the most recent versions or nodes when+-- selecting the base image or components for your recipe. When you use a+-- wildcard in any node, all nodes to the right of the first wildcard must+-- also be wildcards.+imageVersion_version :: Lens.Lens' ImageVersion (Prelude.Maybe Prelude.Text)+imageVersion_version = Lens.lens (\ImageVersion' {version} -> version) (\s@ImageVersion' {} a -> s {version = a} :: ImageVersion)++instance Data.FromJSON ImageVersion where+  parseJSON =+    Data.withObject+      "ImageVersion"+      ( \x ->+          ImageVersion'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "buildType")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "osVersion")+            Prelude.<*> (x Data..:? "owner")+            Prelude.<*> (x Data..:? "platform")+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "version")+      )++instance Prelude.Hashable ImageVersion where+  hashWithSalt _salt ImageVersion' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` buildType+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` osVersion+      `Prelude.hashWithSalt` owner+      `Prelude.hashWithSalt` platform+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` version++instance Prelude.NFData ImageVersion where+  rnf ImageVersion' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf buildType+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf osVersion+      `Prelude.seq` Prelude.rnf owner+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf version
+ gen/Amazonka/ImageBuilder/Types/InfrastructureConfiguration.hs view
@@ -0,0 +1,281 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.InfrastructureConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.InfrastructureConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.InstanceMetadataOptions+import Amazonka.ImageBuilder.Types.Logging+import qualified Amazonka.Prelude as Prelude++-- | Details of the infrastructure configuration.+--+-- /See:/ 'newInfrastructureConfiguration' smart constructor.+data InfrastructureConfiguration = InfrastructureConfiguration'+  { -- | The Amazon Resource Name (ARN) of the infrastructure configuration.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The date on which the infrastructure configuration was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The date on which the infrastructure configuration was last updated.+    dateUpdated :: Prelude.Maybe Prelude.Text,+    -- | The description of the infrastructure configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The instance metadata option settings for the infrastructure+    -- configuration.+    instanceMetadataOptions :: Prelude.Maybe InstanceMetadataOptions,+    -- | The instance profile of the infrastructure configuration.+    instanceProfileName :: Prelude.Maybe Prelude.Text,+    -- | The instance types of the infrastructure configuration.+    instanceTypes :: Prelude.Maybe [Prelude.Text],+    -- | The Amazon EC2 key pair of the infrastructure configuration.+    keyPair :: Prelude.Maybe Prelude.Text,+    -- | The logging configuration of the infrastructure configuration.+    logging :: Prelude.Maybe Logging,+    -- | The name of the infrastructure configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | The tags attached to the resource created by Image Builder.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The security group IDs of the infrastructure configuration.+    securityGroupIds :: Prelude.Maybe [Prelude.Text],+    -- | The Amazon Resource Name (ARN) for the SNS topic to which we send image+    -- build event notifications.+    --+    -- EC2 Image Builder is unable to send notifications to SNS topics that are+    -- encrypted using keys from other accounts. The key that is used to+    -- encrypt the SNS topic must reside in the account that the Image Builder+    -- service runs under.+    snsTopicArn :: Prelude.Maybe Prelude.Text,+    -- | The subnet ID of the infrastructure configuration.+    subnetId :: Prelude.Maybe Prelude.Text,+    -- | The tags of the infrastructure configuration.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The terminate instance on failure configuration of the infrastructure+    -- configuration.+    terminateInstanceOnFailure :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InfrastructureConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'infrastructureConfiguration_arn' - The Amazon Resource Name (ARN) of the infrastructure configuration.+--+-- 'dateCreated', 'infrastructureConfiguration_dateCreated' - The date on which the infrastructure configuration was created.+--+-- 'dateUpdated', 'infrastructureConfiguration_dateUpdated' - The date on which the infrastructure configuration was last updated.+--+-- 'description', 'infrastructureConfiguration_description' - The description of the infrastructure configuration.+--+-- 'instanceMetadataOptions', 'infrastructureConfiguration_instanceMetadataOptions' - The instance metadata option settings for the infrastructure+-- configuration.+--+-- 'instanceProfileName', 'infrastructureConfiguration_instanceProfileName' - The instance profile of the infrastructure configuration.+--+-- 'instanceTypes', 'infrastructureConfiguration_instanceTypes' - The instance types of the infrastructure configuration.+--+-- 'keyPair', 'infrastructureConfiguration_keyPair' - The Amazon EC2 key pair of the infrastructure configuration.+--+-- 'logging', 'infrastructureConfiguration_logging' - The logging configuration of the infrastructure configuration.+--+-- 'name', 'infrastructureConfiguration_name' - The name of the infrastructure configuration.+--+-- 'resourceTags', 'infrastructureConfiguration_resourceTags' - The tags attached to the resource created by Image Builder.+--+-- 'securityGroupIds', 'infrastructureConfiguration_securityGroupIds' - The security group IDs of the infrastructure configuration.+--+-- 'snsTopicArn', 'infrastructureConfiguration_snsTopicArn' - The Amazon Resource Name (ARN) for the SNS topic to which we send image+-- build event notifications.+--+-- EC2 Image Builder is unable to send notifications to SNS topics that are+-- encrypted using keys from other accounts. The key that is used to+-- encrypt the SNS topic must reside in the account that the Image Builder+-- service runs under.+--+-- 'subnetId', 'infrastructureConfiguration_subnetId' - The subnet ID of the infrastructure configuration.+--+-- 'tags', 'infrastructureConfiguration_tags' - The tags of the infrastructure configuration.+--+-- 'terminateInstanceOnFailure', 'infrastructureConfiguration_terminateInstanceOnFailure' - The terminate instance on failure configuration of the infrastructure+-- configuration.+newInfrastructureConfiguration ::+  InfrastructureConfiguration+newInfrastructureConfiguration =+  InfrastructureConfiguration'+    { arn = Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      dateUpdated = Prelude.Nothing,+      description = Prelude.Nothing,+      instanceMetadataOptions = Prelude.Nothing,+      instanceProfileName = Prelude.Nothing,+      instanceTypes = Prelude.Nothing,+      keyPair = Prelude.Nothing,+      logging = Prelude.Nothing,+      name = Prelude.Nothing,+      resourceTags = Prelude.Nothing,+      securityGroupIds = Prelude.Nothing,+      snsTopicArn = Prelude.Nothing,+      subnetId = Prelude.Nothing,+      tags = Prelude.Nothing,+      terminateInstanceOnFailure = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the infrastructure configuration.+infrastructureConfiguration_arn :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_arn = Lens.lens (\InfrastructureConfiguration' {arn} -> arn) (\s@InfrastructureConfiguration' {} a -> s {arn = a} :: InfrastructureConfiguration)++-- | The date on which the infrastructure configuration was created.+infrastructureConfiguration_dateCreated :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_dateCreated = Lens.lens (\InfrastructureConfiguration' {dateCreated} -> dateCreated) (\s@InfrastructureConfiguration' {} a -> s {dateCreated = a} :: InfrastructureConfiguration)++-- | The date on which the infrastructure configuration was last updated.+infrastructureConfiguration_dateUpdated :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_dateUpdated = Lens.lens (\InfrastructureConfiguration' {dateUpdated} -> dateUpdated) (\s@InfrastructureConfiguration' {} a -> s {dateUpdated = a} :: InfrastructureConfiguration)++-- | The description of the infrastructure configuration.+infrastructureConfiguration_description :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_description = Lens.lens (\InfrastructureConfiguration' {description} -> description) (\s@InfrastructureConfiguration' {} a -> s {description = a} :: InfrastructureConfiguration)++-- | The instance metadata option settings for the infrastructure+-- configuration.+infrastructureConfiguration_instanceMetadataOptions :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe InstanceMetadataOptions)+infrastructureConfiguration_instanceMetadataOptions = Lens.lens (\InfrastructureConfiguration' {instanceMetadataOptions} -> instanceMetadataOptions) (\s@InfrastructureConfiguration' {} a -> s {instanceMetadataOptions = a} :: InfrastructureConfiguration)++-- | The instance profile of the infrastructure configuration.+infrastructureConfiguration_instanceProfileName :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_instanceProfileName = Lens.lens (\InfrastructureConfiguration' {instanceProfileName} -> instanceProfileName) (\s@InfrastructureConfiguration' {} a -> s {instanceProfileName = a} :: InfrastructureConfiguration)++-- | The instance types of the infrastructure configuration.+infrastructureConfiguration_instanceTypes :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe [Prelude.Text])+infrastructureConfiguration_instanceTypes = Lens.lens (\InfrastructureConfiguration' {instanceTypes} -> instanceTypes) (\s@InfrastructureConfiguration' {} a -> s {instanceTypes = a} :: InfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon EC2 key pair of the infrastructure configuration.+infrastructureConfiguration_keyPair :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_keyPair = Lens.lens (\InfrastructureConfiguration' {keyPair} -> keyPair) (\s@InfrastructureConfiguration' {} a -> s {keyPair = a} :: InfrastructureConfiguration)++-- | The logging configuration of the infrastructure configuration.+infrastructureConfiguration_logging :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Logging)+infrastructureConfiguration_logging = Lens.lens (\InfrastructureConfiguration' {logging} -> logging) (\s@InfrastructureConfiguration' {} a -> s {logging = a} :: InfrastructureConfiguration)++-- | The name of the infrastructure configuration.+infrastructureConfiguration_name :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_name = Lens.lens (\InfrastructureConfiguration' {name} -> name) (\s@InfrastructureConfiguration' {} a -> s {name = a} :: InfrastructureConfiguration)++-- | The tags attached to the resource created by Image Builder.+infrastructureConfiguration_resourceTags :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+infrastructureConfiguration_resourceTags = Lens.lens (\InfrastructureConfiguration' {resourceTags} -> resourceTags) (\s@InfrastructureConfiguration' {} a -> s {resourceTags = a} :: InfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The security group IDs of the infrastructure configuration.+infrastructureConfiguration_securityGroupIds :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe [Prelude.Text])+infrastructureConfiguration_securityGroupIds = Lens.lens (\InfrastructureConfiguration' {securityGroupIds} -> securityGroupIds) (\s@InfrastructureConfiguration' {} a -> s {securityGroupIds = a} :: InfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) for the SNS topic to which we send image+-- build event notifications.+--+-- EC2 Image Builder is unable to send notifications to SNS topics that are+-- encrypted using keys from other accounts. The key that is used to+-- encrypt the SNS topic must reside in the account that the Image Builder+-- service runs under.+infrastructureConfiguration_snsTopicArn :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_snsTopicArn = Lens.lens (\InfrastructureConfiguration' {snsTopicArn} -> snsTopicArn) (\s@InfrastructureConfiguration' {} a -> s {snsTopicArn = a} :: InfrastructureConfiguration)++-- | The subnet ID of the infrastructure configuration.+infrastructureConfiguration_subnetId :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Text)+infrastructureConfiguration_subnetId = Lens.lens (\InfrastructureConfiguration' {subnetId} -> subnetId) (\s@InfrastructureConfiguration' {} a -> s {subnetId = a} :: InfrastructureConfiguration)++-- | The tags of the infrastructure configuration.+infrastructureConfiguration_tags :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+infrastructureConfiguration_tags = Lens.lens (\InfrastructureConfiguration' {tags} -> tags) (\s@InfrastructureConfiguration' {} a -> s {tags = a} :: InfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The terminate instance on failure configuration of the infrastructure+-- configuration.+infrastructureConfiguration_terminateInstanceOnFailure :: Lens.Lens' InfrastructureConfiguration (Prelude.Maybe Prelude.Bool)+infrastructureConfiguration_terminateInstanceOnFailure = Lens.lens (\InfrastructureConfiguration' {terminateInstanceOnFailure} -> terminateInstanceOnFailure) (\s@InfrastructureConfiguration' {} a -> s {terminateInstanceOnFailure = a} :: InfrastructureConfiguration)++instance Data.FromJSON InfrastructureConfiguration where+  parseJSON =+    Data.withObject+      "InfrastructureConfiguration"+      ( \x ->+          InfrastructureConfiguration'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "dateUpdated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "instanceMetadataOptions")+            Prelude.<*> (x Data..:? "instanceProfileName")+            Prelude.<*> (x Data..:? "instanceTypes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "keyPair")+            Prelude.<*> (x Data..:? "logging")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "resourceTags" Data..!= Prelude.mempty)+            Prelude.<*> ( x+                            Data..:? "securityGroupIds"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "snsTopicArn")+            Prelude.<*> (x Data..:? "subnetId")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "terminateInstanceOnFailure")+      )++instance Prelude.Hashable InfrastructureConfiguration where+  hashWithSalt _salt InfrastructureConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` dateCreated+      `Prelude.hashWithSalt` dateUpdated+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` instanceMetadataOptions+      `Prelude.hashWithSalt` instanceProfileName+      `Prelude.hashWithSalt` instanceTypes+      `Prelude.hashWithSalt` keyPair+      `Prelude.hashWithSalt` logging+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` resourceTags+      `Prelude.hashWithSalt` securityGroupIds+      `Prelude.hashWithSalt` snsTopicArn+      `Prelude.hashWithSalt` subnetId+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` terminateInstanceOnFailure++instance Prelude.NFData InfrastructureConfiguration where+  rnf InfrastructureConfiguration' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf dateUpdated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf instanceMetadataOptions+      `Prelude.seq` Prelude.rnf instanceProfileName+      `Prelude.seq` Prelude.rnf instanceTypes+      `Prelude.seq` Prelude.rnf keyPair+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf securityGroupIds+      `Prelude.seq` Prelude.rnf snsTopicArn+      `Prelude.seq` Prelude.rnf subnetId+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf terminateInstanceOnFailure
+ gen/Amazonka/ImageBuilder/Types/InfrastructureConfigurationSummary.hs view
@@ -0,0 +1,180 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.InfrastructureConfigurationSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.InfrastructureConfigurationSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The infrastructure used when building Amazon EC2 AMIs.+--+-- /See:/ 'newInfrastructureConfigurationSummary' smart constructor.+data InfrastructureConfigurationSummary = InfrastructureConfigurationSummary'+  { -- | The Amazon Resource Name (ARN) of the infrastructure configuration.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The date on which the infrastructure configuration was created.+    dateCreated :: Prelude.Maybe Prelude.Text,+    -- | The date on which the infrastructure configuration was last updated.+    dateUpdated :: Prelude.Maybe Prelude.Text,+    -- | The description of the infrastructure configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The instance profile of the infrastructure configuration.+    instanceProfileName :: Prelude.Maybe Prelude.Text,+    -- | The instance types of the infrastructure configuration.+    instanceTypes :: Prelude.Maybe [Prelude.Text],+    -- | The name of the infrastructure configuration.+    name :: Prelude.Maybe Prelude.Text,+    -- | The tags attached to the image created by Image Builder.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The tags of the infrastructure configuration.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InfrastructureConfigurationSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'infrastructureConfigurationSummary_arn' - The Amazon Resource Name (ARN) of the infrastructure configuration.+--+-- 'dateCreated', 'infrastructureConfigurationSummary_dateCreated' - The date on which the infrastructure configuration was created.+--+-- 'dateUpdated', 'infrastructureConfigurationSummary_dateUpdated' - The date on which the infrastructure configuration was last updated.+--+-- 'description', 'infrastructureConfigurationSummary_description' - The description of the infrastructure configuration.+--+-- 'instanceProfileName', 'infrastructureConfigurationSummary_instanceProfileName' - The instance profile of the infrastructure configuration.+--+-- 'instanceTypes', 'infrastructureConfigurationSummary_instanceTypes' - The instance types of the infrastructure configuration.+--+-- 'name', 'infrastructureConfigurationSummary_name' - The name of the infrastructure configuration.+--+-- 'resourceTags', 'infrastructureConfigurationSummary_resourceTags' - The tags attached to the image created by Image Builder.+--+-- 'tags', 'infrastructureConfigurationSummary_tags' - The tags of the infrastructure configuration.+newInfrastructureConfigurationSummary ::+  InfrastructureConfigurationSummary+newInfrastructureConfigurationSummary =+  InfrastructureConfigurationSummary'+    { arn =+        Prelude.Nothing,+      dateCreated = Prelude.Nothing,+      dateUpdated = Prelude.Nothing,+      description = Prelude.Nothing,+      instanceProfileName = Prelude.Nothing,+      instanceTypes = Prelude.Nothing,+      name = Prelude.Nothing,+      resourceTags = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the infrastructure configuration.+infrastructureConfigurationSummary_arn :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe Prelude.Text)+infrastructureConfigurationSummary_arn = Lens.lens (\InfrastructureConfigurationSummary' {arn} -> arn) (\s@InfrastructureConfigurationSummary' {} a -> s {arn = a} :: InfrastructureConfigurationSummary)++-- | The date on which the infrastructure configuration was created.+infrastructureConfigurationSummary_dateCreated :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe Prelude.Text)+infrastructureConfigurationSummary_dateCreated = Lens.lens (\InfrastructureConfigurationSummary' {dateCreated} -> dateCreated) (\s@InfrastructureConfigurationSummary' {} a -> s {dateCreated = a} :: InfrastructureConfigurationSummary)++-- | The date on which the infrastructure configuration was last updated.+infrastructureConfigurationSummary_dateUpdated :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe Prelude.Text)+infrastructureConfigurationSummary_dateUpdated = Lens.lens (\InfrastructureConfigurationSummary' {dateUpdated} -> dateUpdated) (\s@InfrastructureConfigurationSummary' {} a -> s {dateUpdated = a} :: InfrastructureConfigurationSummary)++-- | The description of the infrastructure configuration.+infrastructureConfigurationSummary_description :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe Prelude.Text)+infrastructureConfigurationSummary_description = Lens.lens (\InfrastructureConfigurationSummary' {description} -> description) (\s@InfrastructureConfigurationSummary' {} a -> s {description = a} :: InfrastructureConfigurationSummary)++-- | The instance profile of the infrastructure configuration.+infrastructureConfigurationSummary_instanceProfileName :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe Prelude.Text)+infrastructureConfigurationSummary_instanceProfileName = Lens.lens (\InfrastructureConfigurationSummary' {instanceProfileName} -> instanceProfileName) (\s@InfrastructureConfigurationSummary' {} a -> s {instanceProfileName = a} :: InfrastructureConfigurationSummary)++-- | The instance types of the infrastructure configuration.+infrastructureConfigurationSummary_instanceTypes :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe [Prelude.Text])+infrastructureConfigurationSummary_instanceTypes = Lens.lens (\InfrastructureConfigurationSummary' {instanceTypes} -> instanceTypes) (\s@InfrastructureConfigurationSummary' {} a -> s {instanceTypes = a} :: InfrastructureConfigurationSummary) Prelude.. Lens.mapping Lens.coerced++-- | The name of the infrastructure configuration.+infrastructureConfigurationSummary_name :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe Prelude.Text)+infrastructureConfigurationSummary_name = Lens.lens (\InfrastructureConfigurationSummary' {name} -> name) (\s@InfrastructureConfigurationSummary' {} a -> s {name = a} :: InfrastructureConfigurationSummary)++-- | The tags attached to the image created by Image Builder.+infrastructureConfigurationSummary_resourceTags :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+infrastructureConfigurationSummary_resourceTags = Lens.lens (\InfrastructureConfigurationSummary' {resourceTags} -> resourceTags) (\s@InfrastructureConfigurationSummary' {} a -> s {resourceTags = a} :: InfrastructureConfigurationSummary) Prelude.. Lens.mapping Lens.coerced++-- | The tags of the infrastructure configuration.+infrastructureConfigurationSummary_tags :: Lens.Lens' InfrastructureConfigurationSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+infrastructureConfigurationSummary_tags = Lens.lens (\InfrastructureConfigurationSummary' {tags} -> tags) (\s@InfrastructureConfigurationSummary' {} a -> s {tags = a} :: InfrastructureConfigurationSummary) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    InfrastructureConfigurationSummary+  where+  parseJSON =+    Data.withObject+      "InfrastructureConfigurationSummary"+      ( \x ->+          InfrastructureConfigurationSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "dateCreated")+            Prelude.<*> (x Data..:? "dateUpdated")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "instanceProfileName")+            Prelude.<*> (x Data..:? "instanceTypes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "resourceTags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    InfrastructureConfigurationSummary+  where+  hashWithSalt+    _salt+    InfrastructureConfigurationSummary' {..} =+      _salt+        `Prelude.hashWithSalt` arn+        `Prelude.hashWithSalt` dateCreated+        `Prelude.hashWithSalt` dateUpdated+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` instanceProfileName+        `Prelude.hashWithSalt` instanceTypes+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` resourceTags+        `Prelude.hashWithSalt` tags++instance+  Prelude.NFData+    InfrastructureConfigurationSummary+  where+  rnf InfrastructureConfigurationSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf dateCreated+      `Prelude.seq` Prelude.rnf dateUpdated+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf instanceProfileName+      `Prelude.seq` Prelude.rnf instanceTypes+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/ImageBuilder/Types/InstanceBlockDeviceMapping.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.InstanceBlockDeviceMapping+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.InstanceBlockDeviceMapping where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.EbsInstanceBlockDeviceSpecification+import qualified Amazonka.Prelude as Prelude++-- | Defines block device mappings for the instance used to configure your+-- image.+--+-- /See:/ 'newInstanceBlockDeviceMapping' smart constructor.+data InstanceBlockDeviceMapping = InstanceBlockDeviceMapping'+  { -- | The device to which these mappings apply.+    deviceName :: Prelude.Maybe Prelude.Text,+    -- | Use to manage Amazon EBS-specific configuration for this mapping.+    ebs :: Prelude.Maybe EbsInstanceBlockDeviceSpecification,+    -- | Use to remove a mapping from the base image.+    noDevice :: Prelude.Maybe Prelude.Text,+    -- | Use to manage instance ephemeral devices.+    virtualName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InstanceBlockDeviceMapping' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deviceName', 'instanceBlockDeviceMapping_deviceName' - The device to which these mappings apply.+--+-- 'ebs', 'instanceBlockDeviceMapping_ebs' - Use to manage Amazon EBS-specific configuration for this mapping.+--+-- 'noDevice', 'instanceBlockDeviceMapping_noDevice' - Use to remove a mapping from the base image.+--+-- 'virtualName', 'instanceBlockDeviceMapping_virtualName' - Use to manage instance ephemeral devices.+newInstanceBlockDeviceMapping ::+  InstanceBlockDeviceMapping+newInstanceBlockDeviceMapping =+  InstanceBlockDeviceMapping'+    { deviceName =+        Prelude.Nothing,+      ebs = Prelude.Nothing,+      noDevice = Prelude.Nothing,+      virtualName = Prelude.Nothing+    }++-- | The device to which these mappings apply.+instanceBlockDeviceMapping_deviceName :: Lens.Lens' InstanceBlockDeviceMapping (Prelude.Maybe Prelude.Text)+instanceBlockDeviceMapping_deviceName = Lens.lens (\InstanceBlockDeviceMapping' {deviceName} -> deviceName) (\s@InstanceBlockDeviceMapping' {} a -> s {deviceName = a} :: InstanceBlockDeviceMapping)++-- | Use to manage Amazon EBS-specific configuration for this mapping.+instanceBlockDeviceMapping_ebs :: Lens.Lens' InstanceBlockDeviceMapping (Prelude.Maybe EbsInstanceBlockDeviceSpecification)+instanceBlockDeviceMapping_ebs = Lens.lens (\InstanceBlockDeviceMapping' {ebs} -> ebs) (\s@InstanceBlockDeviceMapping' {} a -> s {ebs = a} :: InstanceBlockDeviceMapping)++-- | Use to remove a mapping from the base image.+instanceBlockDeviceMapping_noDevice :: Lens.Lens' InstanceBlockDeviceMapping (Prelude.Maybe Prelude.Text)+instanceBlockDeviceMapping_noDevice = Lens.lens (\InstanceBlockDeviceMapping' {noDevice} -> noDevice) (\s@InstanceBlockDeviceMapping' {} a -> s {noDevice = a} :: InstanceBlockDeviceMapping)++-- | Use to manage instance ephemeral devices.+instanceBlockDeviceMapping_virtualName :: Lens.Lens' InstanceBlockDeviceMapping (Prelude.Maybe Prelude.Text)+instanceBlockDeviceMapping_virtualName = Lens.lens (\InstanceBlockDeviceMapping' {virtualName} -> virtualName) (\s@InstanceBlockDeviceMapping' {} a -> s {virtualName = a} :: InstanceBlockDeviceMapping)++instance Data.FromJSON InstanceBlockDeviceMapping where+  parseJSON =+    Data.withObject+      "InstanceBlockDeviceMapping"+      ( \x ->+          InstanceBlockDeviceMapping'+            Prelude.<$> (x Data..:? "deviceName")+            Prelude.<*> (x Data..:? "ebs")+            Prelude.<*> (x Data..:? "noDevice")+            Prelude.<*> (x Data..:? "virtualName")+      )++instance Prelude.Hashable InstanceBlockDeviceMapping where+  hashWithSalt _salt InstanceBlockDeviceMapping' {..} =+    _salt+      `Prelude.hashWithSalt` deviceName+      `Prelude.hashWithSalt` ebs+      `Prelude.hashWithSalt` noDevice+      `Prelude.hashWithSalt` virtualName++instance Prelude.NFData InstanceBlockDeviceMapping where+  rnf InstanceBlockDeviceMapping' {..} =+    Prelude.rnf deviceName+      `Prelude.seq` Prelude.rnf ebs+      `Prelude.seq` Prelude.rnf noDevice+      `Prelude.seq` Prelude.rnf virtualName++instance Data.ToJSON InstanceBlockDeviceMapping where+  toJSON InstanceBlockDeviceMapping' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("deviceName" Data..=) Prelude.<$> deviceName,+            ("ebs" Data..=) Prelude.<$> ebs,+            ("noDevice" Data..=) Prelude.<$> noDevice,+            ("virtualName" Data..=) Prelude.<$> virtualName+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/InstanceConfiguration.hs view
@@ -0,0 +1,109 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.InstanceConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.InstanceConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.InstanceBlockDeviceMapping+import qualified Amazonka.Prelude as Prelude++-- | Defines a custom base AMI and block device mapping configurations of an+-- instance used for building and testing container images.+--+-- /See:/ 'newInstanceConfiguration' smart constructor.+data InstanceConfiguration = InstanceConfiguration'+  { -- | Defines the block devices to attach for building an instance from this+    -- Image Builder AMI.+    blockDeviceMappings :: Prelude.Maybe [InstanceBlockDeviceMapping],+    -- | The AMI ID to use as the base image for a container build and test+    -- instance. If not specified, Image Builder will use the appropriate+    -- ECS-optimized AMI as a base image.+    image :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InstanceConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'blockDeviceMappings', 'instanceConfiguration_blockDeviceMappings' - Defines the block devices to attach for building an instance from this+-- Image Builder AMI.+--+-- 'image', 'instanceConfiguration_image' - The AMI ID to use as the base image for a container build and test+-- instance. If not specified, Image Builder will use the appropriate+-- ECS-optimized AMI as a base image.+newInstanceConfiguration ::+  InstanceConfiguration+newInstanceConfiguration =+  InstanceConfiguration'+    { blockDeviceMappings =+        Prelude.Nothing,+      image = Prelude.Nothing+    }++-- | Defines the block devices to attach for building an instance from this+-- Image Builder AMI.+instanceConfiguration_blockDeviceMappings :: Lens.Lens' InstanceConfiguration (Prelude.Maybe [InstanceBlockDeviceMapping])+instanceConfiguration_blockDeviceMappings = Lens.lens (\InstanceConfiguration' {blockDeviceMappings} -> blockDeviceMappings) (\s@InstanceConfiguration' {} a -> s {blockDeviceMappings = a} :: InstanceConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The AMI ID to use as the base image for a container build and test+-- instance. If not specified, Image Builder will use the appropriate+-- ECS-optimized AMI as a base image.+instanceConfiguration_image :: Lens.Lens' InstanceConfiguration (Prelude.Maybe Prelude.Text)+instanceConfiguration_image = Lens.lens (\InstanceConfiguration' {image} -> image) (\s@InstanceConfiguration' {} a -> s {image = a} :: InstanceConfiguration)++instance Data.FromJSON InstanceConfiguration where+  parseJSON =+    Data.withObject+      "InstanceConfiguration"+      ( \x ->+          InstanceConfiguration'+            Prelude.<$> ( x+                            Data..:? "blockDeviceMappings"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "image")+      )++instance Prelude.Hashable InstanceConfiguration where+  hashWithSalt _salt InstanceConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` blockDeviceMappings+      `Prelude.hashWithSalt` image++instance Prelude.NFData InstanceConfiguration where+  rnf InstanceConfiguration' {..} =+    Prelude.rnf blockDeviceMappings+      `Prelude.seq` Prelude.rnf image++instance Data.ToJSON InstanceConfiguration where+  toJSON InstanceConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("blockDeviceMappings" Data..=)+              Prelude.<$> blockDeviceMappings,+            ("image" Data..=) Prelude.<$> image+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/InstanceMetadataOptions.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.InstanceMetadataOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.InstanceMetadataOptions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The instance metadata options that apply to the HTTP requests that+-- pipeline builds use to launch EC2 build and test instances. For more+-- information about instance metadata options, see+-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+-- in the //Amazon EC2 User Guide// for Linux instances, or+-- <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+-- in the //Amazon EC2 Windows Guide// for Windows instances.+--+-- /See:/ 'newInstanceMetadataOptions' smart constructor.+data InstanceMetadataOptions = InstanceMetadataOptions'+  { -- | Limit the number of hops that an instance metadata request can traverse+    -- to reach its destination.+    httpPutResponseHopLimit :: Prelude.Maybe Prelude.Natural,+    -- | Indicates whether a signed token header is required for instance+    -- metadata retrieval requests. The values affect the response as follows:+    --+    -- -   __required__ – When you retrieve the IAM role credentials, version+    --     2.0 credentials are returned in all cases.+    --+    -- -   __optional__ – You can include a signed token header in your request+    --     to retrieve instance metadata, or you can leave it out. If you+    --     include it, version 2.0 credentials are returned for the IAM role.+    --     Otherwise, version 1.0 credentials are returned.+    --+    -- The default setting is __optional__.+    httpTokens :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InstanceMetadataOptions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpPutResponseHopLimit', 'instanceMetadataOptions_httpPutResponseHopLimit' - Limit the number of hops that an instance metadata request can traverse+-- to reach its destination.+--+-- 'httpTokens', 'instanceMetadataOptions_httpTokens' - Indicates whether a signed token header is required for instance+-- metadata retrieval requests. The values affect the response as follows:+--+-- -   __required__ – When you retrieve the IAM role credentials, version+--     2.0 credentials are returned in all cases.+--+-- -   __optional__ – You can include a signed token header in your request+--     to retrieve instance metadata, or you can leave it out. If you+--     include it, version 2.0 credentials are returned for the IAM role.+--     Otherwise, version 1.0 credentials are returned.+--+-- The default setting is __optional__.+newInstanceMetadataOptions ::+  InstanceMetadataOptions+newInstanceMetadataOptions =+  InstanceMetadataOptions'+    { httpPutResponseHopLimit =+        Prelude.Nothing,+      httpTokens = Prelude.Nothing+    }++-- | Limit the number of hops that an instance metadata request can traverse+-- to reach its destination.+instanceMetadataOptions_httpPutResponseHopLimit :: Lens.Lens' InstanceMetadataOptions (Prelude.Maybe Prelude.Natural)+instanceMetadataOptions_httpPutResponseHopLimit = Lens.lens (\InstanceMetadataOptions' {httpPutResponseHopLimit} -> httpPutResponseHopLimit) (\s@InstanceMetadataOptions' {} a -> s {httpPutResponseHopLimit = a} :: InstanceMetadataOptions)++-- | Indicates whether a signed token header is required for instance+-- metadata retrieval requests. The values affect the response as follows:+--+-- -   __required__ – When you retrieve the IAM role credentials, version+--     2.0 credentials are returned in all cases.+--+-- -   __optional__ – You can include a signed token header in your request+--     to retrieve instance metadata, or you can leave it out. If you+--     include it, version 2.0 credentials are returned for the IAM role.+--     Otherwise, version 1.0 credentials are returned.+--+-- The default setting is __optional__.+instanceMetadataOptions_httpTokens :: Lens.Lens' InstanceMetadataOptions (Prelude.Maybe Prelude.Text)+instanceMetadataOptions_httpTokens = Lens.lens (\InstanceMetadataOptions' {httpTokens} -> httpTokens) (\s@InstanceMetadataOptions' {} a -> s {httpTokens = a} :: InstanceMetadataOptions)++instance Data.FromJSON InstanceMetadataOptions where+  parseJSON =+    Data.withObject+      "InstanceMetadataOptions"+      ( \x ->+          InstanceMetadataOptions'+            Prelude.<$> (x Data..:? "httpPutResponseHopLimit")+            Prelude.<*> (x Data..:? "httpTokens")+      )++instance Prelude.Hashable InstanceMetadataOptions where+  hashWithSalt _salt InstanceMetadataOptions' {..} =+    _salt+      `Prelude.hashWithSalt` httpPutResponseHopLimit+      `Prelude.hashWithSalt` httpTokens++instance Prelude.NFData InstanceMetadataOptions where+  rnf InstanceMetadataOptions' {..} =+    Prelude.rnf httpPutResponseHopLimit+      `Prelude.seq` Prelude.rnf httpTokens++instance Data.ToJSON InstanceMetadataOptions where+  toJSON InstanceMetadataOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("httpPutResponseHopLimit" Data..=)+              Prelude.<$> httpPutResponseHopLimit,+            ("httpTokens" Data..=) Prelude.<$> httpTokens+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/LaunchPermissionConfiguration.hs view
@@ -0,0 +1,147 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.LaunchPermissionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.LaunchPermissionConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes the configuration for a launch permission. The launch+-- permission modification request is sent to the+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html Amazon EC2 ModifyImageAttribute>+-- API on behalf of the user for each Region they have selected to+-- distribute the AMI. To make an AMI public, set the launch permission+-- authorized accounts to @all@. See the examples for making an AMI public+-- at+-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html Amazon EC2 ModifyImageAttribute>.+--+-- /See:/ 'newLaunchPermissionConfiguration' smart constructor.+data LaunchPermissionConfiguration = LaunchPermissionConfiguration'+  { -- | The ARN for an Amazon Web Services Organization that you want to share+    -- your AMI with. For more information, see+    -- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html What is Organizations?>.+    organizationArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The ARN for an Organizations organizational unit (OU) that you want to+    -- share your AMI with. For more information about key concepts for+    -- Organizations, see+    -- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html Organizations terminology and concepts>.+    organizationalUnitArns :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),+    -- | The name of the group.+    userGroups :: Prelude.Maybe [Prelude.Text],+    -- | The Amazon Web Services account ID.+    userIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LaunchPermissionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'organizationArns', 'launchPermissionConfiguration_organizationArns' - The ARN for an Amazon Web Services Organization that you want to share+-- your AMI with. For more information, see+-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html What is Organizations?>.+--+-- 'organizationalUnitArns', 'launchPermissionConfiguration_organizationalUnitArns' - The ARN for an Organizations organizational unit (OU) that you want to+-- share your AMI with. For more information about key concepts for+-- Organizations, see+-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html Organizations terminology and concepts>.+--+-- 'userGroups', 'launchPermissionConfiguration_userGroups' - The name of the group.+--+-- 'userIds', 'launchPermissionConfiguration_userIds' - The Amazon Web Services account ID.+newLaunchPermissionConfiguration ::+  LaunchPermissionConfiguration+newLaunchPermissionConfiguration =+  LaunchPermissionConfiguration'+    { organizationArns =+        Prelude.Nothing,+      organizationalUnitArns = Prelude.Nothing,+      userGroups = Prelude.Nothing,+      userIds = Prelude.Nothing+    }++-- | The ARN for an Amazon Web Services Organization that you want to share+-- your AMI with. For more information, see+-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html What is Organizations?>.+launchPermissionConfiguration_organizationArns :: Lens.Lens' LaunchPermissionConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+launchPermissionConfiguration_organizationArns = Lens.lens (\LaunchPermissionConfiguration' {organizationArns} -> organizationArns) (\s@LaunchPermissionConfiguration' {} a -> s {organizationArns = a} :: LaunchPermissionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The ARN for an Organizations organizational unit (OU) that you want to+-- share your AMI with. For more information about key concepts for+-- Organizations, see+-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html Organizations terminology and concepts>.+launchPermissionConfiguration_organizationalUnitArns :: Lens.Lens' LaunchPermissionConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+launchPermissionConfiguration_organizationalUnitArns = Lens.lens (\LaunchPermissionConfiguration' {organizationalUnitArns} -> organizationalUnitArns) (\s@LaunchPermissionConfiguration' {} a -> s {organizationalUnitArns = a} :: LaunchPermissionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The name of the group.+launchPermissionConfiguration_userGroups :: Lens.Lens' LaunchPermissionConfiguration (Prelude.Maybe [Prelude.Text])+launchPermissionConfiguration_userGroups = Lens.lens (\LaunchPermissionConfiguration' {userGroups} -> userGroups) (\s@LaunchPermissionConfiguration' {} a -> s {userGroups = a} :: LaunchPermissionConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Web Services account ID.+launchPermissionConfiguration_userIds :: Lens.Lens' LaunchPermissionConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+launchPermissionConfiguration_userIds = Lens.lens (\LaunchPermissionConfiguration' {userIds} -> userIds) (\s@LaunchPermissionConfiguration' {} a -> s {userIds = a} :: LaunchPermissionConfiguration) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON LaunchPermissionConfiguration where+  parseJSON =+    Data.withObject+      "LaunchPermissionConfiguration"+      ( \x ->+          LaunchPermissionConfiguration'+            Prelude.<$> (x Data..:? "organizationArns")+            Prelude.<*> (x Data..:? "organizationalUnitArns")+            Prelude.<*> (x Data..:? "userGroups" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "userIds")+      )++instance+  Prelude.Hashable+    LaunchPermissionConfiguration+  where+  hashWithSalt _salt LaunchPermissionConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` organizationArns+      `Prelude.hashWithSalt` organizationalUnitArns+      `Prelude.hashWithSalt` userGroups+      `Prelude.hashWithSalt` userIds++instance Prelude.NFData LaunchPermissionConfiguration where+  rnf LaunchPermissionConfiguration' {..} =+    Prelude.rnf organizationArns+      `Prelude.seq` Prelude.rnf organizationalUnitArns+      `Prelude.seq` Prelude.rnf userGroups+      `Prelude.seq` Prelude.rnf userIds++instance Data.ToJSON LaunchPermissionConfiguration where+  toJSON LaunchPermissionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("organizationArns" Data..=)+              Prelude.<$> organizationArns,+            ("organizationalUnitArns" Data..=)+              Prelude.<$> organizationalUnitArns,+            ("userGroups" Data..=) Prelude.<$> userGroups,+            ("userIds" Data..=) Prelude.<$> userIds+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/LaunchTemplateConfiguration.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.LaunchTemplateConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.LaunchTemplateConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Identifies an Amazon EC2 launch template to use for a specific account.+--+-- /See:/ 'newLaunchTemplateConfiguration' smart constructor.+data LaunchTemplateConfiguration = LaunchTemplateConfiguration'+  { -- | The account ID that this configuration applies to.+    accountId :: Prelude.Maybe Prelude.Text,+    -- | Set the specified Amazon EC2 launch template as the default launch+    -- template for the specified account.+    setDefaultVersion :: Prelude.Maybe Prelude.Bool,+    -- | Identifies the Amazon EC2 launch template to use.+    launchTemplateId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LaunchTemplateConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accountId', 'launchTemplateConfiguration_accountId' - The account ID that this configuration applies to.+--+-- 'setDefaultVersion', 'launchTemplateConfiguration_setDefaultVersion' - Set the specified Amazon EC2 launch template as the default launch+-- template for the specified account.+--+-- 'launchTemplateId', 'launchTemplateConfiguration_launchTemplateId' - Identifies the Amazon EC2 launch template to use.+newLaunchTemplateConfiguration ::+  -- | 'launchTemplateId'+  Prelude.Text ->+  LaunchTemplateConfiguration+newLaunchTemplateConfiguration pLaunchTemplateId_ =+  LaunchTemplateConfiguration'+    { accountId =+        Prelude.Nothing,+      setDefaultVersion = Prelude.Nothing,+      launchTemplateId = pLaunchTemplateId_+    }++-- | The account ID that this configuration applies to.+launchTemplateConfiguration_accountId :: Lens.Lens' LaunchTemplateConfiguration (Prelude.Maybe Prelude.Text)+launchTemplateConfiguration_accountId = Lens.lens (\LaunchTemplateConfiguration' {accountId} -> accountId) (\s@LaunchTemplateConfiguration' {} a -> s {accountId = a} :: LaunchTemplateConfiguration)++-- | Set the specified Amazon EC2 launch template as the default launch+-- template for the specified account.+launchTemplateConfiguration_setDefaultVersion :: Lens.Lens' LaunchTemplateConfiguration (Prelude.Maybe Prelude.Bool)+launchTemplateConfiguration_setDefaultVersion = Lens.lens (\LaunchTemplateConfiguration' {setDefaultVersion} -> setDefaultVersion) (\s@LaunchTemplateConfiguration' {} a -> s {setDefaultVersion = a} :: LaunchTemplateConfiguration)++-- | Identifies the Amazon EC2 launch template to use.+launchTemplateConfiguration_launchTemplateId :: Lens.Lens' LaunchTemplateConfiguration Prelude.Text+launchTemplateConfiguration_launchTemplateId = Lens.lens (\LaunchTemplateConfiguration' {launchTemplateId} -> launchTemplateId) (\s@LaunchTemplateConfiguration' {} a -> s {launchTemplateId = a} :: LaunchTemplateConfiguration)++instance Data.FromJSON LaunchTemplateConfiguration where+  parseJSON =+    Data.withObject+      "LaunchTemplateConfiguration"+      ( \x ->+          LaunchTemplateConfiguration'+            Prelude.<$> (x Data..:? "accountId")+            Prelude.<*> (x Data..:? "setDefaultVersion")+            Prelude.<*> (x Data..: "launchTemplateId")+      )++instance Prelude.Hashable LaunchTemplateConfiguration where+  hashWithSalt _salt LaunchTemplateConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` accountId+      `Prelude.hashWithSalt` setDefaultVersion+      `Prelude.hashWithSalt` launchTemplateId++instance Prelude.NFData LaunchTemplateConfiguration where+  rnf LaunchTemplateConfiguration' {..} =+    Prelude.rnf accountId+      `Prelude.seq` Prelude.rnf setDefaultVersion+      `Prelude.seq` Prelude.rnf launchTemplateId++instance Data.ToJSON LaunchTemplateConfiguration where+  toJSON LaunchTemplateConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("accountId" Data..=) Prelude.<$> accountId,+            ("setDefaultVersion" Data..=)+              Prelude.<$> setDefaultVersion,+            Prelude.Just+              ("launchTemplateId" Data..= launchTemplateId)+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/Logging.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Logging+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Logging where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.S3Logs+import qualified Amazonka.Prelude as Prelude++-- | Logging configuration defines where Image Builder uploads your logs.+--+-- /See:/ 'newLogging' smart constructor.+data Logging = Logging'+  { -- | The Amazon S3 logging configuration.+    s3Logs :: Prelude.Maybe S3Logs+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Logging' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3Logs', 'logging_s3Logs' - The Amazon S3 logging configuration.+newLogging ::+  Logging+newLogging = Logging' {s3Logs = Prelude.Nothing}++-- | The Amazon S3 logging configuration.+logging_s3Logs :: Lens.Lens' Logging (Prelude.Maybe S3Logs)+logging_s3Logs = Lens.lens (\Logging' {s3Logs} -> s3Logs) (\s@Logging' {} a -> s {s3Logs = a} :: Logging)++instance Data.FromJSON Logging where+  parseJSON =+    Data.withObject+      "Logging"+      (\x -> Logging' Prelude.<$> (x Data..:? "s3Logs"))++instance Prelude.Hashable Logging where+  hashWithSalt _salt Logging' {..} =+    _salt `Prelude.hashWithSalt` s3Logs++instance Prelude.NFData Logging where+  rnf Logging' {..} = Prelude.rnf s3Logs++instance Data.ToJSON Logging where+  toJSON Logging' {..} =+    Data.object+      ( Prelude.catMaybes+          [("s3Logs" Data..=) Prelude.<$> s3Logs]+      )
+ gen/Amazonka/ImageBuilder/Types/OutputResources.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.OutputResources+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.OutputResources where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.Ami+import Amazonka.ImageBuilder.Types.Container+import qualified Amazonka.Prelude as Prelude++-- | The resources produced by this image.+--+-- /See:/ 'newOutputResources' smart constructor.+data OutputResources = OutputResources'+  { -- | The Amazon EC2 AMIs created by this image.+    amis :: Prelude.Maybe [Ami],+    -- | Container images that the pipeline has generated and stored in the+    -- output repository.+    containers :: Prelude.Maybe [Container]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OutputResources' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'amis', 'outputResources_amis' - The Amazon EC2 AMIs created by this image.+--+-- 'containers', 'outputResources_containers' - Container images that the pipeline has generated and stored in the+-- output repository.+newOutputResources ::+  OutputResources+newOutputResources =+  OutputResources'+    { amis = Prelude.Nothing,+      containers = Prelude.Nothing+    }++-- | The Amazon EC2 AMIs created by this image.+outputResources_amis :: Lens.Lens' OutputResources (Prelude.Maybe [Ami])+outputResources_amis = Lens.lens (\OutputResources' {amis} -> amis) (\s@OutputResources' {} a -> s {amis = a} :: OutputResources) Prelude.. Lens.mapping Lens.coerced++-- | Container images that the pipeline has generated and stored in the+-- output repository.+outputResources_containers :: Lens.Lens' OutputResources (Prelude.Maybe [Container])+outputResources_containers = Lens.lens (\OutputResources' {containers} -> containers) (\s@OutputResources' {} a -> s {containers = a} :: OutputResources) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON OutputResources where+  parseJSON =+    Data.withObject+      "OutputResources"+      ( \x ->+          OutputResources'+            Prelude.<$> (x Data..:? "amis" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "containers" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable OutputResources where+  hashWithSalt _salt OutputResources' {..} =+    _salt+      `Prelude.hashWithSalt` amis+      `Prelude.hashWithSalt` containers++instance Prelude.NFData OutputResources where+  rnf OutputResources' {..} =+    Prelude.rnf amis+      `Prelude.seq` Prelude.rnf containers
+ gen/Amazonka/ImageBuilder/Types/Ownership.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Ownership+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Ownership+  ( Ownership+      ( ..,+        Ownership_Amazon,+        Ownership_Self,+        Ownership_Shared+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Ownership = Ownership'+  { fromOwnership ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern Ownership_Amazon :: Ownership+pattern Ownership_Amazon = Ownership' "Amazon"++pattern Ownership_Self :: Ownership+pattern Ownership_Self = Ownership' "Self"++pattern Ownership_Shared :: Ownership+pattern Ownership_Shared = Ownership' "Shared"++{-# COMPLETE+  Ownership_Amazon,+  Ownership_Self,+  Ownership_Shared,+  Ownership'+  #-}
+ gen/Amazonka/ImageBuilder/Types/PipelineExecutionStartCondition.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.PipelineExecutionStartCondition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.PipelineExecutionStartCondition+  ( PipelineExecutionStartCondition+      ( ..,+        PipelineExecutionStartCondition_EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE,+        PipelineExecutionStartCondition_EXPRESSION_MATCH_ONLY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PipelineExecutionStartCondition = PipelineExecutionStartCondition'+  { fromPipelineExecutionStartCondition ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern PipelineExecutionStartCondition_EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE :: PipelineExecutionStartCondition+pattern PipelineExecutionStartCondition_EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE = PipelineExecutionStartCondition' "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE"++pattern PipelineExecutionStartCondition_EXPRESSION_MATCH_ONLY :: PipelineExecutionStartCondition+pattern PipelineExecutionStartCondition_EXPRESSION_MATCH_ONLY = PipelineExecutionStartCondition' "EXPRESSION_MATCH_ONLY"++{-# COMPLETE+  PipelineExecutionStartCondition_EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE,+  PipelineExecutionStartCondition_EXPRESSION_MATCH_ONLY,+  PipelineExecutionStartCondition'+  #-}
+ gen/Amazonka/ImageBuilder/Types/PipelineStatus.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.PipelineStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.PipelineStatus+  ( PipelineStatus+      ( ..,+        PipelineStatus_DISABLED,+        PipelineStatus_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PipelineStatus = PipelineStatus'+  { fromPipelineStatus ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern PipelineStatus_DISABLED :: PipelineStatus+pattern PipelineStatus_DISABLED = PipelineStatus' "DISABLED"++pattern PipelineStatus_ENABLED :: PipelineStatus+pattern PipelineStatus_ENABLED = PipelineStatus' "ENABLED"++{-# COMPLETE+  PipelineStatus_DISABLED,+  PipelineStatus_ENABLED,+  PipelineStatus'+  #-}
+ gen/Amazonka/ImageBuilder/Types/Platform.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Platform+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Platform+  ( Platform+      ( ..,+        Platform_Linux,+        Platform_Windows+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Platform = Platform'+  { fromPlatform ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern Platform_Linux :: Platform+pattern Platform_Linux = Platform' "Linux"++pattern Platform_Windows :: Platform+pattern Platform_Windows = Platform' "Windows"++{-# COMPLETE+  Platform_Linux,+  Platform_Windows,+  Platform'+  #-}
+ gen/Amazonka/ImageBuilder/Types/S3ExportConfiguration.hs view
@@ -0,0 +1,164 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.S3ExportConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.S3ExportConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.DiskImageFormat+import qualified Amazonka.Prelude as Prelude++-- | Properties that configure export from your build instance to a+-- compatible file format for your VM.+--+-- /See:/ 'newS3ExportConfiguration' smart constructor.+data S3ExportConfiguration = S3ExportConfiguration'+  { -- | The Amazon S3 path for the bucket where the output disk images for your+    -- VM are stored.+    s3Prefix :: Prelude.Maybe Prelude.Text,+    -- | The name of the role that grants VM Import\/Export permission to export+    -- images to your S3 bucket.+    roleName :: Prelude.Text,+    -- | Export the updated image to one of the following supported disk image+    -- formats:+    --+    -- -   __Virtual Hard Disk (VHD)__ – Compatible with Citrix Xen and+    --     Microsoft Hyper-V virtualization products.+    --+    -- -   __Stream-optimized ESX Virtual Machine Disk (VMDK)__ – Compatible+    --     with VMware ESX and VMware vSphere versions 4, 5, and 6.+    --+    -- -   __Raw__ – Raw format.+    diskImageFormat :: DiskImageFormat,+    -- | The S3 bucket in which to store the output disk images for your VM.+    s3Bucket :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3ExportConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3Prefix', 's3ExportConfiguration_s3Prefix' - The Amazon S3 path for the bucket where the output disk images for your+-- VM are stored.+--+-- 'roleName', 's3ExportConfiguration_roleName' - The name of the role that grants VM Import\/Export permission to export+-- images to your S3 bucket.+--+-- 'diskImageFormat', 's3ExportConfiguration_diskImageFormat' - Export the updated image to one of the following supported disk image+-- formats:+--+-- -   __Virtual Hard Disk (VHD)__ – Compatible with Citrix Xen and+--     Microsoft Hyper-V virtualization products.+--+-- -   __Stream-optimized ESX Virtual Machine Disk (VMDK)__ – Compatible+--     with VMware ESX and VMware vSphere versions 4, 5, and 6.+--+-- -   __Raw__ – Raw format.+--+-- 's3Bucket', 's3ExportConfiguration_s3Bucket' - The S3 bucket in which to store the output disk images for your VM.+newS3ExportConfiguration ::+  -- | 'roleName'+  Prelude.Text ->+  -- | 'diskImageFormat'+  DiskImageFormat ->+  -- | 's3Bucket'+  Prelude.Text ->+  S3ExportConfiguration+newS3ExportConfiguration+  pRoleName_+  pDiskImageFormat_+  pS3Bucket_ =+    S3ExportConfiguration'+      { s3Prefix = Prelude.Nothing,+        roleName = pRoleName_,+        diskImageFormat = pDiskImageFormat_,+        s3Bucket = pS3Bucket_+      }++-- | The Amazon S3 path for the bucket where the output disk images for your+-- VM are stored.+s3ExportConfiguration_s3Prefix :: Lens.Lens' S3ExportConfiguration (Prelude.Maybe Prelude.Text)+s3ExportConfiguration_s3Prefix = Lens.lens (\S3ExportConfiguration' {s3Prefix} -> s3Prefix) (\s@S3ExportConfiguration' {} a -> s {s3Prefix = a} :: S3ExportConfiguration)++-- | The name of the role that grants VM Import\/Export permission to export+-- images to your S3 bucket.+s3ExportConfiguration_roleName :: Lens.Lens' S3ExportConfiguration Prelude.Text+s3ExportConfiguration_roleName = Lens.lens (\S3ExportConfiguration' {roleName} -> roleName) (\s@S3ExportConfiguration' {} a -> s {roleName = a} :: S3ExportConfiguration)++-- | Export the updated image to one of the following supported disk image+-- formats:+--+-- -   __Virtual Hard Disk (VHD)__ – Compatible with Citrix Xen and+--     Microsoft Hyper-V virtualization products.+--+-- -   __Stream-optimized ESX Virtual Machine Disk (VMDK)__ – Compatible+--     with VMware ESX and VMware vSphere versions 4, 5, and 6.+--+-- -   __Raw__ – Raw format.+s3ExportConfiguration_diskImageFormat :: Lens.Lens' S3ExportConfiguration DiskImageFormat+s3ExportConfiguration_diskImageFormat = Lens.lens (\S3ExportConfiguration' {diskImageFormat} -> diskImageFormat) (\s@S3ExportConfiguration' {} a -> s {diskImageFormat = a} :: S3ExportConfiguration)++-- | The S3 bucket in which to store the output disk images for your VM.+s3ExportConfiguration_s3Bucket :: Lens.Lens' S3ExportConfiguration Prelude.Text+s3ExportConfiguration_s3Bucket = Lens.lens (\S3ExportConfiguration' {s3Bucket} -> s3Bucket) (\s@S3ExportConfiguration' {} a -> s {s3Bucket = a} :: S3ExportConfiguration)++instance Data.FromJSON S3ExportConfiguration where+  parseJSON =+    Data.withObject+      "S3ExportConfiguration"+      ( \x ->+          S3ExportConfiguration'+            Prelude.<$> (x Data..:? "s3Prefix")+            Prelude.<*> (x Data..: "roleName")+            Prelude.<*> (x Data..: "diskImageFormat")+            Prelude.<*> (x Data..: "s3Bucket")+      )++instance Prelude.Hashable S3ExportConfiguration where+  hashWithSalt _salt S3ExportConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` s3Prefix+      `Prelude.hashWithSalt` roleName+      `Prelude.hashWithSalt` diskImageFormat+      `Prelude.hashWithSalt` s3Bucket++instance Prelude.NFData S3ExportConfiguration where+  rnf S3ExportConfiguration' {..} =+    Prelude.rnf s3Prefix+      `Prelude.seq` Prelude.rnf roleName+      `Prelude.seq` Prelude.rnf diskImageFormat+      `Prelude.seq` Prelude.rnf s3Bucket++instance Data.ToJSON S3ExportConfiguration where+  toJSON S3ExportConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("s3Prefix" Data..=) Prelude.<$> s3Prefix,+            Prelude.Just ("roleName" Data..= roleName),+            Prelude.Just+              ("diskImageFormat" Data..= diskImageFormat),+            Prelude.Just ("s3Bucket" Data..= s3Bucket)+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/S3Logs.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.S3Logs+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.S3Logs where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Amazon S3 logging configuration.+--+-- /See:/ 'newS3Logs' smart constructor.+data S3Logs = S3Logs'+  { -- | The S3 bucket in which to store the logs.+    s3BucketName :: Prelude.Maybe Prelude.Text,+    -- | The Amazon S3 path to the bucket where the logs are stored.+    s3KeyPrefix :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3Logs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3BucketName', 's3Logs_s3BucketName' - The S3 bucket in which to store the logs.+--+-- 's3KeyPrefix', 's3Logs_s3KeyPrefix' - The Amazon S3 path to the bucket where the logs are stored.+newS3Logs ::+  S3Logs+newS3Logs =+  S3Logs'+    { s3BucketName = Prelude.Nothing,+      s3KeyPrefix = Prelude.Nothing+    }++-- | The S3 bucket in which to store the logs.+s3Logs_s3BucketName :: Lens.Lens' S3Logs (Prelude.Maybe Prelude.Text)+s3Logs_s3BucketName = Lens.lens (\S3Logs' {s3BucketName} -> s3BucketName) (\s@S3Logs' {} a -> s {s3BucketName = a} :: S3Logs)++-- | The Amazon S3 path to the bucket where the logs are stored.+s3Logs_s3KeyPrefix :: Lens.Lens' S3Logs (Prelude.Maybe Prelude.Text)+s3Logs_s3KeyPrefix = Lens.lens (\S3Logs' {s3KeyPrefix} -> s3KeyPrefix) (\s@S3Logs' {} a -> s {s3KeyPrefix = a} :: S3Logs)++instance Data.FromJSON S3Logs where+  parseJSON =+    Data.withObject+      "S3Logs"+      ( \x ->+          S3Logs'+            Prelude.<$> (x Data..:? "s3BucketName")+            Prelude.<*> (x Data..:? "s3KeyPrefix")+      )++instance Prelude.Hashable S3Logs where+  hashWithSalt _salt S3Logs' {..} =+    _salt+      `Prelude.hashWithSalt` s3BucketName+      `Prelude.hashWithSalt` s3KeyPrefix++instance Prelude.NFData S3Logs where+  rnf S3Logs' {..} =+    Prelude.rnf s3BucketName+      `Prelude.seq` Prelude.rnf s3KeyPrefix++instance Data.ToJSON S3Logs where+  toJSON S3Logs' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("s3BucketName" Data..=) Prelude.<$> s3BucketName,+            ("s3KeyPrefix" Data..=) Prelude.<$> s3KeyPrefix+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/Schedule.hs view
@@ -0,0 +1,162 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.Schedule+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.Schedule where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.PipelineExecutionStartCondition+import qualified Amazonka.Prelude as Prelude++-- | A schedule configures how often and when a pipeline will automatically+-- create a new image.+--+-- /See:/ 'newSchedule' smart constructor.+data Schedule = Schedule'+  { -- | The condition configures when the pipeline should trigger a new image+    -- build. When the @pipelineExecutionStartCondition@ is set to+    -- @EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE@, and you use+    -- semantic version filters on the base image or components in your image+    -- recipe, EC2 Image Builder will build a new image only when there are new+    -- versions of the image or components in your recipe that match the+    -- semantic version filter. When it is set to @EXPRESSION_MATCH_ONLY@, it+    -- will build a new image every time the CRON expression matches the+    -- current time. For semantic version syntax, see+    -- <https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html CreateComponent>+    -- in the /EC2 Image Builder API Reference/.+    pipelineExecutionStartCondition :: Prelude.Maybe PipelineExecutionStartCondition,+    -- | The cron expression determines how often EC2 Image Builder evaluates+    -- your @pipelineExecutionStartCondition@.+    --+    -- For information on how to format a cron expression in Image Builder, see+    -- <https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-cron.html Use cron expressions in EC2 Image Builder>.+    scheduleExpression :: Prelude.Maybe Prelude.Text,+    -- | The timezone that applies to the scheduling expression. For example,+    -- \"Etc\/UTC\", \"America\/Los_Angeles\" in the+    -- <https://www.joda.org/joda-time/timezones.html IANA timezone format>. If+    -- not specified this defaults to UTC.+    timezone :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Schedule' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'pipelineExecutionStartCondition', 'schedule_pipelineExecutionStartCondition' - The condition configures when the pipeline should trigger a new image+-- build. When the @pipelineExecutionStartCondition@ is set to+-- @EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE@, and you use+-- semantic version filters on the base image or components in your image+-- recipe, EC2 Image Builder will build a new image only when there are new+-- versions of the image or components in your recipe that match the+-- semantic version filter. When it is set to @EXPRESSION_MATCH_ONLY@, it+-- will build a new image every time the CRON expression matches the+-- current time. For semantic version syntax, see+-- <https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html CreateComponent>+-- in the /EC2 Image Builder API Reference/.+--+-- 'scheduleExpression', 'schedule_scheduleExpression' - The cron expression determines how often EC2 Image Builder evaluates+-- your @pipelineExecutionStartCondition@.+--+-- For information on how to format a cron expression in Image Builder, see+-- <https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-cron.html Use cron expressions in EC2 Image Builder>.+--+-- 'timezone', 'schedule_timezone' - The timezone that applies to the scheduling expression. For example,+-- \"Etc\/UTC\", \"America\/Los_Angeles\" in the+-- <https://www.joda.org/joda-time/timezones.html IANA timezone format>. If+-- not specified this defaults to UTC.+newSchedule ::+  Schedule+newSchedule =+  Schedule'+    { pipelineExecutionStartCondition =+        Prelude.Nothing,+      scheduleExpression = Prelude.Nothing,+      timezone = Prelude.Nothing+    }++-- | The condition configures when the pipeline should trigger a new image+-- build. When the @pipelineExecutionStartCondition@ is set to+-- @EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE@, and you use+-- semantic version filters on the base image or components in your image+-- recipe, EC2 Image Builder will build a new image only when there are new+-- versions of the image or components in your recipe that match the+-- semantic version filter. When it is set to @EXPRESSION_MATCH_ONLY@, it+-- will build a new image every time the CRON expression matches the+-- current time. For semantic version syntax, see+-- <https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html CreateComponent>+-- in the /EC2 Image Builder API Reference/.+schedule_pipelineExecutionStartCondition :: Lens.Lens' Schedule (Prelude.Maybe PipelineExecutionStartCondition)+schedule_pipelineExecutionStartCondition = Lens.lens (\Schedule' {pipelineExecutionStartCondition} -> pipelineExecutionStartCondition) (\s@Schedule' {} a -> s {pipelineExecutionStartCondition = a} :: Schedule)++-- | The cron expression determines how often EC2 Image Builder evaluates+-- your @pipelineExecutionStartCondition@.+--+-- For information on how to format a cron expression in Image Builder, see+-- <https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-cron.html Use cron expressions in EC2 Image Builder>.+schedule_scheduleExpression :: Lens.Lens' Schedule (Prelude.Maybe Prelude.Text)+schedule_scheduleExpression = Lens.lens (\Schedule' {scheduleExpression} -> scheduleExpression) (\s@Schedule' {} a -> s {scheduleExpression = a} :: Schedule)++-- | The timezone that applies to the scheduling expression. For example,+-- \"Etc\/UTC\", \"America\/Los_Angeles\" in the+-- <https://www.joda.org/joda-time/timezones.html IANA timezone format>. If+-- not specified this defaults to UTC.+schedule_timezone :: Lens.Lens' Schedule (Prelude.Maybe Prelude.Text)+schedule_timezone = Lens.lens (\Schedule' {timezone} -> timezone) (\s@Schedule' {} a -> s {timezone = a} :: Schedule)++instance Data.FromJSON Schedule where+  parseJSON =+    Data.withObject+      "Schedule"+      ( \x ->+          Schedule'+            Prelude.<$> (x Data..:? "pipelineExecutionStartCondition")+            Prelude.<*> (x Data..:? "scheduleExpression")+            Prelude.<*> (x Data..:? "timezone")+      )++instance Prelude.Hashable Schedule where+  hashWithSalt _salt Schedule' {..} =+    _salt+      `Prelude.hashWithSalt` pipelineExecutionStartCondition+      `Prelude.hashWithSalt` scheduleExpression+      `Prelude.hashWithSalt` timezone++instance Prelude.NFData Schedule where+  rnf Schedule' {..} =+    Prelude.rnf pipelineExecutionStartCondition+      `Prelude.seq` Prelude.rnf scheduleExpression+      `Prelude.seq` Prelude.rnf timezone++instance Data.ToJSON Schedule where+  toJSON Schedule' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("pipelineExecutionStartCondition" Data..=)+              Prelude.<$> pipelineExecutionStartCondition,+            ("scheduleExpression" Data..=)+              Prelude.<$> scheduleExpression,+            ("timezone" Data..=) Prelude.<$> timezone+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/SystemsManagerAgent.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.SystemsManagerAgent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.SystemsManagerAgent where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Contains settings for the Systems Manager agent on your build instance.+--+-- /See:/ 'newSystemsManagerAgent' smart constructor.+data SystemsManagerAgent = SystemsManagerAgent'+  { -- | Controls whether the Systems Manager agent is removed from your final+    -- build image, prior to creating the new AMI. If this is set to true, then+    -- the agent is removed from the final image. If it\'s set to false, then+    -- the agent is left in, so that it is included in the new AMI. The default+    -- value is false.+    uninstallAfterBuild :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SystemsManagerAgent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'uninstallAfterBuild', 'systemsManagerAgent_uninstallAfterBuild' - Controls whether the Systems Manager agent is removed from your final+-- build image, prior to creating the new AMI. If this is set to true, then+-- the agent is removed from the final image. If it\'s set to false, then+-- the agent is left in, so that it is included in the new AMI. The default+-- value is false.+newSystemsManagerAgent ::+  SystemsManagerAgent+newSystemsManagerAgent =+  SystemsManagerAgent'+    { uninstallAfterBuild =+        Prelude.Nothing+    }++-- | Controls whether the Systems Manager agent is removed from your final+-- build image, prior to creating the new AMI. If this is set to true, then+-- the agent is removed from the final image. If it\'s set to false, then+-- the agent is left in, so that it is included in the new AMI. The default+-- value is false.+systemsManagerAgent_uninstallAfterBuild :: Lens.Lens' SystemsManagerAgent (Prelude.Maybe Prelude.Bool)+systemsManagerAgent_uninstallAfterBuild = Lens.lens (\SystemsManagerAgent' {uninstallAfterBuild} -> uninstallAfterBuild) (\s@SystemsManagerAgent' {} a -> s {uninstallAfterBuild = a} :: SystemsManagerAgent)++instance Data.FromJSON SystemsManagerAgent where+  parseJSON =+    Data.withObject+      "SystemsManagerAgent"+      ( \x ->+          SystemsManagerAgent'+            Prelude.<$> (x Data..:? "uninstallAfterBuild")+      )++instance Prelude.Hashable SystemsManagerAgent where+  hashWithSalt _salt SystemsManagerAgent' {..} =+    _salt `Prelude.hashWithSalt` uninstallAfterBuild++instance Prelude.NFData SystemsManagerAgent where+  rnf SystemsManagerAgent' {..} =+    Prelude.rnf uninstallAfterBuild++instance Data.ToJSON SystemsManagerAgent where+  toJSON SystemsManagerAgent' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("uninstallAfterBuild" Data..=)+              Prelude.<$> uninstallAfterBuild+          ]+      )
+ gen/Amazonka/ImageBuilder/Types/TargetContainerRepository.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Types.TargetContainerRepository+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Types.TargetContainerRepository where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types.ContainerRepositoryService+import qualified Amazonka.Prelude as Prelude++-- | The container repository where the output container image is stored.+--+-- /See:/ 'newTargetContainerRepository' smart constructor.+data TargetContainerRepository = TargetContainerRepository'+  { -- | Specifies the service in which this image was registered.+    service :: ContainerRepositoryService,+    -- | The name of the container repository where the output container image is+    -- stored. This name is prefixed by the repository location.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TargetContainerRepository' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'service', 'targetContainerRepository_service' - Specifies the service in which this image was registered.+--+-- 'repositoryName', 'targetContainerRepository_repositoryName' - The name of the container repository where the output container image is+-- stored. This name is prefixed by the repository location.+newTargetContainerRepository ::+  -- | 'service'+  ContainerRepositoryService ->+  -- | 'repositoryName'+  Prelude.Text ->+  TargetContainerRepository+newTargetContainerRepository+  pService_+  pRepositoryName_ =+    TargetContainerRepository'+      { service = pService_,+        repositoryName = pRepositoryName_+      }++-- | Specifies the service in which this image was registered.+targetContainerRepository_service :: Lens.Lens' TargetContainerRepository ContainerRepositoryService+targetContainerRepository_service = Lens.lens (\TargetContainerRepository' {service} -> service) (\s@TargetContainerRepository' {} a -> s {service = a} :: TargetContainerRepository)++-- | The name of the container repository where the output container image is+-- stored. This name is prefixed by the repository location.+targetContainerRepository_repositoryName :: Lens.Lens' TargetContainerRepository Prelude.Text+targetContainerRepository_repositoryName = Lens.lens (\TargetContainerRepository' {repositoryName} -> repositoryName) (\s@TargetContainerRepository' {} a -> s {repositoryName = a} :: TargetContainerRepository)++instance Data.FromJSON TargetContainerRepository where+  parseJSON =+    Data.withObject+      "TargetContainerRepository"+      ( \x ->+          TargetContainerRepository'+            Prelude.<$> (x Data..: "service")+            Prelude.<*> (x Data..: "repositoryName")+      )++instance Prelude.Hashable TargetContainerRepository where+  hashWithSalt _salt TargetContainerRepository' {..} =+    _salt+      `Prelude.hashWithSalt` service+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData TargetContainerRepository where+  rnf TargetContainerRepository' {..} =+    Prelude.rnf service+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToJSON TargetContainerRepository where+  toJSON TargetContainerRepository' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("service" Data..= service),+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )
+ gen/Amazonka/ImageBuilder/UntagResource.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.UntagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Removes a tag from a resource.+module Amazonka.ImageBuilder.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource that you want to untag.+    resourceArn :: Prelude.Text,+    -- | The tag keys to remove from the resource.+    tagKeys :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to untag.+--+-- 'tagKeys', 'untagResource_tagKeys' - The tag keys to remove from the resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  -- | 'tagKeys'+  Prelude.NonEmpty Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ pTagKeys_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Lens.coerced Lens.# pTagKeys_+    }++-- | The Amazon Resource Name (ARN) of the resource that you want to untag.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The tag keys to remove from the resource.+untagResource_tagKeys :: Lens.Lens' UntagResource (Prelude.NonEmpty Prelude.Text)+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath UntagResource where+  toPath UntagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/UpdateDistributionConfiguration.hs view
@@ -0,0 +1,268 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.UpdateDistributionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a new distribution configuration. Distribution configurations+-- define and configure the outputs of your pipeline.+module Amazonka.ImageBuilder.UpdateDistributionConfiguration+  ( -- * Creating a Request+    UpdateDistributionConfiguration (..),+    newUpdateDistributionConfiguration,++    -- * Request Lenses+    updateDistributionConfiguration_description,+    updateDistributionConfiguration_distributionConfigurationArn,+    updateDistributionConfiguration_distributions,+    updateDistributionConfiguration_clientToken,++    -- * Destructuring the Response+    UpdateDistributionConfigurationResponse (..),+    newUpdateDistributionConfigurationResponse,++    -- * Response Lenses+    updateDistributionConfigurationResponse_clientToken,+    updateDistributionConfigurationResponse_distributionConfigurationArn,+    updateDistributionConfigurationResponse_requestId,+    updateDistributionConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateDistributionConfiguration' smart constructor.+data UpdateDistributionConfiguration = UpdateDistributionConfiguration'+  { -- | The description of the distribution configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- you want to update.+    distributionConfigurationArn :: Prelude.Text,+    -- | The distributions of the distribution configuration.+    distributions :: [Distribution],+    -- | The idempotency token of the distribution configuration.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDistributionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateDistributionConfiguration_description' - The description of the distribution configuration.+--+-- 'distributionConfigurationArn', 'updateDistributionConfiguration_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- you want to update.+--+-- 'distributions', 'updateDistributionConfiguration_distributions' - The distributions of the distribution configuration.+--+-- 'clientToken', 'updateDistributionConfiguration_clientToken' - The idempotency token of the distribution configuration.+newUpdateDistributionConfiguration ::+  -- | 'distributionConfigurationArn'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  UpdateDistributionConfiguration+newUpdateDistributionConfiguration+  pDistributionConfigurationArn_+  pClientToken_ =+    UpdateDistributionConfiguration'+      { description =+          Prelude.Nothing,+        distributionConfigurationArn =+          pDistributionConfigurationArn_,+        distributions = Prelude.mempty,+        clientToken = pClientToken_+      }++-- | The description of the distribution configuration.+updateDistributionConfiguration_description :: Lens.Lens' UpdateDistributionConfiguration (Prelude.Maybe Prelude.Text)+updateDistributionConfiguration_description = Lens.lens (\UpdateDistributionConfiguration' {description} -> description) (\s@UpdateDistributionConfiguration' {} a -> s {description = a} :: UpdateDistributionConfiguration)++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- you want to update.+updateDistributionConfiguration_distributionConfigurationArn :: Lens.Lens' UpdateDistributionConfiguration Prelude.Text+updateDistributionConfiguration_distributionConfigurationArn = Lens.lens (\UpdateDistributionConfiguration' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@UpdateDistributionConfiguration' {} a -> s {distributionConfigurationArn = a} :: UpdateDistributionConfiguration)++-- | The distributions of the distribution configuration.+updateDistributionConfiguration_distributions :: Lens.Lens' UpdateDistributionConfiguration [Distribution]+updateDistributionConfiguration_distributions = Lens.lens (\UpdateDistributionConfiguration' {distributions} -> distributions) (\s@UpdateDistributionConfiguration' {} a -> s {distributions = a} :: UpdateDistributionConfiguration) Prelude.. Lens.coerced++-- | The idempotency token of the distribution configuration.+updateDistributionConfiguration_clientToken :: Lens.Lens' UpdateDistributionConfiguration Prelude.Text+updateDistributionConfiguration_clientToken = Lens.lens (\UpdateDistributionConfiguration' {clientToken} -> clientToken) (\s@UpdateDistributionConfiguration' {} a -> s {clientToken = a} :: UpdateDistributionConfiguration)++instance+  Core.AWSRequest+    UpdateDistributionConfiguration+  where+  type+    AWSResponse UpdateDistributionConfiguration =+      UpdateDistributionConfigurationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateDistributionConfigurationResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "distributionConfigurationArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    UpdateDistributionConfiguration+  where+  hashWithSalt+    _salt+    UpdateDistributionConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` distributionConfigurationArn+        `Prelude.hashWithSalt` distributions+        `Prelude.hashWithSalt` clientToken++instance+  Prelude.NFData+    UpdateDistributionConfiguration+  where+  rnf UpdateDistributionConfiguration' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf distributions+      `Prelude.seq` Prelude.rnf clientToken++instance+  Data.ToHeaders+    UpdateDistributionConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateDistributionConfiguration where+  toJSON UpdateDistributionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            Prelude.Just+              ( "distributionConfigurationArn"+                  Data..= distributionConfigurationArn+              ),+            Prelude.Just ("distributions" Data..= distributions),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath UpdateDistributionConfiguration where+  toPath =+    Prelude.const "/UpdateDistributionConfiguration"++instance Data.ToQuery UpdateDistributionConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateDistributionConfigurationResponse' smart constructor.+data UpdateDistributionConfigurationResponse = UpdateDistributionConfigurationResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- was updated by this request.+    distributionConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDistributionConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateDistributionConfigurationResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'distributionConfigurationArn', 'updateDistributionConfigurationResponse_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- was updated by this request.+--+-- 'requestId', 'updateDistributionConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'updateDistributionConfigurationResponse_httpStatus' - The response's http status code.+newUpdateDistributionConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateDistributionConfigurationResponse+newUpdateDistributionConfigurationResponse+  pHttpStatus_ =+    UpdateDistributionConfigurationResponse'+      { clientToken =+          Prelude.Nothing,+        distributionConfigurationArn =+          Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The idempotency token used to make this request idempotent.+updateDistributionConfigurationResponse_clientToken :: Lens.Lens' UpdateDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+updateDistributionConfigurationResponse_clientToken = Lens.lens (\UpdateDistributionConfigurationResponse' {clientToken} -> clientToken) (\s@UpdateDistributionConfigurationResponse' {} a -> s {clientToken = a} :: UpdateDistributionConfigurationResponse)++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- was updated by this request.+updateDistributionConfigurationResponse_distributionConfigurationArn :: Lens.Lens' UpdateDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+updateDistributionConfigurationResponse_distributionConfigurationArn = Lens.lens (\UpdateDistributionConfigurationResponse' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@UpdateDistributionConfigurationResponse' {} a -> s {distributionConfigurationArn = a} :: UpdateDistributionConfigurationResponse)++-- | The request ID that uniquely identifies this request.+updateDistributionConfigurationResponse_requestId :: Lens.Lens' UpdateDistributionConfigurationResponse (Prelude.Maybe Prelude.Text)+updateDistributionConfigurationResponse_requestId = Lens.lens (\UpdateDistributionConfigurationResponse' {requestId} -> requestId) (\s@UpdateDistributionConfigurationResponse' {} a -> s {requestId = a} :: UpdateDistributionConfigurationResponse)++-- | The response's http status code.+updateDistributionConfigurationResponse_httpStatus :: Lens.Lens' UpdateDistributionConfigurationResponse Prelude.Int+updateDistributionConfigurationResponse_httpStatus = Lens.lens (\UpdateDistributionConfigurationResponse' {httpStatus} -> httpStatus) (\s@UpdateDistributionConfigurationResponse' {} a -> s {httpStatus = a} :: UpdateDistributionConfigurationResponse)++instance+  Prelude.NFData+    UpdateDistributionConfigurationResponse+  where+  rnf UpdateDistributionConfigurationResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/UpdateImagePipeline.hs view
@@ -0,0 +1,373 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.UpdateImagePipeline+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an image pipeline. Image pipelines enable you to automate the+-- creation and distribution of images.+--+-- UpdateImagePipeline does not support selective updates for the pipeline.+-- You must specify all of the required properties in the update request,+-- not just the properties that have changed.+module Amazonka.ImageBuilder.UpdateImagePipeline+  ( -- * Creating a Request+    UpdateImagePipeline (..),+    newUpdateImagePipeline,++    -- * Request Lenses+    updateImagePipeline_containerRecipeArn,+    updateImagePipeline_description,+    updateImagePipeline_distributionConfigurationArn,+    updateImagePipeline_enhancedImageMetadataEnabled,+    updateImagePipeline_imageRecipeArn,+    updateImagePipeline_imageTestsConfiguration,+    updateImagePipeline_schedule,+    updateImagePipeline_status,+    updateImagePipeline_imagePipelineArn,+    updateImagePipeline_infrastructureConfigurationArn,+    updateImagePipeline_clientToken,++    -- * Destructuring the Response+    UpdateImagePipelineResponse (..),+    newUpdateImagePipelineResponse,++    -- * Response Lenses+    updateImagePipelineResponse_clientToken,+    updateImagePipelineResponse_imagePipelineArn,+    updateImagePipelineResponse_requestId,+    updateImagePipelineResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateImagePipeline' smart constructor.+data UpdateImagePipeline = UpdateImagePipeline'+  { -- | The Amazon Resource Name (ARN) of the container pipeline to update.+    containerRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The description of the image pipeline.+    description :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the distribution configuration that+    -- will be used to configure and distribute images updated by this image+    -- pipeline.+    distributionConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Collects additional information about the image being created, including+    -- the operating system (OS) version and package list. This information is+    -- used to enhance the overall experience of using EC2 Image Builder.+    -- Enabled by default.+    enhancedImageMetadataEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The Amazon Resource Name (ARN) of the image recipe that will be used to+    -- configure images updated by this image pipeline.+    imageRecipeArn :: Prelude.Maybe Prelude.Text,+    -- | The image test configuration of the image pipeline.+    imageTestsConfiguration :: Prelude.Maybe ImageTestsConfiguration,+    -- | The schedule of the image pipeline.+    schedule :: Prelude.Maybe Schedule,+    -- | The status of the image pipeline.+    status :: Prelude.Maybe PipelineStatus,+    -- | The Amazon Resource Name (ARN) of the image pipeline that you want to+    -- update.+    imagePipelineArn :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- will be used to build images updated by this image pipeline.+    infrastructureConfigurationArn :: Prelude.Text,+    -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateImagePipeline' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerRecipeArn', 'updateImagePipeline_containerRecipeArn' - The Amazon Resource Name (ARN) of the container pipeline to update.+--+-- 'description', 'updateImagePipeline_description' - The description of the image pipeline.+--+-- 'distributionConfigurationArn', 'updateImagePipeline_distributionConfigurationArn' - The Amazon Resource Name (ARN) of the distribution configuration that+-- will be used to configure and distribute images updated by this image+-- pipeline.+--+-- 'enhancedImageMetadataEnabled', 'updateImagePipeline_enhancedImageMetadataEnabled' - Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+--+-- 'imageRecipeArn', 'updateImagePipeline_imageRecipeArn' - The Amazon Resource Name (ARN) of the image recipe that will be used to+-- configure images updated by this image pipeline.+--+-- 'imageTestsConfiguration', 'updateImagePipeline_imageTestsConfiguration' - The image test configuration of the image pipeline.+--+-- 'schedule', 'updateImagePipeline_schedule' - The schedule of the image pipeline.+--+-- 'status', 'updateImagePipeline_status' - The status of the image pipeline.+--+-- 'imagePipelineArn', 'updateImagePipeline_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline that you want to+-- update.+--+-- 'infrastructureConfigurationArn', 'updateImagePipeline_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- will be used to build images updated by this image pipeline.+--+-- 'clientToken', 'updateImagePipeline_clientToken' - The idempotency token used to make this request idempotent.+newUpdateImagePipeline ::+  -- | 'imagePipelineArn'+  Prelude.Text ->+  -- | 'infrastructureConfigurationArn'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  UpdateImagePipeline+newUpdateImagePipeline+  pImagePipelineArn_+  pInfrastructureConfigurationArn_+  pClientToken_ =+    UpdateImagePipeline'+      { containerRecipeArn =+          Prelude.Nothing,+        description = Prelude.Nothing,+        distributionConfigurationArn = Prelude.Nothing,+        enhancedImageMetadataEnabled = Prelude.Nothing,+        imageRecipeArn = Prelude.Nothing,+        imageTestsConfiguration = Prelude.Nothing,+        schedule = Prelude.Nothing,+        status = Prelude.Nothing,+        imagePipelineArn = pImagePipelineArn_,+        infrastructureConfigurationArn =+          pInfrastructureConfigurationArn_,+        clientToken = pClientToken_+      }++-- | The Amazon Resource Name (ARN) of the container pipeline to update.+updateImagePipeline_containerRecipeArn :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe Prelude.Text)+updateImagePipeline_containerRecipeArn = Lens.lens (\UpdateImagePipeline' {containerRecipeArn} -> containerRecipeArn) (\s@UpdateImagePipeline' {} a -> s {containerRecipeArn = a} :: UpdateImagePipeline)++-- | The description of the image pipeline.+updateImagePipeline_description :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe Prelude.Text)+updateImagePipeline_description = Lens.lens (\UpdateImagePipeline' {description} -> description) (\s@UpdateImagePipeline' {} a -> s {description = a} :: UpdateImagePipeline)++-- | The Amazon Resource Name (ARN) of the distribution configuration that+-- will be used to configure and distribute images updated by this image+-- pipeline.+updateImagePipeline_distributionConfigurationArn :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe Prelude.Text)+updateImagePipeline_distributionConfigurationArn = Lens.lens (\UpdateImagePipeline' {distributionConfigurationArn} -> distributionConfigurationArn) (\s@UpdateImagePipeline' {} a -> s {distributionConfigurationArn = a} :: UpdateImagePipeline)++-- | Collects additional information about the image being created, including+-- the operating system (OS) version and package list. This information is+-- used to enhance the overall experience of using EC2 Image Builder.+-- Enabled by default.+updateImagePipeline_enhancedImageMetadataEnabled :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe Prelude.Bool)+updateImagePipeline_enhancedImageMetadataEnabled = Lens.lens (\UpdateImagePipeline' {enhancedImageMetadataEnabled} -> enhancedImageMetadataEnabled) (\s@UpdateImagePipeline' {} a -> s {enhancedImageMetadataEnabled = a} :: UpdateImagePipeline)++-- | The Amazon Resource Name (ARN) of the image recipe that will be used to+-- configure images updated by this image pipeline.+updateImagePipeline_imageRecipeArn :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe Prelude.Text)+updateImagePipeline_imageRecipeArn = Lens.lens (\UpdateImagePipeline' {imageRecipeArn} -> imageRecipeArn) (\s@UpdateImagePipeline' {} a -> s {imageRecipeArn = a} :: UpdateImagePipeline)++-- | The image test configuration of the image pipeline.+updateImagePipeline_imageTestsConfiguration :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe ImageTestsConfiguration)+updateImagePipeline_imageTestsConfiguration = Lens.lens (\UpdateImagePipeline' {imageTestsConfiguration} -> imageTestsConfiguration) (\s@UpdateImagePipeline' {} a -> s {imageTestsConfiguration = a} :: UpdateImagePipeline)++-- | The schedule of the image pipeline.+updateImagePipeline_schedule :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe Schedule)+updateImagePipeline_schedule = Lens.lens (\UpdateImagePipeline' {schedule} -> schedule) (\s@UpdateImagePipeline' {} a -> s {schedule = a} :: UpdateImagePipeline)++-- | The status of the image pipeline.+updateImagePipeline_status :: Lens.Lens' UpdateImagePipeline (Prelude.Maybe PipelineStatus)+updateImagePipeline_status = Lens.lens (\UpdateImagePipeline' {status} -> status) (\s@UpdateImagePipeline' {} a -> s {status = a} :: UpdateImagePipeline)++-- | The Amazon Resource Name (ARN) of the image pipeline that you want to+-- update.+updateImagePipeline_imagePipelineArn :: Lens.Lens' UpdateImagePipeline Prelude.Text+updateImagePipeline_imagePipelineArn = Lens.lens (\UpdateImagePipeline' {imagePipelineArn} -> imagePipelineArn) (\s@UpdateImagePipeline' {} a -> s {imagePipelineArn = a} :: UpdateImagePipeline)++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- will be used to build images updated by this image pipeline.+updateImagePipeline_infrastructureConfigurationArn :: Lens.Lens' UpdateImagePipeline Prelude.Text+updateImagePipeline_infrastructureConfigurationArn = Lens.lens (\UpdateImagePipeline' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@UpdateImagePipeline' {} a -> s {infrastructureConfigurationArn = a} :: UpdateImagePipeline)++-- | The idempotency token used to make this request idempotent.+updateImagePipeline_clientToken :: Lens.Lens' UpdateImagePipeline Prelude.Text+updateImagePipeline_clientToken = Lens.lens (\UpdateImagePipeline' {clientToken} -> clientToken) (\s@UpdateImagePipeline' {} a -> s {clientToken = a} :: UpdateImagePipeline)++instance Core.AWSRequest UpdateImagePipeline where+  type+    AWSResponse UpdateImagePipeline =+      UpdateImagePipelineResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateImagePipelineResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "imagePipelineArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateImagePipeline where+  hashWithSalt _salt UpdateImagePipeline' {..} =+    _salt+      `Prelude.hashWithSalt` containerRecipeArn+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` distributionConfigurationArn+      `Prelude.hashWithSalt` enhancedImageMetadataEnabled+      `Prelude.hashWithSalt` imageRecipeArn+      `Prelude.hashWithSalt` imageTestsConfiguration+      `Prelude.hashWithSalt` schedule+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` imagePipelineArn+      `Prelude.hashWithSalt` infrastructureConfigurationArn+      `Prelude.hashWithSalt` clientToken++instance Prelude.NFData UpdateImagePipeline where+  rnf UpdateImagePipeline' {..} =+    Prelude.rnf containerRecipeArn+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf distributionConfigurationArn+      `Prelude.seq` Prelude.rnf enhancedImageMetadataEnabled+      `Prelude.seq` Prelude.rnf imageRecipeArn+      `Prelude.seq` Prelude.rnf imageTestsConfiguration+      `Prelude.seq` Prelude.rnf schedule+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf imagePipelineArn+      `Prelude.seq` Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf clientToken++instance Data.ToHeaders UpdateImagePipeline where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateImagePipeline where+  toJSON UpdateImagePipeline' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("containerRecipeArn" Data..=)+              Prelude.<$> containerRecipeArn,+            ("description" Data..=) Prelude.<$> description,+            ("distributionConfigurationArn" Data..=)+              Prelude.<$> distributionConfigurationArn,+            ("enhancedImageMetadataEnabled" Data..=)+              Prelude.<$> enhancedImageMetadataEnabled,+            ("imageRecipeArn" Data..=)+              Prelude.<$> imageRecipeArn,+            ("imageTestsConfiguration" Data..=)+              Prelude.<$> imageTestsConfiguration,+            ("schedule" Data..=) Prelude.<$> schedule,+            ("status" Data..=) Prelude.<$> status,+            Prelude.Just+              ("imagePipelineArn" Data..= imagePipelineArn),+            Prelude.Just+              ( "infrastructureConfigurationArn"+                  Data..= infrastructureConfigurationArn+              ),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance Data.ToPath UpdateImagePipeline where+  toPath = Prelude.const "/UpdateImagePipeline"++instance Data.ToQuery UpdateImagePipeline where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateImagePipelineResponse' smart constructor.+data UpdateImagePipelineResponse = UpdateImagePipelineResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the image pipeline that was updated by+    -- this request.+    imagePipelineArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateImagePipelineResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateImagePipelineResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'imagePipelineArn', 'updateImagePipelineResponse_imagePipelineArn' - The Amazon Resource Name (ARN) of the image pipeline that was updated by+-- this request.+--+-- 'requestId', 'updateImagePipelineResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'updateImagePipelineResponse_httpStatus' - The response's http status code.+newUpdateImagePipelineResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateImagePipelineResponse+newUpdateImagePipelineResponse pHttpStatus_ =+  UpdateImagePipelineResponse'+    { clientToken =+        Prelude.Nothing,+      imagePipelineArn = Prelude.Nothing,+      requestId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The idempotency token used to make this request idempotent.+updateImagePipelineResponse_clientToken :: Lens.Lens' UpdateImagePipelineResponse (Prelude.Maybe Prelude.Text)+updateImagePipelineResponse_clientToken = Lens.lens (\UpdateImagePipelineResponse' {clientToken} -> clientToken) (\s@UpdateImagePipelineResponse' {} a -> s {clientToken = a} :: UpdateImagePipelineResponse)++-- | The Amazon Resource Name (ARN) of the image pipeline that was updated by+-- this request.+updateImagePipelineResponse_imagePipelineArn :: Lens.Lens' UpdateImagePipelineResponse (Prelude.Maybe Prelude.Text)+updateImagePipelineResponse_imagePipelineArn = Lens.lens (\UpdateImagePipelineResponse' {imagePipelineArn} -> imagePipelineArn) (\s@UpdateImagePipelineResponse' {} a -> s {imagePipelineArn = a} :: UpdateImagePipelineResponse)++-- | The request ID that uniquely identifies this request.+updateImagePipelineResponse_requestId :: Lens.Lens' UpdateImagePipelineResponse (Prelude.Maybe Prelude.Text)+updateImagePipelineResponse_requestId = Lens.lens (\UpdateImagePipelineResponse' {requestId} -> requestId) (\s@UpdateImagePipelineResponse' {} a -> s {requestId = a} :: UpdateImagePipelineResponse)++-- | The response's http status code.+updateImagePipelineResponse_httpStatus :: Lens.Lens' UpdateImagePipelineResponse Prelude.Int+updateImagePipelineResponse_httpStatus = Lens.lens (\UpdateImagePipelineResponse' {httpStatus} -> httpStatus) (\s@UpdateImagePipelineResponse' {} a -> s {httpStatus = a} :: UpdateImagePipelineResponse)++instance Prelude.NFData UpdateImagePipelineResponse where+  rnf UpdateImagePipelineResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf imagePipelineArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/UpdateInfrastructureConfiguration.hs view
@@ -0,0 +1,477 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.UpdateInfrastructureConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a new infrastructure configuration. An infrastructure+-- configuration defines the environment in which your image will be built+-- and tested.+module Amazonka.ImageBuilder.UpdateInfrastructureConfiguration+  ( -- * Creating a Request+    UpdateInfrastructureConfiguration (..),+    newUpdateInfrastructureConfiguration,++    -- * Request Lenses+    updateInfrastructureConfiguration_description,+    updateInfrastructureConfiguration_instanceMetadataOptions,+    updateInfrastructureConfiguration_instanceTypes,+    updateInfrastructureConfiguration_keyPair,+    updateInfrastructureConfiguration_logging,+    updateInfrastructureConfiguration_resourceTags,+    updateInfrastructureConfiguration_securityGroupIds,+    updateInfrastructureConfiguration_snsTopicArn,+    updateInfrastructureConfiguration_subnetId,+    updateInfrastructureConfiguration_terminateInstanceOnFailure,+    updateInfrastructureConfiguration_infrastructureConfigurationArn,+    updateInfrastructureConfiguration_instanceProfileName,+    updateInfrastructureConfiguration_clientToken,++    -- * Destructuring the Response+    UpdateInfrastructureConfigurationResponse (..),+    newUpdateInfrastructureConfigurationResponse,++    -- * Response Lenses+    updateInfrastructureConfigurationResponse_clientToken,+    updateInfrastructureConfigurationResponse_infrastructureConfigurationArn,+    updateInfrastructureConfigurationResponse_requestId,+    updateInfrastructureConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateInfrastructureConfiguration' smart constructor.+data UpdateInfrastructureConfiguration = UpdateInfrastructureConfiguration'+  { -- | The description of the infrastructure configuration.+    description :: Prelude.Maybe Prelude.Text,+    -- | The instance metadata options that you can set for the HTTP requests+    -- that pipeline builds use to launch EC2 build and test instances. For+    -- more information about instance metadata options, see one of the+    -- following links:+    --+    -- -   <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+    --     in the //Amazon EC2 User Guide// for Linux instances.+    --+    -- -   <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+    --     in the //Amazon EC2 Windows Guide// for Windows instances.+    instanceMetadataOptions :: Prelude.Maybe InstanceMetadataOptions,+    -- | The instance types of the infrastructure configuration. You can specify+    -- one or more instance types to use for this build. The service will pick+    -- one of these instance types based on availability.+    instanceTypes :: Prelude.Maybe [Prelude.Text],+    -- | The key pair of the infrastructure configuration. You can use this to+    -- log on to and debug the instance used to create your image.+    keyPair :: Prelude.Maybe Prelude.Text,+    -- | The logging configuration of the infrastructure configuration.+    logging :: Prelude.Maybe Logging,+    -- | The tags attached to the resource created by Image Builder.+    resourceTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The security group IDs to associate with the instance used to customize+    -- your Amazon EC2 AMI.+    securityGroupIds :: Prelude.Maybe [Prelude.Text],+    -- | The Amazon Resource Name (ARN) for the SNS topic to which we send image+    -- build event notifications.+    --+    -- EC2 Image Builder is unable to send notifications to SNS topics that are+    -- encrypted using keys from other accounts. The key that is used to+    -- encrypt the SNS topic must reside in the account that the Image Builder+    -- service runs under.+    snsTopicArn :: Prelude.Maybe Prelude.Text,+    -- | The subnet ID to place the instance used to customize your Amazon EC2+    -- AMI in.+    subnetId :: Prelude.Maybe Prelude.Text,+    -- | The terminate instance on failure setting of the infrastructure+    -- configuration. Set to false if you want Image Builder to retain the+    -- instance used to configure your AMI if the build or test phase of your+    -- workflow fails.+    terminateInstanceOnFailure :: Prelude.Maybe Prelude.Bool,+    -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- you want to update.+    infrastructureConfigurationArn :: Prelude.Text,+    -- | The instance profile to associate with the instance used to customize+    -- your Amazon EC2 AMI.+    instanceProfileName :: Prelude.Text,+    -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateInfrastructureConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'description', 'updateInfrastructureConfiguration_description' - The description of the infrastructure configuration.+--+-- 'instanceMetadataOptions', 'updateInfrastructureConfiguration_instanceMetadataOptions' - The instance metadata options that you can set for the HTTP requests+-- that pipeline builds use to launch EC2 build and test instances. For+-- more information about instance metadata options, see one of the+-- following links:+--+-- -   <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+--     in the //Amazon EC2 User Guide// for Linux instances.+--+-- -   <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+--     in the //Amazon EC2 Windows Guide// for Windows instances.+--+-- 'instanceTypes', 'updateInfrastructureConfiguration_instanceTypes' - The instance types of the infrastructure configuration. You can specify+-- one or more instance types to use for this build. The service will pick+-- one of these instance types based on availability.+--+-- 'keyPair', 'updateInfrastructureConfiguration_keyPair' - The key pair of the infrastructure configuration. You can use this to+-- log on to and debug the instance used to create your image.+--+-- 'logging', 'updateInfrastructureConfiguration_logging' - The logging configuration of the infrastructure configuration.+--+-- 'resourceTags', 'updateInfrastructureConfiguration_resourceTags' - The tags attached to the resource created by Image Builder.+--+-- 'securityGroupIds', 'updateInfrastructureConfiguration_securityGroupIds' - The security group IDs to associate with the instance used to customize+-- your Amazon EC2 AMI.+--+-- 'snsTopicArn', 'updateInfrastructureConfiguration_snsTopicArn' - The Amazon Resource Name (ARN) for the SNS topic to which we send image+-- build event notifications.+--+-- EC2 Image Builder is unable to send notifications to SNS topics that are+-- encrypted using keys from other accounts. The key that is used to+-- encrypt the SNS topic must reside in the account that the Image Builder+-- service runs under.+--+-- 'subnetId', 'updateInfrastructureConfiguration_subnetId' - The subnet ID to place the instance used to customize your Amazon EC2+-- AMI in.+--+-- 'terminateInstanceOnFailure', 'updateInfrastructureConfiguration_terminateInstanceOnFailure' - The terminate instance on failure setting of the infrastructure+-- configuration. Set to false if you want Image Builder to retain the+-- instance used to configure your AMI if the build or test phase of your+-- workflow fails.+--+-- 'infrastructureConfigurationArn', 'updateInfrastructureConfiguration_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- you want to update.+--+-- 'instanceProfileName', 'updateInfrastructureConfiguration_instanceProfileName' - The instance profile to associate with the instance used to customize+-- your Amazon EC2 AMI.+--+-- 'clientToken', 'updateInfrastructureConfiguration_clientToken' - The idempotency token used to make this request idempotent.+newUpdateInfrastructureConfiguration ::+  -- | 'infrastructureConfigurationArn'+  Prelude.Text ->+  -- | 'instanceProfileName'+  Prelude.Text ->+  -- | 'clientToken'+  Prelude.Text ->+  UpdateInfrastructureConfiguration+newUpdateInfrastructureConfiguration+  pInfrastructureConfigurationArn_+  pInstanceProfileName_+  pClientToken_ =+    UpdateInfrastructureConfiguration'+      { description =+          Prelude.Nothing,+        instanceMetadataOptions =+          Prelude.Nothing,+        instanceTypes = Prelude.Nothing,+        keyPair = Prelude.Nothing,+        logging = Prelude.Nothing,+        resourceTags = Prelude.Nothing,+        securityGroupIds = Prelude.Nothing,+        snsTopicArn = Prelude.Nothing,+        subnetId = Prelude.Nothing,+        terminateInstanceOnFailure =+          Prelude.Nothing,+        infrastructureConfigurationArn =+          pInfrastructureConfigurationArn_,+        instanceProfileName =+          pInstanceProfileName_,+        clientToken = pClientToken_+      }++-- | The description of the infrastructure configuration.+updateInfrastructureConfiguration_description :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+updateInfrastructureConfiguration_description = Lens.lens (\UpdateInfrastructureConfiguration' {description} -> description) (\s@UpdateInfrastructureConfiguration' {} a -> s {description = a} :: UpdateInfrastructureConfiguration)++-- | The instance metadata options that you can set for the HTTP requests+-- that pipeline builds use to launch EC2 build and test instances. For+-- more information about instance metadata options, see one of the+-- following links:+--+-- -   <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+--     in the //Amazon EC2 User Guide// for Linux instances.+--+-- -   <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html Configure the instance metadata options>+--     in the //Amazon EC2 Windows Guide// for Windows instances.+updateInfrastructureConfiguration_instanceMetadataOptions :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe InstanceMetadataOptions)+updateInfrastructureConfiguration_instanceMetadataOptions = Lens.lens (\UpdateInfrastructureConfiguration' {instanceMetadataOptions} -> instanceMetadataOptions) (\s@UpdateInfrastructureConfiguration' {} a -> s {instanceMetadataOptions = a} :: UpdateInfrastructureConfiguration)++-- | The instance types of the infrastructure configuration. You can specify+-- one or more instance types to use for this build. The service will pick+-- one of these instance types based on availability.+updateInfrastructureConfiguration_instanceTypes :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe [Prelude.Text])+updateInfrastructureConfiguration_instanceTypes = Lens.lens (\UpdateInfrastructureConfiguration' {instanceTypes} -> instanceTypes) (\s@UpdateInfrastructureConfiguration' {} a -> s {instanceTypes = a} :: UpdateInfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The key pair of the infrastructure configuration. You can use this to+-- log on to and debug the instance used to create your image.+updateInfrastructureConfiguration_keyPair :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+updateInfrastructureConfiguration_keyPair = Lens.lens (\UpdateInfrastructureConfiguration' {keyPair} -> keyPair) (\s@UpdateInfrastructureConfiguration' {} a -> s {keyPair = a} :: UpdateInfrastructureConfiguration)++-- | The logging configuration of the infrastructure configuration.+updateInfrastructureConfiguration_logging :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe Logging)+updateInfrastructureConfiguration_logging = Lens.lens (\UpdateInfrastructureConfiguration' {logging} -> logging) (\s@UpdateInfrastructureConfiguration' {} a -> s {logging = a} :: UpdateInfrastructureConfiguration)++-- | The tags attached to the resource created by Image Builder.+updateInfrastructureConfiguration_resourceTags :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+updateInfrastructureConfiguration_resourceTags = Lens.lens (\UpdateInfrastructureConfiguration' {resourceTags} -> resourceTags) (\s@UpdateInfrastructureConfiguration' {} a -> s {resourceTags = a} :: UpdateInfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The security group IDs to associate with the instance used to customize+-- your Amazon EC2 AMI.+updateInfrastructureConfiguration_securityGroupIds :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe [Prelude.Text])+updateInfrastructureConfiguration_securityGroupIds = Lens.lens (\UpdateInfrastructureConfiguration' {securityGroupIds} -> securityGroupIds) (\s@UpdateInfrastructureConfiguration' {} a -> s {securityGroupIds = a} :: UpdateInfrastructureConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | The Amazon Resource Name (ARN) for the SNS topic to which we send image+-- build event notifications.+--+-- EC2 Image Builder is unable to send notifications to SNS topics that are+-- encrypted using keys from other accounts. The key that is used to+-- encrypt the SNS topic must reside in the account that the Image Builder+-- service runs under.+updateInfrastructureConfiguration_snsTopicArn :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+updateInfrastructureConfiguration_snsTopicArn = Lens.lens (\UpdateInfrastructureConfiguration' {snsTopicArn} -> snsTopicArn) (\s@UpdateInfrastructureConfiguration' {} a -> s {snsTopicArn = a} :: UpdateInfrastructureConfiguration)++-- | The subnet ID to place the instance used to customize your Amazon EC2+-- AMI in.+updateInfrastructureConfiguration_subnetId :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe Prelude.Text)+updateInfrastructureConfiguration_subnetId = Lens.lens (\UpdateInfrastructureConfiguration' {subnetId} -> subnetId) (\s@UpdateInfrastructureConfiguration' {} a -> s {subnetId = a} :: UpdateInfrastructureConfiguration)++-- | The terminate instance on failure setting of the infrastructure+-- configuration. Set to false if you want Image Builder to retain the+-- instance used to configure your AMI if the build or test phase of your+-- workflow fails.+updateInfrastructureConfiguration_terminateInstanceOnFailure :: Lens.Lens' UpdateInfrastructureConfiguration (Prelude.Maybe Prelude.Bool)+updateInfrastructureConfiguration_terminateInstanceOnFailure = Lens.lens (\UpdateInfrastructureConfiguration' {terminateInstanceOnFailure} -> terminateInstanceOnFailure) (\s@UpdateInfrastructureConfiguration' {} a -> s {terminateInstanceOnFailure = a} :: UpdateInfrastructureConfiguration)++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- you want to update.+updateInfrastructureConfiguration_infrastructureConfigurationArn :: Lens.Lens' UpdateInfrastructureConfiguration Prelude.Text+updateInfrastructureConfiguration_infrastructureConfigurationArn = Lens.lens (\UpdateInfrastructureConfiguration' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@UpdateInfrastructureConfiguration' {} a -> s {infrastructureConfigurationArn = a} :: UpdateInfrastructureConfiguration)++-- | The instance profile to associate with the instance used to customize+-- your Amazon EC2 AMI.+updateInfrastructureConfiguration_instanceProfileName :: Lens.Lens' UpdateInfrastructureConfiguration Prelude.Text+updateInfrastructureConfiguration_instanceProfileName = Lens.lens (\UpdateInfrastructureConfiguration' {instanceProfileName} -> instanceProfileName) (\s@UpdateInfrastructureConfiguration' {} a -> s {instanceProfileName = a} :: UpdateInfrastructureConfiguration)++-- | The idempotency token used to make this request idempotent.+updateInfrastructureConfiguration_clientToken :: Lens.Lens' UpdateInfrastructureConfiguration Prelude.Text+updateInfrastructureConfiguration_clientToken = Lens.lens (\UpdateInfrastructureConfiguration' {clientToken} -> clientToken) (\s@UpdateInfrastructureConfiguration' {} a -> s {clientToken = a} :: UpdateInfrastructureConfiguration)++instance+  Core.AWSRequest+    UpdateInfrastructureConfiguration+  where+  type+    AWSResponse UpdateInfrastructureConfiguration =+      UpdateInfrastructureConfigurationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateInfrastructureConfigurationResponse'+            Prelude.<$> (x Data..?> "clientToken")+            Prelude.<*> (x Data..?> "infrastructureConfigurationArn")+            Prelude.<*> (x Data..?> "requestId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    UpdateInfrastructureConfiguration+  where+  hashWithSalt+    _salt+    UpdateInfrastructureConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` instanceMetadataOptions+        `Prelude.hashWithSalt` instanceTypes+        `Prelude.hashWithSalt` keyPair+        `Prelude.hashWithSalt` logging+        `Prelude.hashWithSalt` resourceTags+        `Prelude.hashWithSalt` securityGroupIds+        `Prelude.hashWithSalt` snsTopicArn+        `Prelude.hashWithSalt` subnetId+        `Prelude.hashWithSalt` terminateInstanceOnFailure+        `Prelude.hashWithSalt` infrastructureConfigurationArn+        `Prelude.hashWithSalt` instanceProfileName+        `Prelude.hashWithSalt` clientToken++instance+  Prelude.NFData+    UpdateInfrastructureConfiguration+  where+  rnf UpdateInfrastructureConfiguration' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf instanceMetadataOptions+      `Prelude.seq` Prelude.rnf instanceTypes+      `Prelude.seq` Prelude.rnf keyPair+      `Prelude.seq` Prelude.rnf logging+      `Prelude.seq` Prelude.rnf resourceTags+      `Prelude.seq` Prelude.rnf securityGroupIds+      `Prelude.seq` Prelude.rnf snsTopicArn+      `Prelude.seq` Prelude.rnf subnetId+      `Prelude.seq` Prelude.rnf terminateInstanceOnFailure+      `Prelude.seq` Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf instanceProfileName+      `Prelude.seq` Prelude.rnf clientToken++instance+  Data.ToHeaders+    UpdateInfrastructureConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    UpdateInfrastructureConfiguration+  where+  toJSON UpdateInfrastructureConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("instanceMetadataOptions" Data..=)+              Prelude.<$> instanceMetadataOptions,+            ("instanceTypes" Data..=) Prelude.<$> instanceTypes,+            ("keyPair" Data..=) Prelude.<$> keyPair,+            ("logging" Data..=) Prelude.<$> logging,+            ("resourceTags" Data..=) Prelude.<$> resourceTags,+            ("securityGroupIds" Data..=)+              Prelude.<$> securityGroupIds,+            ("snsTopicArn" Data..=) Prelude.<$> snsTopicArn,+            ("subnetId" Data..=) Prelude.<$> subnetId,+            ("terminateInstanceOnFailure" Data..=)+              Prelude.<$> terminateInstanceOnFailure,+            Prelude.Just+              ( "infrastructureConfigurationArn"+                  Data..= infrastructureConfigurationArn+              ),+            Prelude.Just+              ("instanceProfileName" Data..= instanceProfileName),+            Prelude.Just ("clientToken" Data..= clientToken)+          ]+      )++instance+  Data.ToPath+    UpdateInfrastructureConfiguration+  where+  toPath =+    Prelude.const "/UpdateInfrastructureConfiguration"++instance+  Data.ToQuery+    UpdateInfrastructureConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateInfrastructureConfigurationResponse' smart constructor.+data UpdateInfrastructureConfigurationResponse = UpdateInfrastructureConfigurationResponse'+  { -- | The idempotency token used to make this request idempotent.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the infrastructure configuration that+    -- was updated by this request.+    infrastructureConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | The request ID that uniquely identifies this request.+    requestId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateInfrastructureConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateInfrastructureConfigurationResponse_clientToken' - The idempotency token used to make this request idempotent.+--+-- 'infrastructureConfigurationArn', 'updateInfrastructureConfigurationResponse_infrastructureConfigurationArn' - The Amazon Resource Name (ARN) of the infrastructure configuration that+-- was updated by this request.+--+-- 'requestId', 'updateInfrastructureConfigurationResponse_requestId' - The request ID that uniquely identifies this request.+--+-- 'httpStatus', 'updateInfrastructureConfigurationResponse_httpStatus' - The response's http status code.+newUpdateInfrastructureConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateInfrastructureConfigurationResponse+newUpdateInfrastructureConfigurationResponse+  pHttpStatus_ =+    UpdateInfrastructureConfigurationResponse'+      { clientToken =+          Prelude.Nothing,+        infrastructureConfigurationArn =+          Prelude.Nothing,+        requestId = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The idempotency token used to make this request idempotent.+updateInfrastructureConfigurationResponse_clientToken :: Lens.Lens' UpdateInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+updateInfrastructureConfigurationResponse_clientToken = Lens.lens (\UpdateInfrastructureConfigurationResponse' {clientToken} -> clientToken) (\s@UpdateInfrastructureConfigurationResponse' {} a -> s {clientToken = a} :: UpdateInfrastructureConfigurationResponse)++-- | The Amazon Resource Name (ARN) of the infrastructure configuration that+-- was updated by this request.+updateInfrastructureConfigurationResponse_infrastructureConfigurationArn :: Lens.Lens' UpdateInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+updateInfrastructureConfigurationResponse_infrastructureConfigurationArn = Lens.lens (\UpdateInfrastructureConfigurationResponse' {infrastructureConfigurationArn} -> infrastructureConfigurationArn) (\s@UpdateInfrastructureConfigurationResponse' {} a -> s {infrastructureConfigurationArn = a} :: UpdateInfrastructureConfigurationResponse)++-- | The request ID that uniquely identifies this request.+updateInfrastructureConfigurationResponse_requestId :: Lens.Lens' UpdateInfrastructureConfigurationResponse (Prelude.Maybe Prelude.Text)+updateInfrastructureConfigurationResponse_requestId = Lens.lens (\UpdateInfrastructureConfigurationResponse' {requestId} -> requestId) (\s@UpdateInfrastructureConfigurationResponse' {} a -> s {requestId = a} :: UpdateInfrastructureConfigurationResponse)++-- | The response's http status code.+updateInfrastructureConfigurationResponse_httpStatus :: Lens.Lens' UpdateInfrastructureConfigurationResponse Prelude.Int+updateInfrastructureConfigurationResponse_httpStatus = Lens.lens (\UpdateInfrastructureConfigurationResponse' {httpStatus} -> httpStatus) (\s@UpdateInfrastructureConfigurationResponse' {} a -> s {httpStatus = a} :: UpdateInfrastructureConfigurationResponse)++instance+  Prelude.NFData+    UpdateInfrastructureConfigurationResponse+  where+  rnf UpdateInfrastructureConfigurationResponse' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf infrastructureConfigurationArn+      `Prelude.seq` Prelude.rnf requestId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ImageBuilder/Waiters.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE DisambiguateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ImageBuilder.Waiters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ImageBuilder.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ImageBuilder.Lens+import Amazonka.ImageBuilder.Types+import qualified Amazonka.Prelude as Prelude
+ src/.gitkeep view
+ test/Main.hs view
@@ -0,0 +1,23 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Main+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Main (main) where++import Test.Amazonka.ImageBuilder+import Test.Amazonka.ImageBuilder.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "ImageBuilder"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/ImageBuilder.hs view
@@ -0,0 +1,1038 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Test.Amazonka.Gen.ImageBuilder+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Test.Amazonka.Gen.ImageBuilder where++import Amazonka.ImageBuilder+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.ImageBuilder.Internal+import Test.Amazonka.Prelude+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestCancelImageCreation $+--             newCancelImageCreation+--+--         , requestCreateComponent $+--             newCreateComponent+--+--         , requestCreateContainerRecipe $+--             newCreateContainerRecipe+--+--         , requestCreateDistributionConfiguration $+--             newCreateDistributionConfiguration+--+--         , requestCreateImage $+--             newCreateImage+--+--         , requestCreateImagePipeline $+--             newCreateImagePipeline+--+--         , requestCreateImageRecipe $+--             newCreateImageRecipe+--+--         , requestCreateInfrastructureConfiguration $+--             newCreateInfrastructureConfiguration+--+--         , requestDeleteComponent $+--             newDeleteComponent+--+--         , requestDeleteContainerRecipe $+--             newDeleteContainerRecipe+--+--         , requestDeleteDistributionConfiguration $+--             newDeleteDistributionConfiguration+--+--         , requestDeleteImage $+--             newDeleteImage+--+--         , requestDeleteImagePipeline $+--             newDeleteImagePipeline+--+--         , requestDeleteImageRecipe $+--             newDeleteImageRecipe+--+--         , requestDeleteInfrastructureConfiguration $+--             newDeleteInfrastructureConfiguration+--+--         , requestGetComponent $+--             newGetComponent+--+--         , requestGetComponentPolicy $+--             newGetComponentPolicy+--+--         , requestGetContainerRecipe $+--             newGetContainerRecipe+--+--         , requestGetContainerRecipePolicy $+--             newGetContainerRecipePolicy+--+--         , requestGetDistributionConfiguration $+--             newGetDistributionConfiguration+--+--         , requestGetImage $+--             newGetImage+--+--         , requestGetImagePipeline $+--             newGetImagePipeline+--+--         , requestGetImagePolicy $+--             newGetImagePolicy+--+--         , requestGetImageRecipe $+--             newGetImageRecipe+--+--         , requestGetImageRecipePolicy $+--             newGetImageRecipePolicy+--+--         , requestGetInfrastructureConfiguration $+--             newGetInfrastructureConfiguration+--+--         , requestImportComponent $+--             newImportComponent+--+--         , requestImportVmImage $+--             newImportVmImage+--+--         , requestListComponentBuildVersions $+--             newListComponentBuildVersions+--+--         , requestListComponents $+--             newListComponents+--+--         , requestListContainerRecipes $+--             newListContainerRecipes+--+--         , requestListDistributionConfigurations $+--             newListDistributionConfigurations+--+--         , requestListImageBuildVersions $+--             newListImageBuildVersions+--+--         , requestListImagePackages $+--             newListImagePackages+--+--         , requestListImagePipelineImages $+--             newListImagePipelineImages+--+--         , requestListImagePipelines $+--             newListImagePipelines+--+--         , requestListImageRecipes $+--             newListImageRecipes+--+--         , requestListImages $+--             newListImages+--+--         , requestListInfrastructureConfigurations $+--             newListInfrastructureConfigurations+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestPutComponentPolicy $+--             newPutComponentPolicy+--+--         , requestPutContainerRecipePolicy $+--             newPutContainerRecipePolicy+--+--         , requestPutImagePolicy $+--             newPutImagePolicy+--+--         , requestPutImageRecipePolicy $+--             newPutImageRecipePolicy+--+--         , requestStartImagePipelineExecution $+--             newStartImagePipelineExecution+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateDistributionConfiguration $+--             newUpdateDistributionConfiguration+--+--         , requestUpdateImagePipeline $+--             newUpdateImagePipeline+--+--         , requestUpdateInfrastructureConfiguration $+--             newUpdateInfrastructureConfiguration+--+--           ]++--     , testGroup "response"+--         [ responseCancelImageCreation $+--             newCancelImageCreationResponse+--+--         , responseCreateComponent $+--             newCreateComponentResponse+--+--         , responseCreateContainerRecipe $+--             newCreateContainerRecipeResponse+--+--         , responseCreateDistributionConfiguration $+--             newCreateDistributionConfigurationResponse+--+--         , responseCreateImage $+--             newCreateImageResponse+--+--         , responseCreateImagePipeline $+--             newCreateImagePipelineResponse+--+--         , responseCreateImageRecipe $+--             newCreateImageRecipeResponse+--+--         , responseCreateInfrastructureConfiguration $+--             newCreateInfrastructureConfigurationResponse+--+--         , responseDeleteComponent $+--             newDeleteComponentResponse+--+--         , responseDeleteContainerRecipe $+--             newDeleteContainerRecipeResponse+--+--         , responseDeleteDistributionConfiguration $+--             newDeleteDistributionConfigurationResponse+--+--         , responseDeleteImage $+--             newDeleteImageResponse+--+--         , responseDeleteImagePipeline $+--             newDeleteImagePipelineResponse+--+--         , responseDeleteImageRecipe $+--             newDeleteImageRecipeResponse+--+--         , responseDeleteInfrastructureConfiguration $+--             newDeleteInfrastructureConfigurationResponse+--+--         , responseGetComponent $+--             newGetComponentResponse+--+--         , responseGetComponentPolicy $+--             newGetComponentPolicyResponse+--+--         , responseGetContainerRecipe $+--             newGetContainerRecipeResponse+--+--         , responseGetContainerRecipePolicy $+--             newGetContainerRecipePolicyResponse+--+--         , responseGetDistributionConfiguration $+--             newGetDistributionConfigurationResponse+--+--         , responseGetImage $+--             newGetImageResponse+--+--         , responseGetImagePipeline $+--             newGetImagePipelineResponse+--+--         , responseGetImagePolicy $+--             newGetImagePolicyResponse+--+--         , responseGetImageRecipe $+--             newGetImageRecipeResponse+--+--         , responseGetImageRecipePolicy $+--             newGetImageRecipePolicyResponse+--+--         , responseGetInfrastructureConfiguration $+--             newGetInfrastructureConfigurationResponse+--+--         , responseImportComponent $+--             newImportComponentResponse+--+--         , responseImportVmImage $+--             newImportVmImageResponse+--+--         , responseListComponentBuildVersions $+--             newListComponentBuildVersionsResponse+--+--         , responseListComponents $+--             newListComponentsResponse+--+--         , responseListContainerRecipes $+--             newListContainerRecipesResponse+--+--         , responseListDistributionConfigurations $+--             newListDistributionConfigurationsResponse+--+--         , responseListImageBuildVersions $+--             newListImageBuildVersionsResponse+--+--         , responseListImagePackages $+--             newListImagePackagesResponse+--+--         , responseListImagePipelineImages $+--             newListImagePipelineImagesResponse+--+--         , responseListImagePipelines $+--             newListImagePipelinesResponse+--+--         , responseListImageRecipes $+--             newListImageRecipesResponse+--+--         , responseListImages $+--             newListImagesResponse+--+--         , responseListInfrastructureConfigurations $+--             newListInfrastructureConfigurationsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responsePutComponentPolicy $+--             newPutComponentPolicyResponse+--+--         , responsePutContainerRecipePolicy $+--             newPutContainerRecipePolicyResponse+--+--         , responsePutImagePolicy $+--             newPutImagePolicyResponse+--+--         , responsePutImageRecipePolicy $+--             newPutImageRecipePolicyResponse+--+--         , responseStartImagePipelineExecution $+--             newStartImagePipelineExecutionResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateDistributionConfiguration $+--             newUpdateDistributionConfigurationResponse+--+--         , responseUpdateImagePipeline $+--             newUpdateImagePipelineResponse+--+--         , responseUpdateInfrastructureConfiguration $+--             newUpdateInfrastructureConfigurationResponse+--+--           ]+--     ]++-- Requests++requestCancelImageCreation :: CancelImageCreation -> TestTree+requestCancelImageCreation =+  req+    "CancelImageCreation"+    "fixture/CancelImageCreation.yaml"++requestCreateComponent :: CreateComponent -> TestTree+requestCreateComponent =+  req+    "CreateComponent"+    "fixture/CreateComponent.yaml"++requestCreateContainerRecipe :: CreateContainerRecipe -> TestTree+requestCreateContainerRecipe =+  req+    "CreateContainerRecipe"+    "fixture/CreateContainerRecipe.yaml"++requestCreateDistributionConfiguration :: CreateDistributionConfiguration -> TestTree+requestCreateDistributionConfiguration =+  req+    "CreateDistributionConfiguration"+    "fixture/CreateDistributionConfiguration.yaml"++requestCreateImage :: CreateImage -> TestTree+requestCreateImage =+  req+    "CreateImage"+    "fixture/CreateImage.yaml"++requestCreateImagePipeline :: CreateImagePipeline -> TestTree+requestCreateImagePipeline =+  req+    "CreateImagePipeline"+    "fixture/CreateImagePipeline.yaml"++requestCreateImageRecipe :: CreateImageRecipe -> TestTree+requestCreateImageRecipe =+  req+    "CreateImageRecipe"+    "fixture/CreateImageRecipe.yaml"++requestCreateInfrastructureConfiguration :: CreateInfrastructureConfiguration -> TestTree+requestCreateInfrastructureConfiguration =+  req+    "CreateInfrastructureConfiguration"+    "fixture/CreateInfrastructureConfiguration.yaml"++requestDeleteComponent :: DeleteComponent -> TestTree+requestDeleteComponent =+  req+    "DeleteComponent"+    "fixture/DeleteComponent.yaml"++requestDeleteContainerRecipe :: DeleteContainerRecipe -> TestTree+requestDeleteContainerRecipe =+  req+    "DeleteContainerRecipe"+    "fixture/DeleteContainerRecipe.yaml"++requestDeleteDistributionConfiguration :: DeleteDistributionConfiguration -> TestTree+requestDeleteDistributionConfiguration =+  req+    "DeleteDistributionConfiguration"+    "fixture/DeleteDistributionConfiguration.yaml"++requestDeleteImage :: DeleteImage -> TestTree+requestDeleteImage =+  req+    "DeleteImage"+    "fixture/DeleteImage.yaml"++requestDeleteImagePipeline :: DeleteImagePipeline -> TestTree+requestDeleteImagePipeline =+  req+    "DeleteImagePipeline"+    "fixture/DeleteImagePipeline.yaml"++requestDeleteImageRecipe :: DeleteImageRecipe -> TestTree+requestDeleteImageRecipe =+  req+    "DeleteImageRecipe"+    "fixture/DeleteImageRecipe.yaml"++requestDeleteInfrastructureConfiguration :: DeleteInfrastructureConfiguration -> TestTree+requestDeleteInfrastructureConfiguration =+  req+    "DeleteInfrastructureConfiguration"+    "fixture/DeleteInfrastructureConfiguration.yaml"++requestGetComponent :: GetComponent -> TestTree+requestGetComponent =+  req+    "GetComponent"+    "fixture/GetComponent.yaml"++requestGetComponentPolicy :: GetComponentPolicy -> TestTree+requestGetComponentPolicy =+  req+    "GetComponentPolicy"+    "fixture/GetComponentPolicy.yaml"++requestGetContainerRecipe :: GetContainerRecipe -> TestTree+requestGetContainerRecipe =+  req+    "GetContainerRecipe"+    "fixture/GetContainerRecipe.yaml"++requestGetContainerRecipePolicy :: GetContainerRecipePolicy -> TestTree+requestGetContainerRecipePolicy =+  req+    "GetContainerRecipePolicy"+    "fixture/GetContainerRecipePolicy.yaml"++requestGetDistributionConfiguration :: GetDistributionConfiguration -> TestTree+requestGetDistributionConfiguration =+  req+    "GetDistributionConfiguration"+    "fixture/GetDistributionConfiguration.yaml"++requestGetImage :: GetImage -> TestTree+requestGetImage =+  req+    "GetImage"+    "fixture/GetImage.yaml"++requestGetImagePipeline :: GetImagePipeline -> TestTree+requestGetImagePipeline =+  req+    "GetImagePipeline"+    "fixture/GetImagePipeline.yaml"++requestGetImagePolicy :: GetImagePolicy -> TestTree+requestGetImagePolicy =+  req+    "GetImagePolicy"+    "fixture/GetImagePolicy.yaml"++requestGetImageRecipe :: GetImageRecipe -> TestTree+requestGetImageRecipe =+  req+    "GetImageRecipe"+    "fixture/GetImageRecipe.yaml"++requestGetImageRecipePolicy :: GetImageRecipePolicy -> TestTree+requestGetImageRecipePolicy =+  req+    "GetImageRecipePolicy"+    "fixture/GetImageRecipePolicy.yaml"++requestGetInfrastructureConfiguration :: GetInfrastructureConfiguration -> TestTree+requestGetInfrastructureConfiguration =+  req+    "GetInfrastructureConfiguration"+    "fixture/GetInfrastructureConfiguration.yaml"++requestImportComponent :: ImportComponent -> TestTree+requestImportComponent =+  req+    "ImportComponent"+    "fixture/ImportComponent.yaml"++requestImportVmImage :: ImportVmImage -> TestTree+requestImportVmImage =+  req+    "ImportVmImage"+    "fixture/ImportVmImage.yaml"++requestListComponentBuildVersions :: ListComponentBuildVersions -> TestTree+requestListComponentBuildVersions =+  req+    "ListComponentBuildVersions"+    "fixture/ListComponentBuildVersions.yaml"++requestListComponents :: ListComponents -> TestTree+requestListComponents =+  req+    "ListComponents"+    "fixture/ListComponents.yaml"++requestListContainerRecipes :: ListContainerRecipes -> TestTree+requestListContainerRecipes =+  req+    "ListContainerRecipes"+    "fixture/ListContainerRecipes.yaml"++requestListDistributionConfigurations :: ListDistributionConfigurations -> TestTree+requestListDistributionConfigurations =+  req+    "ListDistributionConfigurations"+    "fixture/ListDistributionConfigurations.yaml"++requestListImageBuildVersions :: ListImageBuildVersions -> TestTree+requestListImageBuildVersions =+  req+    "ListImageBuildVersions"+    "fixture/ListImageBuildVersions.yaml"++requestListImagePackages :: ListImagePackages -> TestTree+requestListImagePackages =+  req+    "ListImagePackages"+    "fixture/ListImagePackages.yaml"++requestListImagePipelineImages :: ListImagePipelineImages -> TestTree+requestListImagePipelineImages =+  req+    "ListImagePipelineImages"+    "fixture/ListImagePipelineImages.yaml"++requestListImagePipelines :: ListImagePipelines -> TestTree+requestListImagePipelines =+  req+    "ListImagePipelines"+    "fixture/ListImagePipelines.yaml"++requestListImageRecipes :: ListImageRecipes -> TestTree+requestListImageRecipes =+  req+    "ListImageRecipes"+    "fixture/ListImageRecipes.yaml"++requestListImages :: ListImages -> TestTree+requestListImages =+  req+    "ListImages"+    "fixture/ListImages.yaml"++requestListInfrastructureConfigurations :: ListInfrastructureConfigurations -> TestTree+requestListInfrastructureConfigurations =+  req+    "ListInfrastructureConfigurations"+    "fixture/ListInfrastructureConfigurations.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestPutComponentPolicy :: PutComponentPolicy -> TestTree+requestPutComponentPolicy =+  req+    "PutComponentPolicy"+    "fixture/PutComponentPolicy.yaml"++requestPutContainerRecipePolicy :: PutContainerRecipePolicy -> TestTree+requestPutContainerRecipePolicy =+  req+    "PutContainerRecipePolicy"+    "fixture/PutContainerRecipePolicy.yaml"++requestPutImagePolicy :: PutImagePolicy -> TestTree+requestPutImagePolicy =+  req+    "PutImagePolicy"+    "fixture/PutImagePolicy.yaml"++requestPutImageRecipePolicy :: PutImageRecipePolicy -> TestTree+requestPutImageRecipePolicy =+  req+    "PutImageRecipePolicy"+    "fixture/PutImageRecipePolicy.yaml"++requestStartImagePipelineExecution :: StartImagePipelineExecution -> TestTree+requestStartImagePipelineExecution =+  req+    "StartImagePipelineExecution"+    "fixture/StartImagePipelineExecution.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateDistributionConfiguration :: UpdateDistributionConfiguration -> TestTree+requestUpdateDistributionConfiguration =+  req+    "UpdateDistributionConfiguration"+    "fixture/UpdateDistributionConfiguration.yaml"++requestUpdateImagePipeline :: UpdateImagePipeline -> TestTree+requestUpdateImagePipeline =+  req+    "UpdateImagePipeline"+    "fixture/UpdateImagePipeline.yaml"++requestUpdateInfrastructureConfiguration :: UpdateInfrastructureConfiguration -> TestTree+requestUpdateInfrastructureConfiguration =+  req+    "UpdateInfrastructureConfiguration"+    "fixture/UpdateInfrastructureConfiguration.yaml"++-- Responses++responseCancelImageCreation :: CancelImageCreationResponse -> TestTree+responseCancelImageCreation =+  res+    "CancelImageCreationResponse"+    "fixture/CancelImageCreationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CancelImageCreation)++responseCreateComponent :: CreateComponentResponse -> TestTree+responseCreateComponent =+  res+    "CreateComponentResponse"+    "fixture/CreateComponentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateComponent)++responseCreateContainerRecipe :: CreateContainerRecipeResponse -> TestTree+responseCreateContainerRecipe =+  res+    "CreateContainerRecipeResponse"+    "fixture/CreateContainerRecipeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateContainerRecipe)++responseCreateDistributionConfiguration :: CreateDistributionConfigurationResponse -> TestTree+responseCreateDistributionConfiguration =+  res+    "CreateDistributionConfigurationResponse"+    "fixture/CreateDistributionConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDistributionConfiguration)++responseCreateImage :: CreateImageResponse -> TestTree+responseCreateImage =+  res+    "CreateImageResponse"+    "fixture/CreateImageResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateImage)++responseCreateImagePipeline :: CreateImagePipelineResponse -> TestTree+responseCreateImagePipeline =+  res+    "CreateImagePipelineResponse"+    "fixture/CreateImagePipelineResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateImagePipeline)++responseCreateImageRecipe :: CreateImageRecipeResponse -> TestTree+responseCreateImageRecipe =+  res+    "CreateImageRecipeResponse"+    "fixture/CreateImageRecipeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateImageRecipe)++responseCreateInfrastructureConfiguration :: CreateInfrastructureConfigurationResponse -> TestTree+responseCreateInfrastructureConfiguration =+  res+    "CreateInfrastructureConfigurationResponse"+    "fixture/CreateInfrastructureConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateInfrastructureConfiguration)++responseDeleteComponent :: DeleteComponentResponse -> TestTree+responseDeleteComponent =+  res+    "DeleteComponentResponse"+    "fixture/DeleteComponentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteComponent)++responseDeleteContainerRecipe :: DeleteContainerRecipeResponse -> TestTree+responseDeleteContainerRecipe =+  res+    "DeleteContainerRecipeResponse"+    "fixture/DeleteContainerRecipeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteContainerRecipe)++responseDeleteDistributionConfiguration :: DeleteDistributionConfigurationResponse -> TestTree+responseDeleteDistributionConfiguration =+  res+    "DeleteDistributionConfigurationResponse"+    "fixture/DeleteDistributionConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteDistributionConfiguration)++responseDeleteImage :: DeleteImageResponse -> TestTree+responseDeleteImage =+  res+    "DeleteImageResponse"+    "fixture/DeleteImageResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteImage)++responseDeleteImagePipeline :: DeleteImagePipelineResponse -> TestTree+responseDeleteImagePipeline =+  res+    "DeleteImagePipelineResponse"+    "fixture/DeleteImagePipelineResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteImagePipeline)++responseDeleteImageRecipe :: DeleteImageRecipeResponse -> TestTree+responseDeleteImageRecipe =+  res+    "DeleteImageRecipeResponse"+    "fixture/DeleteImageRecipeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteImageRecipe)++responseDeleteInfrastructureConfiguration :: DeleteInfrastructureConfigurationResponse -> TestTree+responseDeleteInfrastructureConfiguration =+  res+    "DeleteInfrastructureConfigurationResponse"+    "fixture/DeleteInfrastructureConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteInfrastructureConfiguration)++responseGetComponent :: GetComponentResponse -> TestTree+responseGetComponent =+  res+    "GetComponentResponse"+    "fixture/GetComponentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetComponent)++responseGetComponentPolicy :: GetComponentPolicyResponse -> TestTree+responseGetComponentPolicy =+  res+    "GetComponentPolicyResponse"+    "fixture/GetComponentPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetComponentPolicy)++responseGetContainerRecipe :: GetContainerRecipeResponse -> TestTree+responseGetContainerRecipe =+  res+    "GetContainerRecipeResponse"+    "fixture/GetContainerRecipeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetContainerRecipe)++responseGetContainerRecipePolicy :: GetContainerRecipePolicyResponse -> TestTree+responseGetContainerRecipePolicy =+  res+    "GetContainerRecipePolicyResponse"+    "fixture/GetContainerRecipePolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetContainerRecipePolicy)++responseGetDistributionConfiguration :: GetDistributionConfigurationResponse -> TestTree+responseGetDistributionConfiguration =+  res+    "GetDistributionConfigurationResponse"+    "fixture/GetDistributionConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDistributionConfiguration)++responseGetImage :: GetImageResponse -> TestTree+responseGetImage =+  res+    "GetImageResponse"+    "fixture/GetImageResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetImage)++responseGetImagePipeline :: GetImagePipelineResponse -> TestTree+responseGetImagePipeline =+  res+    "GetImagePipelineResponse"+    "fixture/GetImagePipelineResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetImagePipeline)++responseGetImagePolicy :: GetImagePolicyResponse -> TestTree+responseGetImagePolicy =+  res+    "GetImagePolicyResponse"+    "fixture/GetImagePolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetImagePolicy)++responseGetImageRecipe :: GetImageRecipeResponse -> TestTree+responseGetImageRecipe =+  res+    "GetImageRecipeResponse"+    "fixture/GetImageRecipeResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetImageRecipe)++responseGetImageRecipePolicy :: GetImageRecipePolicyResponse -> TestTree+responseGetImageRecipePolicy =+  res+    "GetImageRecipePolicyResponse"+    "fixture/GetImageRecipePolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetImageRecipePolicy)++responseGetInfrastructureConfiguration :: GetInfrastructureConfigurationResponse -> TestTree+responseGetInfrastructureConfiguration =+  res+    "GetInfrastructureConfigurationResponse"+    "fixture/GetInfrastructureConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetInfrastructureConfiguration)++responseImportComponent :: ImportComponentResponse -> TestTree+responseImportComponent =+  res+    "ImportComponentResponse"+    "fixture/ImportComponentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ImportComponent)++responseImportVmImage :: ImportVmImageResponse -> TestTree+responseImportVmImage =+  res+    "ImportVmImageResponse"+    "fixture/ImportVmImageResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ImportVmImage)++responseListComponentBuildVersions :: ListComponentBuildVersionsResponse -> TestTree+responseListComponentBuildVersions =+  res+    "ListComponentBuildVersionsResponse"+    "fixture/ListComponentBuildVersionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListComponentBuildVersions)++responseListComponents :: ListComponentsResponse -> TestTree+responseListComponents =+  res+    "ListComponentsResponse"+    "fixture/ListComponentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListComponents)++responseListContainerRecipes :: ListContainerRecipesResponse -> TestTree+responseListContainerRecipes =+  res+    "ListContainerRecipesResponse"+    "fixture/ListContainerRecipesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListContainerRecipes)++responseListDistributionConfigurations :: ListDistributionConfigurationsResponse -> TestTree+responseListDistributionConfigurations =+  res+    "ListDistributionConfigurationsResponse"+    "fixture/ListDistributionConfigurationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDistributionConfigurations)++responseListImageBuildVersions :: ListImageBuildVersionsResponse -> TestTree+responseListImageBuildVersions =+  res+    "ListImageBuildVersionsResponse"+    "fixture/ListImageBuildVersionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListImageBuildVersions)++responseListImagePackages :: ListImagePackagesResponse -> TestTree+responseListImagePackages =+  res+    "ListImagePackagesResponse"+    "fixture/ListImagePackagesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListImagePackages)++responseListImagePipelineImages :: ListImagePipelineImagesResponse -> TestTree+responseListImagePipelineImages =+  res+    "ListImagePipelineImagesResponse"+    "fixture/ListImagePipelineImagesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListImagePipelineImages)++responseListImagePipelines :: ListImagePipelinesResponse -> TestTree+responseListImagePipelines =+  res+    "ListImagePipelinesResponse"+    "fixture/ListImagePipelinesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListImagePipelines)++responseListImageRecipes :: ListImageRecipesResponse -> TestTree+responseListImageRecipes =+  res+    "ListImageRecipesResponse"+    "fixture/ListImageRecipesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListImageRecipes)++responseListImages :: ListImagesResponse -> TestTree+responseListImages =+  res+    "ListImagesResponse"+    "fixture/ListImagesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListImages)++responseListInfrastructureConfigurations :: ListInfrastructureConfigurationsResponse -> TestTree+responseListInfrastructureConfigurations =+  res+    "ListInfrastructureConfigurationsResponse"+    "fixture/ListInfrastructureConfigurationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListInfrastructureConfigurations)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responsePutComponentPolicy :: PutComponentPolicyResponse -> TestTree+responsePutComponentPolicy =+  res+    "PutComponentPolicyResponse"+    "fixture/PutComponentPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutComponentPolicy)++responsePutContainerRecipePolicy :: PutContainerRecipePolicyResponse -> TestTree+responsePutContainerRecipePolicy =+  res+    "PutContainerRecipePolicyResponse"+    "fixture/PutContainerRecipePolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutContainerRecipePolicy)++responsePutImagePolicy :: PutImagePolicyResponse -> TestTree+responsePutImagePolicy =+  res+    "PutImagePolicyResponse"+    "fixture/PutImagePolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutImagePolicy)++responsePutImageRecipePolicy :: PutImageRecipePolicyResponse -> TestTree+responsePutImageRecipePolicy =+  res+    "PutImageRecipePolicyResponse"+    "fixture/PutImageRecipePolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutImageRecipePolicy)++responseStartImagePipelineExecution :: StartImagePipelineExecutionResponse -> TestTree+responseStartImagePipelineExecution =+  res+    "StartImagePipelineExecutionResponse"+    "fixture/StartImagePipelineExecutionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StartImagePipelineExecution)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateDistributionConfiguration :: UpdateDistributionConfigurationResponse -> TestTree+responseUpdateDistributionConfiguration =+  res+    "UpdateDistributionConfigurationResponse"+    "fixture/UpdateDistributionConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateDistributionConfiguration)++responseUpdateImagePipeline :: UpdateImagePipelineResponse -> TestTree+responseUpdateImagePipeline =+  res+    "UpdateImagePipelineResponse"+    "fixture/UpdateImagePipelineResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateImagePipeline)++responseUpdateInfrastructureConfiguration :: UpdateInfrastructureConfigurationResponse -> TestTree+responseUpdateInfrastructureConfiguration =+  res+    "UpdateInfrastructureConfigurationResponse"+    "fixture/UpdateInfrastructureConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateInfrastructureConfiguration)
+ test/Test/Amazonka/ImageBuilder.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.ImageBuilder+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Test.Amazonka.ImageBuilder+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/ImageBuilder/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.ImageBuilder.Internal+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Test.Amazonka.ImageBuilder.Internal where