/*
* 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:
///
/// -
///
/// (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.
///
///
-
///
/// (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.
///
///
-
///
/// (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.
///
///
-
///
/// Create the lifecycle hook. Specify whether the hook is used when the instances
/// launch or terminate.
///
///
-
///
/// If you need more time, record the lifecycle action heartbeat to keep the instance
/// in a wait state using the RecordLifecycleActionHeartbeat API call.
///
///
-
///
/// 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.
///
/// -
///
/// To create a lifecycle hook for scale-out events, specify
autoscaling:EC2_INSTANCE_LAUNCHING
.
///
/// -
///
/// To create a lifecycle hook for scale-in events, specify
autoscaling:EC2_INSTANCE_TERMINATING
.
///
///
///
/// 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;
}
}
}