# ssm-parameter

Manages AWS Systems Manager Parameter Store parameters with KMS encryption.

Creates String, StringList, and SecureString parameters. SecureString parameters use a caller-supplied KMS key (from the `security/kms` module). Initial values are set on creation and then ignored to support operator-managed secret rotation. Supports Standard and Advanced tiers.

## Usage

```hcl
module "ssm_params" {
  source  = "hcassc.jfrog.io/iac-terraform-modules-virtual/security/ssm-parameter/aws"
  version = "0.1.0"

  parameters = {
    db_host = {
      name  = "/prod/rds/host"
      type  = "String"
      value = "db.internal.example.com"
    }
    db_password = {
      name       = "/prod/rds/password"
      type       = "SecureString"
      value      = "changeme"
      kms_key_id = module.kms.key_id
    }
  }
}
```

<!-- BEGIN_TF_DOCS — DO NOT EDIT BELOW THIS LINE -->
## Requirements

| Name | Version |
| ---- | ------- |
| <a name="requirement_terraform"></a> [terraform](#requirement_terraform) | ~> 1.5 |
| <a name="requirement_aws"></a> [aws](#requirement_aws) | ~> 6.50 |

## Providers

| Name | Version |
| ---- | ------- |
| <a name="provider_aws"></a> [aws](#provider_aws) | 6.50.0 |

## Resources

| Name | Type |
| ---- | ---- |
| [aws_ssm_parameter.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource |

## Inputs

| Name | Description | Type | Default | Required |
| ---- | ----------- | ---- | ------- | :------: |
| <a name="input_parameters"></a> [parameters](#input_parameters) | Map of SSM parameters to create.<br/>type is String, StringList, or SecureString.<br/>kms_key_id is required when type is SecureString. | <pre>map(object({<br/>    name        = string<br/>    description = optional(string, "")<br/>    type        = optional(string, "SecureString")<br/>    value       = string<br/>    tier        = optional(string, "Standard")<br/>    kms_key_id  = optional(string, null)<br/>    overwrite   = optional(bool, false)<br/>  }))</pre> | `{}` | no |
| <a name="input_tags"></a> [tags](#input_tags) | Resource tags to apply to all resources | `map(string)` | `{}` | no |

## Outputs

| Name | Description |
| ---- | ----------- |
| <a name="output_parameter_arns"></a> [parameter_arns](#output_parameter_arns) | Map of logical key to parameter ARN |
| <a name="output_parameter_names"></a> [parameter_names](#output_parameter_names) | Map of logical key to parameter name |
| <a name="output_parameter_versions"></a> [parameter_versions](#output_parameter_versions) | Map of logical key to parameter version number |
<!-- END_TF_DOCS — DO NOT EDIT ABOVE THIS LINE -->
