{-# 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.Lightsail.Types.ContainerService -- 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.Lightsail.Types.ContainerService where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.Lightsail.Types.ContainerServiceDeployment import Amazonka.Lightsail.Types.ContainerServicePowerName import Amazonka.Lightsail.Types.ContainerServiceState import Amazonka.Lightsail.Types.ContainerServiceStateDetail import Amazonka.Lightsail.Types.PrivateRegistryAccess import Amazonka.Lightsail.Types.ResourceLocation import Amazonka.Lightsail.Types.ResourceType import Amazonka.Lightsail.Types.Tag import qualified Amazonka.Prelude as Prelude -- | Describes an Amazon Lightsail container service. -- -- /See:/ 'newContainerService' smart constructor. data ContainerService = ContainerService' { -- | The Amazon Resource Name (ARN) of the container service. arn :: Prelude.Maybe Prelude.Text, -- | The name of the container service. containerServiceName :: Prelude.Maybe Prelude.Text, -- | The timestamp when the container service was created. createdAt :: Prelude.Maybe Data.POSIX, -- | An object that describes the current container deployment of the -- container service. currentDeployment :: Prelude.Maybe ContainerServiceDeployment, -- | A Boolean value indicating whether the container service is disabled. isDisabled :: Prelude.Maybe Prelude.Bool, -- | An object that describes the location of the container service, such as -- the Amazon Web Services Region and Availability Zone. location :: Prelude.Maybe ResourceLocation, -- | An object that describes the next deployment of the container service. -- -- This value is @null@ when there is no deployment in a @pending@ state. nextDeployment :: Prelude.Maybe ContainerServiceDeployment, -- | The power specification of the container service. -- -- The power specifies the amount of RAM, the number of vCPUs, and the base -- price of the container service. power :: Prelude.Maybe ContainerServicePowerName, -- | The ID of the power of the container service. powerId :: Prelude.Maybe Prelude.Text, -- | The principal ARN of the container service. -- -- The principal ARN can be used to create a trust relationship between -- your standard Amazon Web Services account and your Lightsail container -- service. This allows you to give your service permission to access -- resources in your standard Amazon Web Services account. principalArn :: Prelude.Maybe Prelude.Text, -- | The private domain name of the container service. -- -- The private domain name is accessible only by other resources within the -- default virtual private cloud (VPC) of your Lightsail account. privateDomainName :: Prelude.Maybe Prelude.Text, -- | An object that describes the configuration for the container service to -- access private container image repositories, such as Amazon Elastic -- Container Registry (Amazon ECR) private repositories. -- -- For more information, see -- -- in the /Amazon Lightsail Developer Guide/. privateRegistryAccess :: Prelude.Maybe PrivateRegistryAccess, -- | The public domain name of the container service, such as @example.com@ -- and @www.example.com@. -- -- You can specify up to four public domain names for a container service. -- The domain names that you specify are used when you create a deployment -- with a container configured as the public endpoint of your container -- service. -- -- If you don\'t specify public domain names, then you can use the default -- domain of the container service. -- -- You must create and validate an SSL\/TLS certificate before you can use -- public domain names with your container service. Use the -- @CreateCertificate@ action to create a certificate for the public domain -- names you want to use with your container service. -- -- See @CreateContainerService@ or @UpdateContainerService@ for information -- about how to specify public domain names for your Lightsail container -- service. publicDomainNames :: Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]), -- | The Lightsail resource type of the container service (i.e., -- @ContainerService@). resourceType :: Prelude.Maybe ResourceType, -- | The scale specification of the container service. -- -- The scale specifies the allocated compute nodes of the container -- service. scale :: Prelude.Maybe Prelude.Natural, -- | The current state of the container service. -- -- The following container service states are possible: -- -- - @PENDING@ - The container service is being created. -- -- - @READY@ - The container service is running but it does not have an -- active container deployment. -- -- - @DEPLOYING@ - The container service is launching a container -- deployment. -- -- - @RUNNING@ - The container service is running and it has an active -- container deployment. -- -- - @UPDATING@ - The container service capacity or its custom domains -- are being updated. -- -- - @DELETING@ - The container service is being deleted. -- -- - @DISABLED@ - The container service is disabled, and its active -- deployment and containers, if any, are shut down. state :: Prelude.Maybe ContainerServiceState, -- | An object that describes the current state of the container service. -- -- The state detail is populated only when a container service is in a -- @PENDING@, @DEPLOYING@, or @UPDATING@ state. stateDetail :: Prelude.Maybe ContainerServiceStateDetail, -- | The tag keys and optional values for the resource. For more information -- about tags in Lightsail, see the -- . tags :: Prelude.Maybe [Tag], -- | The publicly accessible URL of the container service. -- -- If no public endpoint is specified in the @currentDeployment@, this URL -- returns a 404 response. url :: Prelude.Maybe Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ContainerService' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'arn', 'containerService_arn' - The Amazon Resource Name (ARN) of the container service. -- -- 'containerServiceName', 'containerService_containerServiceName' - The name of the container service. -- -- 'createdAt', 'containerService_createdAt' - The timestamp when the container service was created. -- -- 'currentDeployment', 'containerService_currentDeployment' - An object that describes the current container deployment of the -- container service. -- -- 'isDisabled', 'containerService_isDisabled' - A Boolean value indicating whether the container service is disabled. -- -- 'location', 'containerService_location' - An object that describes the location of the container service, such as -- the Amazon Web Services Region and Availability Zone. -- -- 'nextDeployment', 'containerService_nextDeployment' - An object that describes the next deployment of the container service. -- -- This value is @null@ when there is no deployment in a @pending@ state. -- -- 'power', 'containerService_power' - The power specification of the container service. -- -- The power specifies the amount of RAM, the number of vCPUs, and the base -- price of the container service. -- -- 'powerId', 'containerService_powerId' - The ID of the power of the container service. -- -- 'principalArn', 'containerService_principalArn' - The principal ARN of the container service. -- -- The principal ARN can be used to create a trust relationship between -- your standard Amazon Web Services account and your Lightsail container -- service. This allows you to give your service permission to access -- resources in your standard Amazon Web Services account. -- -- 'privateDomainName', 'containerService_privateDomainName' - The private domain name of the container service. -- -- The private domain name is accessible only by other resources within the -- default virtual private cloud (VPC) of your Lightsail account. -- -- 'privateRegistryAccess', 'containerService_privateRegistryAccess' - An object that describes the configuration for the container service to -- access private container image repositories, such as Amazon Elastic -- Container Registry (Amazon ECR) private repositories. -- -- For more information, see -- -- in the /Amazon Lightsail Developer Guide/. -- -- 'publicDomainNames', 'containerService_publicDomainNames' - The public domain name of the container service, such as @example.com@ -- and @www.example.com@. -- -- You can specify up to four public domain names for a container service. -- The domain names that you specify are used when you create a deployment -- with a container configured as the public endpoint of your container -- service. -- -- If you don\'t specify public domain names, then you can use the default -- domain of the container service. -- -- You must create and validate an SSL\/TLS certificate before you can use -- public domain names with your container service. Use the -- @CreateCertificate@ action to create a certificate for the public domain -- names you want to use with your container service. -- -- See @CreateContainerService@ or @UpdateContainerService@ for information -- about how to specify public domain names for your Lightsail container -- service. -- -- 'resourceType', 'containerService_resourceType' - The Lightsail resource type of the container service (i.e., -- @ContainerService@). -- -- 'scale', 'containerService_scale' - The scale specification of the container service. -- -- The scale specifies the allocated compute nodes of the container -- service. -- -- 'state', 'containerService_state' - The current state of the container service. -- -- The following container service states are possible: -- -- - @PENDING@ - The container service is being created. -- -- - @READY@ - The container service is running but it does not have an -- active container deployment. -- -- - @DEPLOYING@ - The container service is launching a container -- deployment. -- -- - @RUNNING@ - The container service is running and it has an active -- container deployment. -- -- - @UPDATING@ - The container service capacity or its custom domains -- are being updated. -- -- - @DELETING@ - The container service is being deleted. -- -- - @DISABLED@ - The container service is disabled, and its active -- deployment and containers, if any, are shut down. -- -- 'stateDetail', 'containerService_stateDetail' - An object that describes the current state of the container service. -- -- The state detail is populated only when a container service is in a -- @PENDING@, @DEPLOYING@, or @UPDATING@ state. -- -- 'tags', 'containerService_tags' - The tag keys and optional values for the resource. For more information -- about tags in Lightsail, see the -- . -- -- 'url', 'containerService_url' - The publicly accessible URL of the container service. -- -- If no public endpoint is specified in the @currentDeployment@, this URL -- returns a 404 response. newContainerService :: ContainerService newContainerService = ContainerService' { arn = Prelude.Nothing, containerServiceName = Prelude.Nothing, createdAt = Prelude.Nothing, currentDeployment = Prelude.Nothing, isDisabled = Prelude.Nothing, location = Prelude.Nothing, nextDeployment = Prelude.Nothing, power = Prelude.Nothing, powerId = Prelude.Nothing, principalArn = Prelude.Nothing, privateDomainName = Prelude.Nothing, privateRegistryAccess = Prelude.Nothing, publicDomainNames = Prelude.Nothing, resourceType = Prelude.Nothing, scale = Prelude.Nothing, state = Prelude.Nothing, stateDetail = Prelude.Nothing, tags = Prelude.Nothing, url = Prelude.Nothing } -- | The Amazon Resource Name (ARN) of the container service. containerService_arn :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Text) containerService_arn = Lens.lens (\ContainerService' {arn} -> arn) (\s@ContainerService' {} a -> s {arn = a} :: ContainerService) -- | The name of the container service. containerService_containerServiceName :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Text) containerService_containerServiceName = Lens.lens (\ContainerService' {containerServiceName} -> containerServiceName) (\s@ContainerService' {} a -> s {containerServiceName = a} :: ContainerService) -- | The timestamp when the container service was created. containerService_createdAt :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.UTCTime) containerService_createdAt = Lens.lens (\ContainerService' {createdAt} -> createdAt) (\s@ContainerService' {} a -> s {createdAt = a} :: ContainerService) Prelude.. Lens.mapping Data._Time -- | An object that describes the current container deployment of the -- container service. containerService_currentDeployment :: Lens.Lens' ContainerService (Prelude.Maybe ContainerServiceDeployment) containerService_currentDeployment = Lens.lens (\ContainerService' {currentDeployment} -> currentDeployment) (\s@ContainerService' {} a -> s {currentDeployment = a} :: ContainerService) -- | A Boolean value indicating whether the container service is disabled. containerService_isDisabled :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Bool) containerService_isDisabled = Lens.lens (\ContainerService' {isDisabled} -> isDisabled) (\s@ContainerService' {} a -> s {isDisabled = a} :: ContainerService) -- | An object that describes the location of the container service, such as -- the Amazon Web Services Region and Availability Zone. containerService_location :: Lens.Lens' ContainerService (Prelude.Maybe ResourceLocation) containerService_location = Lens.lens (\ContainerService' {location} -> location) (\s@ContainerService' {} a -> s {location = a} :: ContainerService) -- | An object that describes the next deployment of the container service. -- -- This value is @null@ when there is no deployment in a @pending@ state. containerService_nextDeployment :: Lens.Lens' ContainerService (Prelude.Maybe ContainerServiceDeployment) containerService_nextDeployment = Lens.lens (\ContainerService' {nextDeployment} -> nextDeployment) (\s@ContainerService' {} a -> s {nextDeployment = a} :: ContainerService) -- | The power specification of the container service. -- -- The power specifies the amount of RAM, the number of vCPUs, and the base -- price of the container service. containerService_power :: Lens.Lens' ContainerService (Prelude.Maybe ContainerServicePowerName) containerService_power = Lens.lens (\ContainerService' {power} -> power) (\s@ContainerService' {} a -> s {power = a} :: ContainerService) -- | The ID of the power of the container service. containerService_powerId :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Text) containerService_powerId = Lens.lens (\ContainerService' {powerId} -> powerId) (\s@ContainerService' {} a -> s {powerId = a} :: ContainerService) -- | The principal ARN of the container service. -- -- The principal ARN can be used to create a trust relationship between -- your standard Amazon Web Services account and your Lightsail container -- service. This allows you to give your service permission to access -- resources in your standard Amazon Web Services account. containerService_principalArn :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Text) containerService_principalArn = Lens.lens (\ContainerService' {principalArn} -> principalArn) (\s@ContainerService' {} a -> s {principalArn = a} :: ContainerService) -- | The private domain name of the container service. -- -- The private domain name is accessible only by other resources within the -- default virtual private cloud (VPC) of your Lightsail account. containerService_privateDomainName :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Text) containerService_privateDomainName = Lens.lens (\ContainerService' {privateDomainName} -> privateDomainName) (\s@ContainerService' {} a -> s {privateDomainName = a} :: ContainerService) -- | An object that describes the configuration for the container service to -- access private container image repositories, such as Amazon Elastic -- Container Registry (Amazon ECR) private repositories. -- -- For more information, see -- -- in the /Amazon Lightsail Developer Guide/. containerService_privateRegistryAccess :: Lens.Lens' ContainerService (Prelude.Maybe PrivateRegistryAccess) containerService_privateRegistryAccess = Lens.lens (\ContainerService' {privateRegistryAccess} -> privateRegistryAccess) (\s@ContainerService' {} a -> s {privateRegistryAccess = a} :: ContainerService) -- | The public domain name of the container service, such as @example.com@ -- and @www.example.com@. -- -- You can specify up to four public domain names for a container service. -- The domain names that you specify are used when you create a deployment -- with a container configured as the public endpoint of your container -- service. -- -- If you don\'t specify public domain names, then you can use the default -- domain of the container service. -- -- You must create and validate an SSL\/TLS certificate before you can use -- public domain names with your container service. Use the -- @CreateCertificate@ action to create a certificate for the public domain -- names you want to use with your container service. -- -- See @CreateContainerService@ or @UpdateContainerService@ for information -- about how to specify public domain names for your Lightsail container -- service. containerService_publicDomainNames :: Lens.Lens' ContainerService (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text])) containerService_publicDomainNames = Lens.lens (\ContainerService' {publicDomainNames} -> publicDomainNames) (\s@ContainerService' {} a -> s {publicDomainNames = a} :: ContainerService) Prelude.. Lens.mapping Lens.coerced -- | The Lightsail resource type of the container service (i.e., -- @ContainerService@). containerService_resourceType :: Lens.Lens' ContainerService (Prelude.Maybe ResourceType) containerService_resourceType = Lens.lens (\ContainerService' {resourceType} -> resourceType) (\s@ContainerService' {} a -> s {resourceType = a} :: ContainerService) -- | The scale specification of the container service. -- -- The scale specifies the allocated compute nodes of the container -- service. containerService_scale :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Natural) containerService_scale = Lens.lens (\ContainerService' {scale} -> scale) (\s@ContainerService' {} a -> s {scale = a} :: ContainerService) -- | The current state of the container service. -- -- The following container service states are possible: -- -- - @PENDING@ - The container service is being created. -- -- - @READY@ - The container service is running but it does not have an -- active container deployment. -- -- - @DEPLOYING@ - The container service is launching a container -- deployment. -- -- - @RUNNING@ - The container service is running and it has an active -- container deployment. -- -- - @UPDATING@ - The container service capacity or its custom domains -- are being updated. -- -- - @DELETING@ - The container service is being deleted. -- -- - @DISABLED@ - The container service is disabled, and its active -- deployment and containers, if any, are shut down. containerService_state :: Lens.Lens' ContainerService (Prelude.Maybe ContainerServiceState) containerService_state = Lens.lens (\ContainerService' {state} -> state) (\s@ContainerService' {} a -> s {state = a} :: ContainerService) -- | An object that describes the current state of the container service. -- -- The state detail is populated only when a container service is in a -- @PENDING@, @DEPLOYING@, or @UPDATING@ state. containerService_stateDetail :: Lens.Lens' ContainerService (Prelude.Maybe ContainerServiceStateDetail) containerService_stateDetail = Lens.lens (\ContainerService' {stateDetail} -> stateDetail) (\s@ContainerService' {} a -> s {stateDetail = a} :: ContainerService) -- | The tag keys and optional values for the resource. For more information -- about tags in Lightsail, see the -- . containerService_tags :: Lens.Lens' ContainerService (Prelude.Maybe [Tag]) containerService_tags = Lens.lens (\ContainerService' {tags} -> tags) (\s@ContainerService' {} a -> s {tags = a} :: ContainerService) Prelude.. Lens.mapping Lens.coerced -- | The publicly accessible URL of the container service. -- -- If no public endpoint is specified in the @currentDeployment@, this URL -- returns a 404 response. containerService_url :: Lens.Lens' ContainerService (Prelude.Maybe Prelude.Text) containerService_url = Lens.lens (\ContainerService' {url} -> url) (\s@ContainerService' {} a -> s {url = a} :: ContainerService) instance Data.FromJSON ContainerService where parseJSON = Data.withObject "ContainerService" ( \x -> ContainerService' Prelude.<$> (x Data..:? "arn") Prelude.<*> (x Data..:? "containerServiceName") Prelude.<*> (x Data..:? "createdAt") Prelude.<*> (x Data..:? "currentDeployment") Prelude.<*> (x Data..:? "isDisabled") Prelude.<*> (x Data..:? "location") Prelude.<*> (x Data..:? "nextDeployment") Prelude.<*> (x Data..:? "power") Prelude.<*> (x Data..:? "powerId") Prelude.<*> (x Data..:? "principalArn") Prelude.<*> (x Data..:? "privateDomainName") Prelude.<*> (x Data..:? "privateRegistryAccess") Prelude.<*> ( x Data..:? "publicDomainNames" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "resourceType") Prelude.<*> (x Data..:? "scale") Prelude.<*> (x Data..:? "state") Prelude.<*> (x Data..:? "stateDetail") Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty) Prelude.<*> (x Data..:? "url") ) instance Prelude.Hashable ContainerService where hashWithSalt _salt ContainerService' {..} = _salt `Prelude.hashWithSalt` arn `Prelude.hashWithSalt` containerServiceName `Prelude.hashWithSalt` createdAt `Prelude.hashWithSalt` currentDeployment `Prelude.hashWithSalt` isDisabled `Prelude.hashWithSalt` location `Prelude.hashWithSalt` nextDeployment `Prelude.hashWithSalt` power `Prelude.hashWithSalt` powerId `Prelude.hashWithSalt` principalArn `Prelude.hashWithSalt` privateDomainName `Prelude.hashWithSalt` privateRegistryAccess `Prelude.hashWithSalt` publicDomainNames `Prelude.hashWithSalt` resourceType `Prelude.hashWithSalt` scale `Prelude.hashWithSalt` state `Prelude.hashWithSalt` stateDetail `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` url instance Prelude.NFData ContainerService where rnf ContainerService' {..} = Prelude.rnf arn `Prelude.seq` Prelude.rnf containerServiceName `Prelude.seq` Prelude.rnf createdAt `Prelude.seq` Prelude.rnf currentDeployment `Prelude.seq` Prelude.rnf isDisabled `Prelude.seq` Prelude.rnf location `Prelude.seq` Prelude.rnf nextDeployment `Prelude.seq` Prelude.rnf power `Prelude.seq` Prelude.rnf powerId `Prelude.seq` Prelude.rnf principalArn `Prelude.seq` Prelude.rnf privateDomainName `Prelude.seq` Prelude.rnf privateRegistryAccess `Prelude.seq` Prelude.rnf publicDomainNames `Prelude.seq` Prelude.rnf resourceType `Prelude.seq` Prelude.rnf scale `Prelude.seq` Prelude.rnf state `Prelude.seq` Prelude.rnf stateDetail `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf url