moto/CLOUDFORMATION_COVERAGE.md
Jordan Sanders 94d35af520
CloudFormation: Add coverage checklist (#6129)
This change introduces a checklist similar to IMPLEMENTATION_COVERAGE.md
to document moto's adherence to the full CloudFormation specification.

The script (invoked via `make cloudformation_coverage`) finds any moto
models that implement `moto.core.common_models.CloudFormationModel` and
checks to see if all CRUD methods are implemented. For `has_cfn_attr`,
it also checks to see if all of the attributes exposed by `Fn::GetAtt` are
implemented. It does not check to see if `physical_resource_id` is
implemented because as far as I can tell, the published AWS spec doesn't
include that information:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html

A more aggressive approach would be to remove default implementations
from all the abstract methods and allow Python to throw for any
unimplemented method. But that would obviously break a lot of things.

Instead, I think the checklist represents good documentation for users
about what they can and can't expect moto to handle when parsing their
CloudFormation templates. It also serves as a nice to-do list of small
improvements for contributors to add (and I'll likely add a few myself).
Many of these would be particularly good "first issues" for first time
contributors because in general, these methods just call existing
methods.
2023-03-27 17:56:19 +01:00

9.6 KiB

  • AWS::ApiGateway::Deployment:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • DeploymentId
  • AWS::ApiGateway::Method:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::ApiGateway::Resource:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • ResourceId
  • AWS::AutoScaling::AutoScalingGroup:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • LaunchConfigurationName
      • LaunchTemplateSpecification
      • MixedInstancesPolicy
      • PlacementGroup
      • VPCZoneIdentifier
  • AWS::AutoScaling::LaunchConfiguration:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::AutoScaling::ScheduledAction:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • ScheduledActionName
  • AWS::Batch::ComputeEnvironment:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • ComputeEnvironmentArn
  • AWS::Batch::JobDefinition:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::Batch::JobQueue:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • JobQueueArn
  • AWS::CloudFormation::Stack:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::DataPipeline::Pipeline:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::DynamoDB::Table:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::EC2::Instance:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::EC2::InternetGateway:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • InternetGatewayId
  • AWS::EC2::LaunchTemplate:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • LatestVersionNumber
      • DefaultVersionNumber
  • AWS::EC2::NatGateway:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • NatGatewayId
  • AWS::EC2::NetworkInterface:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • Id
  • AWS::EC2::Route:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::EC2::RouteTable:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • RouteTableId
  • AWS::EC2::SecurityGroup:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • VpcId
  • AWS::EC2::SecurityGroupIngress:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::EC2::Subnet:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • VpcId
      • NetworkAclAssociationId
      • OutpostArn
      • SubnetId
      • Ipv6CidrBlocks
  • AWS::EC2::SubnetRouteTableAssociation:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • Id
  • AWS::EC2::TransitGateway:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • Id
  • AWS::EC2::VPC:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • VpcId
      • CidrBlockAssociations
      • CidrBlock
      • DefaultNetworkAcl
      • Ipv6CidrBlocks
      • DefaultSecurityGroup
  • AWS::EC2::VPCGatewayAttachment:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::EC2::VPCPeeringConnection:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • Id
  • AWS::EC2::Volume:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • VolumeId
  • AWS::EC2::VolumeAttachment:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::ECR::Repository:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::ECS::Cluster:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::ECS::Service:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • ServiceArn
  • AWS::ECS::TaskDefinition:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • TaskDefinitionArn
  • AWS::EFS::FileSystem:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • FileSystemId
      • Arn
  • AWS::EFS::MountTarget:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • IpAddress
      • Id
  • AWS::Events::Archive:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::Events::EventBus:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::Events::Rule:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::IAM::AccessKey:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::IAM::InstanceProfile:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::IAM::ManagedPolicy:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::IAM::Policy:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::IAM::Role:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • RoleId
  • AWS::IAM::User:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::KMS::Key:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • KeyId
  • AWS::Kinesis::Stream:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::Logs::LogGroup:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • Arn
  • AWS::RDS::DBParameterGroup:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • DBParameterGroupName
  • AWS::Redshift::Cluster:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • Id
      • DeferMaintenanceIdentifier
  • AWS::Route53::HealthCheck:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • HealthCheckId
  • AWS::Route53::RecordSet:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::Route53::RecordSetGroup:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::S3::Bucket:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::SNS::Topic:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • TopicArn
  • AWS::SQS::Queue:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • QueueUrl
  • AWS::SSM::Parameter:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • Type
      • Value
  • AWS::SageMaker::Endpoint:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::SageMaker::EndpointConfig:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::SageMaker::Model:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
  • AWS::StepFunctions::StateMachine:
    • create implemented
    • update implemented
    • delete implemented
    • Fn::GetAtt implemented
      • StateMachineRevisionId
      • Arn