aws-sdk-cloudwatchlogs 1.102.0 → 1.104.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1109,9 +1109,10 @@ module Aws::CloudWatchLogs
1109
1109
  req.send_request(options)
1110
1110
  end
1111
1111
 
1112
- # Deletes a CloudWatch Logs account policy. This stops the policy from
1113
- # applying to all log groups or a subset of log groups in the account.
1114
- # Log-group level policies will still be in effect.
1112
+ # Deletes a CloudWatch Logs account policy. This stops the account-wide
1113
+ # policy from applying to log groups in the account. If you delete a
1114
+ # data protection policy or subscription filter policy, any log-group
1115
+ # level policies of those types remain in effect.
1115
1116
  #
1116
1117
  # To use this operation, you must be signed on with the correct
1117
1118
  # permissions depending on the type of policy that you are deleting.
@@ -1124,6 +1125,16 @@ module Aws::CloudWatchLogs
1124
1125
  # `logs:DeleteSubscriptionFilter` and `logs:DeleteAccountPolicy`
1125
1126
  # permissions.
1126
1127
  #
1128
+ # * To delete a transformer policy, you must have the
1129
+ # `logs:DeleteTransformer` and `logs:DeleteAccountPolicy` permissions.
1130
+ #
1131
+ # * To delete a field index policy, you must have the
1132
+ # `logs:DeleteIndexPolicy` and `logs:DeleteAccountPolicy` permissions.
1133
+ #
1134
+ # If you delete a field index policy, the indexing of the log events
1135
+ # that happened before you deleted the policy will still be used for up
1136
+ # to 30 days to improve CloudWatch Logs Insights queries.
1137
+ #
1127
1138
  # @option params [required, String] :policy_name
1128
1139
  # The name of the policy to delete.
1129
1140
  #
@@ -1136,7 +1147,7 @@ module Aws::CloudWatchLogs
1136
1147
  #
1137
1148
  # resp = client.delete_account_policy({
1138
1149
  # policy_name: "PolicyName", # required
1139
- # policy_type: "DATA_PROTECTION_POLICY", # required, accepts DATA_PROTECTION_POLICY, SUBSCRIPTION_FILTER_POLICY
1150
+ # policy_type: "DATA_PROTECTION_POLICY", # required, accepts DATA_PROTECTION_POLICY, SUBSCRIPTION_FILTER_POLICY, FIELD_INDEX_POLICY, TRANSFORMER_POLICY
1140
1151
  # })
1141
1152
  #
1142
1153
  # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DeleteAccountPolicy AWS API Documentation
@@ -1331,6 +1342,83 @@ module Aws::CloudWatchLogs
1331
1342
  req.send_request(options)
1332
1343
  end
1333
1344
 
1345
+ # Deletes a log-group level field index policy that was applied to a
1346
+ # single log group. The indexing of the log events that happened before
1347
+ # you delete the policy will still be used for as many as 30 days to
1348
+ # improve CloudWatch Logs Insights queries.
1349
+ #
1350
+ # You can't use this operation to delete an account-level index policy.
1351
+ # Instead, use [DeletAccountPolicy][1].
1352
+ #
1353
+ # If you delete a log-group level field index policy and there is an
1354
+ # account-level field index policy, in a few minutes the log group
1355
+ # begins using that account-wide policy to index new incoming log
1356
+ # events.
1357
+ #
1358
+ #
1359
+ #
1360
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteAccountPolicy.html
1361
+ #
1362
+ # @option params [required, String] :log_group_identifier
1363
+ # The log group to delete the index policy for. You can specify either
1364
+ # the name or the ARN of the log group.
1365
+ #
1366
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1367
+ #
1368
+ # @example Request syntax with placeholder values
1369
+ #
1370
+ # resp = client.delete_index_policy({
1371
+ # log_group_identifier: "LogGroupIdentifier", # required
1372
+ # })
1373
+ #
1374
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DeleteIndexPolicy AWS API Documentation
1375
+ #
1376
+ # @overload delete_index_policy(params = {})
1377
+ # @param [Hash] params ({})
1378
+ def delete_index_policy(params = {}, options = {})
1379
+ req = build_request(:delete_index_policy, params)
1380
+ req.send_request(options)
1381
+ end
1382
+
1383
+ # Deletes the integration between CloudWatch Logs and OpenSearch
1384
+ # Service. If your integration has active vended logs dashboards, you
1385
+ # must specify `true` for the `force` parameter, otherwise the operation
1386
+ # will fail. If you delete the integration by setting `force` to `true`,
1387
+ # all your vended logs dashboards powered by OpenSearch Service will be
1388
+ # deleted and the data that was on them will no longer be accessible.
1389
+ #
1390
+ # @option params [required, String] :integration_name
1391
+ # The name of the integration to delete. To find the name of your
1392
+ # integration, use [ListIntegrations][1].
1393
+ #
1394
+ #
1395
+ #
1396
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListIntegrations.html
1397
+ #
1398
+ # @option params [Boolean] :force
1399
+ # Specify `true` to force the deletion of the integration even if vended
1400
+ # logs dashboards currently exist.
1401
+ #
1402
+ # The default is `false`.
1403
+ #
1404
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1405
+ #
1406
+ # @example Request syntax with placeholder values
1407
+ #
1408
+ # resp = client.delete_integration({
1409
+ # integration_name: "IntegrationName", # required
1410
+ # force: false,
1411
+ # })
1412
+ #
1413
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DeleteIntegration AWS API Documentation
1414
+ #
1415
+ # @overload delete_integration(params = {})
1416
+ # @param [Hash] params ({})
1417
+ def delete_integration(params = {}, options = {})
1418
+ req = build_request(:delete_integration, params)
1419
+ req.send_request(options)
1420
+ end
1421
+
1334
1422
  # Deletes the specified CloudWatch Logs anomaly detector.
1335
1423
  #
1336
1424
  # @option params [required, String] :anomaly_detector_arn
@@ -1551,6 +1639,39 @@ module Aws::CloudWatchLogs
1551
1639
  req.send_request(options)
1552
1640
  end
1553
1641
 
1642
+ # Deletes the log transformer for the specified log group. As soon as
1643
+ # you do this, the transformation of incoming log events according to
1644
+ # that transformer stops. If this account has an account-level
1645
+ # transformer that applies to this log group, the log group begins using
1646
+ # that account-level transformer when this log-group level transformer
1647
+ # is deleted.
1648
+ #
1649
+ # After you delete a transformer, be sure to edit any metric filters or
1650
+ # subscription filters that relied on the transformed versions of the
1651
+ # log events.
1652
+ #
1653
+ # @option params [required, String] :log_group_identifier
1654
+ # Specify either the name or ARN of the log group to delete the
1655
+ # transformer for. If the log group is in a source account and you are
1656
+ # using a monitoring account, you must use the log group ARN.
1657
+ #
1658
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1659
+ #
1660
+ # @example Request syntax with placeholder values
1661
+ #
1662
+ # resp = client.delete_transformer({
1663
+ # log_group_identifier: "LogGroupIdentifier", # required
1664
+ # })
1665
+ #
1666
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DeleteTransformer AWS API Documentation
1667
+ #
1668
+ # @overload delete_transformer(params = {})
1669
+ # @param [Hash] params ({})
1670
+ def delete_transformer(params = {}, options = {})
1671
+ req = build_request(:delete_transformer, params)
1672
+ req.send_request(options)
1673
+ end
1674
+
1554
1675
  # Returns a list of all CloudWatch Logs account policies in the account.
1555
1676
  #
1556
1677
  # @option params [required, String] :policy_type
@@ -1571,16 +1692,22 @@ module Aws::CloudWatchLogs
1571
1692
  # If you omit this parameter, only the policy in the current account is
1572
1693
  # returned.
1573
1694
  #
1695
+ # @option params [String] :next_token
1696
+ # The token for the next set of items to return. (You received this
1697
+ # token from a previous call.)
1698
+ #
1574
1699
  # @return [Types::DescribeAccountPoliciesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1575
1700
  #
1576
1701
  # * {Types::DescribeAccountPoliciesResponse#account_policies #account_policies} => Array<Types::AccountPolicy>
1702
+ # * {Types::DescribeAccountPoliciesResponse#next_token #next_token} => String
1577
1703
  #
1578
1704
  # @example Request syntax with placeholder values
1579
1705
  #
1580
1706
  # resp = client.describe_account_policies({
1581
- # policy_type: "DATA_PROTECTION_POLICY", # required, accepts DATA_PROTECTION_POLICY, SUBSCRIPTION_FILTER_POLICY
1707
+ # policy_type: "DATA_PROTECTION_POLICY", # required, accepts DATA_PROTECTION_POLICY, SUBSCRIPTION_FILTER_POLICY, FIELD_INDEX_POLICY, TRANSFORMER_POLICY
1582
1708
  # policy_name: "PolicyName",
1583
1709
  # account_identifiers: ["AccountId"],
1710
+ # next_token: "NextToken",
1584
1711
  # })
1585
1712
  #
1586
1713
  # @example Response structure
@@ -1589,10 +1716,11 @@ module Aws::CloudWatchLogs
1589
1716
  # resp.account_policies[0].policy_name #=> String
1590
1717
  # resp.account_policies[0].policy_document #=> String
1591
1718
  # resp.account_policies[0].last_updated_time #=> Integer
1592
- # resp.account_policies[0].policy_type #=> String, one of "DATA_PROTECTION_POLICY", "SUBSCRIPTION_FILTER_POLICY"
1719
+ # resp.account_policies[0].policy_type #=> String, one of "DATA_PROTECTION_POLICY", "SUBSCRIPTION_FILTER_POLICY", "FIELD_INDEX_POLICY", "TRANSFORMER_POLICY"
1593
1720
  # resp.account_policies[0].scope #=> String, one of "ALL"
1594
1721
  # resp.account_policies[0].selection_criteria #=> String
1595
1722
  # resp.account_policies[0].account_id #=> String
1723
+ # resp.next_token #=> String
1596
1724
  #
1597
1725
  # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DescribeAccountPolicies AWS API Documentation
1598
1726
  #
@@ -1958,6 +2086,110 @@ module Aws::CloudWatchLogs
1958
2086
  req.send_request(options)
1959
2087
  end
1960
2088
 
2089
+ # Returns a list of field indexes listed in the field index policies of
2090
+ # one or more log groups. For more information about field index
2091
+ # policies, see [PutIndexPolicy][1].
2092
+ #
2093
+ #
2094
+ #
2095
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutIndexPolicy.html
2096
+ #
2097
+ # @option params [required, Array<String>] :log_group_identifiers
2098
+ # An array containing the names or ARNs of the log groups that you want
2099
+ # to retrieve field indexes for.
2100
+ #
2101
+ # @option params [String] :next_token
2102
+ # The token for the next set of items to return. The token expires after
2103
+ # 24 hours.
2104
+ #
2105
+ # @return [Types::DescribeFieldIndexesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2106
+ #
2107
+ # * {Types::DescribeFieldIndexesResponse#field_indexes #field_indexes} => Array&lt;Types::FieldIndex&gt;
2108
+ # * {Types::DescribeFieldIndexesResponse#next_token #next_token} => String
2109
+ #
2110
+ # @example Request syntax with placeholder values
2111
+ #
2112
+ # resp = client.describe_field_indexes({
2113
+ # log_group_identifiers: ["LogGroupIdentifier"], # required
2114
+ # next_token: "NextToken",
2115
+ # })
2116
+ #
2117
+ # @example Response structure
2118
+ #
2119
+ # resp.field_indexes #=> Array
2120
+ # resp.field_indexes[0].log_group_identifier #=> String
2121
+ # resp.field_indexes[0].field_index_name #=> String
2122
+ # resp.field_indexes[0].last_scan_time #=> Integer
2123
+ # resp.field_indexes[0].first_event_time #=> Integer
2124
+ # resp.field_indexes[0].last_event_time #=> Integer
2125
+ # resp.next_token #=> String
2126
+ #
2127
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DescribeFieldIndexes AWS API Documentation
2128
+ #
2129
+ # @overload describe_field_indexes(params = {})
2130
+ # @param [Hash] params ({})
2131
+ def describe_field_indexes(params = {}, options = {})
2132
+ req = build_request(:describe_field_indexes, params)
2133
+ req.send_request(options)
2134
+ end
2135
+
2136
+ # Returns the field index policies of one or more log groups. For more
2137
+ # information about field index policies, see [PutIndexPolicy][1].
2138
+ #
2139
+ # If a specified log group has a log-group level index policy, that
2140
+ # policy is returned by this operation.
2141
+ #
2142
+ # If a specified log group doesn't have a log-group level index policy,
2143
+ # but an account-wide index policy applies to it, that account-wide
2144
+ # policy is returned by this operation.
2145
+ #
2146
+ # To find information about only account-level policies, use
2147
+ # [DescribeAccountPolicies][2] instead.
2148
+ #
2149
+ #
2150
+ #
2151
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutIndexPolicy.html
2152
+ # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DescribeAccountPolicies.html
2153
+ #
2154
+ # @option params [required, Array<String>] :log_group_identifiers
2155
+ # An array containing the name or ARN of the log group that you want to
2156
+ # retrieve field index policies for.
2157
+ #
2158
+ # @option params [String] :next_token
2159
+ # The token for the next set of items to return. The token expires after
2160
+ # 24 hours.
2161
+ #
2162
+ # @return [Types::DescribeIndexPoliciesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2163
+ #
2164
+ # * {Types::DescribeIndexPoliciesResponse#index_policies #index_policies} => Array&lt;Types::IndexPolicy&gt;
2165
+ # * {Types::DescribeIndexPoliciesResponse#next_token #next_token} => String
2166
+ #
2167
+ # @example Request syntax with placeholder values
2168
+ #
2169
+ # resp = client.describe_index_policies({
2170
+ # log_group_identifiers: ["LogGroupIdentifier"], # required
2171
+ # next_token: "NextToken",
2172
+ # })
2173
+ #
2174
+ # @example Response structure
2175
+ #
2176
+ # resp.index_policies #=> Array
2177
+ # resp.index_policies[0].log_group_identifier #=> String
2178
+ # resp.index_policies[0].last_update_time #=> Integer
2179
+ # resp.index_policies[0].policy_document #=> String
2180
+ # resp.index_policies[0].policy_name #=> String
2181
+ # resp.index_policies[0].source #=> String, one of "ACCOUNT", "LOG_GROUP"
2182
+ # resp.next_token #=> String
2183
+ #
2184
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DescribeIndexPolicies AWS API Documentation
2185
+ #
2186
+ # @overload describe_index_policies(params = {})
2187
+ # @param [Hash] params ({})
2188
+ def describe_index_policies(params = {}, options = {})
2189
+ req = build_request(:describe_index_policies, params)
2190
+ req.send_request(options)
2191
+ end
2192
+
1961
2193
  # Lists the specified log groups. You can list all your log groups or
1962
2194
  # filter the results by prefix. The results are ASCII-sorted by log
1963
2195
  # group name.
@@ -2260,6 +2492,7 @@ module Aws::CloudWatchLogs
2260
2492
  # resp.metric_filters[0].metric_transformations[0].unit #=> String, one of "Seconds", "Microseconds", "Milliseconds", "Bytes", "Kilobytes", "Megabytes", "Gigabytes", "Terabytes", "Bits", "Kilobits", "Megabits", "Gigabits", "Terabits", "Percent", "Count", "Bytes/Second", "Kilobytes/Second", "Megabytes/Second", "Gigabytes/Second", "Terabytes/Second", "Bits/Second", "Kilobits/Second", "Megabits/Second", "Gigabits/Second", "Terabits/Second", "Count/Second", "None"
2261
2493
  # resp.metric_filters[0].creation_time #=> Integer
2262
2494
  # resp.metric_filters[0].log_group_name #=> String
2495
+ # resp.metric_filters[0].apply_on_transformed_logs #=> Boolean
2263
2496
  # resp.next_token #=> String
2264
2497
  #
2265
2498
  # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/DescribeMetricFilters AWS API Documentation
@@ -2291,6 +2524,10 @@ module Aws::CloudWatchLogs
2291
2524
  # The token for the next set of items to return. The token expires after
2292
2525
  # 24 hours.
2293
2526
  #
2527
+ # @option params [String] :query_language
2528
+ # Limits the returned queries to only the queries that use the specified
2529
+ # query language.
2530
+ #
2294
2531
  # @return [Types::DescribeQueriesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2295
2532
  #
2296
2533
  # * {Types::DescribeQueriesResponse#queries #queries} => Array&lt;Types::QueryInfo&gt;
@@ -2303,11 +2540,13 @@ module Aws::CloudWatchLogs
2303
2540
  # status: "Scheduled", # accepts Scheduled, Running, Complete, Failed, Cancelled, Timeout, Unknown
2304
2541
  # max_results: 1,
2305
2542
  # next_token: "NextToken",
2543
+ # query_language: "CWLI", # accepts CWLI, SQL, PPL
2306
2544
  # })
2307
2545
  #
2308
2546
  # @example Response structure
2309
2547
  #
2310
2548
  # resp.queries #=> Array
2549
+ # resp.queries[0].query_language #=> String, one of "CWLI", "SQL", "PPL"
2311
2550
  # resp.queries[0].query_id #=> String
2312
2551
  # resp.queries[0].query_string #=> String
2313
2552
  # resp.queries[0].status #=> String, one of "Scheduled", "Running", "Complete", "Failed", "Cancelled", "Timeout", "Unknown"
@@ -2333,6 +2572,15 @@ module Aws::CloudWatchLogs
2333
2572
  # results to only the query definitions that have names that start with
2334
2573
  # a certain string.
2335
2574
  #
2575
+ # @option params [String] :query_language
2576
+ # The query language used for this query. For more information about the
2577
+ # query languages that CloudWatch Logs supports, see [Supported query
2578
+ # languages][1].
2579
+ #
2580
+ #
2581
+ #
2582
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_Languages.html
2583
+ #
2336
2584
  # @option params [String] :query_definition_name_prefix
2337
2585
  # Use this parameter to filter your results to only the query
2338
2586
  # definitions that have names that start with the prefix you specify.
@@ -2353,6 +2601,7 @@ module Aws::CloudWatchLogs
2353
2601
  # @example Request syntax with placeholder values
2354
2602
  #
2355
2603
  # resp = client.describe_query_definitions({
2604
+ # query_language: "CWLI", # accepts CWLI, SQL, PPL
2356
2605
  # query_definition_name_prefix: "QueryDefinitionName",
2357
2606
  # max_results: 1,
2358
2607
  # next_token: "NextToken",
@@ -2361,6 +2610,7 @@ module Aws::CloudWatchLogs
2361
2610
  # @example Response structure
2362
2611
  #
2363
2612
  # resp.query_definitions #=> Array
2613
+ # resp.query_definitions[0].query_language #=> String, one of "CWLI", "SQL", "PPL"
2364
2614
  # resp.query_definitions[0].query_definition_id #=> String
2365
2615
  # resp.query_definitions[0].name #=> String
2366
2616
  # resp.query_definitions[0].query_string #=> String
@@ -2461,6 +2711,7 @@ module Aws::CloudWatchLogs
2461
2711
  # resp.subscription_filters[0].destination_arn #=> String
2462
2712
  # resp.subscription_filters[0].role_arn #=> String
2463
2713
  # resp.subscription_filters[0].distribution #=> String, one of "Random", "ByLogStream"
2714
+ # resp.subscription_filters[0].apply_on_transformed_logs #=> Boolean
2464
2715
  # resp.subscription_filters[0].creation_time #=> Integer
2465
2716
  # resp.next_token #=> String
2466
2717
  #
@@ -2906,6 +3157,72 @@ module Aws::CloudWatchLogs
2906
3157
  req.send_request(options)
2907
3158
  end
2908
3159
 
3160
+ # Returns information about one integration between CloudWatch Logs and
3161
+ # OpenSearch Service.
3162
+ #
3163
+ # @option params [required, String] :integration_name
3164
+ # The name of the integration that you want to find information about.
3165
+ # To find the name of your integration, use [ListIntegrations][1]
3166
+ #
3167
+ #
3168
+ #
3169
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_ListIntegrations.html
3170
+ #
3171
+ # @return [Types::GetIntegrationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3172
+ #
3173
+ # * {Types::GetIntegrationResponse#integration_name #integration_name} => String
3174
+ # * {Types::GetIntegrationResponse#integration_type #integration_type} => String
3175
+ # * {Types::GetIntegrationResponse#integration_status #integration_status} => String
3176
+ # * {Types::GetIntegrationResponse#integration_details #integration_details} => Types::IntegrationDetails
3177
+ #
3178
+ # @example Request syntax with placeholder values
3179
+ #
3180
+ # resp = client.get_integration({
3181
+ # integration_name: "IntegrationName", # required
3182
+ # })
3183
+ #
3184
+ # @example Response structure
3185
+ #
3186
+ # resp.integration_name #=> String
3187
+ # resp.integration_type #=> String, one of "OPENSEARCH"
3188
+ # resp.integration_status #=> String, one of "PROVISIONING", "ACTIVE", "FAILED"
3189
+ # resp.integration_details.open_search_integration_details.data_source.data_source_name #=> String
3190
+ # resp.integration_details.open_search_integration_details.data_source.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3191
+ # resp.integration_details.open_search_integration_details.data_source.status.status_message #=> String
3192
+ # resp.integration_details.open_search_integration_details.application.application_endpoint #=> String
3193
+ # resp.integration_details.open_search_integration_details.application.application_arn #=> String
3194
+ # resp.integration_details.open_search_integration_details.application.application_id #=> String
3195
+ # resp.integration_details.open_search_integration_details.application.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3196
+ # resp.integration_details.open_search_integration_details.application.status.status_message #=> String
3197
+ # resp.integration_details.open_search_integration_details.collection.collection_endpoint #=> String
3198
+ # resp.integration_details.open_search_integration_details.collection.collection_arn #=> String
3199
+ # resp.integration_details.open_search_integration_details.collection.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3200
+ # resp.integration_details.open_search_integration_details.collection.status.status_message #=> String
3201
+ # resp.integration_details.open_search_integration_details.workspace.workspace_id #=> String
3202
+ # resp.integration_details.open_search_integration_details.workspace.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3203
+ # resp.integration_details.open_search_integration_details.workspace.status.status_message #=> String
3204
+ # resp.integration_details.open_search_integration_details.encryption_policy.policy_name #=> String
3205
+ # resp.integration_details.open_search_integration_details.encryption_policy.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3206
+ # resp.integration_details.open_search_integration_details.encryption_policy.status.status_message #=> String
3207
+ # resp.integration_details.open_search_integration_details.network_policy.policy_name #=> String
3208
+ # resp.integration_details.open_search_integration_details.network_policy.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3209
+ # resp.integration_details.open_search_integration_details.network_policy.status.status_message #=> String
3210
+ # resp.integration_details.open_search_integration_details.access_policy.policy_name #=> String
3211
+ # resp.integration_details.open_search_integration_details.access_policy.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3212
+ # resp.integration_details.open_search_integration_details.access_policy.status.status_message #=> String
3213
+ # resp.integration_details.open_search_integration_details.lifecycle_policy.policy_name #=> String
3214
+ # resp.integration_details.open_search_integration_details.lifecycle_policy.status.status #=> String, one of "ACTIVE", "NOT_FOUND", "ERROR"
3215
+ # resp.integration_details.open_search_integration_details.lifecycle_policy.status.status_message #=> String
3216
+ #
3217
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/GetIntegration AWS API Documentation
3218
+ #
3219
+ # @overload get_integration(params = {})
3220
+ # @param [Hash] params ({})
3221
+ def get_integration(params = {}, options = {})
3222
+ req = build_request(:get_integration, params)
3223
+ req.send_request(options)
3224
+ end
3225
+
2909
3226
  # Retrieves information about the log anomaly detector that you specify.
2910
3227
  #
2911
3228
  # @option params [required, String] :anomaly_detector_arn
@@ -3236,6 +3553,7 @@ module Aws::CloudWatchLogs
3236
3553
  #
3237
3554
  # @return [Types::GetQueryResultsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3238
3555
  #
3556
+ # * {Types::GetQueryResultsResponse#query_language #query_language} => String
3239
3557
  # * {Types::GetQueryResultsResponse#results #results} => Array&lt;Array&lt;Types::ResultField&gt;&gt;
3240
3558
  # * {Types::GetQueryResultsResponse#statistics #statistics} => Types::QueryStatistics
3241
3559
  # * {Types::GetQueryResultsResponse#status #status} => String
@@ -3249,13 +3567,17 @@ module Aws::CloudWatchLogs
3249
3567
  #
3250
3568
  # @example Response structure
3251
3569
  #
3570
+ # resp.query_language #=> String, one of "CWLI", "SQL", "PPL"
3252
3571
  # resp.results #=> Array
3253
3572
  # resp.results[0] #=> Array
3254
3573
  # resp.results[0][0].field #=> String
3255
3574
  # resp.results[0][0].value #=> String
3256
3575
  # resp.statistics.records_matched #=> Float
3257
3576
  # resp.statistics.records_scanned #=> Float
3577
+ # resp.statistics.estimated_records_skipped #=> Float
3258
3578
  # resp.statistics.bytes_scanned #=> Float
3579
+ # resp.statistics.estimated_bytes_skipped #=> Float
3580
+ # resp.statistics.log_groups_scanned #=> Float
3259
3581
  # resp.status #=> String, one of "Scheduled", "Running", "Complete", "Failed", "Cancelled", "Timeout", "Unknown"
3260
3582
  # resp.encryption_key #=> String
3261
3583
  #
@@ -3268,6 +3590,120 @@ module Aws::CloudWatchLogs
3268
3590
  req.send_request(options)
3269
3591
  end
3270
3592
 
3593
+ # Returns the information about the log transformer associated with this
3594
+ # log group.
3595
+ #
3596
+ # This operation returns data only for transformers created at the log
3597
+ # group level. To get information for an account-level transformer, use
3598
+ # [DescribeAccountPolicies][1].
3599
+ #
3600
+ #
3601
+ #
3602
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DescribeAccountPolicies.html
3603
+ #
3604
+ # @option params [required, String] :log_group_identifier
3605
+ # Specify either the name or ARN of the log group to return transformer
3606
+ # information for. If the log group is in a source account and you are
3607
+ # using a monitoring account, you must use the log group ARN.
3608
+ #
3609
+ # @return [Types::GetTransformerResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3610
+ #
3611
+ # * {Types::GetTransformerResponse#log_group_identifier #log_group_identifier} => String
3612
+ # * {Types::GetTransformerResponse#creation_time #creation_time} => Integer
3613
+ # * {Types::GetTransformerResponse#last_modified_time #last_modified_time} => Integer
3614
+ # * {Types::GetTransformerResponse#transformer_config #transformer_config} => Array&lt;Types::Processor&gt;
3615
+ #
3616
+ # @example Request syntax with placeholder values
3617
+ #
3618
+ # resp = client.get_transformer({
3619
+ # log_group_identifier: "LogGroupIdentifier", # required
3620
+ # })
3621
+ #
3622
+ # @example Response structure
3623
+ #
3624
+ # resp.log_group_identifier #=> String
3625
+ # resp.creation_time #=> Integer
3626
+ # resp.last_modified_time #=> Integer
3627
+ # resp.transformer_config #=> Array
3628
+ # resp.transformer_config[0].add_keys.entries #=> Array
3629
+ # resp.transformer_config[0].add_keys.entries[0].key #=> String
3630
+ # resp.transformer_config[0].add_keys.entries[0].value #=> String
3631
+ # resp.transformer_config[0].add_keys.entries[0].overwrite_if_exists #=> Boolean
3632
+ # resp.transformer_config[0].copy_value.entries #=> Array
3633
+ # resp.transformer_config[0].copy_value.entries[0].source #=> String
3634
+ # resp.transformer_config[0].copy_value.entries[0].target #=> String
3635
+ # resp.transformer_config[0].copy_value.entries[0].overwrite_if_exists #=> Boolean
3636
+ # resp.transformer_config[0].csv.quote_character #=> String
3637
+ # resp.transformer_config[0].csv.delimiter #=> String
3638
+ # resp.transformer_config[0].csv.columns #=> Array
3639
+ # resp.transformer_config[0].csv.columns[0] #=> String
3640
+ # resp.transformer_config[0].csv.source #=> String
3641
+ # resp.transformer_config[0].date_time_converter.source #=> String
3642
+ # resp.transformer_config[0].date_time_converter.target #=> String
3643
+ # resp.transformer_config[0].date_time_converter.target_format #=> String
3644
+ # resp.transformer_config[0].date_time_converter.match_patterns #=> Array
3645
+ # resp.transformer_config[0].date_time_converter.match_patterns[0] #=> String
3646
+ # resp.transformer_config[0].date_time_converter.source_timezone #=> String
3647
+ # resp.transformer_config[0].date_time_converter.target_timezone #=> String
3648
+ # resp.transformer_config[0].date_time_converter.locale #=> String
3649
+ # resp.transformer_config[0].delete_keys.with_keys #=> Array
3650
+ # resp.transformer_config[0].delete_keys.with_keys[0] #=> String
3651
+ # resp.transformer_config[0].grok.source #=> String
3652
+ # resp.transformer_config[0].grok.match #=> String
3653
+ # resp.transformer_config[0].list_to_map.source #=> String
3654
+ # resp.transformer_config[0].list_to_map.key #=> String
3655
+ # resp.transformer_config[0].list_to_map.value_key #=> String
3656
+ # resp.transformer_config[0].list_to_map.target #=> String
3657
+ # resp.transformer_config[0].list_to_map.flatten #=> Boolean
3658
+ # resp.transformer_config[0].list_to_map.flattened_element #=> String, one of "first", "last"
3659
+ # resp.transformer_config[0].lower_case_string.with_keys #=> Array
3660
+ # resp.transformer_config[0].lower_case_string.with_keys[0] #=> String
3661
+ # resp.transformer_config[0].move_keys.entries #=> Array
3662
+ # resp.transformer_config[0].move_keys.entries[0].source #=> String
3663
+ # resp.transformer_config[0].move_keys.entries[0].target #=> String
3664
+ # resp.transformer_config[0].move_keys.entries[0].overwrite_if_exists #=> Boolean
3665
+ # resp.transformer_config[0].parse_cloudfront.source #=> String
3666
+ # resp.transformer_config[0].parse_json.source #=> String
3667
+ # resp.transformer_config[0].parse_json.destination #=> String
3668
+ # resp.transformer_config[0].parse_key_value.source #=> String
3669
+ # resp.transformer_config[0].parse_key_value.destination #=> String
3670
+ # resp.transformer_config[0].parse_key_value.field_delimiter #=> String
3671
+ # resp.transformer_config[0].parse_key_value.key_value_delimiter #=> String
3672
+ # resp.transformer_config[0].parse_key_value.key_prefix #=> String
3673
+ # resp.transformer_config[0].parse_key_value.non_match_value #=> String
3674
+ # resp.transformer_config[0].parse_key_value.overwrite_if_exists #=> Boolean
3675
+ # resp.transformer_config[0].parse_route_53.source #=> String
3676
+ # resp.transformer_config[0].parse_postgres.source #=> String
3677
+ # resp.transformer_config[0].parse_vpc.source #=> String
3678
+ # resp.transformer_config[0].parse_waf.source #=> String
3679
+ # resp.transformer_config[0].rename_keys.entries #=> Array
3680
+ # resp.transformer_config[0].rename_keys.entries[0].key #=> String
3681
+ # resp.transformer_config[0].rename_keys.entries[0].rename_to #=> String
3682
+ # resp.transformer_config[0].rename_keys.entries[0].overwrite_if_exists #=> Boolean
3683
+ # resp.transformer_config[0].split_string.entries #=> Array
3684
+ # resp.transformer_config[0].split_string.entries[0].source #=> String
3685
+ # resp.transformer_config[0].split_string.entries[0].delimiter #=> String
3686
+ # resp.transformer_config[0].substitute_string.entries #=> Array
3687
+ # resp.transformer_config[0].substitute_string.entries[0].source #=> String
3688
+ # resp.transformer_config[0].substitute_string.entries[0].from #=> String
3689
+ # resp.transformer_config[0].substitute_string.entries[0].to #=> String
3690
+ # resp.transformer_config[0].trim_string.with_keys #=> Array
3691
+ # resp.transformer_config[0].trim_string.with_keys[0] #=> String
3692
+ # resp.transformer_config[0].type_converter.entries #=> Array
3693
+ # resp.transformer_config[0].type_converter.entries[0].key #=> String
3694
+ # resp.transformer_config[0].type_converter.entries[0].type #=> String, one of "boolean", "integer", "double", "string"
3695
+ # resp.transformer_config[0].upper_case_string.with_keys #=> Array
3696
+ # resp.transformer_config[0].upper_case_string.with_keys[0] #=> String
3697
+ #
3698
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/GetTransformer AWS API Documentation
3699
+ #
3700
+ # @overload get_transformer(params = {})
3701
+ # @param [Hash] params ({})
3702
+ def get_transformer(params = {}, options = {})
3703
+ req = build_request(:get_transformer, params)
3704
+ req.send_request(options)
3705
+ end
3706
+
3271
3707
  # Returns a list of anomalies that log anomaly detectors have found. For
3272
3708
  # details about the structure format of each anomaly object that is
3273
3709
  # returned, see the example in this section.
@@ -3347,6 +3783,51 @@ module Aws::CloudWatchLogs
3347
3783
  req.send_request(options)
3348
3784
  end
3349
3785
 
3786
+ # Returns a list of integrations between CloudWatch Logs and other
3787
+ # services in this account. Currently, only one integration can be
3788
+ # created in an account, and this integration must be with OpenSearch
3789
+ # Service.
3790
+ #
3791
+ # @option params [String] :integration_name_prefix
3792
+ # To limit the results to integrations that start with a certain name
3793
+ # prefix, specify that name prefix here.
3794
+ #
3795
+ # @option params [String] :integration_type
3796
+ # To limit the results to integrations of a certain type, specify that
3797
+ # type here.
3798
+ #
3799
+ # @option params [String] :integration_status
3800
+ # To limit the results to integrations with a certain status, specify
3801
+ # that status here.
3802
+ #
3803
+ # @return [Types::ListIntegrationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3804
+ #
3805
+ # * {Types::ListIntegrationsResponse#integration_summaries #integration_summaries} => Array&lt;Types::IntegrationSummary&gt;
3806
+ #
3807
+ # @example Request syntax with placeholder values
3808
+ #
3809
+ # resp = client.list_integrations({
3810
+ # integration_name_prefix: "IntegrationNamePrefix",
3811
+ # integration_type: "OPENSEARCH", # accepts OPENSEARCH
3812
+ # integration_status: "PROVISIONING", # accepts PROVISIONING, ACTIVE, FAILED
3813
+ # })
3814
+ #
3815
+ # @example Response structure
3816
+ #
3817
+ # resp.integration_summaries #=> Array
3818
+ # resp.integration_summaries[0].integration_name #=> String
3819
+ # resp.integration_summaries[0].integration_type #=> String, one of "OPENSEARCH"
3820
+ # resp.integration_summaries[0].integration_status #=> String, one of "PROVISIONING", "ACTIVE", "FAILED"
3821
+ #
3822
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListIntegrations AWS API Documentation
3823
+ #
3824
+ # @overload list_integrations(params = {})
3825
+ # @param [Hash] params ({})
3826
+ def list_integrations(params = {}, options = {})
3827
+ req = build_request(:list_integrations, params)
3828
+ req.send_request(options)
3829
+ end
3830
+
3350
3831
  # Retrieves a list of the log anomaly detectors in the account.
3351
3832
  #
3352
3833
  # @option params [String] :filter_log_group_arn
@@ -3401,6 +3882,63 @@ module Aws::CloudWatchLogs
3401
3882
  req.send_request(options)
3402
3883
  end
3403
3884
 
3885
+ # Returns a list of the log groups that were analyzed during a single
3886
+ # CloudWatch Logs Insights query. This can be useful for queries that
3887
+ # use log group name prefixes or the `filterIndex` command, because the
3888
+ # log groups are dynamically selected in these cases.
3889
+ #
3890
+ # For more information about field indexes, see [Create field indexes to
3891
+ # improve query performance and reduce costs][1].
3892
+ #
3893
+ #
3894
+ #
3895
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs-Field-Indexing.html
3896
+ #
3897
+ # @option params [required, String] :query_id
3898
+ # The ID of the query to use. This query ID is from the response to your
3899
+ # [StartQuery][1] operation.
3900
+ #
3901
+ #
3902
+ #
3903
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartQuery.html
3904
+ #
3905
+ # @option params [String] :next_token
3906
+ # The token for the next set of items to return. The token expires after
3907
+ # 24 hours.
3908
+ #
3909
+ # @option params [Integer] :max_results
3910
+ # Limits the number of returned log groups to the specified number.
3911
+ #
3912
+ # @return [Types::ListLogGroupsForQueryResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3913
+ #
3914
+ # * {Types::ListLogGroupsForQueryResponse#log_group_identifiers #log_group_identifiers} => Array&lt;String&gt;
3915
+ # * {Types::ListLogGroupsForQueryResponse#next_token #next_token} => String
3916
+ #
3917
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
3918
+ #
3919
+ # @example Request syntax with placeholder values
3920
+ #
3921
+ # resp = client.list_log_groups_for_query({
3922
+ # query_id: "QueryId", # required
3923
+ # next_token: "NextToken",
3924
+ # max_results: 1,
3925
+ # })
3926
+ #
3927
+ # @example Response structure
3928
+ #
3929
+ # resp.log_group_identifiers #=> Array
3930
+ # resp.log_group_identifiers[0] #=> String
3931
+ # resp.next_token #=> String
3932
+ #
3933
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/ListLogGroupsForQuery AWS API Documentation
3934
+ #
3935
+ # @overload list_log_groups_for_query(params = {})
3936
+ # @param [Hash] params ({})
3937
+ def list_log_groups_for_query(params = {}, options = {})
3938
+ req = build_request(:list_log_groups_for_query, params)
3939
+ req.send_request(options)
3940
+ end
3941
+
3404
3942
  # Displays the tags associated with a CloudWatch Logs resource.
3405
3943
  # Currently, log groups and destinations support tagging.
3406
3944
  #
@@ -3480,9 +4018,9 @@ module Aws::CloudWatchLogs
3480
4018
  req.send_request(options)
3481
4019
  end
3482
4020
 
3483
- # Creates an account-level data protection policy or subscription filter
3484
- # policy that applies to all log groups or a subset of log groups in the
3485
- # account.
4021
+ # Creates an account-level data protection policy, subscription filter
4022
+ # policy, or field index policy that applies to all log groups or a
4023
+ # subset of log groups in the account.
3486
4024
  #
3487
4025
  # **Data protection policy**
3488
4026
  #
@@ -3555,6 +4093,102 @@ module Aws::CloudWatchLogs
3555
4093
  # subscription filter operation for any destination except a Lambda
3556
4094
  # function, you must also have the `iam:PassRole` permission.
3557
4095
  #
4096
+ # **Transformer policy**
4097
+ #
4098
+ # Creates or updates a *log transformer policy* for your account. You
4099
+ # use log transformers to transform log events into a different format,
4100
+ # making them easier for you to process and analyze. You can also
4101
+ # transform logs from different sources into standardized formats that
4102
+ # contain relevant, source-specific information. After you have created
4103
+ # a transformer, CloudWatch Logs performs this transformation at the
4104
+ # time of log ingestion. You can then refer to the transformed versions
4105
+ # of the logs during operations such as querying with CloudWatch Logs
4106
+ # Insights or creating metric filters or subscription filters.
4107
+ #
4108
+ # You can also use a transformer to copy metadata from metadata keys
4109
+ # into the log events themselves. This metadata can include log group
4110
+ # name, log stream name, account ID and Region.
4111
+ #
4112
+ # A transformer for a log group is a series of processors, where each
4113
+ # processor applies one type of transformation to the log events
4114
+ # ingested into this log group. For more information about the available
4115
+ # processors to use in a transformer, see [ Processors that you can
4116
+ # use][6].
4117
+ #
4118
+ # Having log events in standardized format enables visibility across
4119
+ # your applications for your log analysis, reporting, and alarming
4120
+ # needs. CloudWatch Logs provides transformation for common log types
4121
+ # with out-of-the-box transformation templates for major Amazon Web
4122
+ # Services log sources such as VPC flow logs, Lambda, and Amazon RDS.
4123
+ # You can use pre-built transformation templates or create custom
4124
+ # transformation policies.
4125
+ #
4126
+ # You can create transformers only for the log groups in the Standard
4127
+ # log class.
4128
+ #
4129
+ # You can have one account-level transformer policy that applies to all
4130
+ # log groups in the account. Or you can create as many as 20
4131
+ # account-level transformer policies that are each scoped to a subset of
4132
+ # log groups with the `selectionCriteria` parameter. If you have
4133
+ # multiple account-level transformer policies with selection criteria,
4134
+ # no two of them can use the same or overlapping log group name
4135
+ # prefixes. For example, if you have one policy filtered to log groups
4136
+ # that start with `my-log`, you can't have another field index policy
4137
+ # filtered to `my-logpprod` or `my-logging`.
4138
+ #
4139
+ # You can also set up a transformer at the log-group level. For more
4140
+ # information, see [PutTransformer][7]. If there is both a log-group
4141
+ # level transformer created with `PutTransformer` and an account-level
4142
+ # transformer that could apply to the same log group, the log group uses
4143
+ # only the log-group level transformer. It ignores the account-level
4144
+ # transformer.
4145
+ #
4146
+ # **Field index policy**
4147
+ #
4148
+ # You can use field index policies to create indexes on fields found in
4149
+ # log events in the log group. Creating field indexes can help lower the
4150
+ # scan volume for CloudWatch Logs Insights queries that reference those
4151
+ # fields, because these queries attempt to skip the processing of log
4152
+ # events that are known to not match the indexed field. Good fields to
4153
+ # index are fields that you often need to query for and fields or values
4154
+ # that match only a small fraction of the total log events. Common
4155
+ # examples of indexes include request ID, session ID, user IDs, or
4156
+ # instance IDs. For more information, see [Create field indexes to
4157
+ # improve query performance and reduce costs][8]
4158
+ #
4159
+ # To find the fields that are in your log group events, use the
4160
+ # [GetLogGroupFields][9] operation.
4161
+ #
4162
+ # For example, suppose you have created a field index for `requestId`.
4163
+ # Then, any CloudWatch Logs Insights query on that log group that
4164
+ # includes `requestId = value ` or `requestId in [value, value, ...]`
4165
+ # will attempt to process only the log events where the indexed field
4166
+ # matches the specified value.
4167
+ #
4168
+ # Matches of log events to the names of indexed fields are
4169
+ # case-sensitive. For example, an indexed field of `RequestId` won't
4170
+ # match a log event containing `requestId`.
4171
+ #
4172
+ # You can have one account-level field index policy that applies to all
4173
+ # log groups in the account. Or you can create as many as 20
4174
+ # account-level field index policies that are each scoped to a subset of
4175
+ # log groups with the `selectionCriteria` parameter. If you have
4176
+ # multiple account-level index policies with selection criteria, no two
4177
+ # of them can use the same or overlapping log group name prefixes. For
4178
+ # example, if you have one policy filtered to log groups that start with
4179
+ # `my-log`, you can't have another field index policy filtered to
4180
+ # `my-logpprod` or `my-logging`.
4181
+ #
4182
+ # If you create an account-level field index policy in a monitoring
4183
+ # account in cross-account observability, the policy is applied only to
4184
+ # the monitoring account and not to any source accounts.
4185
+ #
4186
+ # If you want to create a field index policy for a single log group, you
4187
+ # can use [PutIndexPolicy][10] instead of `PutAccountPolicy`. If you do
4188
+ # so, that log group will use only that log-group level policy, and will
4189
+ # ignore the account-level policy that you create with
4190
+ # [PutAccountPolicy][11].
4191
+ #
3558
4192
  #
3559
4193
  #
3560
4194
  # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogEvents.html
@@ -3562,6 +4196,12 @@ module Aws::CloudWatchLogs
3562
4196
  # [3]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html
3563
4197
  # [4]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDataProtectionPolicy.html
3564
4198
  # [5]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDestination.html
4199
+ # [6]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation.html#CloudWatch-Logs-Transformation-Processors
4200
+ # [7]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutTransformer.html
4201
+ # [8]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs-Field-Indexing.html
4202
+ # [9]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogGroupFields.html
4203
+ # [10]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutIndexPolicy.html
4204
+ # [11]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutAccountPolicy.html
3565
4205
  #
3566
4206
  # @option params [required, String] :policy_name
3567
4207
  # A name for the policy. This must be unique within the account.
@@ -3643,10 +4283,34 @@ module Aws::CloudWatchLogs
3643
4283
  # property is only applicable when the destination is an Kinesis Data
3644
4284
  # Streams data stream.
3645
4285
  #
4286
+ # **Transformer policy**
4287
+ #
4288
+ # A transformer policy must include one JSON block with the array of
4289
+ # processors and their configurations. For more information about
4290
+ # available processors, see [ Processors that you can use][3].
4291
+ #
4292
+ # **Field index policy**
4293
+ #
4294
+ # A field index filter policy can include the following attribute in a
4295
+ # JSON block:
4296
+ #
4297
+ # * **Fields** The array of field indexes to create.
4298
+ #
4299
+ # ^
4300
+ #
4301
+ # It must contain at least one field index.
4302
+ #
4303
+ # The following is an example of an index policy document that creates
4304
+ # two indexes, `RequestId` and `TransactionId`.
4305
+ #
4306
+ # `"policyDocument": "{ "Fields": [ "RequestId", "TransactionId" ]
4307
+ # }"`
4308
+ #
3646
4309
  #
3647
4310
  #
3648
4311
  # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-types.html
3649
4312
  # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDestination.html
4313
+ # [3]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation.html#CloudWatch-Logs-Transformation-Processors
3650
4314
  #
3651
4315
  # @option params [required, String] :policy_type
3652
4316
  # The type of policy that you're creating or updating.
@@ -3657,17 +4321,25 @@ module Aws::CloudWatchLogs
3657
4321
  # the account. If you omit this parameter, the default of `ALL` is used.
3658
4322
  #
3659
4323
  # @option params [String] :selection_criteria
3660
- # Use this parameter to apply the subscription filter policy to a subset
3661
- # of log groups in the account. Currently, the only supported filter is
3662
- # `LogGroupName NOT IN []`. The `selectionCriteria` string can be up to
3663
- # 25KB in length. The length is determined by using its UTF-8 bytes.
4324
+ # Use this parameter to apply the new policy to a subset of log groups
4325
+ # in the account.
3664
4326
  #
3665
- # Using the `selectionCriteria` parameter is useful to help prevent
3666
- # infinite loops. For more information, see [Log recursion
3667
- # prevention][1].
4327
+ # Specifing `selectionCriteria` is valid only when you specify
4328
+ # `SUBSCRIPTION_FILTER_POLICY`, `FIELD_INDEX_POLICY` or
4329
+ # `TRANSFORMER_POLICY`for `policyType`.
3668
4330
  #
3669
- # Specifing `selectionCriteria` is valid only when you specify `
3670
- # SUBSCRIPTION_FILTER_POLICY` for `policyType`.
4331
+ # If `policyType` is `SUBSCRIPTION_FILTER_POLICY`, the only supported
4332
+ # `selectionCriteria` filter is `LogGroupName NOT IN []`
4333
+ #
4334
+ # If `policyType` is `FIELD_INDEX_POLICY` or `TRANSFORMER_POLICY`, the
4335
+ # only supported `selectionCriteria` filter is `LogGroupNamePrefix`
4336
+ #
4337
+ # The `selectionCriteria` string can be up to 25KB in length. The length
4338
+ # is determined by using its UTF-8 bytes.
4339
+ #
4340
+ # Using the `selectionCriteria` parameter with
4341
+ # `SUBSCRIPTION_FILTER_POLICY` is useful to help prevent infinite loops.
4342
+ # For more information, see [Log recursion prevention][1].
3671
4343
  #
3672
4344
  #
3673
4345
  #
@@ -3682,7 +4354,7 @@ module Aws::CloudWatchLogs
3682
4354
  # resp = client.put_account_policy({
3683
4355
  # policy_name: "PolicyName", # required
3684
4356
  # policy_document: "AccountPolicyDocument", # required
3685
- # policy_type: "DATA_PROTECTION_POLICY", # required, accepts DATA_PROTECTION_POLICY, SUBSCRIPTION_FILTER_POLICY
4357
+ # policy_type: "DATA_PROTECTION_POLICY", # required, accepts DATA_PROTECTION_POLICY, SUBSCRIPTION_FILTER_POLICY, FIELD_INDEX_POLICY, TRANSFORMER_POLICY
3686
4358
  # scope: "ALL", # accepts ALL
3687
4359
  # selection_criteria: "SelectionCriteria",
3688
4360
  # })
@@ -3692,7 +4364,7 @@ module Aws::CloudWatchLogs
3692
4364
  # resp.account_policy.policy_name #=> String
3693
4365
  # resp.account_policy.policy_document #=> String
3694
4366
  # resp.account_policy.last_updated_time #=> Integer
3695
- # resp.account_policy.policy_type #=> String, one of "DATA_PROTECTION_POLICY", "SUBSCRIPTION_FILTER_POLICY"
4367
+ # resp.account_policy.policy_type #=> String, one of "DATA_PROTECTION_POLICY", "SUBSCRIPTION_FILTER_POLICY", "FIELD_INDEX_POLICY", "TRANSFORMER_POLICY"
3696
4368
  # resp.account_policy.scope #=> String, one of "ALL"
3697
4369
  # resp.account_policy.selection_criteria #=> String
3698
4370
  # resp.account_policy.account_id #=> String
@@ -4230,6 +4902,167 @@ module Aws::CloudWatchLogs
4230
4902
  req.send_request(options)
4231
4903
  end
4232
4904
 
4905
+ # Creates or updates a *field index policy* for the specified log group.
4906
+ # Only log groups in the Standard log class support field index
4907
+ # policies. For more information about log classes, see [Log
4908
+ # classes][1].
4909
+ #
4910
+ # You can use field index policies to create *field indexes* on fields
4911
+ # found in log events in the log group. Creating field indexes speeds up
4912
+ # and lowers the costs for CloudWatch Logs Insights queries that
4913
+ # reference those field indexes, because these queries attempt to skip
4914
+ # the processing of log events that are known to not match the indexed
4915
+ # field. Good fields to index are fields that you often need to query
4916
+ # for and fields or values that match only a small fraction of the total
4917
+ # log events. Common examples of indexes include request ID, session ID,
4918
+ # userID, and instance IDs. For more information, see [Create field
4919
+ # indexes to improve query performance and reduce costs][2].
4920
+ #
4921
+ # To find the fields that are in your log group events, use the
4922
+ # [GetLogGroupFields][3] operation.
4923
+ #
4924
+ # For example, suppose you have created a field index for `requestId`.
4925
+ # Then, any CloudWatch Logs Insights query on that log group that
4926
+ # includes `requestId = value ` or `requestId IN [value, value, ...]`
4927
+ # will process fewer log events to reduce costs, and have improved
4928
+ # performance.
4929
+ #
4930
+ # Each index policy has the following quotas and restrictions:
4931
+ #
4932
+ # * As many as 20 fields can be included in the policy.
4933
+ #
4934
+ # * Each field name can include as many as 100 characters.
4935
+ #
4936
+ # Matches of log events to the names of indexed fields are
4937
+ # case-sensitive. For example, a field index of `RequestId` won't match
4938
+ # a log event containing `requestId`.
4939
+ #
4940
+ # Log group-level field index policies created with `PutIndexPolicy`
4941
+ # override account-level field index policies created with
4942
+ # [PutAccountPolicy][4]. If you use `PutIndexPolicy` to create a field
4943
+ # index policy for a log group, that log group uses only that policy.
4944
+ # The log group ignores any account-wide field index policy that you
4945
+ # might have created.
4946
+ #
4947
+ #
4948
+ #
4949
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html
4950
+ # [2]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs-Field-Indexing.html
4951
+ # [3]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetLogGroupFields.html
4952
+ # [4]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutAccountPolicy.html
4953
+ #
4954
+ # @option params [required, String] :log_group_identifier
4955
+ # Specify either the log group name or log group ARN to apply this field
4956
+ # index policy to. If you specify an ARN, use the format
4957
+ # arn:aws:logs:*region*:*account-id*:log-group:*log\_group\_name* Don't
4958
+ # include an * at the end.
4959
+ #
4960
+ # @option params [required, String] :policy_document
4961
+ # The index policy document, in JSON format. The following is an example
4962
+ # of an index policy document that creates two indexes, `RequestId` and
4963
+ # `TransactionId`.
4964
+ #
4965
+ # `"policyDocument": "{ "Fields": [ "RequestId", "TransactionId" ] }"`
4966
+ #
4967
+ # The policy document must include at least one field index. For more
4968
+ # information about the fields that can be included and other
4969
+ # restrictions, see [Field index syntax and quotas][1].
4970
+ #
4971
+ #
4972
+ #
4973
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs-Field-Indexing-Syntax.html
4974
+ #
4975
+ # @return [Types::PutIndexPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4976
+ #
4977
+ # * {Types::PutIndexPolicyResponse#index_policy #index_policy} => Types::IndexPolicy
4978
+ #
4979
+ # @example Request syntax with placeholder values
4980
+ #
4981
+ # resp = client.put_index_policy({
4982
+ # log_group_identifier: "LogGroupIdentifier", # required
4983
+ # policy_document: "PolicyDocument", # required
4984
+ # })
4985
+ #
4986
+ # @example Response structure
4987
+ #
4988
+ # resp.index_policy.log_group_identifier #=> String
4989
+ # resp.index_policy.last_update_time #=> Integer
4990
+ # resp.index_policy.policy_document #=> String
4991
+ # resp.index_policy.policy_name #=> String
4992
+ # resp.index_policy.source #=> String, one of "ACCOUNT", "LOG_GROUP"
4993
+ #
4994
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/PutIndexPolicy AWS API Documentation
4995
+ #
4996
+ # @overload put_index_policy(params = {})
4997
+ # @param [Hash] params ({})
4998
+ def put_index_policy(params = {}, options = {})
4999
+ req = build_request(:put_index_policy, params)
5000
+ req.send_request(options)
5001
+ end
5002
+
5003
+ # Creates an integration between CloudWatch Logs and another service in
5004
+ # this account. Currently, only integrations with OpenSearch Service are
5005
+ # supported, and currently you can have only one integration in your
5006
+ # account.
5007
+ #
5008
+ # Integrating with OpenSearch Service makes it possible for you to
5009
+ # create curated vended logs dashboards, powered by OpenSearch Service
5010
+ # analytics. For more information, see [Vended log dashboards powered by
5011
+ # Amazon OpenSearch Service][1].
5012
+ #
5013
+ # You can use this operation only to create a new integration. You
5014
+ # can't modify an existing integration.
5015
+ #
5016
+ #
5017
+ #
5018
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs-OpenSearch-Dashboards.html
5019
+ #
5020
+ # @option params [required, String] :integration_name
5021
+ # A name for the integration.
5022
+ #
5023
+ # @option params [required, Types::ResourceConfig] :resource_config
5024
+ # A structure that contains configuration information for the
5025
+ # integration that you are creating.
5026
+ #
5027
+ # @option params [required, String] :integration_type
5028
+ # The type of integration. Currently, the only supported type is
5029
+ # `OPENSEARCH`.
5030
+ #
5031
+ # @return [Types::PutIntegrationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5032
+ #
5033
+ # * {Types::PutIntegrationResponse#integration_name #integration_name} => String
5034
+ # * {Types::PutIntegrationResponse#integration_status #integration_status} => String
5035
+ #
5036
+ # @example Request syntax with placeholder values
5037
+ #
5038
+ # resp = client.put_integration({
5039
+ # integration_name: "IntegrationName", # required
5040
+ # resource_config: { # required
5041
+ # open_search_resource_config: {
5042
+ # kms_key_arn: "Arn",
5043
+ # data_source_role_arn: "Arn", # required
5044
+ # dashboard_viewer_principals: ["Arn"], # required
5045
+ # application_arn: "Arn",
5046
+ # retention_days: 1, # required
5047
+ # },
5048
+ # },
5049
+ # integration_type: "OPENSEARCH", # required, accepts OPENSEARCH
5050
+ # })
5051
+ #
5052
+ # @example Response structure
5053
+ #
5054
+ # resp.integration_name #=> String
5055
+ # resp.integration_status #=> String, one of "PROVISIONING", "ACTIVE", "FAILED"
5056
+ #
5057
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/PutIntegration AWS API Documentation
5058
+ #
5059
+ # @overload put_integration(params = {})
5060
+ # @param [Hash] params ({})
5061
+ def put_integration(params = {}, options = {})
5062
+ req = build_request(:put_integration, params)
5063
+ req.send_request(options)
5064
+ end
5065
+
4233
5066
  # Uploads a batch of log events to the specified log stream.
4234
5067
  #
4235
5068
  # The sequence token is now ignored in `PutLogEvents` actions.
@@ -4293,7 +5126,7 @@ module Aws::CloudWatchLogs
4293
5126
  # if the sequence token is not valid.
4294
5127
  #
4295
5128
  # @option params [Types::Entity] :entity
4296
- # Reserved for internal use.
5129
+ # The entity associated with the log events.
4297
5130
  #
4298
5131
  # @return [Types::PutLogEventsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4299
5132
  #
@@ -4349,12 +5182,12 @@ module Aws::CloudWatchLogs
4349
5182
  # group is 100.
4350
5183
  #
4351
5184
  # Using regular expressions to create metric filters is supported. For
4352
- # these filters, there is a quotas of quota of two regular expression
4353
- # patterns within a single filter pattern. There is also a quota of five
4354
- # regular expression patterns per log group. For more information about
4355
- # using regular expressions in metric filters, see [ Filter pattern
4356
- # syntax for metric filters, subscription filters, filter log events,
4357
- # and Live Tail][2].
5185
+ # these filters, there is a quota of two regular expression patterns
5186
+ # within a single filter pattern. There is also a quota of five regular
5187
+ # expression patterns per log group. For more information about using
5188
+ # regular expressions in metric filters, see [ Filter pattern syntax for
5189
+ # metric filters, subscription filters, filter log events, and Live
5190
+ # Tail][2].
4358
5191
  #
4359
5192
  # When you create a metric filter, you can also optionally assign a unit
4360
5193
  # and dimensions to the metric that is created.
@@ -4392,6 +5225,20 @@ module Aws::CloudWatchLogs
4392
5225
  # @option params [required, Array<Types::MetricTransformation>] :metric_transformations
4393
5226
  # A collection of information that defines how metric data gets emitted.
4394
5227
  #
5228
+ # @option params [Boolean] :apply_on_transformed_logs
5229
+ # This parameter is valid only for log groups that have an active log
5230
+ # transformer. For more information about log transformers, see
5231
+ # [PutTransformer][1].
5232
+ #
5233
+ # If the log group uses either a log-group level or account-level
5234
+ # transformer, and you specify `true`, the metric filter will be applied
5235
+ # on the transformed version of the log events instead of the original
5236
+ # ingested log events.
5237
+ #
5238
+ #
5239
+ #
5240
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutTransformer.html
5241
+ #
4395
5242
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
4396
5243
  #
4397
5244
  # @example Request syntax with placeholder values
@@ -4412,6 +5259,7 @@ module Aws::CloudWatchLogs
4412
5259
  # unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
4413
5260
  # },
4414
5261
  # ],
5262
+ # apply_on_transformed_logs: false,
4415
5263
  # })
4416
5264
  #
4417
5265
  # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/PutMetricFilter AWS API Documentation
@@ -4443,6 +5291,16 @@ module Aws::CloudWatchLogs
4443
5291
  #
4444
5292
  # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html
4445
5293
  #
5294
+ # @option params [String] :query_language
5295
+ # Specify the query language to use for this query. The options are Logs
5296
+ # Insights QL, OpenSearch PPL, and OpenSearch SQL. For more information
5297
+ # about the query languages that CloudWatch Logs supports, see
5298
+ # [Supported query languages][1].
5299
+ #
5300
+ #
5301
+ #
5302
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_Languages.html
5303
+ #
4446
5304
  # @option params [required, String] :name
4447
5305
  # A name for the query definition. If you are saving numerous query
4448
5306
  # definitions, we recommend that you name them. This way, you can find
@@ -4470,10 +5328,13 @@ module Aws::CloudWatchLogs
4470
5328
  #
4471
5329
  # @option params [Array<String>] :log_group_names
4472
5330
  # Use this parameter to include specific log groups as part of your
4473
- # query definition.
5331
+ # query definition. If your query uses the OpenSearch Service query
5332
+ # language, you specify the log group names inside the `querystring`
5333
+ # instead of here.
4474
5334
  #
4475
- # If you are updating a query definition and you omit this parameter,
4476
- # then the updated definition will contain no log groups.
5335
+ # If you are updating an existing query definition for the Logs Insights
5336
+ # QL or OpenSearch Service PPL and you omit this parameter, then the
5337
+ # updated definition will contain no log groups.
4477
5338
  #
4478
5339
  # @option params [required, String] :query_string
4479
5340
  # The query string to use for this definition. For more information, see
@@ -4497,6 +5358,7 @@ module Aws::CloudWatchLogs
4497
5358
  # @example Request syntax with placeholder values
4498
5359
  #
4499
5360
  # resp = client.put_query_definition({
5361
+ # query_language: "CWLI", # accepts CWLI, SQL, PPL
4500
5362
  # name: "QueryDefinitionName", # required
4501
5363
  # query_definition_id: "QueryId",
4502
5364
  # log_group_names: ["LogGroupName"],
@@ -4740,6 +5602,20 @@ module Aws::CloudWatchLogs
4740
5602
  # random for a more even distribution. This property is only applicable
4741
5603
  # when the destination is an Amazon Kinesis data stream.
4742
5604
  #
5605
+ # @option params [Boolean] :apply_on_transformed_logs
5606
+ # This parameter is valid only for log groups that have an active log
5607
+ # transformer. For more information about log transformers, see
5608
+ # [PutTransformer][1].
5609
+ #
5610
+ # If the log group uses either a log-group level or account-level
5611
+ # transformer, and you specify `true`, the subscription filter will be
5612
+ # applied on the transformed version of the log events instead of the
5613
+ # original ingested log events.
5614
+ #
5615
+ #
5616
+ #
5617
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutTransformer.html
5618
+ #
4743
5619
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
4744
5620
  #
4745
5621
  # @example Request syntax with placeholder values
@@ -4751,6 +5627,7 @@ module Aws::CloudWatchLogs
4751
5627
  # destination_arn: "DestinationArn", # required
4752
5628
  # role_arn: "RoleArn",
4753
5629
  # distribution: "Random", # accepts Random, ByLogStream
5630
+ # apply_on_transformed_logs: false,
4754
5631
  # })
4755
5632
  #
4756
5633
  # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/PutSubscriptionFilter AWS API Documentation
@@ -4762,6 +5639,211 @@ module Aws::CloudWatchLogs
4762
5639
  req.send_request(options)
4763
5640
  end
4764
5641
 
5642
+ # Creates or updates a *log transformer* for a single log group. You use
5643
+ # log transformers to transform log events into a different format,
5644
+ # making them easier for you to process and analyze. You can also
5645
+ # transform logs from different sources into standardized formats that
5646
+ # contains relevant, source-specific information.
5647
+ #
5648
+ # After you have created a transformer, CloudWatch Logs performs the
5649
+ # transformations at the time of log ingestion. You can then refer to
5650
+ # the transformed versions of the logs during operations such as
5651
+ # querying with CloudWatch Logs Insights or creating metric filters or
5652
+ # subscription filers.
5653
+ #
5654
+ # You can also use a transformer to copy metadata from metadata keys
5655
+ # into the log events themselves. This metadata can include log group
5656
+ # name, log stream name, account ID and Region.
5657
+ #
5658
+ # A transformer for a log group is a series of processors, where each
5659
+ # processor applies one type of transformation to the log events
5660
+ # ingested into this log group. The processors work one after another,
5661
+ # in the order that you list them, like a pipeline. For more information
5662
+ # about the available processors to use in a transformer, see [
5663
+ # Processors that you can use][1].
5664
+ #
5665
+ # Having log events in standardized format enables visibility across
5666
+ # your applications for your log analysis, reporting, and alarming
5667
+ # needs. CloudWatch Logs provides transformation for common log types
5668
+ # with out-of-the-box transformation templates for major Amazon Web
5669
+ # Services log sources such as VPC flow logs, Lambda, and Amazon RDS.
5670
+ # You can use pre-built transformation templates or create custom
5671
+ # transformation policies.
5672
+ #
5673
+ # You can create transformers only for the log groups in the Standard
5674
+ # log class.
5675
+ #
5676
+ # You can also set up a transformer at the account level. For more
5677
+ # information, see [PutAccountPolicy][2]. If there is both a log-group
5678
+ # level transformer created with `PutTransformer` and an account-level
5679
+ # transformer that could apply to the same log group, the log group uses
5680
+ # only the log-group level transformer. It ignores the account-level
5681
+ # transformer.
5682
+ #
5683
+ #
5684
+ #
5685
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation.html#CloudWatch-Logs-Transformation-Processors
5686
+ # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutAccountPolicy.html
5687
+ #
5688
+ # @option params [required, String] :log_group_identifier
5689
+ # Specify either the name or ARN of the log group to create the
5690
+ # transformer for.
5691
+ #
5692
+ # @option params [required, Array<Types::Processor>] :transformer_config
5693
+ # This structure contains the configuration of this log transformer. A
5694
+ # log transformer is an array of processors, where each processor
5695
+ # applies one type of transformation to the log events that are
5696
+ # ingested.
5697
+ #
5698
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
5699
+ #
5700
+ # @example Request syntax with placeholder values
5701
+ #
5702
+ # resp = client.put_transformer({
5703
+ # log_group_identifier: "LogGroupIdentifier", # required
5704
+ # transformer_config: [ # required
5705
+ # {
5706
+ # add_keys: {
5707
+ # entries: [ # required
5708
+ # {
5709
+ # key: "Key", # required
5710
+ # value: "AddKeyValue", # required
5711
+ # overwrite_if_exists: false,
5712
+ # },
5713
+ # ],
5714
+ # },
5715
+ # copy_value: {
5716
+ # entries: [ # required
5717
+ # {
5718
+ # source: "Source", # required
5719
+ # target: "Target", # required
5720
+ # overwrite_if_exists: false,
5721
+ # },
5722
+ # ],
5723
+ # },
5724
+ # csv: {
5725
+ # quote_character: "QuoteCharacter",
5726
+ # delimiter: "Delimiter",
5727
+ # columns: ["Column"],
5728
+ # source: "Source",
5729
+ # },
5730
+ # date_time_converter: {
5731
+ # source: "Source", # required
5732
+ # target: "Target", # required
5733
+ # target_format: "TargetFormat",
5734
+ # match_patterns: ["MatchPattern"], # required
5735
+ # source_timezone: "SourceTimezone",
5736
+ # target_timezone: "TargetTimezone",
5737
+ # locale: "Locale",
5738
+ # },
5739
+ # delete_keys: {
5740
+ # with_keys: ["WithKey"], # required
5741
+ # },
5742
+ # grok: {
5743
+ # source: "Source",
5744
+ # match: "GrokMatch", # required
5745
+ # },
5746
+ # list_to_map: {
5747
+ # source: "Source", # required
5748
+ # key: "Key", # required
5749
+ # value_key: "ValueKey",
5750
+ # target: "Target",
5751
+ # flatten: false,
5752
+ # flattened_element: "first", # accepts first, last
5753
+ # },
5754
+ # lower_case_string: {
5755
+ # with_keys: ["WithKey"], # required
5756
+ # },
5757
+ # move_keys: {
5758
+ # entries: [ # required
5759
+ # {
5760
+ # source: "Source", # required
5761
+ # target: "Target", # required
5762
+ # overwrite_if_exists: false,
5763
+ # },
5764
+ # ],
5765
+ # },
5766
+ # parse_cloudfront: {
5767
+ # source: "Source",
5768
+ # },
5769
+ # parse_json: {
5770
+ # source: "Source",
5771
+ # destination: "DestinationField",
5772
+ # },
5773
+ # parse_key_value: {
5774
+ # source: "Source",
5775
+ # destination: "DestinationField",
5776
+ # field_delimiter: "ParserFieldDelimiter",
5777
+ # key_value_delimiter: "KeyValueDelimiter",
5778
+ # key_prefix: "KeyPrefix",
5779
+ # non_match_value: "NonMatchValue",
5780
+ # overwrite_if_exists: false,
5781
+ # },
5782
+ # parse_route_53: {
5783
+ # source: "Source",
5784
+ # },
5785
+ # parse_postgres: {
5786
+ # source: "Source",
5787
+ # },
5788
+ # parse_vpc: {
5789
+ # source: "Source",
5790
+ # },
5791
+ # parse_waf: {
5792
+ # source: "Source",
5793
+ # },
5794
+ # rename_keys: {
5795
+ # entries: [ # required
5796
+ # {
5797
+ # key: "Key", # required
5798
+ # rename_to: "RenameTo", # required
5799
+ # overwrite_if_exists: false,
5800
+ # },
5801
+ # ],
5802
+ # },
5803
+ # split_string: {
5804
+ # entries: [ # required
5805
+ # {
5806
+ # source: "Source", # required
5807
+ # delimiter: "Delimiter", # required
5808
+ # },
5809
+ # ],
5810
+ # },
5811
+ # substitute_string: {
5812
+ # entries: [ # required
5813
+ # {
5814
+ # source: "Source", # required
5815
+ # from: "FromKey", # required
5816
+ # to: "ToKey", # required
5817
+ # },
5818
+ # ],
5819
+ # },
5820
+ # trim_string: {
5821
+ # with_keys: ["WithKey"], # required
5822
+ # },
5823
+ # type_converter: {
5824
+ # entries: [ # required
5825
+ # {
5826
+ # key: "Key", # required
5827
+ # type: "boolean", # required, accepts boolean, integer, double, string
5828
+ # },
5829
+ # ],
5830
+ # },
5831
+ # upper_case_string: {
5832
+ # with_keys: ["WithKey"], # required
5833
+ # },
5834
+ # },
5835
+ # ],
5836
+ # })
5837
+ #
5838
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/PutTransformer AWS API Documentation
5839
+ #
5840
+ # @overload put_transformer(params = {})
5841
+ # @param [Hash] params ({})
5842
+ def put_transformer(params = {}, options = {})
5843
+ req = build_request(:put_transformer, params)
5844
+ req.send_request(options)
5845
+ end
5846
+
4765
5847
  # Starts a Live Tail streaming session for one or more log groups. A
4766
5848
  # Live Tail session returns a stream of log events that have been
4767
5849
  # recently ingested in the log groups. For more information, see [Use
@@ -5049,9 +6131,9 @@ module Aws::CloudWatchLogs
5049
6131
  req.send_request(options)
5050
6132
  end
5051
6133
 
5052
- # Schedules a query of a log group using CloudWatch Logs Insights. You
5053
- # specify the log group and time range to query and the query string to
5054
- # use.
6134
+ # Starts a query of one or more log groups using CloudWatch Logs
6135
+ # Insights. You specify the log groups and time range to query and the
6136
+ # query string to use.
5055
6137
  #
5056
6138
  # For more information, see [CloudWatch Logs Insights Query Syntax][1].
5057
6139
  #
@@ -5059,8 +6141,22 @@ module Aws::CloudWatchLogs
5059
6141
  # by CloudWatch Logs. You can use [GetQueryResults][2] to retrieve the
5060
6142
  # results of a query, using the `queryId` that `StartQuery` returns.
5061
6143
  #
6144
+ # <note markdown="1"> To specify the log groups to query, a `StartQuery` operation must
6145
+ # include one of the following:
6146
+ #
6147
+ # * Either exactly one of the following parameters: `logGroupName`,
6148
+ # `logGroupNames`, or `logGroupIdentifiers`
6149
+ #
6150
+ # * Or the `queryString` must include a `SOURCE` command to select log
6151
+ # groups for the query. The `SOURCE` command can select log groups
6152
+ # based on log group name prefix, account ID, and log class.
6153
+ #
6154
+ # For more information about the `SOURCE` command, see [SOURCE][3].
6155
+ #
6156
+ # </note>
6157
+ #
5062
6158
  # If you have associated a KMS key with the query results in this
5063
- # account, then [StartQuery][3] uses that key to encrypt the results
6159
+ # account, then [StartQuery][4] uses that key to encrypt the results
5064
6160
  # when it stores them. If no key is associated with query results, the
5065
6161
  # query results are encrypted with the default CloudWatch Logs
5066
6162
  # encryption method.
@@ -5072,7 +6168,7 @@ module Aws::CloudWatchLogs
5072
6168
  # If you are using CloudWatch cross-account observability, you can use
5073
6169
  # this operation in a monitoring account to start a query in a linked
5074
6170
  # source account. For more information, see [CloudWatch cross-account
5075
- # observability][4]. For a cross-account `StartQuery` operation, the
6171
+ # observability][5]. For a cross-account `StartQuery` operation, the
5076
6172
  # query definition must be defined in the monitoring account.
5077
6173
  #
5078
6174
  # You can have up to 30 concurrent CloudWatch Logs insights queries,
@@ -5082,14 +6178,28 @@ module Aws::CloudWatchLogs
5082
6178
  #
5083
6179
  # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html
5084
6180
  # [2]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetQueryResults.html
5085
- # [3]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartQuery.html
5086
- # [4]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html
6181
+ # [3]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-Source.html
6182
+ # [4]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartQuery.html
6183
+ # [5]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html
6184
+ #
6185
+ # @option params [String] :query_language
6186
+ # Specify the query language to use for this query. The options are Logs
6187
+ # Insights QL, OpenSearch PPL, and OpenSearch SQL. For more information
6188
+ # about the query languages that CloudWatch Logs supports, see
6189
+ # [Supported query languages][1].
6190
+ #
6191
+ #
6192
+ #
6193
+ # [1]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_Languages.html
5087
6194
  #
5088
6195
  # @option params [String] :log_group_name
5089
6196
  # The log group on which to perform the query.
5090
6197
  #
5091
6198
  # <note markdown="1"> A `StartQuery` operation must include exactly one of the following
5092
6199
  # parameters: `logGroupName`, `logGroupNames`, or `logGroupIdentifiers`.
6200
+ # The exception is queries using the OpenSearch Service SQL query
6201
+ # language, where you specify the log group names inside the
6202
+ # `querystring` instead of here.
5093
6203
  #
5094
6204
  # </note>
5095
6205
  #
@@ -5099,6 +6209,9 @@ module Aws::CloudWatchLogs
5099
6209
  #
5100
6210
  # <note markdown="1"> A `StartQuery` operation must include exactly one of the following
5101
6211
  # parameters: `logGroupName`, `logGroupNames`, or `logGroupIdentifiers`.
6212
+ # The exception is queries using the OpenSearch Service SQL query
6213
+ # language, where you specify the log group names inside the
6214
+ # `querystring` instead of here.
5102
6215
  #
5103
6216
  # </note>
5104
6217
  #
@@ -5110,10 +6223,15 @@ module Aws::CloudWatchLogs
5110
6223
  # account, you must specify the ARN of the log group here. The query
5111
6224
  # definition must also be defined in the monitoring account.
5112
6225
  #
5113
- # If you specify an ARN, the ARN can't end with an asterisk (*).
6226
+ # If you specify an ARN, use the format
6227
+ # arn:aws:logs:*region*:*account-id*:log-group:*log\_group\_name* Don't
6228
+ # include an * at the end.
5114
6229
  #
5115
6230
  # A `StartQuery` operation must include exactly one of the following
5116
6231
  # parameters: `logGroupName`, `logGroupNames`, or `logGroupIdentifiers`.
6232
+ # The exception is queries using the OpenSearch Service SQL query
6233
+ # language, where you specify the log group names inside the
6234
+ # `querystring` instead of here.
5117
6235
  #
5118
6236
  # @option params [required, Integer] :start_time
5119
6237
  # The beginning of the time range to query. The range is inclusive, so
@@ -5145,6 +6263,7 @@ module Aws::CloudWatchLogs
5145
6263
  # @example Request syntax with placeholder values
5146
6264
  #
5147
6265
  # resp = client.start_query({
6266
+ # query_language: "CWLI", # accepts CWLI, SQL, PPL
5148
6267
  # log_group_name: "LogGroupName",
5149
6268
  # log_group_names: ["LogGroupName"],
5150
6269
  # log_group_identifiers: ["LogGroupIdentifier"],
@@ -5348,6 +6467,179 @@ module Aws::CloudWatchLogs
5348
6467
  req.send_request(options)
5349
6468
  end
5350
6469
 
6470
+ # Use this operation to test a log transformer. You enter the
6471
+ # transformer configuration and a set of log events to test with. The
6472
+ # operation responds with an array that includes the original log events
6473
+ # and the transformed versions.
6474
+ #
6475
+ # @option params [required, Array<Types::Processor>] :transformer_config
6476
+ # This structure contains the configuration of this log transformer that
6477
+ # you want to test. A log transformer is an array of processors, where
6478
+ # each processor applies one type of transformation to the log events
6479
+ # that are ingested.
6480
+ #
6481
+ # @option params [required, Array<String>] :log_event_messages
6482
+ # An array of the raw log events that you want to use to test this
6483
+ # transformer.
6484
+ #
6485
+ # @return [Types::TestTransformerResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
6486
+ #
6487
+ # * {Types::TestTransformerResponse#transformed_logs #transformed_logs} => Array&lt;Types::TransformedLogRecord&gt;
6488
+ #
6489
+ # @example Request syntax with placeholder values
6490
+ #
6491
+ # resp = client.test_transformer({
6492
+ # transformer_config: [ # required
6493
+ # {
6494
+ # add_keys: {
6495
+ # entries: [ # required
6496
+ # {
6497
+ # key: "Key", # required
6498
+ # value: "AddKeyValue", # required
6499
+ # overwrite_if_exists: false,
6500
+ # },
6501
+ # ],
6502
+ # },
6503
+ # copy_value: {
6504
+ # entries: [ # required
6505
+ # {
6506
+ # source: "Source", # required
6507
+ # target: "Target", # required
6508
+ # overwrite_if_exists: false,
6509
+ # },
6510
+ # ],
6511
+ # },
6512
+ # csv: {
6513
+ # quote_character: "QuoteCharacter",
6514
+ # delimiter: "Delimiter",
6515
+ # columns: ["Column"],
6516
+ # source: "Source",
6517
+ # },
6518
+ # date_time_converter: {
6519
+ # source: "Source", # required
6520
+ # target: "Target", # required
6521
+ # target_format: "TargetFormat",
6522
+ # match_patterns: ["MatchPattern"], # required
6523
+ # source_timezone: "SourceTimezone",
6524
+ # target_timezone: "TargetTimezone",
6525
+ # locale: "Locale",
6526
+ # },
6527
+ # delete_keys: {
6528
+ # with_keys: ["WithKey"], # required
6529
+ # },
6530
+ # grok: {
6531
+ # source: "Source",
6532
+ # match: "GrokMatch", # required
6533
+ # },
6534
+ # list_to_map: {
6535
+ # source: "Source", # required
6536
+ # key: "Key", # required
6537
+ # value_key: "ValueKey",
6538
+ # target: "Target",
6539
+ # flatten: false,
6540
+ # flattened_element: "first", # accepts first, last
6541
+ # },
6542
+ # lower_case_string: {
6543
+ # with_keys: ["WithKey"], # required
6544
+ # },
6545
+ # move_keys: {
6546
+ # entries: [ # required
6547
+ # {
6548
+ # source: "Source", # required
6549
+ # target: "Target", # required
6550
+ # overwrite_if_exists: false,
6551
+ # },
6552
+ # ],
6553
+ # },
6554
+ # parse_cloudfront: {
6555
+ # source: "Source",
6556
+ # },
6557
+ # parse_json: {
6558
+ # source: "Source",
6559
+ # destination: "DestinationField",
6560
+ # },
6561
+ # parse_key_value: {
6562
+ # source: "Source",
6563
+ # destination: "DestinationField",
6564
+ # field_delimiter: "ParserFieldDelimiter",
6565
+ # key_value_delimiter: "KeyValueDelimiter",
6566
+ # key_prefix: "KeyPrefix",
6567
+ # non_match_value: "NonMatchValue",
6568
+ # overwrite_if_exists: false,
6569
+ # },
6570
+ # parse_route_53: {
6571
+ # source: "Source",
6572
+ # },
6573
+ # parse_postgres: {
6574
+ # source: "Source",
6575
+ # },
6576
+ # parse_vpc: {
6577
+ # source: "Source",
6578
+ # },
6579
+ # parse_waf: {
6580
+ # source: "Source",
6581
+ # },
6582
+ # rename_keys: {
6583
+ # entries: [ # required
6584
+ # {
6585
+ # key: "Key", # required
6586
+ # rename_to: "RenameTo", # required
6587
+ # overwrite_if_exists: false,
6588
+ # },
6589
+ # ],
6590
+ # },
6591
+ # split_string: {
6592
+ # entries: [ # required
6593
+ # {
6594
+ # source: "Source", # required
6595
+ # delimiter: "Delimiter", # required
6596
+ # },
6597
+ # ],
6598
+ # },
6599
+ # substitute_string: {
6600
+ # entries: [ # required
6601
+ # {
6602
+ # source: "Source", # required
6603
+ # from: "FromKey", # required
6604
+ # to: "ToKey", # required
6605
+ # },
6606
+ # ],
6607
+ # },
6608
+ # trim_string: {
6609
+ # with_keys: ["WithKey"], # required
6610
+ # },
6611
+ # type_converter: {
6612
+ # entries: [ # required
6613
+ # {
6614
+ # key: "Key", # required
6615
+ # type: "boolean", # required, accepts boolean, integer, double, string
6616
+ # },
6617
+ # ],
6618
+ # },
6619
+ # upper_case_string: {
6620
+ # with_keys: ["WithKey"], # required
6621
+ # },
6622
+ # },
6623
+ # ],
6624
+ # log_event_messages: ["EventMessage"], # required
6625
+ # })
6626
+ #
6627
+ # @example Response structure
6628
+ #
6629
+ # resp.transformed_logs #=> Array
6630
+ # resp.transformed_logs[0].event_number #=> Integer
6631
+ # resp.transformed_logs[0].event_message #=> String
6632
+ # resp.transformed_logs[0].transformed_event_message #=> String
6633
+ #
6634
+ # @see http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/TestTransformer AWS API Documentation
6635
+ #
6636
+ # @overload test_transformer(params = {})
6637
+ # @param [Hash] params ({})
6638
+ def test_transformer(params = {}, options = {})
6639
+ req = build_request(:test_transformer, params)
6640
+ req.send_request(options)
6641
+ end
6642
+
5351
6643
  # The UntagLogGroup operation is on the path to deprecation. We
5352
6644
  # recommend that you use [UntagResource][1] instead.
5353
6645
  #
@@ -5626,7 +6918,7 @@ module Aws::CloudWatchLogs
5626
6918
  tracer: tracer
5627
6919
  )
5628
6920
  context[:gem_name] = 'aws-sdk-cloudwatchlogs'
5629
- context[:gem_version] = '1.102.0'
6921
+ context[:gem_version] = '1.104.0'
5630
6922
  Seahorse::Client::Request.new(handlers, context)
5631
6923
  end
5632
6924