How to Copy AWS SSM Parameters: CLI Commands & Python Scripts Explained

Introduction
AWS Systems Manager Parameter Store is a powerful service that allows you to securely store and manage configuration data and secrets. However, there are times when you need to duplicate or rename an existing parameter, whether for environment migrations, backups, or automation workflows.
In this guide, we’ll explore how to copy AWS SSM parameters using both AWS CLI and Python scripts (Boto3). By the end of this tutorial, you'll be able to duplicate parameters with ease while ensuring security and efficiency.
Why Copy AWS SSM Parameters?
Before diving into the technical steps, let's explore common use cases for copying SSM parameters:
✅ Environment Migration – Moving parameters from a development to a staging or production environment.
✅ Parameter Renaming – Reorganizing parameters for better structure.
✅ Backup & Disaster Recovery – Keeping a backup of important parameters.
✅ Cross-Account Sharing – Duplicating parameters across AWS accounts.
Method 1: Copying SSM Parameters Using AWS CLI
AWS CLI provides a straightforward way to fetch and create parameters. Below is a step-by-step guide.
Step 1: Get the Parameter Value
First, retrieve the existing parameter value using:
aws ssm get-parameter --name "/old/parameter/name" --query "Parameter.Value" --output text
If it's a SecureString, include --with-decryption
:
aws ssm get-parameter --name "/old/parameter/name" --with-decryption --query "Parameter.Value" --output text
Step 2: Create the New Parameter
Now, take the retrieved value and store it under a new name:
aws ssm put-parameter --name "/new/parameter/name" --value "your-value-here" --type "String" --overwrite
For a SecureString parameter:
aws ssm put-parameter --name "/new/parameter/name" --value "your-value-here" --type "SecureString" --overwrite
Step 3: Automate the Process
To automate, use this one-liner command to copy an existing parameter to a new one:
aws ssm get-parameter --name "/old/parameter/name" --query "Parameter.Value" --output text | \
xargs -I {} aws ssm put-parameter --name "/new/parameter/name" --value "{}" --type "String" --overwrite
For SecureString:
aws ssm get-parameter --name "/old/parameter/name" --with-decryption --query "Parameter.Value" --output text | \
xargs -I {} aws ssm put-parameter --name "/new/parameter/name" --value "{}" --type "SecureString" --overwrite
✅ Done! Your new parameter is now created with the same value.
Method 2: Copying SSM Parameters Using Python (Boto3)
If you're working with AWS automation, using Python with Boto3 is a great approach. This method allows you to copy parameters in bulk or even across AWS accounts.
Step 1: Install Boto3 (If Not Installed)
pip install boto3
Step 2: Copy a Single Parameter
This script fetches a parameter and creates a new one:
import boto3
ssm = boto3.client('ssm')
def copy_parameter(old_name, new_name):
response = ssm.get_parameter(Name=old_name, WithDecryption=True)
value = response['Parameter']['Value']
param_type = response['Parameter']['Type']
ssm.put_parameter(
Name=new_name,
Value=value,
Type=param_type,
Overwrite=True
)
print(f"✅ Copied {old_name} to {new_name}")
# Example usage
copy_parameter('/old/parameter/name', '/new/parameter/name')
Step 3: Copy Multiple Parameters Under a Path
For bulk copying (e.g., from /dev/
to /staging/
), use this script:
def copy_parameters(old_prefix, new_prefix):
response = ssm.get_parameters_by_path(Path=old_prefix, Recursive=True, WithDecryption=True)
for param in response['Parameters']:
old_name = param['Name']
new_name = old_name.replace(old_prefix, new_prefix, 1) # Replace prefix
ssm.put_parameter(Name=new_name, Value=param['Value'], Type=param['Type'], Overwrite=True)
print(f"✅ Copied {old_name} → {new_name}")
# Example usage
copy_parameters('/dev/', '/staging/')
Best Practices for Managing SSM Parameters
🔹 Use Parameter Policies – Set expiration policies to manage secrets automatically.
🔹 Enable Encryption – Always use SecureString for sensitive data.
🔹 Organize Parameters by Environment – Follow a structure like /env/service/parameter-name
.
🔹 Use Tags – Categorize parameters for better management (--tags Key=Environment,Value=Production
).
Conclusion
Copying AWS SSM parameters is essential for environment migrations, backups, and automation workflows. Whether you prefer AWS CLI for quick tasks or Python scripts for automation, this guide has you covered.
✅ CLI is great for quick, one-off copies.
✅ Python is best for automating bulk copies or cross-account migration.
Now, you can easily duplicate AWS SSM parameters while maintaining security and efficiency. 🚀
Let me know if you have any questions or need additional refinements! 👇💬
Subscribe to my newsletter
Read articles from Ghanshyam Digital directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Ghanshyam Digital
Ghanshyam Digital
A company founded back in 2019 by two visionary Engineers to create and provide you with the best results possible. We are a web developing company with great vision and plans for the future to be a part of others success. We understand that you have deadlines and reputation to keep... so we will meet ours! You can rely on Ghanshyam Digital To handle your job expertly every time.