/*
* 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 ssm-2014-11-06.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.SimpleSystemsManagement.Model
{
///
/// Container for the parameters to the PutParameter operation.
/// Add a parameter to the system.
///
public partial class PutParameterRequest : AmazonSimpleSystemsManagementRequest
{
private string _allowedPattern;
private string _dataType;
private string _description;
private string _keyId;
private string _name;
private bool? _overwrite;
private string _policies;
private List _tags = new List();
private ParameterTier _tier;
private ParameterType _type;
private string _value;
///
/// Gets and sets the property AllowedPattern.
///
/// A regular expression used to validate the parameter value. For example, for String
/// types with values restricted to numbers, you can specify the following: AllowedPattern=^\d+$
///
///
///
[AWSProperty(Min=0, Max=1024)]
public string AllowedPattern
{
get { return this._allowedPattern; }
set { this._allowedPattern = value; }
}
// Check to see if AllowedPattern property is set
internal bool IsSetAllowedPattern()
{
return this._allowedPattern != null;
}
///
/// Gets and sets the property DataType.
///
/// The data type for a String
parameter. Supported data types include plain
/// text and Amazon Machine Image (AMI) IDs.
///
///
///
/// The following data type values are supported.
///
/// -
///
///
text
///
/// -
///
///
aws:ec2:image
///
/// -
///
///
aws:ssm:integration
///
///
///
/// When you create a String
parameter and specify aws:ec2:image
,
/// Amazon Web Services Systems Manager validates the parameter value is in the required
/// format, such as ami-12345abcdeEXAMPLE
, and that the specified AMI is
/// available in your Amazon Web Services account.
///
///
///
/// If the action is successful, the service sends back an HTTP 200 response which indicates
/// a successful PutParameter
call for all cases except for data type aws:ec2:image
.
/// If you call PutParameter
with aws:ec2:image
data type, a
/// successful HTTP 200 response does not guarantee that your parameter was successfully
/// created or updated. The aws:ec2:image
value is validated asynchronously,
/// and the PutParameter
call returns before the validation is complete.
/// If you submit an invalid AMI value, the PutParameter operation will return success,
/// but the asynchronous validation will fail and the parameter will not be created or
/// updated. To monitor whether your aws:ec2:image
parameters are created
/// successfully, see Setting
/// up notifications or trigger actions based on Parameter Store events. For more
/// information about AMI format validation , see Native
/// parameter support for Amazon Machine Image (AMI) IDs.
///
///
///
[AWSProperty(Min=0, Max=128)]
public string DataType
{
get { return this._dataType; }
set { this._dataType = value; }
}
// Check to see if DataType property is set
internal bool IsSetDataType()
{
return this._dataType != null;
}
///
/// Gets and sets the property Description.
///
/// Information about the parameter that you want to add to the system. Optional but recommended.
///
///
///
/// Don't enter personally identifiable information in this field.
///
///
///
[AWSProperty(Min=0, Max=1024)]
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property KeyId.
///
/// The Key Management Service (KMS) ID that you want to use to encrypt a parameter. Use
/// a custom key for better security. Required for parameters that use the SecureString
/// data type.
///
///
///
/// If you don't specify a key ID, the system uses the default key associated with your
/// Amazon Web Services account which is not as secure as using a custom key.
///
/// -
///
/// To use a custom KMS key, choose the
SecureString
data type with the Key
/// ID
parameter.
///
///
///
[AWSProperty(Min=1, Max=256)]
public string KeyId
{
get { return this._keyId; }
set { this._keyId = value; }
}
// Check to see if KeyId property is set
internal bool IsSetKeyId()
{
return this._keyId != null;
}
///
/// Gets and sets the property Name.
///
/// The fully qualified name of the parameter that you want to add to the system. The
/// fully qualified name includes the complete hierarchy of the parameter path and name.
/// For parameters in a hierarchy, you must include a leading forward slash character
/// (/) when you create or reference a parameter. For example: /Dev/DBServer/MySQL/db-string13
///
///
///
///
/// Naming Constraints:
///
/// -
///
/// Parameter names are case sensitive.
///
///
-
///
/// A parameter name must be unique within an Amazon Web Services Region
///
///
-
///
/// A parameter name can't be prefixed with "
aws
" or "ssm
" (case-insensitive).
///
/// -
///
/// Parameter names can include only the following symbols and letters:
a-zA-Z0-9_.-
///
///
///
///
/// In addition, the slash character ( / ) is used to delineate hierarchies in parameter
/// names. For example: /Dev/Production/East/Project-ABC/MyParameter
///
/// -
///
/// A parameter name can't include spaces.
///
///
-
///
/// Parameter hierarchies are limited to a maximum depth of fifteen levels.
///
///
///
/// For additional information about valid values for parameter names, see Creating
/// Systems Manager parameters in the Amazon Web Services Systems Manager User
/// Guide.
///
///
///
/// The maximum length constraint of 2048 characters listed below includes 1037 characters
/// reserved for internal use by Systems Manager. The maximum length for a parameter name
/// that you create is 1011 characters. This includes the characters in the ARN that precede
/// the name you specify, such as arn:aws:ssm:us-east-2:111122223333:parameter/
.
///
///
///
[AWSProperty(Required=true, Min=1, Max=2048)]
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property Overwrite.
///
/// Overwrite an existing parameter. The default value is false
.
///
///
public bool Overwrite
{
get { return this._overwrite.GetValueOrDefault(); }
set { this._overwrite = value; }
}
// Check to see if Overwrite property is set
internal bool IsSetOverwrite()
{
return this._overwrite.HasValue;
}
///
/// Gets and sets the property Policies.
///
/// One or more policies to apply to a parameter. This operation takes a JSON array. Parameter
/// Store, a capability of Amazon Web Services Systems Manager supports the following
/// policy types:
///
///
///
/// Expiration: This policy deletes the parameter after it expires. When you create the
/// policy, you specify the expiration date. You can update the expiration date and time
/// by updating the policy. Updating the parameter doesn't affect the expiration
/// date and time. When the expiration time is reached, Parameter Store deletes the parameter.
///
///
///
/// ExpirationNotification: This policy initiates an event in Amazon CloudWatch Events
/// that notifies you about the expiration. By using this policy, you can receive notification
/// before or after the expiration time is reached, in units of days or hours.
///
///
///
/// NoChangeNotification: This policy initiates a CloudWatch Events event if a parameter
/// hasn't been modified for a specified period of time. This policy type is useful when,
/// for example, a secret needs to be changed within a period of time, but it hasn't been
/// changed.
///
///
///
/// All existing policies are preserved until you send new policies or an empty policy.
/// For more information about parameter policies, see Assigning
/// parameter policies.
///
///
[AWSProperty(Min=1, Max=4096)]
public string Policies
{
get { return this._policies; }
set { this._policies = value; }
}
// Check to see if Policies property is set
internal bool IsSetPolicies()
{
return this._policies != null;
}
///
/// Gets and sets the property Tags.
///
/// Optional metadata that you assign to a resource. Tags enable you to categorize a resource
/// in different ways, such as by purpose, owner, or environment. For example, you might
/// want to tag a Systems Manager parameter to identify the type of resource to which
/// it applies, the environment, or the type of configuration data referenced by the parameter.
/// In this case, you could specify the following key-value pairs:
///
/// -
///
///
Key=Resource,Value=S3bucket
///
/// -
///
///
Key=OS,Value=Windows
///
/// -
///
///
Key=ParameterType,Value=LicenseKey
///
///
///
/// To add tags to an existing Systems Manager parameter, use the AddTagsToResource
/// operation.
///
///
///
[AWSProperty(Max=1000)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property Tier.
///
/// The parameter tier to assign to a parameter.
///
///
///
/// Parameter Store offers a standard tier and an advanced tier for parameters. Standard
/// parameters have a content size limit of 4 KB and can't be configured to use parameter
/// policies. You can create a maximum of 10,000 standard parameters for each Region in
/// an Amazon Web Services account. Standard parameters are offered at no additional cost.
///
///
///
///
/// Advanced parameters have a content size limit of 8 KB and can be configured to use
/// parameter policies. You can create a maximum of 100,000 advanced parameters for each
/// Region in an Amazon Web Services account. Advanced parameters incur a charge. For
/// more information, see Standard
/// and advanced parameter tiers in the Amazon Web Services Systems Manager User
/// Guide.
///
///
///
/// You can change a standard parameter to an advanced parameter any time. But you can't
/// revert an advanced parameter to a standard parameter. Reverting an advanced parameter
/// to a standard parameter would result in data loss because the system would truncate
/// the size of the parameter from 8 KB to 4 KB. Reverting would also remove any policies
/// attached to the parameter. Lastly, advanced parameters use a different form of encryption
/// than standard parameters.
///
///
///
/// If you no longer need an advanced parameter, or if you no longer want to incur charges
/// for an advanced parameter, you must delete it and recreate it as a new standard parameter.
///
///
///
///
/// Using the Default Tier Configuration
///
///
///
/// In PutParameter
requests, you can specify the tier to create the parameter
/// in. Whenever you specify a tier in the request, Parameter Store creates or updates
/// the parameter according to that request. However, if you don't specify a tier in a
/// request, Parameter Store assigns the tier based on the current Parameter Store default
/// tier configuration.
///
///
///
/// The default tier when you begin using Parameter Store is the standard-parameter tier.
/// If you use the advanced-parameter tier, you can specify one of the following as the
/// default:
///
/// -
///
/// Advanced: With this option, Parameter Store evaluates all requests as advanced
/// parameters.
///
///
-
///
/// Intelligent-Tiering: With this option, Parameter Store evaluates each request
/// to determine if the parameter is standard or advanced.
///
///
///
/// If the request doesn't include any options that require an advanced parameter, the
/// parameter is created in the standard-parameter tier. If one or more options requiring
/// an advanced parameter are included in the request, Parameter Store create a parameter
/// in the advanced-parameter tier.
///
///
///
/// This approach helps control your parameter-related costs by always creating standard
/// parameters unless an advanced parameter is necessary.
///
///
///
/// Options that require an advanced parameter include the following:
///
/// -
///
/// The content size of the parameter is more than 4 KB.
///
///
-
///
/// The parameter uses a parameter policy.
///
///
-
///
/// More than 10,000 parameters already exist in your Amazon Web Services account in the
/// current Amazon Web Services Region.
///
///
///
/// For more information about configuring the default tier option, see Specifying
/// a default parameter tier in the Amazon Web Services Systems Manager User Guide.
///
///
public ParameterTier Tier
{
get { return this._tier; }
set { this._tier = value; }
}
// Check to see if Tier property is set
internal bool IsSetTier()
{
return this._tier != null;
}
///
/// Gets and sets the property Type.
///
/// The type of parameter that you want to add to the system.
///
///
///
/// SecureString
isn't currently supported for CloudFormation templates.
///
///
///
/// Items in a StringList
must be separated by a comma (,). You can't use
/// other punctuation or special character to escape items in the list. If you have a
/// parameter value that requires a comma, then use the String
data type.
///
///
///
/// Specifying a parameter type isn't required when updating a parameter. You must specify
/// a parameter type when creating a parameter.
///
///
///
public ParameterType Type
{
get { return this._type; }
set { this._type = value; }
}
// Check to see if Type property is set
internal bool IsSetType()
{
return this._type != null;
}
///
/// Gets and sets the property Value.
///
/// The parameter value that you want to add to the system. Standard parameters have a
/// value limit of 4 KB. Advanced parameters have a value limit of 8 KB.
///
///
///
/// Parameters can't be referenced or nested in the values of other parameters. You can't
/// include {{}}
or {{ssm:parameter-name}}
in a parameter
/// value.
///
///
///
[AWSProperty(Required=true, Sensitive=true)]
public string Value
{
get { return this._value; }
set { this._value = value; }
}
// Check to see if Value property is set
internal bool IsSetValue()
{
return this._value != null;
}
}
}