import { Command as $Command } from "@smithy/smithy-client"; import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; import type { CloudWatchClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CloudWatchClient"; import type { PutMetricAlarmInput } from "../models/models_0"; /** * @public */ export type { __MetadataBearer }; export { $Command }; /** * @public * * The input for {@link PutMetricAlarmCommand}. */ export interface PutMetricAlarmCommandInput extends PutMetricAlarmInput { } /** * @public * * The output of {@link PutMetricAlarmCommand}. */ export interface PutMetricAlarmCommandOutput extends __MetadataBearer { } declare const PutMetricAlarmCommand_base: { new (input: PutMetricAlarmCommandInput): import("@smithy/smithy-client").CommandImpl; new (input: PutMetricAlarmCommandInput): import("@smithy/smithy-client").CommandImpl; getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; }; /** *

Creates or updates an alarm and associates it with the specified metric, metric * math expression, anomaly detection model, Metrics Insights query, or PromQL query. For more * information about using a Metrics Insights query for an alarm, see Create * alarms on Metrics Insights queries.

*

Alarms based on anomaly detection models cannot have Auto Scaling actions.

*

When this operation creates an alarm, the alarm state is immediately set to * INSUFFICIENT_DATA. For PromQL alarms, the alarm state is instead * immediately set to OK. The alarm is then evaluated and its state is set * appropriately. Any actions associated with the new state are then executed.

*

When you update an existing alarm, its state is left unchanged, but the update * completely overwrites the previous configuration of the alarm.

*

If you are an IAM user, you must have Amazon EC2 permissions for * some alarm operations:

* *

The first time you create an alarm in the Amazon Web Services Management Console, the CLI, or by using the PutMetricAlarm API, CloudWatch creates the necessary * service-linked role for you. The service-linked roles are called * AWSServiceRoleForCloudWatchEvents and * AWSServiceRoleForCloudWatchAlarms_ActionSSM. For more information, see * Amazon Web Services service-linked role.

*

Each PutMetricAlarm action has a maximum uncompressed payload of 120 * KB.

*

* Cross-account alarms *

*

You can set an alarm on metrics in the current account, or in another account. To * create a cross-account alarm that watches a metric in a different account, you must have * completed the following pre-requisites:

* * @example * Use a bare-bones client and the command you need to make an API call. * ```javascript * import { CloudWatchClient, PutMetricAlarmCommand } from "@aws-sdk/client-cloudwatch"; // ES Modules import * // const { CloudWatchClient, PutMetricAlarmCommand } = require("@aws-sdk/client-cloudwatch"); // CommonJS import * // import type { CloudWatchClientConfig } from "@aws-sdk/client-cloudwatch"; * const config = {}; // type is CloudWatchClientConfig * const client = new CloudWatchClient(config); * const input = { // PutMetricAlarmInput * AlarmName: "STRING_VALUE", // required * AlarmDescription: "STRING_VALUE", * ActionsEnabled: true || false, * OKActions: [ // ResourceList * "STRING_VALUE", * ], * AlarmActions: [ * "STRING_VALUE", * ], * InsufficientDataActions: [ * "STRING_VALUE", * ], * MetricName: "STRING_VALUE", * Namespace: "STRING_VALUE", * Statistic: "SampleCount" || "Average" || "Sum" || "Minimum" || "Maximum", * ExtendedStatistic: "STRING_VALUE", * Dimensions: [ // Dimensions * { // Dimension * Name: "STRING_VALUE", // required * Value: "STRING_VALUE", // required * }, * ], * Period: Number("int"), * Unit: "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", * EvaluationPeriods: Number("int"), * DatapointsToAlarm: Number("int"), * Threshold: Number("double"), * ComparisonOperator: "GreaterThanOrEqualToThreshold" || "GreaterThanThreshold" || "LessThanThreshold" || "LessThanOrEqualToThreshold" || "LessThanLowerOrGreaterThanUpperThreshold" || "LessThanLowerThreshold" || "GreaterThanUpperThreshold", * TreatMissingData: "STRING_VALUE", * EvaluateLowSampleCountPercentile: "STRING_VALUE", * Metrics: [ // MetricDataQueries * { // MetricDataQuery * Id: "STRING_VALUE", // required * MetricStat: { // MetricStat * Metric: { // Metric * Namespace: "STRING_VALUE", * MetricName: "STRING_VALUE", * Dimensions: [ * { * Name: "STRING_VALUE", // required * Value: "STRING_VALUE", // required * }, * ], * }, * Period: Number("int"), // required * Stat: "STRING_VALUE", // required * Unit: "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", * }, * Expression: "STRING_VALUE", * Label: "STRING_VALUE", * ReturnData: true || false, * Period: Number("int"), * AccountId: "STRING_VALUE", * }, * ], * Tags: [ // TagList * { // Tag * Key: "STRING_VALUE", // required * Value: "STRING_VALUE", // required * }, * ], * ThresholdMetricId: "STRING_VALUE", * EvaluationCriteria: { // EvaluationCriteria Union: only one key present * PromQLCriteria: { // AlarmPromQLCriteria * Query: "STRING_VALUE", // required * PendingPeriod: Number("int"), * RecoveryPeriod: Number("int"), * }, * }, * EvaluationInterval: Number("int"), * }; * const command = new PutMetricAlarmCommand(input); * const response = await client.send(command); * // {}; * * ``` * * @param PutMetricAlarmCommandInput - {@link PutMetricAlarmCommandInput} * @returns {@link PutMetricAlarmCommandOutput} * @see {@link PutMetricAlarmCommandInput} for command's `input` shape. * @see {@link PutMetricAlarmCommandOutput} for command's `response` shape. * @see {@link CloudWatchClientResolvedConfig | config} for CloudWatchClient's `config` shape. * * @throws {@link LimitExceededFault} (client fault) *

The quota for alarms for this customer has already been reached.

* * @throws {@link CloudWatchServiceException} *

Base exception class for all service exceptions from CloudWatch service.

* * * @public */ export declare class PutMetricAlarmCommand extends PutMetricAlarmCommand_base { /** @internal type navigation helper, not in runtime. */ protected static __types: { api: { input: PutMetricAlarmInput; output: {}; }; sdk: { input: PutMetricAlarmCommandInput; output: PutMetricAlarmCommandOutput; }; }; }