aws-cloudformation / cloudformation-cli

The CloudFormation Provider Development Toolkit allows you to author your own resource providers and modules that can be used by CloudFormation.
Apache License 2.0
319 stars 161 forks source link

Deregistering versions is not intuitive #401

Open richardhboyd opened 4 years ago

richardhboyd commented 4 years ago

I hit the maximum number of versions of my resource and it wasn't clear what I should do.

I eventually figured out that I needed to deregister old versions, but that feature is nested within the deregister-type command and it took longer than I would have liked to figure out I can use that to deregister individual versions of a type.

I'd like to be able to say "deregister-version" and give it an arn to deregister

I'd like to be able to say "deregister-non-default" and give it a type and it will deregister all non-default versions for that type (though I can see how this might be dangerous)

PatMyron commented 3 years ago

can deregister specific versions:

aws cloudformation deregister-type --arn --version-id


or request quota increase:

https://console.aws.amazon.com/servicequotas/home/services/cloudformation/quotas/L-EA1018E8 aws service-quotas request-service-quota-increase --service-code cloudformation --quota-code L-EA1018E8 --desired-value


or deregister non-default versions with this Python script:

import boto3
client = boto3.client('cloudformation')
for version in client.list_type_versions(Type='RESOURCE', TypeName=type_name)['TypeVersionSummaries']:
  if not version['IsDefaultVersion']:
    client.deregister_type(Arn=version['Arn'])
richardhboyd commented 3 years ago

I went to my doctor and said "My back hurts when I walk up stairs" and my doctor tells me "don't walk up stairs."

I understand that raising the quota can make the problem occur leas frequently, but my issue was more that the ergonomics for deregistering types isn't very deightful.

glb commented 1 year ago

I had to raise a support request to even find out that it was possible to deregister a type. It's odd that cfn-cli supports the rest of the lifecycle but not deregistering.