packages feed

amazonka-sagemaker-2.0: gen/Amazonka/SageMaker/CreateStudioLifecycleConfig.hs

{-# 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.SageMaker.CreateStudioLifecycleConfig
-- 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 Studio Lifecycle Configuration.
module Amazonka.SageMaker.CreateStudioLifecycleConfig
  ( -- * Creating a Request
    CreateStudioLifecycleConfig (..),
    newCreateStudioLifecycleConfig,

    -- * Request Lenses
    createStudioLifecycleConfig_tags,
    createStudioLifecycleConfig_studioLifecycleConfigName,
    createStudioLifecycleConfig_studioLifecycleConfigContent,
    createStudioLifecycleConfig_studioLifecycleConfigAppType,

    -- * Destructuring the Response
    CreateStudioLifecycleConfigResponse (..),
    newCreateStudioLifecycleConfigResponse,

    -- * Response Lenses
    createStudioLifecycleConfigResponse_studioLifecycleConfigArn,
    createStudioLifecycleConfigResponse_httpStatus,
  )
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
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SageMaker.Types

-- | /See:/ 'newCreateStudioLifecycleConfig' smart constructor.
data CreateStudioLifecycleConfig = CreateStudioLifecycleConfig'
  { -- | Tags to be associated with the Lifecycle Configuration. Each tag
    -- consists of a key and an optional value. Tag keys must be unique per
    -- resource. Tags are searchable using the Search API.
    tags :: Prelude.Maybe [Tag],
    -- | The name of the Studio Lifecycle Configuration to create.
    studioLifecycleConfigName :: Prelude.Text,
    -- | The content of your Studio Lifecycle Configuration script. This content
    -- must be base64 encoded.
    studioLifecycleConfigContent :: Prelude.Text,
    -- | The App type that the Lifecycle Configuration is attached to.
    studioLifecycleConfigAppType :: StudioLifecycleConfigAppType
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateStudioLifecycleConfig' 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', 'createStudioLifecycleConfig_tags' - Tags to be associated with the Lifecycle Configuration. Each tag
-- consists of a key and an optional value. Tag keys must be unique per
-- resource. Tags are searchable using the Search API.
--
-- 'studioLifecycleConfigName', 'createStudioLifecycleConfig_studioLifecycleConfigName' - The name of the Studio Lifecycle Configuration to create.
--
-- 'studioLifecycleConfigContent', 'createStudioLifecycleConfig_studioLifecycleConfigContent' - The content of your Studio Lifecycle Configuration script. This content
-- must be base64 encoded.
--
-- 'studioLifecycleConfigAppType', 'createStudioLifecycleConfig_studioLifecycleConfigAppType' - The App type that the Lifecycle Configuration is attached to.
newCreateStudioLifecycleConfig ::
  -- | 'studioLifecycleConfigName'
  Prelude.Text ->
  -- | 'studioLifecycleConfigContent'
  Prelude.Text ->
  -- | 'studioLifecycleConfigAppType'
  StudioLifecycleConfigAppType ->
  CreateStudioLifecycleConfig
newCreateStudioLifecycleConfig
  pStudioLifecycleConfigName_
  pStudioLifecycleConfigContent_
  pStudioLifecycleConfigAppType_ =
    CreateStudioLifecycleConfig'
      { tags =
          Prelude.Nothing,
        studioLifecycleConfigName =
          pStudioLifecycleConfigName_,
        studioLifecycleConfigContent =
          pStudioLifecycleConfigContent_,
        studioLifecycleConfigAppType =
          pStudioLifecycleConfigAppType_
      }

-- | Tags to be associated with the Lifecycle Configuration. Each tag
-- consists of a key and an optional value. Tag keys must be unique per
-- resource. Tags are searchable using the Search API.
createStudioLifecycleConfig_tags :: Lens.Lens' CreateStudioLifecycleConfig (Prelude.Maybe [Tag])
createStudioLifecycleConfig_tags = Lens.lens (\CreateStudioLifecycleConfig' {tags} -> tags) (\s@CreateStudioLifecycleConfig' {} a -> s {tags = a} :: CreateStudioLifecycleConfig) Prelude.. Lens.mapping Lens.coerced

-- | The name of the Studio Lifecycle Configuration to create.
createStudioLifecycleConfig_studioLifecycleConfigName :: Lens.Lens' CreateStudioLifecycleConfig Prelude.Text
createStudioLifecycleConfig_studioLifecycleConfigName = Lens.lens (\CreateStudioLifecycleConfig' {studioLifecycleConfigName} -> studioLifecycleConfigName) (\s@CreateStudioLifecycleConfig' {} a -> s {studioLifecycleConfigName = a} :: CreateStudioLifecycleConfig)

-- | The content of your Studio Lifecycle Configuration script. This content
-- must be base64 encoded.
createStudioLifecycleConfig_studioLifecycleConfigContent :: Lens.Lens' CreateStudioLifecycleConfig Prelude.Text
createStudioLifecycleConfig_studioLifecycleConfigContent = Lens.lens (\CreateStudioLifecycleConfig' {studioLifecycleConfigContent} -> studioLifecycleConfigContent) (\s@CreateStudioLifecycleConfig' {} a -> s {studioLifecycleConfigContent = a} :: CreateStudioLifecycleConfig)

-- | The App type that the Lifecycle Configuration is attached to.
createStudioLifecycleConfig_studioLifecycleConfigAppType :: Lens.Lens' CreateStudioLifecycleConfig StudioLifecycleConfigAppType
createStudioLifecycleConfig_studioLifecycleConfigAppType = Lens.lens (\CreateStudioLifecycleConfig' {studioLifecycleConfigAppType} -> studioLifecycleConfigAppType) (\s@CreateStudioLifecycleConfig' {} a -> s {studioLifecycleConfigAppType = a} :: CreateStudioLifecycleConfig)

instance Core.AWSRequest CreateStudioLifecycleConfig where
  type
    AWSResponse CreateStudioLifecycleConfig =
      CreateStudioLifecycleConfigResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          CreateStudioLifecycleConfigResponse'
            Prelude.<$> (x Data..?> "StudioLifecycleConfigArn")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable CreateStudioLifecycleConfig where
  hashWithSalt _salt CreateStudioLifecycleConfig' {..} =
    _salt
      `Prelude.hashWithSalt` tags
      `Prelude.hashWithSalt` studioLifecycleConfigName
      `Prelude.hashWithSalt` studioLifecycleConfigContent
      `Prelude.hashWithSalt` studioLifecycleConfigAppType

instance Prelude.NFData CreateStudioLifecycleConfig where
  rnf CreateStudioLifecycleConfig' {..} =
    Prelude.rnf tags
      `Prelude.seq` Prelude.rnf studioLifecycleConfigName
      `Prelude.seq` Prelude.rnf studioLifecycleConfigContent
      `Prelude.seq` Prelude.rnf studioLifecycleConfigAppType

instance Data.ToHeaders CreateStudioLifecycleConfig where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "SageMaker.CreateStudioLifecycleConfig" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateStudioLifecycleConfig where
  toJSON CreateStudioLifecycleConfig' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("Tags" Data..=) Prelude.<$> tags,
            Prelude.Just
              ( "StudioLifecycleConfigName"
                  Data..= studioLifecycleConfigName
              ),
            Prelude.Just
              ( "StudioLifecycleConfigContent"
                  Data..= studioLifecycleConfigContent
              ),
            Prelude.Just
              ( "StudioLifecycleConfigAppType"
                  Data..= studioLifecycleConfigAppType
              )
          ]
      )

instance Data.ToPath CreateStudioLifecycleConfig where
  toPath = Prelude.const "/"

instance Data.ToQuery CreateStudioLifecycleConfig where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newCreateStudioLifecycleConfigResponse' smart constructor.
data CreateStudioLifecycleConfigResponse = CreateStudioLifecycleConfigResponse'
  { -- | The ARN of your created Lifecycle Configuration.
    studioLifecycleConfigArn :: 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 'CreateStudioLifecycleConfigResponse' 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:
--
-- 'studioLifecycleConfigArn', 'createStudioLifecycleConfigResponse_studioLifecycleConfigArn' - The ARN of your created Lifecycle Configuration.
--
-- 'httpStatus', 'createStudioLifecycleConfigResponse_httpStatus' - The response's http status code.
newCreateStudioLifecycleConfigResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateStudioLifecycleConfigResponse
newCreateStudioLifecycleConfigResponse pHttpStatus_ =
  CreateStudioLifecycleConfigResponse'
    { studioLifecycleConfigArn =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The ARN of your created Lifecycle Configuration.
createStudioLifecycleConfigResponse_studioLifecycleConfigArn :: Lens.Lens' CreateStudioLifecycleConfigResponse (Prelude.Maybe Prelude.Text)
createStudioLifecycleConfigResponse_studioLifecycleConfigArn = Lens.lens (\CreateStudioLifecycleConfigResponse' {studioLifecycleConfigArn} -> studioLifecycleConfigArn) (\s@CreateStudioLifecycleConfigResponse' {} a -> s {studioLifecycleConfigArn = a} :: CreateStudioLifecycleConfigResponse)

-- | The response's http status code.
createStudioLifecycleConfigResponse_httpStatus :: Lens.Lens' CreateStudioLifecycleConfigResponse Prelude.Int
createStudioLifecycleConfigResponse_httpStatus = Lens.lens (\CreateStudioLifecycleConfigResponse' {httpStatus} -> httpStatus) (\s@CreateStudioLifecycleConfigResponse' {} a -> s {httpStatus = a} :: CreateStudioLifecycleConfigResponse)

instance
  Prelude.NFData
    CreateStudioLifecycleConfigResponse
  where
  rnf CreateStudioLifecycleConfigResponse' {..} =
    Prelude.rnf studioLifecycleConfigArn
      `Prelude.seq` Prelude.rnf httpStatus