Skip to content

iann0036/cfn-stack-rename

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudFormation Stack Rename

The following script will programmatically perform the following steps:

  • Get resource import IDs from drift results
  • Set all resources in the stack to retain on delete
  • Delete the stack, whilst retaining the resource
  • Create a new stack, importing the resources with their current state back into the stack

As the stack is recreated entirely, the history of the stack will not be retained. Note that not all stacks will support a stack rename, only those that exclusively contain importable types.

❗ This script is not thoroughly tested and you should attempt to use this on a non-critical resource before real-world usage as some resources refuse to re-import for a variety of reasons. I am not responsible for your data loss.

Usage

python3 index.py OldStackName NewStackName

or to specify a region

python3 index.py OldStackName NewStackName us-east-1

or to specify a region and profile name

python3 index.py OldStackName NewStackName us-east-1 myprofile

Supported Resources

The following resources are supported for stack rename (if other resources are within the stack, the script will refuse to continue):

  • AWS::ACMPCA::Certificate
  • AWS::ACMPCA::CertificateAuthority
  • AWS::ACMPCA::CertificateAuthorityActivation
  • AWS::AccessAnalyzer::Analyzer
  • AWS::ApiGateway::Authorizer
  • AWS::ApiGateway::ClientCertificate
  • AWS::ApiGateway::Deployment
  • AWS::ApiGateway::DocumentationVersion
  • AWS::ApiGateway::DomainName
  • AWS::ApiGateway::Method
  • AWS::ApiGateway::Model
  • AWS::ApiGateway::RequestValidator
  • AWS::ApiGateway::Resource
  • AWS::ApiGateway::RestApi
  • AWS::ApiGateway::Stage
  • AWS::AppFlow::ConnectorProfile
  • AWS::AppFlow::Flow
  • AWS::ApplicationInsights::Application
  • AWS::Athena::DataCatalog
  • AWS::Athena::NamedQuery
  • AWS::Athena::WorkGroup
  • AWS::AuditManager::Assessment
  • AWS::AutoScaling::AutoScalingGroup
  • AWS::AutoScaling::LaunchConfiguration
  • AWS::AutoScaling::LifecycleHook
  • AWS::AutoScaling::ScalingPolicy
  • AWS::AutoScaling::ScheduledAction
  • AWS::CE::CostCategory
  • AWS::Cassandra::Keyspace
  • AWS::Cassandra::Table
  • AWS::Chatbot::SlackChannelConfiguration
  • AWS::CloudFormation::ModuleDefaultVersion
  • AWS::CloudFormation::ModuleVersion
  • AWS::CloudFormation::Stack
  • AWS::CloudFormation::StackSet
  • AWS::CloudFront::CachePolicy
  • AWS::CloudFront::KeyGroup
  • AWS::CloudFront::OriginRequestPolicy
  • AWS::CloudFront::PublicKey
  • AWS::CloudFront::RealtimeLogConfig
  • AWS::CloudTrail::Trail
  • AWS::CloudWatch::Alarm
  • AWS::CloudWatch::CompositeAlarm
  • AWS::CloudWatch::MetricStream
  • AWS::CodeArtifact::Domain
  • AWS::CodeArtifact::Repository
  • AWS::CodeGuruProfiler::ProfilingGroup
  • AWS::CodeGuruReviewer::RepositoryAssociation
  • AWS::CodeStarConnections::Connection
  • AWS::Config::ConformancePack
  • AWS::Config::OrganizationConformancePack
  • AWS::Config::StoredQuery
  • AWS::DataBrew::Dataset
  • AWS::DataBrew::Job
  • AWS::DataBrew::Project
  • AWS::DataBrew::Recipe
  • AWS::DataBrew::Schedule
  • AWS::DataSync::Agent
  • AWS::DataSync::LocationEFS
  • AWS::DataSync::LocationFSxWindows
  • AWS::DataSync::LocationNFS
  • AWS::DataSync::LocationObjectStorage
  • AWS::DataSync::LocationS3
  • AWS::DataSync::LocationSMB
  • AWS::DataSync::Task
  • AWS::Detective::Graph
  • AWS::Detective::MemberInvitation
  • AWS::DevOpsGuru::NotificationChannel
  • AWS::DevOpsGuru::ResourceCollection
  • AWS::DynamoDB::Table
  • AWS::DynamoDB::GlobalTable
  • AWS::EC2::CarrierGateway
  • AWS::EC2::EIP
  • AWS::EC2::FlowLog
  • AWS::EC2::GatewayRouteTableAssociation
  • AWS::EC2::Instance
  • AWS::EC2::InternetGateway
  • AWS::EC2::LocalGatewayRoute
  • AWS::EC2::LocalGatewayRouteTableVPCAssociation
  • AWS::EC2::NatGateway
  • AWS::EC2::NetworkAcl
  • AWS::EC2::NetworkInsightsAnalysis
  • AWS::EC2::NetworkInsightsPath
  • AWS::EC2::NetworkInterface
  • AWS::EC2::PrefixList
  • AWS::EC2::RouteTable
  • AWS::EC2::SecurityGroup
  • AWS::EC2::Subnet
  • AWS::EC2::VPC
  • AWS::EC2::Volume
  • AWS::ECR::PublicRepository
  • AWS::ECR::Repository
  • AWS::ECS::CapacityProvider
  • AWS::ECS::Cluster
  • AWS::ECS::PrimaryTaskSet
  • AWS::ECS::Service
  • AWS::ECS::TaskDefinition
  • AWS::ECS::TaskSet
  • AWS::EFS::AccessPoint
  • AWS::EFS::FileSystem
  • AWS::EKS::FargateProfile
  • AWS::ElastiCache::User
  • AWS::ElastiCache::UserGroup
  • AWS::ElasticLoadBalancing::LoadBalancer
  • AWS::ElasticLoadBalancingV2::Listener
  • AWS::ElasticLoadBalancingV2::ListenerRule
  • AWS::ElasticLoadBalancingV2::LoadBalancer
  • AWS::EventSchemas::RegistryPolicy
  • AWS::Events::Archive
  • AWS::Events::Rule
  • AWS::FMS::NotificationChannel
  • AWS::FMS::Policy
  • AWS::GameLift::Alias
  • AWS::GameLift::GameServerGroup
  • AWS::GlobalAccelerator::Accelerator
  • AWS::GlobalAccelerator::EndpointGroup
  • AWS::GlobalAccelerator::Listener
  • AWS::Glue::Registry
  • AWS::Glue::Schema
  • AWS::Glue::SchemaVersion
  • AWS::Glue::SchemaVersionMetadata
  • AWS::GreengrassV2::ComponentVersion
  • AWS::IVS::Channel
  • AWS::IVS::PlaybackKeyPair
  • AWS::IVS::StreamKey
  • AWS::ImageBuilder::Component
  • AWS::ImageBuilder::DistributionConfiguration
  • AWS::ImageBuilder::Image
  • AWS::ImageBuilder::ImagePipeline
  • AWS::ImageBuilder::ImageRecipe
  • AWS::ImageBuilder::InfrastructureConfiguration
  • AWS::IoT::Authorizer
  • AWS::IoT::Certificate
  • AWS::IoT::DomainConfiguration
  • AWS::IoT::ProvisioningTemplate
  • AWS::IoT::Thing
  • AWS::IoT::TopicRuleDestination
  • AWS::IoTSiteWise::AccessPolicy
  • AWS::IoTSiteWise::Asset
  • AWS::IoTSiteWise::AssetModel
  • AWS::IoTSiteWise::Dashboard
  • AWS::IoTSiteWise::Gateway
  • AWS::IoTSiteWise::Portal
  • AWS::IoTSiteWise::Project
  • AWS::IoTWireless::Destination
  • AWS::IoTWireless::DeviceProfile
  • AWS::IoTWireless::ServiceProfile
  • AWS::IoTWireless::WirelessDevice
  • AWS::IoTWireless::WirelessGateway
  • AWS::KMS::Alias
  • AWS::KMS::Key
  • AWS::Kendra::DataSource
  • AWS::Kendra::Faq
  • AWS::Kendra::Index
  • AWS::Kinesis::Stream
  • AWS::KinesisFirehose::DeliveryStream
  • AWS::Lambda::Alias
  • AWS::Lambda::CodeSigningConfig
  • AWS::Lambda::EventSourceMapping
  • AWS::Lambda::Function
  • AWS::Lambda::Version
  • AWS::LicenseManager::Grant
  • AWS::LicenseManager::License
  • AWS::Logs::LogGroup
  • AWS::Logs::MetricFilter
  • AWS::Logs::SubscriptionFilter
  • AWS::MWAA::Environment
  • AWS::Macie::CustomDataIdentifier
  • AWS::Macie::FindingsFilter
  • AWS::Macie::Session
  • AWS::MediaConnect::Flow
  • AWS::MediaConnect::FlowEntitlement
  • AWS::MediaConnect::FlowOutput
  • AWS::MediaConnect::FlowSource
  • AWS::MediaConnect::FlowVpcInterface
  • AWS::MediaPackage::Asset
  • AWS::MediaPackage::Channel
  • AWS::MediaPackage::OriginEndpoint
  • AWS::MediaPackage::PackagingConfiguration
  • AWS::MediaPackage::PackagingGroup
  • AWS::NetworkFirewall::Firewall
  • AWS::NetworkFirewall::FirewallPolicy
  • AWS::NetworkFirewall::LoggingConfiguration
  • AWS::NetworkFirewall::RuleGroup
  • AWS::NetworkManager::CustomerGatewayAssociation
  • AWS::NetworkManager::Device
  • AWS::NetworkManager::GlobalNetwork
  • AWS::NetworkManager::Link
  • AWS::NetworkManager::LinkAssociation
  • AWS::NetworkManager::Site
  • AWS::NetworkManager::TransitGatewayRegistration
  • AWS::OpsWorksCM::Server
  • AWS::QLDB::Stream
  • AWS::RDS::DBCluster
  • AWS::RDS::DBInstance
  • AWS::RDS::DBProxy
  • AWS::RDS::DBProxyTargetGroup
  • AWS::RDS::GlobalCluster
  • AWS::ResourceGroups::Group
  • AWS::Route53::DNSSEC
  • AWS::Route53::HealthCheck
  • AWS::Route53::HostedZone
  • AWS::Route53::KeySigningKey
  • AWS::Route53Resolver::ResolverDNSSECConfig
  • AWS::Route53Resolver::ResolverQueryLoggingConfig
  • AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation
  • AWS::S3::AccessPoint
  • AWS::S3::Bucket
  • AWS::SES::ConfigurationSet
  • AWS::SNS::Topic
  • AWS::SQS::Queue
  • AWS::SSM::Association
  • AWS::SSO::InstanceAccessControlAttributeConfiguration
  • AWS::SSO::PermissionSet
  • AWS::SageMaker::DataQualityJobDefinition
  • AWS::SageMaker::Device
  • AWS::SageMaker::DeviceFleet
  • AWS::SageMaker::ModelBiasJobDefinition
  • AWS::SageMaker::ModelExplainabilityJobDefinition
  • AWS::SageMaker::ModelPackageGroup
  • AWS::SageMaker::ModelQualityJobDefinition
  • AWS::SageMaker::MonitoringSchedule
  • AWS::SageMaker::Pipeline
  • AWS::SageMaker::Project
  • AWS::ServiceCatalog::CloudFormationProvisionedProduct
  • AWS::Signer::ProfilePermission
  • AWS::Signer::SigningProfile
  • AWS::StepFunctions::StateMachine
  • AWS::Synthetics::Canary
  • AWS::Timestream::Database
  • AWS::Timestream::Table
  • AWS::WAFv2::IPSet
  • AWS::WAFv2::RegexPatternSet
  • AWS::WAFv2::RuleGroup
  • AWS::WAFv2::WebACL
  • AWS::WAFv2::WebACLAssociation
  • AWS::WorkSpaces::ConnectionAlias
  • AWS::IAM::Group
  • AWS::IAM::InstanceProfile
  • AWS::IAM::Role
  • AWS::IAM::User
  • AWS::IAM::ManagedPolicy

Known Issues

  • Stacks that have an Fn::ImportValue reference against it will cause the stack to be unable to be deleted
  • Some transforms may affect the RetainPolicy - check if this affects you before executing

About

Rename a CloudFormation stack

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages