{-# 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.CloudWatch.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) -- -- Assigns one or more tags (key-value pairs) to the specified CloudWatch -- resource. Currently, the only CloudWatch resources that can be tagged -- are alarms and Contributor Insights rules. -- -- Tags can help you organize and categorize your resources. You can also -- use them to scope user permissions by granting a user permission to -- access or change only resources with certain tag values. -- -- Tags don\'t have any semantic meaning to Amazon Web Services and are -- interpreted strictly as strings of characters. -- -- You can use the @TagResource@ action with an alarm that already has -- tags. If you specify a new tag key for the alarm, this tag is appended -- to the list of tags associated with the alarm. If you specify a tag key -- that is already associated with the alarm, the new tag value that you -- specify replaces the previous value for that tag. -- -- You can associate as many as 50 tags with a CloudWatch resource. module Amazonka.CloudWatch.TagResource ( -- * Creating a Request TagResource (..), newTagResource, -- * Request Lenses tagResource_resourceARN, tagResource_tags, -- * Destructuring the Response TagResourceResponse (..), newTagResourceResponse, -- * Response Lenses tagResourceResponse_httpStatus, ) where import Amazonka.CloudWatch.Types 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 -- | /See:/ 'newTagResource' smart constructor. data TagResource = TagResource' { -- | The ARN of the CloudWatch resource that you\'re adding tags to. -- -- The ARN format of an alarm is -- @arn:aws:cloudwatch:@/@Region@/@:@/@account-id@/@:alarm:@/@alarm-name@/@ @ -- -- The ARN format of a Contributor Insights rule is -- @arn:aws:cloudwatch:@/@Region@/@:@/@account-id@/@:insight-rule:@/@insight-rule-name@/@ @ -- -- For more information about ARN format, see -- -- in the /Amazon Web Services General Reference/. resourceARN :: Prelude.Text, -- | The list of key-value pairs to associate with the alarm. tags :: [Tag] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'TagResource' 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: -- -- 'resourceARN', 'tagResource_resourceARN' - The ARN of the CloudWatch resource that you\'re adding tags to. -- -- The ARN format of an alarm is -- @arn:aws:cloudwatch:@/@Region@/@:@/@account-id@/@:alarm:@/@alarm-name@/@ @ -- -- The ARN format of a Contributor Insights rule is -- @arn:aws:cloudwatch:@/@Region@/@:@/@account-id@/@:insight-rule:@/@insight-rule-name@/@ @ -- -- For more information about ARN format, see -- -- in the /Amazon Web Services General Reference/. -- -- 'tags', 'tagResource_tags' - The list of key-value pairs to associate with the alarm. newTagResource :: -- | 'resourceARN' Prelude.Text -> TagResource newTagResource pResourceARN_ = TagResource' { resourceARN = pResourceARN_, tags = Prelude.mempty } -- | The ARN of the CloudWatch resource that you\'re adding tags to. -- -- The ARN format of an alarm is -- @arn:aws:cloudwatch:@/@Region@/@:@/@account-id@/@:alarm:@/@alarm-name@/@ @ -- -- The ARN format of a Contributor Insights rule is -- @arn:aws:cloudwatch:@/@Region@/@:@/@account-id@/@:insight-rule:@/@insight-rule-name@/@ @ -- -- For more information about ARN format, see -- -- in the /Amazon Web Services General Reference/. tagResource_resourceARN :: Lens.Lens' TagResource Prelude.Text tagResource_resourceARN = Lens.lens (\TagResource' {resourceARN} -> resourceARN) (\s@TagResource' {} a -> s {resourceARN = a} :: TagResource) -- | The list of key-value pairs to associate with the alarm. tagResource_tags :: Lens.Lens' TagResource [Tag] 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.postQuery (overrides defaultService) response = Response.receiveXMLWrapper "TagResourceResult" ( \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.mempty instance Data.ToPath TagResource where toPath = Prelude.const "/" instance Data.ToQuery TagResource where toQuery TagResource' {..} = Prelude.mconcat [ "Action" Data.=: ("TagResource" :: Prelude.ByteString), "Version" Data.=: ("2010-08-01" :: Prelude.ByteString), "ResourceARN" Data.=: resourceARN, "Tags" Data.=: Data.toQueryList "member" tags ] -- | /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 or 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