/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the autoscaling-2011-01-01.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.AutoScaling.Model { /// /// Container for the parameters to the PutLifecycleHook operation. /// Creates or updates a lifecycle hook for the specified Auto Scaling group. /// /// /// /// Lifecycle hooks let you create solutions that are aware of events in the Auto Scaling /// instance lifecycle, and then perform a custom action on instances when the corresponding /// lifecycle event occurs. /// /// /// /// This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling /// group: /// ///
  1. /// /// (Optional) Create a launch template or launch configuration with a user data script /// that runs while an instance is in a wait state due to a lifecycle hook. /// ///
  2. /// /// (Optional) Create a Lambda function and a rule that allows Amazon EventBridge to invoke /// your Lambda function when an instance is put into a wait state due to a lifecycle /// hook. /// ///
  3. /// /// (Optional) Create a notification target and an IAM role. The target can be either /// an Amazon SQS queue or an Amazon SNS topic. The role allows Amazon EC2 Auto Scaling /// to publish lifecycle notifications to the target. /// ///
  4. /// /// Create the lifecycle hook. Specify whether the hook is used when the instances /// launch or terminate. /// ///
  5. /// /// If you need more time, record the lifecycle action heartbeat to keep the instance /// in a wait state using the RecordLifecycleActionHeartbeat API call. /// ///
  6. /// /// If you finish before the timeout period ends, send a callback by using the CompleteLifecycleAction /// API call. /// ///
/// /// For more information, see Amazon /// EC2 Auto Scaling lifecycle hooks in the Amazon EC2 Auto Scaling User Guide. /// /// /// /// If you exceed your maximum limit of lifecycle hooks, which by default is 50 per Auto /// Scaling group, the call fails. /// /// /// /// You can view the lifecycle hooks for an Auto Scaling group using the DescribeLifecycleHooks /// API call. If you are no longer using a lifecycle hook, you can delete it by calling /// the DeleteLifecycleHook API. /// ///
public partial class PutLifecycleHookRequest : AmazonAutoScalingRequest { private string _autoScalingGroupName; private string _defaultResult; private int? _heartbeatTimeout; private string _lifecycleHookName; private string _lifecycleTransition; private string _notificationMetadata; private string _notificationTargetARN; private string _roleARN; /// /// Gets and sets the property AutoScalingGroupName. /// /// The name of the Auto Scaling group. /// /// [AWSProperty(Required=true, Min=1, Max=255)] public string AutoScalingGroupName { get { return this._autoScalingGroupName; } set { this._autoScalingGroupName = value; } } // Check to see if AutoScalingGroupName property is set internal bool IsSetAutoScalingGroupName() { return this._autoScalingGroupName != null; } /// /// Gets and sets the property DefaultResult. /// /// The action the Auto Scaling group takes when the lifecycle hook timeout elapses or /// if an unexpected failure occurs. The default value is ABANDON. /// /// /// /// Valid values: CONTINUE | ABANDON /// /// public string DefaultResult { get { return this._defaultResult; } set { this._defaultResult = value; } } // Check to see if DefaultResult property is set internal bool IsSetDefaultResult() { return this._defaultResult != null; } /// /// Gets and sets the property HeartbeatTimeout. /// /// The maximum time, in seconds, that can elapse before the lifecycle hook times out. /// The range is from 30 to 7200 seconds. The default value /// is 3600 seconds (1 hour). /// /// public int HeartbeatTimeout { get { return this._heartbeatTimeout.GetValueOrDefault(); } set { this._heartbeatTimeout = value; } } // Check to see if HeartbeatTimeout property is set internal bool IsSetHeartbeatTimeout() { return this._heartbeatTimeout.HasValue; } /// /// Gets and sets the property LifecycleHookName. /// /// The name of the lifecycle hook. /// /// [AWSProperty(Required=true, Min=1, Max=255)] public string LifecycleHookName { get { return this._lifecycleHookName; } set { this._lifecycleHookName = value; } } // Check to see if LifecycleHookName property is set internal bool IsSetLifecycleHookName() { return this._lifecycleHookName != null; } /// /// Gets and sets the property LifecycleTransition. /// /// The lifecycle transition. For Auto Scaling groups, there are two major lifecycle transitions. /// /// /// /// Required for new lifecycle hooks, but optional when updating existing hooks. /// /// public string LifecycleTransition { get { return this._lifecycleTransition; } set { this._lifecycleTransition = value; } } // Check to see if LifecycleTransition property is set internal bool IsSetLifecycleTransition() { return this._lifecycleTransition != null; } /// /// Gets and sets the property NotificationMetadata. /// /// Additional information that you want to include any time Amazon EC2 Auto Scaling sends /// a message to the notification target. /// /// [AWSProperty(Min=1, Max=1023)] public string NotificationMetadata { get { return this._notificationMetadata; } set { this._notificationMetadata = value; } } // Check to see if NotificationMetadata property is set internal bool IsSetNotificationMetadata() { return this._notificationMetadata != null; } /// /// Gets and sets the property NotificationTargetARN. /// /// The Amazon Resource Name (ARN) of the notification target that Amazon EC2 Auto Scaling /// uses to notify you when an instance is in a wait state for the lifecycle hook. You /// can specify either an Amazon SNS topic or an Amazon SQS queue. /// /// /// /// If you specify an empty string, this overrides the current ARN. /// /// /// /// This operation uses the JSON format when sending notifications to an Amazon SQS queue, /// and an email key-value pair format when sending notifications to an Amazon SNS topic. /// /// /// /// When you specify a notification target, Amazon EC2 Auto Scaling sends it a test message. /// Test messages contain the following additional key-value pair: "Event": "autoscaling:TEST_NOTIFICATION". /// /// [AWSProperty(Min=0, Max=255)] public string NotificationTargetARN { get { return this._notificationTargetARN; } set { this._notificationTargetARN = value; } } // Check to see if NotificationTargetARN property is set internal bool IsSetNotificationTargetARN() { return this._notificationTargetARN != null; } /// /// Gets and sets the property RoleARN. /// /// The ARN of the IAM role that allows the Auto Scaling group to publish to the specified /// notification target. /// /// /// /// Valid only if the notification target is an Amazon SNS topic or an Amazon SQS queue. /// Required for new lifecycle hooks, but optional when updating existing hooks. /// /// [AWSProperty(Min=1, Max=255)] public string RoleARN { get { return this._roleARN; } set { this._roleARN = value; } } // Check to see if RoleARN property is set internal bool IsSetRoleARN() { return this._roleARN != null; } } }