service/ssm/api_op_PutParameter.go (149 lines of code) (raw):

// Code generated by smithy-go-codegen DO NOT EDIT. package ssm import ( "context" "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/ssm/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Create or update a parameter in Parameter Store. func (c *Client) PutParameter(ctx context.Context, params *PutParameterInput, optFns ...func(*Options)) (*PutParameterOutput, error) { if params == nil { params = &PutParameterInput{} } result, metadata, err := c.invokeOperation(ctx, "PutParameter", params, optFns, c.addOperationPutParameterMiddlewares) if err != nil { return nil, err } out := result.(*PutParameterOutput) out.ResultMetadata = metadata return out, nil } type PutParameterInput struct { // The fully qualified name of the parameter that you want to create or update. // // You can't enter the Amazon Resource Name (ARN) for a parameter, only the // parameter name itself. // // 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 reported maximum length of 2048 characters for a parameter name includes // 1037 characters that are reserved for internal use by Systems Manager. The // maximum length for a parameter name that you specify is 1011 characters. // // This count of 1011 characters includes the characters in the ARN that precede // the name you specify. This ARN length will vary depending on your partition and // Region. For example, the following 45 characters count toward the 1011 character // maximum for a parameter created in the US East (Ohio) Region: // arn:aws:ssm:us-east-2:111122223333:parameter/ . // // [Creating Systems Manager parameters]: https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html // // This member is required. Name *string // 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 values wrapped in double brackets {{}} or {{ssm:parameter-name}} // in a parameter value. // // This member is required. Value *string // 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+$ AllowedPattern *string // 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 IDs]. // // [Setting up notifications or trigger actions based on Parameter Store events]: https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-cwe.html // [Native parameter support for Amazon Machine Image IDs]: https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html DataType *string // Information about the parameter that you want to add to the system. Optional // but recommended. // // Don't enter personally identifiable information in this field. Description *string // 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. KeyId *string // Overwrite an existing parameter. The default value is false . Overwrite *bool // One or more policies to apply to a parameter. This operation takes a JSON // array. Parameter Store, a tool in 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]. // // [Assigning parameter policies]: https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html Policies *string // 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. Tags []types.Tag // 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 [Managing 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. // // [Specifying a default parameter tier]: https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-advanced-parameters.html#ps-default-tier // [Managing parameter tiers]: https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-advanced-parameters.html Tier types.ParameterTier // The type of parameter that you want to create. // // 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. Type types.ParameterType noSmithyDocumentSerde } type PutParameterOutput struct { // The tier assigned to the parameter. Tier types.ParameterTier // The new version number of a parameter. If you edit a parameter value, Parameter // Store automatically creates a new version and assigns this new version a unique // ID. You can reference a parameter version ID in API operations or in Systems // Manager documents (SSM documents). By default, if you don't specify a specific // version, the system returns the latest parameter value when a parameter is // called. Version int64 // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationPutParameterMiddlewares(stack *middleware.Stack, options Options) (err error) { if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { return err } err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutParameter{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutParameter{}, middleware.After) if err != nil { return err } if err := addProtocolFinalizerMiddlewares(stack, options, "PutParameter"); err != nil { return fmt.Errorf("add protocol finalizers: %v", err) } if err = addlegacyEndpointContextSetter(stack, options); err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = addClientRequestID(stack); err != nil { return err } if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = addComputePayloadSHA256(stack); err != nil { return err } if err = addRetry(stack, options); err != nil { return err } if err = addRawResponseToMetadata(stack); err != nil { return err } if err = addRecordResponseTiming(stack); err != nil { return err } if err = addSpanRetryLoop(stack, options); err != nil { return err } if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { return err } if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { return err } if err = addTimeOffsetBuild(stack, c); err != nil { return err } if err = addUserAgentRetryMode(stack, options); err != nil { return err } if err = addCredentialSource(stack, options); err != nil { return err } if err = addOpPutParameterValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutParameter(options.Region), middleware.Before); err != nil { return err } if err = addRecursionDetection(stack); err != nil { return err } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { return err } if err = addRequestResponseLogging(stack, options); err != nil { return err } if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } if err = addSpanInitializeStart(stack); err != nil { return err } if err = addSpanInitializeEnd(stack); err != nil { return err } if err = addSpanBuildRequestStart(stack); err != nil { return err } if err = addSpanBuildRequestEnd(stack); err != nil { return err } return nil } func newServiceMetadataMiddleware_opPutParameter(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, OperationName: "PutParameter", } }