From c97217fa2fc1f789550a7f8042a3a4bc3ace46e0 Mon Sep 17 00:00:00 2001 From: awstools Date: Mon, 31 Oct 2022 18:35:17 +0000 Subject: [PATCH] feat(client-cloudwatch-logs): SDK release to support tagging for destinations and log groups with TagResource. Also supports tag on create with PutDestination. --- .../src/CloudWatchLogs.ts | 158 ++- .../src/CloudWatchLogsClient.ts | 16 +- .../src/commands/CreateExportTaskCommand.ts | 13 +- .../commands/ListTagsForResourceCommand.ts | 115 ++ .../src/commands/ListTagsLogGroupCommand.ts | 8 +- .../src/commands/TagLogGroupCommand.ts | 12 +- .../src/commands/TagResourceCommand.ts | 118 ++ .../src/commands/UntagLogGroupCommand.ts | 12 +- .../src/commands/UntagResourceCommand.ts | 107 ++ .../src/commands/index.ts | 3 + .../src/models/models_0.ts | 133 +- .../src/protocols/Aws_json1_1.ts | 249 ++++ .../aws-models/cloudwatch-logs.json | 1244 ++++++++++------- 13 files changed, 1675 insertions(+), 513 deletions(-) create mode 100644 clients/client-cloudwatch-logs/src/commands/ListTagsForResourceCommand.ts create mode 100644 clients/client-cloudwatch-logs/src/commands/TagResourceCommand.ts create mode 100644 clients/client-cloudwatch-logs/src/commands/UntagResourceCommand.ts diff --git a/clients/client-cloudwatch-logs/src/CloudWatchLogs.ts b/clients/client-cloudwatch-logs/src/CloudWatchLogs.ts index 21a86c71e12ab..f30b8872b4605 100644 --- a/clients/client-cloudwatch-logs/src/CloudWatchLogs.ts +++ b/clients/client-cloudwatch-logs/src/CloudWatchLogs.ts @@ -142,6 +142,11 @@ import { GetQueryResultsCommandInput, GetQueryResultsCommandOutput, } from "./commands/GetQueryResultsCommand"; +import { + ListTagsForResourceCommand, + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "./commands/ListTagsForResourceCommand"; import { ListTagsLogGroupCommand, ListTagsLogGroupCommandInput, @@ -190,6 +195,7 @@ import { import { StartQueryCommand, StartQueryCommandInput, StartQueryCommandOutput } from "./commands/StartQueryCommand"; import { StopQueryCommand, StopQueryCommandInput, StopQueryCommandOutput } from "./commands/StopQueryCommand"; import { TagLogGroupCommand, TagLogGroupCommandInput, TagLogGroupCommandOutput } from "./commands/TagLogGroupCommand"; +import { TagResourceCommand, TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; import { TestMetricFilterCommand, TestMetricFilterCommandInput, @@ -200,6 +206,11 @@ import { UntagLogGroupCommandInput, UntagLogGroupCommandOutput, } from "./commands/UntagLogGroupCommand"; +import { + UntagResourceCommand, + UntagResourceCommandInput, + UntagResourceCommandOutput, +} from "./commands/UntagResourceCommand"; /** *

You can use Amazon CloudWatch Logs to monitor, store, and access your log files from @@ -320,12 +331,6 @@ export class CloudWatchLogs extends CloudWatchLogsClient { * log group to an Amazon S3 bucket. When you perform a CreateExportTask * operation, you must use credentials that have permission to write to the S3 bucket * that you specify as the destination.

- * - *

Exporting log data to Amazon S3 buckets that are encrypted by KMS is not - * supported. Exporting - * log data to Amazon S3 buckets that have S3 Object Lock enabled with a retention period is not supported.

- *

Exporting to S3 buckets that are encrypted with AES-256 is supported.

- *
*

This is an asynchronous call. If all the required information is provided, this * operation initiates an export task and responds with the ID of the task. After the task has started, * you can use DescribeExportTasks to get the status of the export task. Each account can @@ -334,11 +339,8 @@ export class CloudWatchLogs extends CloudWatchLogsClient { *

You can export logs from multiple log groups or multiple time ranges to the same S3 * bucket. To separate out log data for each export task, you can specify a prefix to be used as * the Amazon S3 key prefix for all exported objects.

- * - * - *

Time-based sorting on chunks of log data inside an exported file is not guaranteed. You can sort the - * exported log fild data by using Linux utilities.

- *
+ *

Exporting to S3 buckets that are encrypted with AES-256 is supported. Exporting to S3 buckets + * encrypted with SSE-KMS is not supported.

*/ public createExportTask( args: CreateExportTaskCommandInput, @@ -1271,7 +1273,46 @@ export class CloudWatchLogs extends CloudWatchLogsClient { } /** - *

Lists the tags for the specified log group.

+ *

Displays the tags associated with a CloudWatch Logs resource. Currently, log groups + * and destinations support tagging.

+ */ + public listTagsForResource( + args: ListTagsForResourceCommandInput, + options?: __HttpHandlerOptions + ): Promise; + public listTagsForResource( + args: ListTagsForResourceCommandInput, + cb: (err: any, data?: ListTagsForResourceCommandOutput) => void + ): void; + public listTagsForResource( + args: ListTagsForResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListTagsForResourceCommandOutput) => void + ): void; + public listTagsForResource( + args: ListTagsForResourceCommandInput, + optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: ListTagsForResourceCommandOutput) => void), + cb?: (err: any, data?: ListTagsForResourceCommandOutput) => void + ): Promise | void { + const command = new ListTagsForResourceCommand(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } else { + return this.send(command, optionsOrCb); + } + } + + /** + * @deprecated + * + * + *

The ListTagsLogGroup operation is on the path to deprecation. We recommend that you use + * ListTagsForResource instead.

+ *
+ *

Lists the tags for the specified log group.

*/ public listTagsLogGroup( args: ListTagsLogGroupCommandInput, @@ -1730,9 +1771,15 @@ export class CloudWatchLogs extends CloudWatchLogsClient { } /** - *

Adds or updates the specified tags for the specified log group.

- *

To list the tags for a log group, use ListTagsLogGroup. - * To remove tags, use UntagLogGroup.

+ * @deprecated + * + * + *

The TagLogGroup operation is on the path to deprecation. We recommend that you use + * TagResource instead.

+ *
+ *

Adds or updates the specified tags for the specified log group.

+ *

To list the tags for a log group, use ListTagsForResource. + * To remove tags, use UntagResource.

*

For more information about tags, see Tag Log Groups in Amazon CloudWatch Logs * in the Amazon CloudWatch Logs User Guide.

*

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to @@ -1764,6 +1811,43 @@ export class CloudWatchLogs extends CloudWatchLogsClient { } } + /** + *

Assigns one or more tags (key-value pairs) to the specified CloudWatch Logs resource. + * Currently, the only CloudWatch Logs resources that + * can be tagged are log groups and destinations.

+ *

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 a resource 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 Logs resource.

+ */ + public tagResource(args: TagResourceCommandInput, options?: __HttpHandlerOptions): Promise; + public tagResource(args: TagResourceCommandInput, cb: (err: any, data?: TagResourceCommandOutput) => void): void; + public tagResource( + args: TagResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: TagResourceCommandOutput) => void + ): void; + public tagResource( + args: TagResourceCommandInput, + optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: TagResourceCommandOutput) => void), + cb?: (err: any, data?: TagResourceCommandOutput) => void + ): Promise | void { + const command = new TagResourceCommand(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } else { + return this.send(command, optionsOrCb); + } + } + /** *

Tests the filter pattern of a metric filter against a sample of log event messages. You * can use this operation to validate the correctness of a metric filter pattern.

@@ -1798,9 +1882,15 @@ export class CloudWatchLogs extends CloudWatchLogsClient { } /** - *

Removes the specified tags from the specified log group.

- *

To list the tags for a log group, use ListTagsLogGroup. - * To add tags, use TagLogGroup.

+ * @deprecated + * + * + *

The UntagLogGroup operation is on the path to deprecation. We recommend that you use + * UntagResource instead.

+ *
+ *

Removes the specified tags from the specified log group.

+ *

To list the tags for a log group, use ListTagsForResource. + * To add tags, use TagResource.

*

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to * log groups using the aws:Resource/key-name * or aws:TagKeys condition keys. @@ -1834,4 +1924,36 @@ export class CloudWatchLogs extends CloudWatchLogsClient { return this.send(command, optionsOrCb); } } + + /** + *

Removes one or more tags from the specified resource.

+ */ + public untagResource( + args: UntagResourceCommandInput, + options?: __HttpHandlerOptions + ): Promise; + public untagResource( + args: UntagResourceCommandInput, + cb: (err: any, data?: UntagResourceCommandOutput) => void + ): void; + public untagResource( + args: UntagResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UntagResourceCommandOutput) => void + ): void; + public untagResource( + args: UntagResourceCommandInput, + optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: UntagResourceCommandOutput) => void), + cb?: (err: any, data?: UntagResourceCommandOutput) => void + ): Promise | void { + const command = new UntagResourceCommand(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } else { + return this.send(command, optionsOrCb); + } + } } diff --git a/clients/client-cloudwatch-logs/src/CloudWatchLogsClient.ts b/clients/client-cloudwatch-logs/src/CloudWatchLogsClient.ts index abbb5a0507755..28e09709c0d9c 100644 --- a/clients/client-cloudwatch-logs/src/CloudWatchLogsClient.ts +++ b/clients/client-cloudwatch-logs/src/CloudWatchLogsClient.ts @@ -105,6 +105,10 @@ import { GetLogEventsCommandInput, GetLogEventsCommandOutput } from "./commands/ import { GetLogGroupFieldsCommandInput, GetLogGroupFieldsCommandOutput } from "./commands/GetLogGroupFieldsCommand"; import { GetLogRecordCommandInput, GetLogRecordCommandOutput } from "./commands/GetLogRecordCommand"; import { GetQueryResultsCommandInput, GetQueryResultsCommandOutput } from "./commands/GetQueryResultsCommand"; +import { + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "./commands/ListTagsForResourceCommand"; import { ListTagsLogGroupCommandInput, ListTagsLogGroupCommandOutput } from "./commands/ListTagsLogGroupCommand"; import { PutDestinationCommandInput, PutDestinationCommandOutput } from "./commands/PutDestinationCommand"; import { @@ -123,8 +127,10 @@ import { import { StartQueryCommandInput, StartQueryCommandOutput } from "./commands/StartQueryCommand"; import { StopQueryCommandInput, StopQueryCommandOutput } from "./commands/StopQueryCommand"; import { TagLogGroupCommandInput, TagLogGroupCommandOutput } from "./commands/TagLogGroupCommand"; +import { TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; import { TestMetricFilterCommandInput, TestMetricFilterCommandOutput } from "./commands/TestMetricFilterCommand"; import { UntagLogGroupCommandInput, UntagLogGroupCommandOutput } from "./commands/UntagLogGroupCommand"; +import { UntagResourceCommandInput, UntagResourceCommandOutput } from "./commands/UntagResourceCommand"; import { ClientInputEndpointParameters, ClientResolvedEndpointParameters, @@ -162,6 +168,7 @@ export type ServiceInputTypes = | GetLogGroupFieldsCommandInput | GetLogRecordCommandInput | GetQueryResultsCommandInput + | ListTagsForResourceCommandInput | ListTagsLogGroupCommandInput | PutDestinationCommandInput | PutDestinationPolicyCommandInput @@ -174,8 +181,10 @@ export type ServiceInputTypes = | StartQueryCommandInput | StopQueryCommandInput | TagLogGroupCommandInput + | TagResourceCommandInput | TestMetricFilterCommandInput - | UntagLogGroupCommandInput; + | UntagLogGroupCommandInput + | UntagResourceCommandInput; export type ServiceOutputTypes = | AssociateKmsKeyCommandOutput @@ -206,6 +215,7 @@ export type ServiceOutputTypes = | GetLogGroupFieldsCommandOutput | GetLogRecordCommandOutput | GetQueryResultsCommandOutput + | ListTagsForResourceCommandOutput | ListTagsLogGroupCommandOutput | PutDestinationCommandOutput | PutDestinationPolicyCommandOutput @@ -218,8 +228,10 @@ export type ServiceOutputTypes = | StartQueryCommandOutput | StopQueryCommandOutput | TagLogGroupCommandOutput + | TagResourceCommandOutput | TestMetricFilterCommandOutput - | UntagLogGroupCommandOutput; + | UntagLogGroupCommandOutput + | UntagResourceCommandOutput; export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__HttpHandlerOptions>> { /** diff --git a/clients/client-cloudwatch-logs/src/commands/CreateExportTaskCommand.ts b/clients/client-cloudwatch-logs/src/commands/CreateExportTaskCommand.ts index af8d36f8c58f9..a65be00ebd33c 100644 --- a/clients/client-cloudwatch-logs/src/commands/CreateExportTaskCommand.ts +++ b/clients/client-cloudwatch-logs/src/commands/CreateExportTaskCommand.ts @@ -33,12 +33,6 @@ export interface CreateExportTaskCommandOutput extends CreateExportTaskResponse, * log group to an Amazon S3 bucket. When you perform a CreateExportTask * operation, you must use credentials that have permission to write to the S3 bucket * that you specify as the destination.

- * - *

Exporting log data to Amazon S3 buckets that are encrypted by KMS is not - * supported. Exporting - * log data to Amazon S3 buckets that have S3 Object Lock enabled with a retention period is not supported.

- *

Exporting to S3 buckets that are encrypted with AES-256 is supported.

- *
*

This is an asynchronous call. If all the required information is provided, this * operation initiates an export task and responds with the ID of the task. After the task has started, * you can use DescribeExportTasks to get the status of the export task. Each account can @@ -47,11 +41,8 @@ export interface CreateExportTaskCommandOutput extends CreateExportTaskResponse, *

You can export logs from multiple log groups or multiple time ranges to the same S3 * bucket. To separate out log data for each export task, you can specify a prefix to be used as * the Amazon S3 key prefix for all exported objects.

- * - * - *

Time-based sorting on chunks of log data inside an exported file is not guaranteed. You can sort the - * exported log fild data by using Linux utilities.

- *
+ *

Exporting to S3 buckets that are encrypted with AES-256 is supported. Exporting to S3 buckets + * encrypted with SSE-KMS is not supported.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-cloudwatch-logs/src/commands/ListTagsForResourceCommand.ts b/clients/client-cloudwatch-logs/src/commands/ListTagsForResourceCommand.ts new file mode 100644 index 0000000000000..e1923fec385e9 --- /dev/null +++ b/clients/client-cloudwatch-logs/src/commands/ListTagsForResourceCommand.ts @@ -0,0 +1,115 @@ +// smithy-typescript generated code +import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, + SerdeContext as __SerdeContext, +} from "@aws-sdk/types"; + +import { CloudWatchLogsClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CloudWatchLogsClient"; +import { + ListTagsForResourceRequest, + ListTagsForResourceRequestFilterSensitiveLog, + ListTagsForResourceResponse, + ListTagsForResourceResponseFilterSensitiveLog, +} from "../models/models_0"; +import { + deserializeAws_json1_1ListTagsForResourceCommand, + serializeAws_json1_1ListTagsForResourceCommand, +} from "../protocols/Aws_json1_1"; + +export interface ListTagsForResourceCommandInput extends ListTagsForResourceRequest {} +export interface ListTagsForResourceCommandOutput extends ListTagsForResourceResponse, __MetadataBearer {} + +/** + *

Displays the tags associated with a CloudWatch Logs resource. Currently, log groups + * and destinations support tagging.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CloudWatchLogsClient, ListTagsForResourceCommand } from "@aws-sdk/client-cloudwatch-logs"; // ES Modules import + * // const { CloudWatchLogsClient, ListTagsForResourceCommand } = require("@aws-sdk/client-cloudwatch-logs"); // CommonJS import + * const client = new CloudWatchLogsClient(config); + * const command = new ListTagsForResourceCommand(input); + * const response = await client.send(command); + * ``` + * + * @see {@link ListTagsForResourceCommandInput} for command's `input` shape. + * @see {@link ListTagsForResourceCommandOutput} for command's `response` shape. + * @see {@link CloudWatchLogsClientResolvedConfig | config} for CloudWatchLogsClient's `config` shape. + * + */ +export class ListTagsForResourceCommand extends $Command< + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, + CloudWatchLogsClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + constructor(readonly input: ListTagsForResourceCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: CloudWatchLogsClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use( + getEndpointPlugin(configuration, ListTagsForResourceCommand.getEndpointParameterInstructions()) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "CloudWatchLogsClient"; + const commandName = "ListTagsForResourceCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: ListTagsForResourceRequestFilterSensitiveLog, + outputFilterSensitiveLog: ListTagsForResourceResponseFilterSensitiveLog, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize(input: ListTagsForResourceCommandInput, context: __SerdeContext): Promise<__HttpRequest> { + return serializeAws_json1_1ListTagsForResourceCommand(input, context); + } + + private deserialize(output: __HttpResponse, context: __SerdeContext): Promise { + return deserializeAws_json1_1ListTagsForResourceCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-cloudwatch-logs/src/commands/ListTagsLogGroupCommand.ts b/clients/client-cloudwatch-logs/src/commands/ListTagsLogGroupCommand.ts index 169788a4fabaa..ded3c1a3fd58c 100644 --- a/clients/client-cloudwatch-logs/src/commands/ListTagsLogGroupCommand.ts +++ b/clients/client-cloudwatch-logs/src/commands/ListTagsLogGroupCommand.ts @@ -29,7 +29,13 @@ export interface ListTagsLogGroupCommandInput extends ListTagsLogGroupRequest {} export interface ListTagsLogGroupCommandOutput extends ListTagsLogGroupResponse, __MetadataBearer {} /** - *

Lists the tags for the specified log group.

+ * @deprecated + * + * + *

The ListTagsLogGroup operation is on the path to deprecation. We recommend that you use + * ListTagsForResource instead.

+ *
+ *

Lists the tags for the specified log group.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-cloudwatch-logs/src/commands/TagLogGroupCommand.ts b/clients/client-cloudwatch-logs/src/commands/TagLogGroupCommand.ts index 1ea0efca83ee2..1a7264fca5dae 100644 --- a/clients/client-cloudwatch-logs/src/commands/TagLogGroupCommand.ts +++ b/clients/client-cloudwatch-logs/src/commands/TagLogGroupCommand.ts @@ -24,9 +24,15 @@ export interface TagLogGroupCommandInput extends TagLogGroupRequest {} export interface TagLogGroupCommandOutput extends __MetadataBearer {} /** - *

Adds or updates the specified tags for the specified log group.

- *

To list the tags for a log group, use ListTagsLogGroup. - * To remove tags, use UntagLogGroup.

+ * @deprecated + * + * + *

The TagLogGroup operation is on the path to deprecation. We recommend that you use + * TagResource instead.

+ *
+ *

Adds or updates the specified tags for the specified log group.

+ *

To list the tags for a log group, use ListTagsForResource. + * To remove tags, use UntagResource.

*

For more information about tags, see Tag Log Groups in Amazon CloudWatch Logs * in the Amazon CloudWatch Logs User Guide.

*

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to diff --git a/clients/client-cloudwatch-logs/src/commands/TagResourceCommand.ts b/clients/client-cloudwatch-logs/src/commands/TagResourceCommand.ts new file mode 100644 index 0000000000000..2375536af1c58 --- /dev/null +++ b/clients/client-cloudwatch-logs/src/commands/TagResourceCommand.ts @@ -0,0 +1,118 @@ +// smithy-typescript generated code +import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, + SerdeContext as __SerdeContext, +} from "@aws-sdk/types"; + +import { CloudWatchLogsClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CloudWatchLogsClient"; +import { TagResourceRequest, TagResourceRequestFilterSensitiveLog } from "../models/models_0"; +import { + deserializeAws_json1_1TagResourceCommand, + serializeAws_json1_1TagResourceCommand, +} from "../protocols/Aws_json1_1"; + +export interface TagResourceCommandInput extends TagResourceRequest {} +export interface TagResourceCommandOutput extends __MetadataBearer {} + +/** + *

Assigns one or more tags (key-value pairs) to the specified CloudWatch Logs resource. + * Currently, the only CloudWatch Logs resources that + * can be tagged are log groups and destinations.

+ *

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 a resource 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 Logs resource.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CloudWatchLogsClient, TagResourceCommand } from "@aws-sdk/client-cloudwatch-logs"; // ES Modules import + * // const { CloudWatchLogsClient, TagResourceCommand } = require("@aws-sdk/client-cloudwatch-logs"); // CommonJS import + * const client = new CloudWatchLogsClient(config); + * const command = new TagResourceCommand(input); + * const response = await client.send(command); + * ``` + * + * @see {@link TagResourceCommandInput} for command's `input` shape. + * @see {@link TagResourceCommandOutput} for command's `response` shape. + * @see {@link CloudWatchLogsClientResolvedConfig | config} for CloudWatchLogsClient's `config` shape. + * + */ +export class TagResourceCommand extends $Command< + TagResourceCommandInput, + TagResourceCommandOutput, + CloudWatchLogsClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + constructor(readonly input: TagResourceCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: CloudWatchLogsClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointPlugin(configuration, TagResourceCommand.getEndpointParameterInstructions())); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "CloudWatchLogsClient"; + const commandName = "TagResourceCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: TagResourceRequestFilterSensitiveLog, + outputFilterSensitiveLog: (output: any) => output, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize(input: TagResourceCommandInput, context: __SerdeContext): Promise<__HttpRequest> { + return serializeAws_json1_1TagResourceCommand(input, context); + } + + private deserialize(output: __HttpResponse, context: __SerdeContext): Promise { + return deserializeAws_json1_1TagResourceCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-cloudwatch-logs/src/commands/UntagLogGroupCommand.ts b/clients/client-cloudwatch-logs/src/commands/UntagLogGroupCommand.ts index 22dbf544fa168..010057acf265a 100644 --- a/clients/client-cloudwatch-logs/src/commands/UntagLogGroupCommand.ts +++ b/clients/client-cloudwatch-logs/src/commands/UntagLogGroupCommand.ts @@ -24,9 +24,15 @@ export interface UntagLogGroupCommandInput extends UntagLogGroupRequest {} export interface UntagLogGroupCommandOutput extends __MetadataBearer {} /** - *

Removes the specified tags from the specified log group.

- *

To list the tags for a log group, use ListTagsLogGroup. - * To add tags, use TagLogGroup.

+ * @deprecated + * + * + *

The UntagLogGroup operation is on the path to deprecation. We recommend that you use + * UntagResource instead.

+ *
+ *

Removes the specified tags from the specified log group.

+ *

To list the tags for a log group, use ListTagsForResource. + * To add tags, use TagResource.

*

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to * log groups using the aws:Resource/key-name * or aws:TagKeys condition keys. diff --git a/clients/client-cloudwatch-logs/src/commands/UntagResourceCommand.ts b/clients/client-cloudwatch-logs/src/commands/UntagResourceCommand.ts new file mode 100644 index 0000000000000..8ace7e0c6d16d --- /dev/null +++ b/clients/client-cloudwatch-logs/src/commands/UntagResourceCommand.ts @@ -0,0 +1,107 @@ +// smithy-typescript generated code +import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, + SerdeContext as __SerdeContext, +} from "@aws-sdk/types"; + +import { CloudWatchLogsClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CloudWatchLogsClient"; +import { UntagResourceRequest, UntagResourceRequestFilterSensitiveLog } from "../models/models_0"; +import { + deserializeAws_json1_1UntagResourceCommand, + serializeAws_json1_1UntagResourceCommand, +} from "../protocols/Aws_json1_1"; + +export interface UntagResourceCommandInput extends UntagResourceRequest {} +export interface UntagResourceCommandOutput extends __MetadataBearer {} + +/** + *

Removes one or more tags from the specified resource.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CloudWatchLogsClient, UntagResourceCommand } from "@aws-sdk/client-cloudwatch-logs"; // ES Modules import + * // const { CloudWatchLogsClient, UntagResourceCommand } = require("@aws-sdk/client-cloudwatch-logs"); // CommonJS import + * const client = new CloudWatchLogsClient(config); + * const command = new UntagResourceCommand(input); + * const response = await client.send(command); + * ``` + * + * @see {@link UntagResourceCommandInput} for command's `input` shape. + * @see {@link UntagResourceCommandOutput} for command's `response` shape. + * @see {@link CloudWatchLogsClientResolvedConfig | config} for CloudWatchLogsClient's `config` shape. + * + */ +export class UntagResourceCommand extends $Command< + UntagResourceCommandInput, + UntagResourceCommandOutput, + CloudWatchLogsClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + constructor(readonly input: UntagResourceCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: CloudWatchLogsClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointPlugin(configuration, UntagResourceCommand.getEndpointParameterInstructions())); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "CloudWatchLogsClient"; + const commandName = "UntagResourceCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: UntagResourceRequestFilterSensitiveLog, + outputFilterSensitiveLog: (output: any) => output, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize(input: UntagResourceCommandInput, context: __SerdeContext): Promise<__HttpRequest> { + return serializeAws_json1_1UntagResourceCommand(input, context); + } + + private deserialize(output: __HttpResponse, context: __SerdeContext): Promise { + return deserializeAws_json1_1UntagResourceCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-cloudwatch-logs/src/commands/index.ts b/clients/client-cloudwatch-logs/src/commands/index.ts index 81d827bbdf239..86ec9083bba1a 100644 --- a/clients/client-cloudwatch-logs/src/commands/index.ts +++ b/clients/client-cloudwatch-logs/src/commands/index.ts @@ -27,6 +27,7 @@ export * from "./GetLogEventsCommand"; export * from "./GetLogGroupFieldsCommand"; export * from "./GetLogRecordCommand"; export * from "./GetQueryResultsCommand"; +export * from "./ListTagsForResourceCommand"; export * from "./ListTagsLogGroupCommand"; export * from "./PutDestinationCommand"; export * from "./PutDestinationPolicyCommand"; @@ -39,5 +40,7 @@ export * from "./PutSubscriptionFilterCommand"; export * from "./StartQueryCommand"; export * from "./StopQueryCommand"; export * from "./TagLogGroupCommand"; +export * from "./TagResourceCommand"; export * from "./TestMetricFilterCommand"; export * from "./UntagLogGroupCommand"; +export * from "./UntagResourceCommand"; diff --git a/clients/client-cloudwatch-logs/src/models/models_0.ts b/clients/client-cloudwatch-logs/src/models/models_0.ts index d5913c5d41297..2c2db95870a0f 100644 --- a/clients/client-cloudwatch-logs/src/models/models_0.ts +++ b/clients/client-cloudwatch-logs/src/models/models_0.ts @@ -570,7 +570,7 @@ export interface LogGroup { /** *

The number of days to retain the log events in the specified log group. - * Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 2192, 2557, 2922, 3288, and 3653.

+ * Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, and 3653.

*

To set a log group to never have log events expire, use * DeleteRetentionPolicy. *

@@ -1560,6 +1560,30 @@ export class InvalidSequenceTokenException extends __BaseException { } } +export interface ListTagsForResourceRequest { + /** + *

The ARN of the resource that you want to view tags for.

+ *

The ARN format of a log group is + * arn:aws:logs:Region:account-id:log-group:log-group-name + * + *

+ *

The ARN format of a destination is + * arn:aws:logs:Region:account-id:destination:destination-name + * + *

+ *

For more information about ARN format, see CloudWatch Logs + * resources and operations.

+ */ + resourceArn: string | undefined; +} + +export interface ListTagsForResourceResponse { + /** + *

The list of tags associated with the requested resource.>

+ */ + tags?: Record; +} + export interface ListTagsLogGroupRequest { /** *

The name of the log group.

@@ -1590,6 +1614,14 @@ export interface PutDestinationRequest { * Kinesis PutRecord operation on the destination stream.

*/ roleArn: string | undefined; + + /** + *

An optional list of key-value pairs to associate with the resource.

+ *

For more information about tagging, see + * Tagging Amazon Web Services resources + *

+ */ + tags?: Record; } export interface PutDestinationResponse { @@ -1830,7 +1862,7 @@ export interface PutRetentionPolicyRequest { /** *

The number of days to retain the log events in the specified log group. - * Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 2192, 2557, 2922, 3288, and 3653.

+ * Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, and 3653.

*

To set a log group to never have log events expire, use * DeleteRetentionPolicy. *

@@ -2033,6 +2065,53 @@ export interface TagLogGroupRequest { tags: Record | undefined; } +export interface TagResourceRequest { + /** + *

The ARN of the resource that you're adding tags to.

+ *

The ARN format of a log group is + * arn:aws:logs:Region:account-id:log-group:log-group-name + * + *

+ *

The ARN format of a destination is + * arn:aws:logs:Region:account-id:destination:destination-name + * + *

+ *

For more information about ARN format, see CloudWatch Logs + * resources and operations.

+ */ + resourceArn: string | undefined; + + /** + *

The list of key-value pairs to associate with the resource.

+ */ + tags: Record | undefined; +} + +/** + *

A resource can have no more than 50 tags.

+ */ +export class TooManyTagsException extends __BaseException { + readonly name: "TooManyTagsException" = "TooManyTagsException"; + readonly $fault: "client" = "client"; + /** + *

The name of the resource.

+ */ + resourceName?: string; + + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "TooManyTagsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyTagsException.prototype); + this.resourceName = opts.resourceName; + } +} + export interface TestMetricFilterRequest { /** *

A symbolic description of how CloudWatch Logs should interpret the data in each log @@ -2086,6 +2165,28 @@ export interface UntagLogGroupRequest { tags: string[] | undefined; } +export interface UntagResourceRequest { + /** + *

The ARN of the CloudWatch Logs resource that you're removing tags from.

+ *

The ARN format of a log group is + * arn:aws:logs:Region:account-id:log-group:log-group-name + * + *

+ *

The ARN format of a destination is + * arn:aws:logs:Region:account-id:destination:destination-name + * + *

+ *

For more information about ARN format, see CloudWatch Logs + * resources and operations.

+ */ + resourceArn: string | undefined; + + /** + *

The list of tag keys to remove from the resource.

+ */ + tagKeys: string[] | undefined; +} + /** * @internal */ @@ -2529,6 +2630,20 @@ export const InputLogEventFilterSensitiveLog = (obj: InputLogEvent): any => ({ ...obj, }); +/** + * @internal + */ +export const ListTagsForResourceRequestFilterSensitiveLog = (obj: ListTagsForResourceRequest): any => ({ + ...obj, +}); + +/** + * @internal + */ +export const ListTagsForResourceResponseFilterSensitiveLog = (obj: ListTagsForResourceResponse): any => ({ + ...obj, +}); + /** * @internal */ @@ -2683,6 +2798,13 @@ export const TagLogGroupRequestFilterSensitiveLog = (obj: TagLogGroupRequest): a ...obj, }); +/** + * @internal + */ +export const TagResourceRequestFilterSensitiveLog = (obj: TagResourceRequest): any => ({ + ...obj, +}); + /** * @internal */ @@ -2710,3 +2832,10 @@ export const TestMetricFilterResponseFilterSensitiveLog = (obj: TestMetricFilter export const UntagLogGroupRequestFilterSensitiveLog = (obj: UntagLogGroupRequest): any => ({ ...obj, }); + +/** + * @internal + */ +export const UntagResourceRequestFilterSensitiveLog = (obj: UntagResourceRequest): any => ({ + ...obj, +}); diff --git a/clients/client-cloudwatch-logs/src/protocols/Aws_json1_1.ts b/clients/client-cloudwatch-logs/src/protocols/Aws_json1_1.ts index 3db410fb93e14..053218459000c 100644 --- a/clients/client-cloudwatch-logs/src/protocols/Aws_json1_1.ts +++ b/clients/client-cloudwatch-logs/src/protocols/Aws_json1_1.ts @@ -75,6 +75,10 @@ import { GetLogEventsCommandInput, GetLogEventsCommandOutput } from "../commands import { GetLogGroupFieldsCommandInput, GetLogGroupFieldsCommandOutput } from "../commands/GetLogGroupFieldsCommand"; import { GetLogRecordCommandInput, GetLogRecordCommandOutput } from "../commands/GetLogRecordCommand"; import { GetQueryResultsCommandInput, GetQueryResultsCommandOutput } from "../commands/GetQueryResultsCommand"; +import { + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "../commands/ListTagsForResourceCommand"; import { ListTagsLogGroupCommandInput, ListTagsLogGroupCommandOutput } from "../commands/ListTagsLogGroupCommand"; import { PutDestinationCommandInput, PutDestinationCommandOutput } from "../commands/PutDestinationCommand"; import { @@ -93,8 +97,10 @@ import { import { StartQueryCommandInput, StartQueryCommandOutput } from "../commands/StartQueryCommand"; import { StopQueryCommandInput, StopQueryCommandOutput } from "../commands/StopQueryCommand"; import { TagLogGroupCommandInput, TagLogGroupCommandOutput } from "../commands/TagLogGroupCommand"; +import { TagResourceCommandInput, TagResourceCommandOutput } from "../commands/TagResourceCommand"; import { TestMetricFilterCommandInput, TestMetricFilterCommandOutput } from "../commands/TestMetricFilterCommand"; import { UntagLogGroupCommandInput, UntagLogGroupCommandOutput } from "../commands/UntagLogGroupCommand"; +import { UntagResourceCommandInput, UntagResourceCommandOutput } from "../commands/UntagResourceCommand"; import { CloudWatchLogsServiceException as __BaseException } from "../models/CloudWatchLogsServiceException"; import { AssociateKmsKeyRequest, @@ -152,6 +158,8 @@ import { InvalidParameterException, InvalidSequenceTokenException, LimitExceededException, + ListTagsForResourceRequest, + ListTagsForResourceResponse, ListTagsLogGroupRequest, ListTagsLogGroupResponse, LogGroup, @@ -193,10 +201,13 @@ import { StopQueryResponse, SubscriptionFilter, TagLogGroupRequest, + TagResourceRequest, TestMetricFilterRequest, TestMetricFilterResponse, + TooManyTagsException, UnrecognizedClientException, UntagLogGroupRequest, + UntagResourceRequest, } from "../models/models_0"; export const serializeAws_json1_1AssociateKmsKeyCommand = async ( @@ -563,6 +574,19 @@ export const serializeAws_json1_1GetQueryResultsCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +export const serializeAws_json1_1ListTagsForResourceCommand = async ( + input: ListTagsForResourceCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = { + "content-type": "application/x-amz-json-1.1", + "x-amz-target": "Logs_20140328.ListTagsForResource", + }; + let body: any; + body = JSON.stringify(serializeAws_json1_1ListTagsForResourceRequest(input, context)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + export const serializeAws_json1_1ListTagsLogGroupCommand = async ( input: ListTagsLogGroupCommandInput, context: __SerdeContext @@ -719,6 +743,19 @@ export const serializeAws_json1_1TagLogGroupCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +export const serializeAws_json1_1TagResourceCommand = async ( + input: TagResourceCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = { + "content-type": "application/x-amz-json-1.1", + "x-amz-target": "Logs_20140328.TagResource", + }; + let body: any; + body = JSON.stringify(serializeAws_json1_1TagResourceRequest(input, context)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + export const serializeAws_json1_1TestMetricFilterCommand = async ( input: TestMetricFilterCommandInput, context: __SerdeContext @@ -745,6 +782,19 @@ export const serializeAws_json1_1UntagLogGroupCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +export const serializeAws_json1_1UntagResourceCommand = async ( + input: UntagResourceCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = { + "content-type": "application/x-amz-json-1.1", + "x-amz-target": "Logs_20140328.UntagResource", + }; + let body: any; + body = JSON.stringify(serializeAws_json1_1UntagResourceRequest(input, context)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + export const deserializeAws_json1_1AssociateKmsKeyCommand = async ( output: __HttpResponse, context: __SerdeContext @@ -2061,6 +2111,53 @@ const deserializeAws_json1_1GetQueryResultsCommandError = async ( } }; +export const deserializeAws_json1_1ListTagsForResourceCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return deserializeAws_json1_1ListTagsForResourceCommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = deserializeAws_json1_1ListTagsForResourceResponse(data, context); + const response: ListTagsForResourceCommandOutput = { + $metadata: deserializeMetadata(output), + ...contents, + }; + return Promise.resolve(response); +}; + +const deserializeAws_json1_1ListTagsForResourceCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseErrorBody(output.body, context), + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidParameterException": + case "com.amazonaws.cloudwatchlogs#InvalidParameterException": + throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.cloudwatchlogs#ResourceNotFoundException": + throw await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context); + case "ServiceUnavailableException": + case "com.amazonaws.cloudwatchlogs#ServiceUnavailableException": + throw await deserializeAws_json1_1ServiceUnavailableExceptionResponse(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + throwDefaultError({ + output, + parsedBody, + exceptionCtor: __BaseException, + errorCode, + }); + } +}; + export const deserializeAws_json1_1ListTagsLogGroupCommand = async ( output: __HttpResponse, context: __SerdeContext @@ -2637,6 +2734,53 @@ const deserializeAws_json1_1TagLogGroupCommandError = async ( } }; +export const deserializeAws_json1_1TagResourceCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return deserializeAws_json1_1TagResourceCommandError(output, context); + } + await collectBody(output.body, context); + const response: TagResourceCommandOutput = { + $metadata: deserializeMetadata(output), + }; + return Promise.resolve(response); +}; + +const deserializeAws_json1_1TagResourceCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseErrorBody(output.body, context), + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidParameterException": + case "com.amazonaws.cloudwatchlogs#InvalidParameterException": + throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.cloudwatchlogs#ResourceNotFoundException": + throw await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context); + case "ServiceUnavailableException": + case "com.amazonaws.cloudwatchlogs#ServiceUnavailableException": + throw await deserializeAws_json1_1ServiceUnavailableExceptionResponse(parsedOutput, context); + case "TooManyTagsException": + case "com.amazonaws.cloudwatchlogs#TooManyTagsException": + throw await deserializeAws_json1_1TooManyTagsExceptionResponse(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + throwDefaultError({ + output, + parsedBody, + exceptionCtor: __BaseException, + errorCode, + }); + } +}; + export const deserializeAws_json1_1TestMetricFilterCommand = async ( output: __HttpResponse, context: __SerdeContext @@ -2719,6 +2863,50 @@ const deserializeAws_json1_1UntagLogGroupCommandError = async ( } }; +export const deserializeAws_json1_1UntagResourceCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return deserializeAws_json1_1UntagResourceCommandError(output, context); + } + await collectBody(output.body, context); + const response: UntagResourceCommandOutput = { + $metadata: deserializeMetadata(output), + }; + return Promise.resolve(response); +}; + +const deserializeAws_json1_1UntagResourceCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseErrorBody(output.body, context), + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "InvalidParameterException": + case "com.amazonaws.cloudwatchlogs#InvalidParameterException": + throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.cloudwatchlogs#ResourceNotFoundException": + throw await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context); + case "ServiceUnavailableException": + case "com.amazonaws.cloudwatchlogs#ServiceUnavailableException": + throw await deserializeAws_json1_1ServiceUnavailableExceptionResponse(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + throwDefaultError({ + output, + parsedBody, + exceptionCtor: __BaseException, + errorCode, + }); + } +}; + const deserializeAws_json1_1DataAlreadyAcceptedExceptionResponse = async ( parsedOutput: any, context: __SerdeContext @@ -2849,6 +3037,19 @@ const deserializeAws_json1_1ServiceUnavailableExceptionResponse = async ( return __decorateServiceException(exception, body); }; +const deserializeAws_json1_1TooManyTagsExceptionResponse = async ( + parsedOutput: any, + context: __SerdeContext +): Promise => { + const body = parsedOutput.body; + const deserialized: any = deserializeAws_json1_1TooManyTagsException(body, context); + const exception = new TooManyTagsException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized, + }); + return __decorateServiceException(exception, body); +}; + const deserializeAws_json1_1UnrecognizedClientExceptionResponse = async ( parsedOutput: any, context: __SerdeContext @@ -3169,6 +3370,15 @@ const serializeAws_json1_1InputLogStreamNames = (input: string[], context: __Ser }); }; +const serializeAws_json1_1ListTagsForResourceRequest = ( + input: ListTagsForResourceRequest, + context: __SerdeContext +): any => { + return { + ...(input.resourceArn != null && { resourceArn: input.resourceArn }), + }; +}; + const serializeAws_json1_1ListTagsLogGroupRequest = (input: ListTagsLogGroupRequest, context: __SerdeContext): any => { return { ...(input.logGroupName != null && { logGroupName: input.logGroupName }), @@ -3217,6 +3427,7 @@ const serializeAws_json1_1PutDestinationRequest = (input: PutDestinationRequest, return { ...(input.destinationName != null && { destinationName: input.destinationName }), ...(input.roleArn != null && { roleArn: input.roleArn }), + ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }), ...(input.targetArn != null && { targetArn: input.targetArn }), }; }; @@ -3308,6 +3519,14 @@ const serializeAws_json1_1StopQueryRequest = (input: StopQueryRequest, context: }; }; +const serializeAws_json1_1TagKeyList = (input: string[], context: __SerdeContext): any => { + return input + .filter((e: any) => e != null) + .map((entry) => { + return entry; + }); +}; + const serializeAws_json1_1TagList = (input: string[], context: __SerdeContext): any => { return input .filter((e: any) => e != null) @@ -3323,6 +3542,13 @@ const serializeAws_json1_1TagLogGroupRequest = (input: TagLogGroupRequest, conte }; }; +const serializeAws_json1_1TagResourceRequest = (input: TagResourceRequest, context: __SerdeContext): any => { + return { + ...(input.resourceArn != null && { resourceArn: input.resourceArn }), + ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }), + }; +}; + const serializeAws_json1_1Tags = (input: Record, context: __SerdeContext): any => { return Object.entries(input).reduce((acc: Record, [key, value]: [string, any]) => { if (value === null) { @@ -3359,6 +3585,13 @@ const serializeAws_json1_1UntagLogGroupRequest = (input: UntagLogGroupRequest, c }; }; +const serializeAws_json1_1UntagResourceRequest = (input: UntagResourceRequest, context: __SerdeContext): any => { + return { + ...(input.resourceArn != null && { resourceArn: input.resourceArn }), + ...(input.tagKeys != null && { tagKeys: serializeAws_json1_1TagKeyList(input.tagKeys, context) }), + }; +}; + const deserializeAws_json1_1CreateExportTaskResponse = ( output: any, context: __SerdeContext @@ -3690,6 +3923,15 @@ const deserializeAws_json1_1LimitExceededException = (output: any, context: __Se } as any; }; +const deserializeAws_json1_1ListTagsForResourceResponse = ( + output: any, + context: __SerdeContext +): ListTagsForResourceResponse => { + return { + tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined, + } as any; +}; + const deserializeAws_json1_1ListTagsLogGroupResponse = ( output: any, context: __SerdeContext @@ -4176,6 +4418,13 @@ const deserializeAws_json1_1TestMetricFilterResponse = ( } as any; }; +const deserializeAws_json1_1TooManyTagsException = (output: any, context: __SerdeContext): TooManyTagsException => { + return { + message: __expectString(output.message), + resourceName: __expectString(output.resourceName), + } as any; +}; + const deserializeAws_json1_1UnrecognizedClientException = ( output: any, context: __SerdeContext diff --git a/codegen/sdk-codegen/aws-models/cloudwatch-logs.json b/codegen/sdk-codegen/aws-models/cloudwatch-logs.json index 7e01a284d38b3..64cbeeb6acec0 100644 --- a/codegen/sdk-codegen/aws-models/cloudwatch-logs.json +++ b/codegen/sdk-codegen/aws-models/cloudwatch-logs.json @@ -37,6 +37,16 @@ } } }, + "com.amazonaws.cloudwatchlogs#AmazonResourceName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 1011 + }, + "smithy.api#pattern": "^[\\w+=/:,.@-]*$" + } + }, "com.amazonaws.cloudwatchlogs#Arn": { "type": "string" }, @@ -152,7 +162,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates an export task, which allows you to efficiently export data from a\n log group to an Amazon S3 bucket. When you perform a CreateExportTask\n operation, you must use credentials that have permission to write to the S3 bucket \n that you specify as the destination.

\n \n

Exporting log data to Amazon S3 buckets that are encrypted by KMS is not \n supported. Exporting\n log data to Amazon S3 buckets that have S3 Object Lock enabled with a retention period is not supported.

\n

Exporting to S3 buckets that are encrypted with AES-256 is supported.

\n
\n

This is an asynchronous call. If all the required information is provided, this \n operation initiates an export task and responds with the ID of the task. After the task has started,\n you can use DescribeExportTasks to get the status of the export task. Each account can\n only have one active (RUNNING or PENDING) export task at a time.\n To cancel an export task, use CancelExportTask.

\n

You can export logs from multiple log groups or multiple time ranges to the same S3\n bucket. To separate out log data for each export task, you can specify a prefix to be used as\n the Amazon S3 key prefix for all exported objects.

\n \n \n

Time-based sorting on chunks of log data inside an exported file is not guaranteed. You can sort the \n exported log fild data by using Linux utilities.

\n
" + "smithy.api#documentation": "

Creates an export task, which allows you to efficiently export data from a\n log group to an Amazon S3 bucket. When you perform a CreateExportTask\n operation, you must use credentials that have permission to write to the S3 bucket \n that you specify as the destination.

\n

This is an asynchronous call. If all the required information is provided, this \n operation initiates an export task and responds with the ID of the task. After the task has started,\n you can use DescribeExportTasks to get the status of the export task. Each account can\n only have one active (RUNNING or PENDING) export task at a time.\n To cancel an export task, use CancelExportTask.

\n

You can export logs from multiple log groups or multiple time ranges to the same S3\n bucket. To separate out log data for each export task, you can specify a prefix to be used as\n the Amazon S3 key prefix for all exported objects.

\n

Exporting to S3 buckets that are encrypted with AES-256 is supported. Exporting to S3 buckets \n encrypted with SSE-KMS is not supported.

" } }, "com.amazonaws.cloudwatchlogs#CreateExportTaskRequest": { @@ -333,7 +343,7 @@ "com.amazonaws.cloudwatchlogs#Days": { "type": "integer", "traits": { - "smithy.api#documentation": "

The number of days to retain the log events in the specified log group.\n Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 2192, 2557, 2922, 3288, and 3653.

\n

To set a log group to never have log events expire, use\n DeleteRetentionPolicy.\n

" + "smithy.api#documentation": "

The number of days to retain the log events in the specified log group.\n Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, and 3653.

\n

To set a log group to never have log events expire, use\n DeleteRetentionPolicy.\n

" } }, "com.amazonaws.cloudwatchlogs#DefaultValue": { @@ -1420,19 +1430,23 @@ } }, "com.amazonaws.cloudwatchlogs#Distribution": { - "type": "string", - "traits": { - "smithy.api#documentation": "

The method used to distribute log data to the destination, which can be either\n random or grouped by log stream.

", - "smithy.api#enum": [ - { - "value": "Random", - "name": "Random" - }, - { - "value": "ByLogStream", - "name": "ByLogStream" + "type": "enum", + "members": { + "Random": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Random" } - ] + }, + "ByLogStream": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ByLogStream" + } + } + }, + "traits": { + "smithy.api#documentation": "

The method used to distribute log data to the destination, which can be either\n random or grouped by log stream.

" } }, "com.amazonaws.cloudwatchlogs#EventId": { @@ -1594,34 +1608,44 @@ } }, "com.amazonaws.cloudwatchlogs#ExportTaskStatusCode": { - "type": "string", - "traits": { - "smithy.api#enum": [ - { - "value": "CANCELLED", - "name": "CANCELLED" - }, - { - "value": "COMPLETED", - "name": "COMPLETED" - }, - { - "value": "FAILED", - "name": "FAILED" - }, - { - "value": "PENDING", - "name": "PENDING" - }, - { - "value": "PENDING_CANCEL", - "name": "PENDING_CANCEL" - }, - { - "value": "RUNNING", - "name": "RUNNING" + "type": "enum", + "members": { + "CANCELLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CANCELLED" + } + }, + "COMPLETED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETED" + } + }, + "FAILED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAILED" + } + }, + "PENDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PENDING" + } + }, + "PENDING_CANCEL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PENDING_CANCEL" + } + }, + "RUNNING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RUNNING" } - ] + } } }, "com.amazonaws.cloudwatchlogs#ExportTaskStatusMessage": { @@ -2201,6 +2225,52 @@ "smithy.api#error": "client" } }, + "com.amazonaws.cloudwatchlogs#ListTagsForResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.cloudwatchlogs#ListTagsForResourceRequest" + }, + "output": { + "target": "com.amazonaws.cloudwatchlogs#ListTagsForResourceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.cloudwatchlogs#InvalidParameterException" + }, + { + "target": "com.amazonaws.cloudwatchlogs#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.cloudwatchlogs#ServiceUnavailableException" + } + ], + "traits": { + "smithy.api#documentation": "

Displays the tags associated with a CloudWatch Logs resource. Currently, log groups \n and destinations support tagging.

" + } + }, + "com.amazonaws.cloudwatchlogs#ListTagsForResourceRequest": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.cloudwatchlogs#AmazonResourceName", + "traits": { + "smithy.api#documentation": "

The ARN of the resource that you want to view tags for.

\n

The ARN format of a log group is \n arn:aws:logs:Region:account-id:log-group:log-group-name\n \n

\n

The ARN format of a destination is \n arn:aws:logs:Region:account-id:destination:destination-name\n \n

\n

For more information about ARN format, see CloudWatch Logs \n resources and operations.

", + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.cloudwatchlogs#ListTagsForResourceResponse": { + "type": "structure", + "members": { + "tags": { + "target": "com.amazonaws.cloudwatchlogs#Tags", + "traits": { + "smithy.api#documentation": "

The list of tags associated with the requested resource.>

" + } + } + } + }, "com.amazonaws.cloudwatchlogs#ListTagsLogGroup": { "type": "operation", "input": { @@ -2218,7 +2288,10 @@ } ], "traits": { - "smithy.api#documentation": "

Lists the tags for the specified log group.

" + "smithy.api#deprecated": { + "message": "Please use the generic tagging API ListTagsForResource" + }, + "smithy.api#documentation": "\n

The ListTagsLogGroup operation is on the path to deprecation. We recommend that you use \n ListTagsForResource instead.

\n
\n

Lists the tags for the specified log group.

" } }, "com.amazonaws.cloudwatchlogs#ListTagsLogGroupRequest": { @@ -2231,6 +2304,11 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#deprecated": { + "message": "Please use the generic tagging API model ListTagsForResourceRequest and ListTagsForResourceResponse" + } } }, "com.amazonaws.cloudwatchlogs#ListTagsLogGroupResponse": { @@ -2242,6 +2320,11 @@ "smithy.api#documentation": "

The tags for the log group.

" } } + }, + "traits": { + "smithy.api#deprecated": { + "message": "Please use the generic tagging API model ListTagsForResourceRequest and ListTagsForResourceResponse" + } } }, "com.amazonaws.cloudwatchlogs#LogEventIndex": { @@ -2521,6 +2604,9 @@ { "target": "com.amazonaws.cloudwatchlogs#GetQueryResults" }, + { + "target": "com.amazonaws.cloudwatchlogs#ListTagsForResource" + }, { "target": "com.amazonaws.cloudwatchlogs#ListTagsLogGroup" }, @@ -2557,11 +2643,17 @@ { "target": "com.amazonaws.cloudwatchlogs#TagLogGroup" }, + { + "target": "com.amazonaws.cloudwatchlogs#TagResource" + }, { "target": "com.amazonaws.cloudwatchlogs#TestMetricFilter" }, { "target": "com.amazonaws.cloudwatchlogs#UntagLogGroup" + }, + { + "target": "com.amazonaws.cloudwatchlogs#UntagResource" } ], "traits": { @@ -2944,9 +3036,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-south-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -2957,9 +3049,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-south-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -2970,9 +3062,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-south-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -2983,9 +3075,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-south-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -2996,9 +3088,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-south-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3009,9 +3101,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-south-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3022,9 +3114,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-south-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3035,9 +3127,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3048,9 +3140,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-south-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3061,9 +3153,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-south-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3074,9 +3166,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-south-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3087,9 +3179,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3100,9 +3192,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-south-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3113,9 +3205,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-south-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3126,9 +3218,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-south-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3139,9 +3231,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-south-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3152,9 +3244,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-gov-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3165,9 +3257,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-gov-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3178,9 +3270,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-gov-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3191,9 +3283,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-gov-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3204,9 +3296,9 @@ } }, "params": { + "UseFIPS": true, "Region": "me-central-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3217,9 +3309,9 @@ } }, "params": { + "UseFIPS": true, "Region": "me-central-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3230,9 +3322,9 @@ } }, "params": { + "UseFIPS": false, "Region": "me-central-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3243,9 +3335,9 @@ } }, "params": { + "UseFIPS": false, "Region": "me-central-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3256,9 +3348,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ca-central-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3269,9 +3361,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ca-central-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3282,9 +3374,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ca-central-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3295,9 +3387,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ca-central-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3308,9 +3400,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-central-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3321,9 +3413,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-central-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3334,9 +3426,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-central-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3347,9 +3439,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-central-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3358,9 +3450,9 @@ "error": "FIPS and DualStack are enabled, but this partition does not support one or both" }, "params": { + "UseFIPS": true, "Region": "us-iso-west-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3371,9 +3463,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-iso-west-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3382,9 +3474,9 @@ "error": "DualStack is enabled but this partition does not support DualStack" }, "params": { + "UseFIPS": false, "Region": "us-iso-west-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3395,9 +3487,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-iso-west-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3408,9 +3500,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-central-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3421,9 +3513,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-central-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3434,9 +3526,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-central-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3447,9 +3539,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-central-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3460,9 +3552,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-west-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3473,9 +3565,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-west-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3486,9 +3578,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-west-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3499,9 +3591,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-west-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3512,9 +3604,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-west-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3525,9 +3617,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-west-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3538,9 +3630,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-west-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3551,9 +3643,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-west-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3564,9 +3656,9 @@ } }, "params": { + "UseFIPS": true, "Region": "af-south-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3577,9 +3669,9 @@ } }, "params": { + "UseFIPS": true, "Region": "af-south-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3590,9 +3682,9 @@ } }, "params": { + "UseFIPS": false, "Region": "af-south-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3603,9 +3695,9 @@ } }, "params": { + "UseFIPS": false, "Region": "af-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3616,9 +3708,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-north-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3629,9 +3721,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-north-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3642,9 +3734,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-north-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3655,9 +3747,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-north-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3668,9 +3760,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-west-3", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3681,9 +3773,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-west-3", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3694,9 +3786,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-west-3", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3707,9 +3799,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-west-3", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3720,9 +3812,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-west-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3733,9 +3825,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-west-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3746,9 +3838,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-west-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3759,9 +3851,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-west-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3772,9 +3864,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-west-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3785,9 +3877,9 @@ } }, "params": { + "UseFIPS": true, "Region": "eu-west-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3798,9 +3890,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-west-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3811,9 +3903,9 @@ } }, "params": { + "UseFIPS": false, "Region": "eu-west-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3824,9 +3916,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-northeast-3", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3837,9 +3929,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-northeast-3", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3850,9 +3942,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-northeast-3", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3863,9 +3955,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-northeast-3", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3876,9 +3968,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-northeast-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3889,9 +3981,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-northeast-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3902,9 +3994,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-northeast-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3915,9 +4007,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-northeast-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3928,9 +4020,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-northeast-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3941,9 +4033,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-northeast-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -3954,9 +4046,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-northeast-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -3967,9 +4059,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-northeast-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -3980,9 +4072,9 @@ } }, "params": { + "UseFIPS": true, "Region": "me-south-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -3993,9 +4085,9 @@ } }, "params": { + "UseFIPS": true, "Region": "me-south-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4006,9 +4098,9 @@ } }, "params": { + "UseFIPS": false, "Region": "me-south-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4019,9 +4111,9 @@ } }, "params": { + "UseFIPS": false, "Region": "me-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4032,9 +4124,9 @@ } }, "params": { + "UseFIPS": true, "Region": "sa-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4045,9 +4137,9 @@ } }, "params": { + "UseFIPS": true, "Region": "sa-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4058,9 +4150,9 @@ } }, "params": { + "UseFIPS": false, "Region": "sa-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4071,9 +4163,9 @@ } }, "params": { + "UseFIPS": false, "Region": "sa-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4084,9 +4176,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4097,9 +4189,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4110,9 +4202,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4123,9 +4215,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4136,9 +4228,9 @@ } }, "params": { + "UseFIPS": true, "Region": "cn-north-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4149,9 +4241,9 @@ } }, "params": { + "UseFIPS": true, "Region": "cn-north-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4162,9 +4254,9 @@ } }, "params": { + "UseFIPS": false, "Region": "cn-north-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4175,9 +4267,9 @@ } }, "params": { + "UseFIPS": false, "Region": "cn-north-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4188,9 +4280,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-gov-west-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4201,9 +4293,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-gov-west-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4214,9 +4306,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-gov-west-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4227,9 +4319,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-gov-west-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4240,9 +4332,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4253,9 +4345,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4266,9 +4358,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4279,9 +4371,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4292,9 +4384,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4305,9 +4397,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4318,9 +4410,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4331,9 +4423,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4342,9 +4434,9 @@ "error": "FIPS and DualStack are enabled, but this partition does not support one or both" }, "params": { + "UseFIPS": true, "Region": "us-iso-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4355,9 +4447,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-iso-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4366,9 +4458,9 @@ "error": "DualStack is enabled but this partition does not support DualStack" }, "params": { + "UseFIPS": false, "Region": "us-iso-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4379,9 +4471,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-iso-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4392,9 +4484,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-3", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4405,9 +4497,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-3", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4418,9 +4510,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-3", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4431,9 +4523,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-3", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4444,9 +4536,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-4", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4457,9 +4549,9 @@ } }, "params": { + "UseFIPS": true, "Region": "ap-southeast-4", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4470,9 +4562,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-4", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4483,9 +4575,9 @@ } }, "params": { + "UseFIPS": false, "Region": "ap-southeast-4", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4496,9 +4588,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4509,9 +4601,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4522,9 +4614,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4535,9 +4627,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4548,9 +4640,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-east-2", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4561,9 +4653,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-east-2", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4574,9 +4666,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-east-2", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4587,9 +4679,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-east-2", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4600,9 +4692,9 @@ } }, "params": { + "UseFIPS": true, "Region": "cn-northwest-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4613,9 +4705,9 @@ } }, "params": { + "UseFIPS": true, "Region": "cn-northwest-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4626,9 +4718,9 @@ } }, "params": { + "UseFIPS": false, "Region": "cn-northwest-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4639,9 +4731,9 @@ } }, "params": { + "UseFIPS": false, "Region": "cn-northwest-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4650,9 +4742,9 @@ "error": "FIPS and DualStack are enabled, but this partition does not support one or both" }, "params": { + "UseFIPS": true, "Region": "us-isob-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseDualStack": true } }, { @@ -4663,9 +4755,9 @@ } }, "params": { + "UseFIPS": true, "Region": "us-isob-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseDualStack": false } }, { @@ -4674,9 +4766,9 @@ "error": "DualStack is enabled but this partition does not support DualStack" }, "params": { + "UseFIPS": false, "Region": "us-isob-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseDualStack": true } }, { @@ -4687,9 +4779,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-isob-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseDualStack": false } }, { @@ -4700,9 +4792,9 @@ } }, "params": { + "UseFIPS": false, "Region": "us-east-1", "UseDualStack": false, - "UseFIPS": false, "Endpoint": "https://example.com" } }, @@ -4712,9 +4804,9 @@ "error": "Invalid Configuration: FIPS and custom endpoint are not supported" }, "params": { + "UseFIPS": true, "Region": "us-east-1", "UseDualStack": false, - "UseFIPS": true, "Endpoint": "https://example.com" } }, @@ -4724,9 +4816,9 @@ "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" }, "params": { + "UseFIPS": false, "Region": "us-east-1", "UseDualStack": true, - "UseFIPS": false, "Endpoint": "https://example.com" } } @@ -4939,18 +5031,20 @@ } }, "com.amazonaws.cloudwatchlogs#OrderBy": { - "type": "string", - "traits": { - "smithy.api#enum": [ - { - "value": "LogStreamName", - "name": "LogStreamName" - }, - { - "value": "LastEventTime", - "name": "LastEventTime" + "type": "enum", + "members": { + "LogStreamName": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LogStreamName" + } + }, + "LastEventTime": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LastEventTime" } - ] + } } }, "com.amazonaws.cloudwatchlogs#OutputLogEvent": { @@ -5101,6 +5195,12 @@ "smithy.api#documentation": "

The ARN of an IAM role that grants CloudWatch Logs permissions to call the Amazon\n Kinesis PutRecord operation on the destination stream.

", "smithy.api#required": {} } + }, + "tags": { + "target": "com.amazonaws.cloudwatchlogs#Tags", + "traits": { + "smithy.api#documentation": "

An optional list of key-value pairs to associate with the resource.

\n

For more information about tagging, see \n Tagging Amazon Web Services resources\n

" + } } } }, @@ -5699,38 +5799,50 @@ } }, "com.amazonaws.cloudwatchlogs#QueryStatus": { - "type": "string", - "traits": { - "smithy.api#enum": [ - { - "value": "Scheduled", - "name": "Scheduled" - }, - { - "value": "Running", - "name": "Running" - }, - { - "value": "Complete", - "name": "Complete" - }, - { - "value": "Failed", - "name": "Failed" - }, - { - "value": "Cancelled", - "name": "Cancelled" - }, - { - "value": "Timeout", - "name": "Timeout" - }, - { - "value": "Unknown", - "name": "Unknown" + "type": "enum", + "members": { + "Scheduled": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Scheduled" } - ] + }, + "Running": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Running" + } + }, + "Complete": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Complete" + } + }, + "Failed": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Failed" + } + }, + "Cancelled": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Cancelled" + } + }, + "Timeout": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Timeout" + } + }, + "Unknown": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Unknown" + } + } } }, "com.amazonaws.cloudwatchlogs#QueryString": { @@ -5905,118 +6017,170 @@ } }, "com.amazonaws.cloudwatchlogs#StandardUnit": { - "type": "string", - "traits": { - "smithy.api#enum": [ - { - "value": "Seconds", - "name": "Seconds" - }, - { - "value": "Microseconds", - "name": "Microseconds" - }, - { - "value": "Milliseconds", - "name": "Milliseconds" - }, - { - "value": "Bytes", - "name": "Bytes" - }, - { - "value": "Kilobytes", - "name": "Kilobytes" - }, - { - "value": "Megabytes", - "name": "Megabytes" - }, - { - "value": "Gigabytes", - "name": "Gigabytes" - }, - { - "value": "Terabytes", - "name": "Terabytes" - }, - { - "value": "Bits", - "name": "Bits" - }, - { - "value": "Kilobits", - "name": "Kilobits" - }, - { - "value": "Megabits", - "name": "Megabits" - }, - { - "value": "Gigabits", - "name": "Gigabits" - }, - { - "value": "Terabits", - "name": "Terabits" - }, - { - "value": "Percent", - "name": "Percent" - }, - { - "value": "Count", - "name": "Count" - }, - { - "value": "Bytes/Second", - "name": "BytesSecond" - }, - { - "value": "Kilobytes/Second", - "name": "KilobytesSecond" - }, - { - "value": "Megabytes/Second", - "name": "MegabytesSecond" - }, - { - "value": "Gigabytes/Second", - "name": "GigabytesSecond" - }, - { - "value": "Terabytes/Second", - "name": "TerabytesSecond" - }, - { - "value": "Bits/Second", - "name": "BitsSecond" - }, - { - "value": "Kilobits/Second", - "name": "KilobitsSecond" - }, - { - "value": "Megabits/Second", - "name": "MegabitsSecond" - }, - { - "value": "Gigabits/Second", - "name": "GigabitsSecond" - }, - { - "value": "Terabits/Second", - "name": "TerabitsSecond" - }, - { - "value": "Count/Second", - "name": "CountSecond" - }, - { - "value": "None", - "name": "None" + "type": "enum", + "members": { + "Seconds": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Seconds" + } + }, + "Microseconds": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Microseconds" + } + }, + "Milliseconds": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Milliseconds" + } + }, + "Bytes": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Bytes" + } + }, + "Kilobytes": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Kilobytes" + } + }, + "Megabytes": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Megabytes" + } + }, + "Gigabytes": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Gigabytes" + } + }, + "Terabytes": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Terabytes" + } + }, + "Bits": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Bits" + } + }, + "Kilobits": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Kilobits" + } + }, + "Megabits": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Megabits" + } + }, + "Gigabits": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Gigabits" + } + }, + "Terabits": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Terabits" + } + }, + "Percent": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Percent" + } + }, + "Count": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Count" } - ] + }, + "BytesSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Bytes/Second" + } + }, + "KilobytesSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Kilobytes/Second" + } + }, + "MegabytesSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Megabytes/Second" + } + }, + "GigabytesSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Gigabytes/Second" + } + }, + "TerabytesSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Terabytes/Second" + } + }, + "BitsSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Bits/Second" + } + }, + "KilobitsSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Kilobits/Second" + } + }, + "MegabitsSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Megabits/Second" + } + }, + "GigabitsSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Gigabits/Second" + } + }, + "TerabitsSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Terabits/Second" + } + }, + "CountSecond": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Count/Second" + } + }, + "None": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "None" + } + } } }, "com.amazonaws.cloudwatchlogs#StartFromHead": { @@ -6233,6 +6397,18 @@ "smithy.api#pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]+)$" } }, + "com.amazonaws.cloudwatchlogs#TagKeyList": { + "type": "list", + "member": { + "target": "com.amazonaws.cloudwatchlogs#TagKey" + }, + "traits": { + "smithy.api#length": { + "min": 0, + "max": 50 + } + } + }, "com.amazonaws.cloudwatchlogs#TagList": { "type": "list", "member": { @@ -6261,7 +6437,10 @@ } ], "traits": { - "smithy.api#documentation": "

Adds or updates the specified tags for the specified log group.

\n

To list the tags for a log group, use ListTagsLogGroup.\n To remove tags, use UntagLogGroup.

\n

For more information about tags, see Tag Log Groups in Amazon CloudWatch Logs\n in the Amazon CloudWatch Logs User Guide.

\n

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to \n log groups using the aws:Resource/key-name\n or aws:TagKeys condition keys. \n For more information about using tags to control access, see \n Controlling access to Amazon Web Services resources using tags.

" + "smithy.api#deprecated": { + "message": "Please use the generic tagging API TagResource" + }, + "smithy.api#documentation": "\n

The TagLogGroup operation is on the path to deprecation. We recommend that you use \n TagResource instead.

\n
\n

Adds or updates the specified tags for the specified log group.

\n

To list the tags for a log group, use ListTagsForResource.\n To remove tags, use UntagResource.

\n

For more information about tags, see Tag Log Groups in Amazon CloudWatch Logs\n in the Amazon CloudWatch Logs User Guide.

\n

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to \n log groups using the aws:Resource/key-name\n or aws:TagKeys condition keys. \n For more information about using tags to control access, see \n Controlling access to Amazon Web Services resources using tags.

" } }, "com.amazonaws.cloudwatchlogs#TagLogGroupRequest": { @@ -6281,6 +6460,56 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#deprecated": { + "message": "Please use the generic tagging API model TagResourceRequest" + } + } + }, + "com.amazonaws.cloudwatchlogs#TagResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.cloudwatchlogs#TagResourceRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "errors": [ + { + "target": "com.amazonaws.cloudwatchlogs#InvalidParameterException" + }, + { + "target": "com.amazonaws.cloudwatchlogs#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.cloudwatchlogs#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.cloudwatchlogs#TooManyTagsException" + } + ], + "traits": { + "smithy.api#documentation": "

Assigns one or more tags (key-value pairs) to the specified CloudWatch Logs resource. \n Currently, the only CloudWatch Logs resources that \n can be tagged are log groups and destinations.

\n

Tags can help you organize and categorize your resources. You can also use them to scope user\n permissions by granting a user\n permission to access or change only resources with certain tag values.

\n

Tags don't have any semantic meaning to Amazon Web Services and are interpreted strictly as strings of characters.

\n

You can use the TagResource action with a resource that already has tags. If you specify a new tag key for the alarm, \n this tag is appended to the list of tags associated\n with the alarm. If you specify a tag key that is already associated with the alarm, the new tag value that you specify replaces\n the previous value for that tag.

\n

You can associate as many as 50 tags with a CloudWatch Logs resource.

" + } + }, + "com.amazonaws.cloudwatchlogs#TagResourceRequest": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.cloudwatchlogs#AmazonResourceName", + "traits": { + "smithy.api#documentation": "

The ARN of the resource that you're adding tags to.

\n

The ARN format of a log group is \n arn:aws:logs:Region:account-id:log-group:log-group-name\n \n

\n

The ARN format of a destination is \n arn:aws:logs:Region:account-id:destination:destination-name\n \n

\n

For more information about ARN format, see CloudWatch Logs \n resources and operations.

", + "smithy.api#required": {} + } + }, + "tags": { + "target": "com.amazonaws.cloudwatchlogs#Tags", + "traits": { + "smithy.api#documentation": "

The list of key-value pairs to associate with the resource.

", + "smithy.api#required": {} + } + } } }, "com.amazonaws.cloudwatchlogs#TagValue": { @@ -6388,6 +6617,25 @@ "com.amazonaws.cloudwatchlogs#Token": { "type": "string" }, + "com.amazonaws.cloudwatchlogs#TooManyTagsException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.cloudwatchlogs#Message" + }, + "resourceName": { + "target": "com.amazonaws.cloudwatchlogs#AmazonResourceName", + "traits": { + "smithy.api#documentation": "

The name of the resource.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

A resource can have no more than 50 tags.

", + "smithy.api#error": "client", + "smithy.api#httpError": 400 + } + }, "com.amazonaws.cloudwatchlogs#UnrecognizedClientException": { "type": "structure", "members": { @@ -6414,7 +6662,10 @@ } ], "traits": { - "smithy.api#documentation": "

Removes the specified tags from the specified log group.

\n

To list the tags for a log group, use ListTagsLogGroup.\n To add tags, use TagLogGroup.

\n

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to \n log groups using the aws:Resource/key-name\n or aws:TagKeys condition keys. \n

" + "smithy.api#deprecated": { + "message": "Please use the generic tagging API UntagResource" + }, + "smithy.api#documentation": "\n

The UntagLogGroup operation is on the path to deprecation. We recommend that you use \n UntagResource instead.

\n
\n

Removes the specified tags from the specified log group.

\n

To list the tags for a log group, use ListTagsForResource.\n To add tags, use TagResource.

\n

CloudWatch Logs doesn’t support IAM policies that prevent users from assigning specified tags to \n log groups using the aws:Resource/key-name\n or aws:TagKeys condition keys. \n

" } }, "com.amazonaws.cloudwatchlogs#UntagLogGroupRequest": { @@ -6434,10 +6685,57 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#deprecated": { + "message": "Please use the generic tagging API model UntagResourceRequest" + } + } + }, + "com.amazonaws.cloudwatchlogs#UntagResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.cloudwatchlogs#UntagResourceRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "errors": [ + { + "target": "com.amazonaws.cloudwatchlogs#InvalidParameterException" + }, + { + "target": "com.amazonaws.cloudwatchlogs#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.cloudwatchlogs#ServiceUnavailableException" + } + ], + "traits": { + "smithy.api#documentation": "

Removes one or more tags from the specified resource.

" + } + }, + "com.amazonaws.cloudwatchlogs#UntagResourceRequest": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.cloudwatchlogs#AmazonResourceName", + "traits": { + "smithy.api#documentation": "

The ARN of the CloudWatch Logs resource that you're removing tags from.

\n

The ARN format of a log group is \n arn:aws:logs:Region:account-id:log-group:log-group-name\n \n

\n

The ARN format of a destination is \n arn:aws:logs:Region:account-id:destination:destination-name\n \n

\n

For more information about ARN format, see CloudWatch Logs \n resources and operations.

", + "smithy.api#required": {} + } + }, + "tagKeys": { + "target": "com.amazonaws.cloudwatchlogs#TagKeyList", + "traits": { + "smithy.api#documentation": "

The list of tag keys to remove from the resource.

", + "smithy.api#required": {} + } + } } }, "com.amazonaws.cloudwatchlogs#Value": { "type": "string" } } -} \ No newline at end of file +}