From b553c49bd422ab50ce4c66e5bf18c9323da382b3 Mon Sep 17 00:00:00 2001 From: Bert Blommers Date: Mon, 10 Apr 2023 23:17:37 +0000 Subject: [PATCH] Prep Release 4.1.7 --- CHANGELOG.md | 70 +++++++ CLOUDFORMATION_COVERAGE.md | 5 + Makefile | 2 +- docs/docs/services/cf.rst | 193 ++++++++++++++++++ .../services/{ => implemented}/acm-pca.rst | 0 docs/docs/services/{ => implemented}/acm.rst | 0 docs/docs/services/{ => implemented}/amp.rst | 0 .../services/{ => implemented}/apigateway.rst | 0 .../{ => implemented}/apigatewayv2.rst | 0 .../application-autoscaling.rst | 0 .../services/{ => implemented}/appsync.rst | 0 .../services/{ => implemented}/athena.rst | 0 .../{ => implemented}/autoscaling.rst | 0 .../docs/services/{ => implemented}/batch.rst | 0 .../services/{ => implemented}/budgets.rst | 0 docs/docs/services/{ => implemented}/ce.rst | 0 .../{ => implemented}/cloudformation.rst | 0 .../services/{ => implemented}/cloudfront.rst | 0 .../services/{ => implemented}/cloudtrail.rst | 0 .../services/{ => implemented}/cloudwatch.rst | 0 .../services/{ => implemented}/codebuild.rst | 0 .../services/{ => implemented}/codecommit.rst | 0 .../{ => implemented}/codepipeline.rst | 0 .../{ => implemented}/cognito-identity.rst | 0 .../{ => implemented}/cognito-idp.rst | 0 .../services/{ => implemented}/comprehend.rst | 0 .../services/{ => implemented}/config.rst | 0 .../services/{ => implemented}/databrew.rst | 0 .../{ => implemented}/datapipeline.rst | 0 .../services/{ => implemented}/datasync.rst | 0 docs/docs/services/{ => implemented}/dax.rst | 0 docs/docs/services/{ => implemented}/dms.rst | 0 docs/docs/services/{ => implemented}/ds.rst | 0 .../services/{ => implemented}/dynamodb.rst | 0 .../{ => implemented}/dynamodbstreams.rst | 0 docs/docs/services/{ => implemented}/ebs.rst | 0 .../ec2-instance-connect.rst | 0 docs/docs/services/{ => implemented}/ec2.rst | 0 docs/docs/services/{ => implemented}/ecr.rst | 0 docs/docs/services/{ => implemented}/ecs.rst | 0 docs/docs/services/{ => implemented}/efs.rst | 0 docs/docs/services/{ => implemented}/eks.rst | 0 .../{ => implemented}/elasticache.rst | 0 .../{ => implemented}/elasticbeanstalk.rst | 0 .../{ => implemented}/elastictranscoder.rst | 0 docs/docs/services/{ => implemented}/elb.rst | 0 .../docs/services/{ => implemented}/elbv2.rst | 0 .../{ => implemented}/emr-containers.rst | 0 .../{ => implemented}/emr-serverless.rst | 0 docs/docs/services/{ => implemented}/emr.rst | 0 docs/docs/services/{ => implemented}/es.rst | 0 .../services/{ => implemented}/events.rst | 0 .../services/{ => implemented}/firehose.rst | 0 .../services/{ => implemented}/forecast.rst | 0 .../services/{ => implemented}/glacier.rst | 0 docs/docs/services/{ => implemented}/glue.rst | 0 .../services/{ => implemented}/greengrass.rst | 0 .../services/{ => implemented}/guardduty.rst | 0 docs/docs/services/{ => implemented}/iam.rst | 0 .../{ => implemented}/identitystore.rst | 0 .../services/{ => implemented}/iot-data.rst | 0 docs/docs/services/{ => implemented}/iot.rst | 0 .../kinesis-video-archived-media.rst | 0 .../services/{ => implemented}/kinesis.rst | 0 .../{ => implemented}/kinesisvideo.rst | 0 docs/docs/services/{ => implemented}/kms.rst | 0 .../{ => implemented}/lakeformation.rst | 0 .../services/{ => implemented}/lambda.rst | 0 docs/docs/services/{ => implemented}/logs.rst | 0 .../{ => implemented}/managedblockchain.rst | 0 .../{ => implemented}/mediaconnect.rst | 0 .../services/{ => implemented}/medialive.rst | 0 .../{ => implemented}/mediapackage.rst | 0 .../{ => implemented}/mediastore-data.rst | 0 .../services/{ => implemented}/mediastore.rst | 0 .../{ => implemented}/meteringmarketplace.rst | 0 docs/docs/services/{ => implemented}/mq.rst | 0 .../services/{ => implemented}/neptune.rst | 0 .../services/{ => implemented}/opensearch.rst | 0 .../services/{ => implemented}/opsworks.rst | 0 .../{ => implemented}/organizations.rst | 0 .../{ => implemented}/personalize.rst | 0 .../services/{ => implemented}/pinpoint.rst | 0 .../docs/services/{ => implemented}/polly.rst | 0 .../services/{ => implemented}/quicksight.rst | 0 docs/docs/services/{ => implemented}/ram.rst | 0 .../services/{ => implemented}/rds-data.rst | 0 docs/docs/services/{ => implemented}/rds.rst | 0 .../{ => implemented}/redshift-data.rst | 0 .../services/{ => implemented}/redshift.rst | 0 .../{ => implemented}/rekognition.rst | 0 .../{ => implemented}/resource-groups.rst | 0 .../resourcegroupstaggingapi.rst | 0 .../services/{ => implemented}/route53.rst | 0 .../{ => implemented}/route53resolver.rst | 0 docs/docs/services/{ => implemented}/s3.rst | 0 .../services/{ => implemented}/s3control.rst | 0 .../services/{ => implemented}/sagemaker.rst | 0 .../services/{ => implemented}/scheduler.rst | 0 docs/docs/services/{ => implemented}/sdb.rst | 0 .../{ => implemented}/secretsmanager.rst | 0 .../{ => implemented}/service-quotas.rst | 0 .../{ => implemented}/servicediscovery.rst | 0 docs/docs/services/{ => implemented}/ses.rst | 0 .../services/{ => implemented}/signer.rst | 0 docs/docs/services/{ => implemented}/sns.rst | 0 docs/docs/services/{ => implemented}/sqs.rst | 0 docs/docs/services/{ => implemented}/ssm.rst | 0 .../services/{ => implemented}/sso-admin.rst | 0 .../{ => implemented}/stepfunctions.rst | 0 docs/docs/services/{ => implemented}/sts.rst | 0 .../services/{ => implemented}/support.rst | 0 docs/docs/services/{ => implemented}/swf.rst | 0 .../services/{ => implemented}/textract.rst | 0 .../{ => implemented}/timestream-write.rst | 0 .../services/{ => implemented}/transcribe.rst | 0 .../docs/services/{ => implemented}/wafv2.rst | 0 docs/docs/services/index.rst | 2 +- docs/index.rst | 1 + scripts/cloudformation_coverage.py | 100 +++++++-- scripts/implementation_coverage.py | 4 +- 121 files changed, 361 insertions(+), 16 deletions(-) create mode 100644 docs/docs/services/cf.rst rename docs/docs/services/{ => implemented}/acm-pca.rst (100%) rename docs/docs/services/{ => implemented}/acm.rst (100%) rename docs/docs/services/{ => implemented}/amp.rst (100%) rename docs/docs/services/{ => implemented}/apigateway.rst (100%) rename docs/docs/services/{ => implemented}/apigatewayv2.rst (100%) rename docs/docs/services/{ => implemented}/application-autoscaling.rst (100%) rename docs/docs/services/{ => implemented}/appsync.rst (100%) rename docs/docs/services/{ => implemented}/athena.rst (100%) rename docs/docs/services/{ => implemented}/autoscaling.rst (100%) rename docs/docs/services/{ => implemented}/batch.rst (100%) rename docs/docs/services/{ => implemented}/budgets.rst (100%) rename docs/docs/services/{ => implemented}/ce.rst (100%) rename docs/docs/services/{ => implemented}/cloudformation.rst (100%) rename docs/docs/services/{ => implemented}/cloudfront.rst (100%) rename docs/docs/services/{ => implemented}/cloudtrail.rst (100%) rename docs/docs/services/{ => implemented}/cloudwatch.rst (100%) rename docs/docs/services/{ => implemented}/codebuild.rst (100%) rename docs/docs/services/{ => implemented}/codecommit.rst (100%) rename docs/docs/services/{ => implemented}/codepipeline.rst (100%) rename docs/docs/services/{ => implemented}/cognito-identity.rst (100%) rename docs/docs/services/{ => implemented}/cognito-idp.rst (100%) rename docs/docs/services/{ => implemented}/comprehend.rst (100%) rename docs/docs/services/{ => implemented}/config.rst (100%) rename docs/docs/services/{ => implemented}/databrew.rst (100%) rename docs/docs/services/{ => implemented}/datapipeline.rst (100%) rename docs/docs/services/{ => implemented}/datasync.rst (100%) rename docs/docs/services/{ => implemented}/dax.rst (100%) rename docs/docs/services/{ => implemented}/dms.rst (100%) rename docs/docs/services/{ => implemented}/ds.rst (100%) rename docs/docs/services/{ => implemented}/dynamodb.rst (100%) rename docs/docs/services/{ => implemented}/dynamodbstreams.rst (100%) rename docs/docs/services/{ => implemented}/ebs.rst (100%) rename docs/docs/services/{ => implemented}/ec2-instance-connect.rst (100%) rename docs/docs/services/{ => implemented}/ec2.rst (100%) rename docs/docs/services/{ => implemented}/ecr.rst (100%) rename docs/docs/services/{ => implemented}/ecs.rst (100%) rename docs/docs/services/{ => implemented}/efs.rst (100%) rename docs/docs/services/{ => implemented}/eks.rst (100%) rename docs/docs/services/{ => implemented}/elasticache.rst (100%) rename docs/docs/services/{ => implemented}/elasticbeanstalk.rst (100%) rename docs/docs/services/{ => implemented}/elastictranscoder.rst (100%) rename docs/docs/services/{ => implemented}/elb.rst (100%) rename docs/docs/services/{ => implemented}/elbv2.rst (100%) rename docs/docs/services/{ => implemented}/emr-containers.rst (100%) rename docs/docs/services/{ => implemented}/emr-serverless.rst (100%) rename docs/docs/services/{ => implemented}/emr.rst (100%) rename docs/docs/services/{ => implemented}/es.rst (100%) rename docs/docs/services/{ => implemented}/events.rst (100%) rename docs/docs/services/{ => implemented}/firehose.rst (100%) rename docs/docs/services/{ => implemented}/forecast.rst (100%) rename docs/docs/services/{ => implemented}/glacier.rst (100%) rename docs/docs/services/{ => implemented}/glue.rst (100%) rename docs/docs/services/{ => implemented}/greengrass.rst (100%) rename docs/docs/services/{ => implemented}/guardduty.rst (100%) rename docs/docs/services/{ => implemented}/iam.rst (100%) rename docs/docs/services/{ => implemented}/identitystore.rst (100%) rename docs/docs/services/{ => implemented}/iot-data.rst (100%) rename docs/docs/services/{ => implemented}/iot.rst (100%) rename docs/docs/services/{ => implemented}/kinesis-video-archived-media.rst (100%) rename docs/docs/services/{ => implemented}/kinesis.rst (100%) rename docs/docs/services/{ => implemented}/kinesisvideo.rst (100%) rename docs/docs/services/{ => implemented}/kms.rst (100%) rename docs/docs/services/{ => implemented}/lakeformation.rst (100%) rename docs/docs/services/{ => implemented}/lambda.rst (100%) rename docs/docs/services/{ => implemented}/logs.rst (100%) rename docs/docs/services/{ => implemented}/managedblockchain.rst (100%) rename docs/docs/services/{ => implemented}/mediaconnect.rst (100%) rename docs/docs/services/{ => implemented}/medialive.rst (100%) rename docs/docs/services/{ => implemented}/mediapackage.rst (100%) rename docs/docs/services/{ => implemented}/mediastore-data.rst (100%) rename docs/docs/services/{ => implemented}/mediastore.rst (100%) rename docs/docs/services/{ => implemented}/meteringmarketplace.rst (100%) rename docs/docs/services/{ => implemented}/mq.rst (100%) rename docs/docs/services/{ => implemented}/neptune.rst (100%) rename docs/docs/services/{ => implemented}/opensearch.rst (100%) rename docs/docs/services/{ => implemented}/opsworks.rst (100%) rename docs/docs/services/{ => implemented}/organizations.rst (100%) rename docs/docs/services/{ => implemented}/personalize.rst (100%) rename docs/docs/services/{ => implemented}/pinpoint.rst (100%) rename docs/docs/services/{ => implemented}/polly.rst (100%) rename docs/docs/services/{ => implemented}/quicksight.rst (100%) rename docs/docs/services/{ => implemented}/ram.rst (100%) rename docs/docs/services/{ => implemented}/rds-data.rst (100%) rename docs/docs/services/{ => implemented}/rds.rst (100%) rename docs/docs/services/{ => implemented}/redshift-data.rst (100%) rename docs/docs/services/{ => implemented}/redshift.rst (100%) rename docs/docs/services/{ => implemented}/rekognition.rst (100%) rename docs/docs/services/{ => implemented}/resource-groups.rst (100%) rename docs/docs/services/{ => implemented}/resourcegroupstaggingapi.rst (100%) rename docs/docs/services/{ => implemented}/route53.rst (100%) rename docs/docs/services/{ => implemented}/route53resolver.rst (100%) rename docs/docs/services/{ => implemented}/s3.rst (100%) rename docs/docs/services/{ => implemented}/s3control.rst (100%) rename docs/docs/services/{ => implemented}/sagemaker.rst (100%) rename docs/docs/services/{ => implemented}/scheduler.rst (100%) rename docs/docs/services/{ => implemented}/sdb.rst (100%) rename docs/docs/services/{ => implemented}/secretsmanager.rst (100%) rename docs/docs/services/{ => implemented}/service-quotas.rst (100%) rename docs/docs/services/{ => implemented}/servicediscovery.rst (100%) rename docs/docs/services/{ => implemented}/ses.rst (100%) rename docs/docs/services/{ => implemented}/signer.rst (100%) rename docs/docs/services/{ => implemented}/sns.rst (100%) rename docs/docs/services/{ => implemented}/sqs.rst (100%) rename docs/docs/services/{ => implemented}/ssm.rst (100%) rename docs/docs/services/{ => implemented}/sso-admin.rst (100%) rename docs/docs/services/{ => implemented}/stepfunctions.rst (100%) rename docs/docs/services/{ => implemented}/sts.rst (100%) rename docs/docs/services/{ => implemented}/support.rst (100%) rename docs/docs/services/{ => implemented}/swf.rst (100%) rename docs/docs/services/{ => implemented}/textract.rst (100%) rename docs/docs/services/{ => implemented}/timestream-write.rst (100%) rename docs/docs/services/{ => implemented}/transcribe.rst (100%) rename docs/docs/services/{ => implemented}/wafv2.rst (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae68f5684ace..312483e41070 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,75 @@ Moto Changelog ============== +4.1.7 +----- +Docker Digest for 4.1.7: + + New Services: + * LakeFormation: + * batch_grant_permissions() + * batch_revoke_permissions() + * create_lf_tag() + * delete_lf_tag() + * deregister_resource() + * describe_resource() + * get_data_lake_settings() + * get_lf_tag() + * grant_permissions() + * list_data_cells_filter() + * list_lf_tags() + * list_permissions() + * list_resources() + * put_data_lake_settings() + * register_resource() + * revoke_permissions() + * RDS Data: + * execute_statement() + * Scheduler: + * create_schedule() + * create_schedule_group() + * delete_schedule() + * delete_schedule_group() + * get_schedule() + * get_schedule_group() + * list_schedule_groups() + * list_schedules() + * list_tags_for_resource() + * tag_resource() + * untag_resource() + * update_schedule() + + New Methods: + * Config: + * delete_retention_configuration() + * describe_retention_configurations() + * put_retention_configuration() + * EC2: + * get_launch_template_data() + * RDS: + * create_db_cluster_parameter_group() + * create_global_cluster() + * delete_db_cluster_parameter_group() + * delete_global_cluster() + * describe_db_cluster_parameter_groups() + * describe_db_cluster_parameters() + * describe_db_subnet_groups() + * describe_global_clusters() + * promote_read_replica_db_cluster() + * remove_from_global_cluster() + + Miscellaneous: + * APIGateway now allows semicolons in paths + * CloudFormation now supports Fn::ToJsonString + * DynamoDB: update_item() now supports number-sets in the AttributeUpdates-parameter + * DynamoDB: query() - The KeyConditionExpression now allows enclosing the sort key condition in brackets + * EC2: assign_private_ip_addresses() now supports the PrivateIpAddresses-argument + * ECR: put_image() now supports the imageManifestMediaType parameter + * ECS: run_task() now validates the provided launch-type + * Logs: put_subscription_filter() now supports KinesisStream destinations + * RDS: describe_db_clusters() now supports filtering by db-cluster-id and engine + * S3: head_object() now returns the AcceptRanges header + * SQS: Improvements in the deduplication-logic 4.1.6 ----- @@ -30,6 +99,7 @@ Docker Digest for 4.1.6: _sha256:36122dca33cb8f70d84734d1a0a6a5931f7a533fab3c58e delete_rule(), describe_rule(), disable_rule(), enable_rule(), list_rule_names_by_target(), list_rules(), list_targets_by_rule() * RDS: describe_db_clusters() now accepts an ARN as identifier * RDS: describe_db_snapshots() now returns the TagList-attribute + * RDS: describe_db_clusters() now returns the parameters KmsKeyId, NetworkType, DBSubnetGroupName, ScalingConfiguration * S3: get_object() now returns the AcceptRanges header * S3: head_bucket() now returns the region-header * SecretsManager now supports partial ARN's diff --git a/CLOUDFORMATION_COVERAGE.md b/CLOUDFORMATION_COVERAGE.md index 44f33f1c8dde..f74dc3052f61 100644 --- a/CLOUDFORMATION_COVERAGE.md +++ b/CLOUDFORMATION_COVERAGE.md @@ -1,3 +1,8 @@ +## Supported CloudFormation resources + +A list of all resources that can be created via CloudFormation. +Please let us know if you'd like support for a resource not yet listed here. + - AWS::ApiGateway::Deployment: - [x] create implemented - [ ] update implemented diff --git a/Makefile b/Makefile index fb85b99b2562..f9f3d8c6a51a 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,7 @@ implementation_coverage: git commit IMPLEMENTATION_COVERAGE.md -m "Updating implementation coverage" || true cloudformation_coverage: - ./scripts/cloudformation_coverage.py > CLOUDFORMATION_COVERAGE.md + ./scripts/cloudformation_coverage.py git commit CLOUDFORMATION_COVERAGE.md -m "Updating CloudFormation coverage" || true coverage: implementation_coverage cloudformation_coverage diff --git a/docs/docs/services/cf.rst b/docs/docs/services/cf.rst new file mode 100644 index 000000000000..57ff415b69f3 --- /dev/null +++ b/docs/docs/services/cf.rst @@ -0,0 +1,193 @@ +.. _cloudformation_resources: + +================================== +Supported CloudFormation resources +================================== + + +A list of all resources that can be created via CloudFormation. +Please let us know if you'd like support for a resource not yet listed here. + +.. table:: + + +---------------------------------------+--------+--------+--------+-----------------------------------+ + | | Create | Update | Delete | Fn::GetAtt | + +=======================================+========+========+========+===================================+ + |AWS::ApiGateway::Deployment | x | | | - [ ] DeploymentId | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::ApiGateway::Method | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::ApiGateway::Resource | x | | | - [ ] ResourceId | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::AutoScaling::AutoScalingGroup | x | x | x | - [ ] LaunchConfigurationName | + +---------------------------------------+--------+--------+--------+ - [ ] LaunchTemplateSpecification | + | | | | | - [ ] MixedInstancesPolicy | + +---------------------------------------+--------+--------+--------+ - [ ] PlacementGroup | + | | | | | - [ ] VPCZoneIdentifier | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::AutoScaling::LaunchConfiguration | x | x | x | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::AutoScaling::ScheduledAction | x | | | - [ ] ScheduledActionName | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Batch::ComputeEnvironment | x | | | - [ ] ComputeEnvironmentArn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Batch::JobDefinition | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Batch::JobQueue | x | | | - [ ] JobQueueArn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::CloudFormation::Stack | x | x | x | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::DataPipeline::Pipeline | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::DynamoDB::Table | x | | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+ - [x] StreamArn | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::Instance | x | | x | - [x] AvailabilityZone | + +---------------------------------------+--------+--------+--------+ - [x] PrivateDnsName | + | | | | | - [x] PrivateIp | + +---------------------------------------+--------+--------+--------+ - [x] PublicDnsName | + | | | | | - [x] PublicIp | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::InternetGateway | x | | | - [ ] InternetGatewayId | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::LaunchTemplate | x | x | x | - [ ] LatestVersionNumber | + +---------------------------------------+--------+--------+--------+ - [ ] DefaultVersionNumber | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::NatGateway | x | | | - [ ] NatGatewayId | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::NetworkInterface | x | | | - [x] SecondaryPrivateIpAddresses | + +---------------------------------------+--------+--------+--------+ - [x] PrimaryPrivateIpAddress | + | | | | | - [ ] Id | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::Route | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::RouteTable | x | | | - [ ] RouteTableId | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::SecurityGroup | x | x | x | - [x] GroupId | + +---------------------------------------+--------+--------+--------+ - [ ] VpcId | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::SecurityGroupIngress | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::Subnet | x | | x | - [ ] VpcId | + +---------------------------------------+--------+--------+--------+ - [ ] NetworkAclAssociationId | + | | | | | - [ ] OutpostArn | + +---------------------------------------+--------+--------+--------+ - [x] AvailabilityZone | + | | | | | - [ ] SubnetId | + +---------------------------------------+--------+--------+--------+ - [ ] Ipv6CidrBlocks | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::SubnetRouteTableAssociation | x | | | - [ ] Id | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::TransitGateway | x | | | - [ ] Id | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::VPC | x | | x | - [ ] VpcId | + +---------------------------------------+--------+--------+--------+ - [ ] CidrBlockAssociations | + | | | | | - [ ] CidrBlock | + +---------------------------------------+--------+--------+--------+ - [ ] DefaultNetworkAcl | + | | | | | - [ ] Ipv6CidrBlocks | + +---------------------------------------+--------+--------+--------+ - [ ] DefaultSecurityGroup | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::VPCGatewayAttachment | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::VPCPeeringConnection | x | | | - [ ] Id | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::Volume | x | | | - [ ] VolumeId | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EC2::VolumeAttachment | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::ECR::Repository | x | x | | - [x] RepositoryUri | + +---------------------------------------+--------+--------+--------+ - [x] Arn | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::ECS::Cluster | x | x | | - [x] Arn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::ECS::Service | x | x | | - [ ] ServiceArn | + +---------------------------------------+--------+--------+--------+ - [x] Name | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::ECS::TaskDefinition | x | x | | - [ ] TaskDefinitionArn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EFS::FileSystem | x | x | x | - [ ] FileSystemId | + +---------------------------------------+--------+--------+--------+ - [ ] Arn | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::EFS::MountTarget | x | x | x | - [ ] IpAddress | + +---------------------------------------+--------+--------+--------+ - [ ] Id | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Events::Archive | x | x | | - [x] Arn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Events::EventBus | x | x | x | - [x] Policy | + +---------------------------------------+--------+--------+--------+ - [x] Arn | + | | | | | - [x] Name | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Events::Rule | x | x | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::IAM::AccessKey | x | x | x | - [x] SecretAccessKey | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::IAM::InstanceProfile | x | | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::IAM::ManagedPolicy | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::IAM::Policy | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::IAM::Role | x | | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+ - [ ] RoleId | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::IAM::User | x | x | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::KMS::Key | x | | | - [ ] KeyId | + +---------------------------------------+--------+--------+--------+ - [x] Arn | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Kinesis::Stream | x | x | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Logs::LogGroup | x | | | - [x] Arn | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::RDS::DBParameterGroup | x | | | - [ ] DBParameterGroupName | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Redshift::Cluster | x | | | - [x] Endpoint.Address | + +---------------------------------------+--------+--------+--------+ - [x] Endpoint.Port | + | | | | | - [ ] Id | + +---------------------------------------+--------+--------+--------+ - [ ] DeferMaintenanceIdentifier | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Route53::HealthCheck | x | | | - [ ] HealthCheckId | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Route53::RecordSet | x | x | x | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::Route53::RecordSetGroup | x | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::S3::Bucket | x | x | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+ - [x] DomainName | + | | | | | - [x] DualStackDomainName | + +---------------------------------------+--------+--------+--------+ - [x] RegionalDomainName | + | | | | | - [x] WebsiteURL | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::SNS::Topic | x | x | x | - [ ] TopicArn | + +---------------------------------------+--------+--------+--------+ - [x] TopicName | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::SQS::Queue | x | x | x | - [x] Arn | + +---------------------------------------+--------+--------+--------+ - [x] QueueName | + | | | | | - [ ] QueueUrl | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::SSM::Parameter | x | x | x | - [ ] Type | + +---------------------------------------+--------+--------+--------+ - [ ] Value | + | | | | | | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::SageMaker::Endpoint | x | x | x | - [x] EndpointName | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::SageMaker::EndpointConfig | x | x | x | - [x] EndpointConfigName | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::SageMaker::Model | x | x | x | - [x] ModelName | + +---------------------------------------+--------+--------+--------+-----------------------------------+ + |AWS::StepFunctions::StateMachine | x | x | x | - [ ] StateMachineRevisionId | + +---------------------------------------+--------+--------+--------+ - [ ] Arn | + | | | | | - [x] Name | + +---------------------------------------+--------+--------+--------+-----------------------------------+ diff --git a/docs/docs/services/acm-pca.rst b/docs/docs/services/implemented/acm-pca.rst similarity index 100% rename from docs/docs/services/acm-pca.rst rename to docs/docs/services/implemented/acm-pca.rst diff --git a/docs/docs/services/acm.rst b/docs/docs/services/implemented/acm.rst similarity index 100% rename from docs/docs/services/acm.rst rename to docs/docs/services/implemented/acm.rst diff --git a/docs/docs/services/amp.rst b/docs/docs/services/implemented/amp.rst similarity index 100% rename from docs/docs/services/amp.rst rename to docs/docs/services/implemented/amp.rst diff --git a/docs/docs/services/apigateway.rst b/docs/docs/services/implemented/apigateway.rst similarity index 100% rename from docs/docs/services/apigateway.rst rename to docs/docs/services/implemented/apigateway.rst diff --git a/docs/docs/services/apigatewayv2.rst b/docs/docs/services/implemented/apigatewayv2.rst similarity index 100% rename from docs/docs/services/apigatewayv2.rst rename to docs/docs/services/implemented/apigatewayv2.rst diff --git a/docs/docs/services/application-autoscaling.rst b/docs/docs/services/implemented/application-autoscaling.rst similarity index 100% rename from docs/docs/services/application-autoscaling.rst rename to docs/docs/services/implemented/application-autoscaling.rst diff --git a/docs/docs/services/appsync.rst b/docs/docs/services/implemented/appsync.rst similarity index 100% rename from docs/docs/services/appsync.rst rename to docs/docs/services/implemented/appsync.rst diff --git a/docs/docs/services/athena.rst b/docs/docs/services/implemented/athena.rst similarity index 100% rename from docs/docs/services/athena.rst rename to docs/docs/services/implemented/athena.rst diff --git a/docs/docs/services/autoscaling.rst b/docs/docs/services/implemented/autoscaling.rst similarity index 100% rename from docs/docs/services/autoscaling.rst rename to docs/docs/services/implemented/autoscaling.rst diff --git a/docs/docs/services/batch.rst b/docs/docs/services/implemented/batch.rst similarity index 100% rename from docs/docs/services/batch.rst rename to docs/docs/services/implemented/batch.rst diff --git a/docs/docs/services/budgets.rst b/docs/docs/services/implemented/budgets.rst similarity index 100% rename from docs/docs/services/budgets.rst rename to docs/docs/services/implemented/budgets.rst diff --git a/docs/docs/services/ce.rst b/docs/docs/services/implemented/ce.rst similarity index 100% rename from docs/docs/services/ce.rst rename to docs/docs/services/implemented/ce.rst diff --git a/docs/docs/services/cloudformation.rst b/docs/docs/services/implemented/cloudformation.rst similarity index 100% rename from docs/docs/services/cloudformation.rst rename to docs/docs/services/implemented/cloudformation.rst diff --git a/docs/docs/services/cloudfront.rst b/docs/docs/services/implemented/cloudfront.rst similarity index 100% rename from docs/docs/services/cloudfront.rst rename to docs/docs/services/implemented/cloudfront.rst diff --git a/docs/docs/services/cloudtrail.rst b/docs/docs/services/implemented/cloudtrail.rst similarity index 100% rename from docs/docs/services/cloudtrail.rst rename to docs/docs/services/implemented/cloudtrail.rst diff --git a/docs/docs/services/cloudwatch.rst b/docs/docs/services/implemented/cloudwatch.rst similarity index 100% rename from docs/docs/services/cloudwatch.rst rename to docs/docs/services/implemented/cloudwatch.rst diff --git a/docs/docs/services/codebuild.rst b/docs/docs/services/implemented/codebuild.rst similarity index 100% rename from docs/docs/services/codebuild.rst rename to docs/docs/services/implemented/codebuild.rst diff --git a/docs/docs/services/codecommit.rst b/docs/docs/services/implemented/codecommit.rst similarity index 100% rename from docs/docs/services/codecommit.rst rename to docs/docs/services/implemented/codecommit.rst diff --git a/docs/docs/services/codepipeline.rst b/docs/docs/services/implemented/codepipeline.rst similarity index 100% rename from docs/docs/services/codepipeline.rst rename to docs/docs/services/implemented/codepipeline.rst diff --git a/docs/docs/services/cognito-identity.rst b/docs/docs/services/implemented/cognito-identity.rst similarity index 100% rename from docs/docs/services/cognito-identity.rst rename to docs/docs/services/implemented/cognito-identity.rst diff --git a/docs/docs/services/cognito-idp.rst b/docs/docs/services/implemented/cognito-idp.rst similarity index 100% rename from docs/docs/services/cognito-idp.rst rename to docs/docs/services/implemented/cognito-idp.rst diff --git a/docs/docs/services/comprehend.rst b/docs/docs/services/implemented/comprehend.rst similarity index 100% rename from docs/docs/services/comprehend.rst rename to docs/docs/services/implemented/comprehend.rst diff --git a/docs/docs/services/config.rst b/docs/docs/services/implemented/config.rst similarity index 100% rename from docs/docs/services/config.rst rename to docs/docs/services/implemented/config.rst diff --git a/docs/docs/services/databrew.rst b/docs/docs/services/implemented/databrew.rst similarity index 100% rename from docs/docs/services/databrew.rst rename to docs/docs/services/implemented/databrew.rst diff --git a/docs/docs/services/datapipeline.rst b/docs/docs/services/implemented/datapipeline.rst similarity index 100% rename from docs/docs/services/datapipeline.rst rename to docs/docs/services/implemented/datapipeline.rst diff --git a/docs/docs/services/datasync.rst b/docs/docs/services/implemented/datasync.rst similarity index 100% rename from docs/docs/services/datasync.rst rename to docs/docs/services/implemented/datasync.rst diff --git a/docs/docs/services/dax.rst b/docs/docs/services/implemented/dax.rst similarity index 100% rename from docs/docs/services/dax.rst rename to docs/docs/services/implemented/dax.rst diff --git a/docs/docs/services/dms.rst b/docs/docs/services/implemented/dms.rst similarity index 100% rename from docs/docs/services/dms.rst rename to docs/docs/services/implemented/dms.rst diff --git a/docs/docs/services/ds.rst b/docs/docs/services/implemented/ds.rst similarity index 100% rename from docs/docs/services/ds.rst rename to docs/docs/services/implemented/ds.rst diff --git a/docs/docs/services/dynamodb.rst b/docs/docs/services/implemented/dynamodb.rst similarity index 100% rename from docs/docs/services/dynamodb.rst rename to docs/docs/services/implemented/dynamodb.rst diff --git a/docs/docs/services/dynamodbstreams.rst b/docs/docs/services/implemented/dynamodbstreams.rst similarity index 100% rename from docs/docs/services/dynamodbstreams.rst rename to docs/docs/services/implemented/dynamodbstreams.rst diff --git a/docs/docs/services/ebs.rst b/docs/docs/services/implemented/ebs.rst similarity index 100% rename from docs/docs/services/ebs.rst rename to docs/docs/services/implemented/ebs.rst diff --git a/docs/docs/services/ec2-instance-connect.rst b/docs/docs/services/implemented/ec2-instance-connect.rst similarity index 100% rename from docs/docs/services/ec2-instance-connect.rst rename to docs/docs/services/implemented/ec2-instance-connect.rst diff --git a/docs/docs/services/ec2.rst b/docs/docs/services/implemented/ec2.rst similarity index 100% rename from docs/docs/services/ec2.rst rename to docs/docs/services/implemented/ec2.rst diff --git a/docs/docs/services/ecr.rst b/docs/docs/services/implemented/ecr.rst similarity index 100% rename from docs/docs/services/ecr.rst rename to docs/docs/services/implemented/ecr.rst diff --git a/docs/docs/services/ecs.rst b/docs/docs/services/implemented/ecs.rst similarity index 100% rename from docs/docs/services/ecs.rst rename to docs/docs/services/implemented/ecs.rst diff --git a/docs/docs/services/efs.rst b/docs/docs/services/implemented/efs.rst similarity index 100% rename from docs/docs/services/efs.rst rename to docs/docs/services/implemented/efs.rst diff --git a/docs/docs/services/eks.rst b/docs/docs/services/implemented/eks.rst similarity index 100% rename from docs/docs/services/eks.rst rename to docs/docs/services/implemented/eks.rst diff --git a/docs/docs/services/elasticache.rst b/docs/docs/services/implemented/elasticache.rst similarity index 100% rename from docs/docs/services/elasticache.rst rename to docs/docs/services/implemented/elasticache.rst diff --git a/docs/docs/services/elasticbeanstalk.rst b/docs/docs/services/implemented/elasticbeanstalk.rst similarity index 100% rename from docs/docs/services/elasticbeanstalk.rst rename to docs/docs/services/implemented/elasticbeanstalk.rst diff --git a/docs/docs/services/elastictranscoder.rst b/docs/docs/services/implemented/elastictranscoder.rst similarity index 100% rename from docs/docs/services/elastictranscoder.rst rename to docs/docs/services/implemented/elastictranscoder.rst diff --git a/docs/docs/services/elb.rst b/docs/docs/services/implemented/elb.rst similarity index 100% rename from docs/docs/services/elb.rst rename to docs/docs/services/implemented/elb.rst diff --git a/docs/docs/services/elbv2.rst b/docs/docs/services/implemented/elbv2.rst similarity index 100% rename from docs/docs/services/elbv2.rst rename to docs/docs/services/implemented/elbv2.rst diff --git a/docs/docs/services/emr-containers.rst b/docs/docs/services/implemented/emr-containers.rst similarity index 100% rename from docs/docs/services/emr-containers.rst rename to docs/docs/services/implemented/emr-containers.rst diff --git a/docs/docs/services/emr-serverless.rst b/docs/docs/services/implemented/emr-serverless.rst similarity index 100% rename from docs/docs/services/emr-serverless.rst rename to docs/docs/services/implemented/emr-serverless.rst diff --git a/docs/docs/services/emr.rst b/docs/docs/services/implemented/emr.rst similarity index 100% rename from docs/docs/services/emr.rst rename to docs/docs/services/implemented/emr.rst diff --git a/docs/docs/services/es.rst b/docs/docs/services/implemented/es.rst similarity index 100% rename from docs/docs/services/es.rst rename to docs/docs/services/implemented/es.rst diff --git a/docs/docs/services/events.rst b/docs/docs/services/implemented/events.rst similarity index 100% rename from docs/docs/services/events.rst rename to docs/docs/services/implemented/events.rst diff --git a/docs/docs/services/firehose.rst b/docs/docs/services/implemented/firehose.rst similarity index 100% rename from docs/docs/services/firehose.rst rename to docs/docs/services/implemented/firehose.rst diff --git a/docs/docs/services/forecast.rst b/docs/docs/services/implemented/forecast.rst similarity index 100% rename from docs/docs/services/forecast.rst rename to docs/docs/services/implemented/forecast.rst diff --git a/docs/docs/services/glacier.rst b/docs/docs/services/implemented/glacier.rst similarity index 100% rename from docs/docs/services/glacier.rst rename to docs/docs/services/implemented/glacier.rst diff --git a/docs/docs/services/glue.rst b/docs/docs/services/implemented/glue.rst similarity index 100% rename from docs/docs/services/glue.rst rename to docs/docs/services/implemented/glue.rst diff --git a/docs/docs/services/greengrass.rst b/docs/docs/services/implemented/greengrass.rst similarity index 100% rename from docs/docs/services/greengrass.rst rename to docs/docs/services/implemented/greengrass.rst diff --git a/docs/docs/services/guardduty.rst b/docs/docs/services/implemented/guardduty.rst similarity index 100% rename from docs/docs/services/guardduty.rst rename to docs/docs/services/implemented/guardduty.rst diff --git a/docs/docs/services/iam.rst b/docs/docs/services/implemented/iam.rst similarity index 100% rename from docs/docs/services/iam.rst rename to docs/docs/services/implemented/iam.rst diff --git a/docs/docs/services/identitystore.rst b/docs/docs/services/implemented/identitystore.rst similarity index 100% rename from docs/docs/services/identitystore.rst rename to docs/docs/services/implemented/identitystore.rst diff --git a/docs/docs/services/iot-data.rst b/docs/docs/services/implemented/iot-data.rst similarity index 100% rename from docs/docs/services/iot-data.rst rename to docs/docs/services/implemented/iot-data.rst diff --git a/docs/docs/services/iot.rst b/docs/docs/services/implemented/iot.rst similarity index 100% rename from docs/docs/services/iot.rst rename to docs/docs/services/implemented/iot.rst diff --git a/docs/docs/services/kinesis-video-archived-media.rst b/docs/docs/services/implemented/kinesis-video-archived-media.rst similarity index 100% rename from docs/docs/services/kinesis-video-archived-media.rst rename to docs/docs/services/implemented/kinesis-video-archived-media.rst diff --git a/docs/docs/services/kinesis.rst b/docs/docs/services/implemented/kinesis.rst similarity index 100% rename from docs/docs/services/kinesis.rst rename to docs/docs/services/implemented/kinesis.rst diff --git a/docs/docs/services/kinesisvideo.rst b/docs/docs/services/implemented/kinesisvideo.rst similarity index 100% rename from docs/docs/services/kinesisvideo.rst rename to docs/docs/services/implemented/kinesisvideo.rst diff --git a/docs/docs/services/kms.rst b/docs/docs/services/implemented/kms.rst similarity index 100% rename from docs/docs/services/kms.rst rename to docs/docs/services/implemented/kms.rst diff --git a/docs/docs/services/lakeformation.rst b/docs/docs/services/implemented/lakeformation.rst similarity index 100% rename from docs/docs/services/lakeformation.rst rename to docs/docs/services/implemented/lakeformation.rst diff --git a/docs/docs/services/lambda.rst b/docs/docs/services/implemented/lambda.rst similarity index 100% rename from docs/docs/services/lambda.rst rename to docs/docs/services/implemented/lambda.rst diff --git a/docs/docs/services/logs.rst b/docs/docs/services/implemented/logs.rst similarity index 100% rename from docs/docs/services/logs.rst rename to docs/docs/services/implemented/logs.rst diff --git a/docs/docs/services/managedblockchain.rst b/docs/docs/services/implemented/managedblockchain.rst similarity index 100% rename from docs/docs/services/managedblockchain.rst rename to docs/docs/services/implemented/managedblockchain.rst diff --git a/docs/docs/services/mediaconnect.rst b/docs/docs/services/implemented/mediaconnect.rst similarity index 100% rename from docs/docs/services/mediaconnect.rst rename to docs/docs/services/implemented/mediaconnect.rst diff --git a/docs/docs/services/medialive.rst b/docs/docs/services/implemented/medialive.rst similarity index 100% rename from docs/docs/services/medialive.rst rename to docs/docs/services/implemented/medialive.rst diff --git a/docs/docs/services/mediapackage.rst b/docs/docs/services/implemented/mediapackage.rst similarity index 100% rename from docs/docs/services/mediapackage.rst rename to docs/docs/services/implemented/mediapackage.rst diff --git a/docs/docs/services/mediastore-data.rst b/docs/docs/services/implemented/mediastore-data.rst similarity index 100% rename from docs/docs/services/mediastore-data.rst rename to docs/docs/services/implemented/mediastore-data.rst diff --git a/docs/docs/services/mediastore.rst b/docs/docs/services/implemented/mediastore.rst similarity index 100% rename from docs/docs/services/mediastore.rst rename to docs/docs/services/implemented/mediastore.rst diff --git a/docs/docs/services/meteringmarketplace.rst b/docs/docs/services/implemented/meteringmarketplace.rst similarity index 100% rename from docs/docs/services/meteringmarketplace.rst rename to docs/docs/services/implemented/meteringmarketplace.rst diff --git a/docs/docs/services/mq.rst b/docs/docs/services/implemented/mq.rst similarity index 100% rename from docs/docs/services/mq.rst rename to docs/docs/services/implemented/mq.rst diff --git a/docs/docs/services/neptune.rst b/docs/docs/services/implemented/neptune.rst similarity index 100% rename from docs/docs/services/neptune.rst rename to docs/docs/services/implemented/neptune.rst diff --git a/docs/docs/services/opensearch.rst b/docs/docs/services/implemented/opensearch.rst similarity index 100% rename from docs/docs/services/opensearch.rst rename to docs/docs/services/implemented/opensearch.rst diff --git a/docs/docs/services/opsworks.rst b/docs/docs/services/implemented/opsworks.rst similarity index 100% rename from docs/docs/services/opsworks.rst rename to docs/docs/services/implemented/opsworks.rst diff --git a/docs/docs/services/organizations.rst b/docs/docs/services/implemented/organizations.rst similarity index 100% rename from docs/docs/services/organizations.rst rename to docs/docs/services/implemented/organizations.rst diff --git a/docs/docs/services/personalize.rst b/docs/docs/services/implemented/personalize.rst similarity index 100% rename from docs/docs/services/personalize.rst rename to docs/docs/services/implemented/personalize.rst diff --git a/docs/docs/services/pinpoint.rst b/docs/docs/services/implemented/pinpoint.rst similarity index 100% rename from docs/docs/services/pinpoint.rst rename to docs/docs/services/implemented/pinpoint.rst diff --git a/docs/docs/services/polly.rst b/docs/docs/services/implemented/polly.rst similarity index 100% rename from docs/docs/services/polly.rst rename to docs/docs/services/implemented/polly.rst diff --git a/docs/docs/services/quicksight.rst b/docs/docs/services/implemented/quicksight.rst similarity index 100% rename from docs/docs/services/quicksight.rst rename to docs/docs/services/implemented/quicksight.rst diff --git a/docs/docs/services/ram.rst b/docs/docs/services/implemented/ram.rst similarity index 100% rename from docs/docs/services/ram.rst rename to docs/docs/services/implemented/ram.rst diff --git a/docs/docs/services/rds-data.rst b/docs/docs/services/implemented/rds-data.rst similarity index 100% rename from docs/docs/services/rds-data.rst rename to docs/docs/services/implemented/rds-data.rst diff --git a/docs/docs/services/rds.rst b/docs/docs/services/implemented/rds.rst similarity index 100% rename from docs/docs/services/rds.rst rename to docs/docs/services/implemented/rds.rst diff --git a/docs/docs/services/redshift-data.rst b/docs/docs/services/implemented/redshift-data.rst similarity index 100% rename from docs/docs/services/redshift-data.rst rename to docs/docs/services/implemented/redshift-data.rst diff --git a/docs/docs/services/redshift.rst b/docs/docs/services/implemented/redshift.rst similarity index 100% rename from docs/docs/services/redshift.rst rename to docs/docs/services/implemented/redshift.rst diff --git a/docs/docs/services/rekognition.rst b/docs/docs/services/implemented/rekognition.rst similarity index 100% rename from docs/docs/services/rekognition.rst rename to docs/docs/services/implemented/rekognition.rst diff --git a/docs/docs/services/resource-groups.rst b/docs/docs/services/implemented/resource-groups.rst similarity index 100% rename from docs/docs/services/resource-groups.rst rename to docs/docs/services/implemented/resource-groups.rst diff --git a/docs/docs/services/resourcegroupstaggingapi.rst b/docs/docs/services/implemented/resourcegroupstaggingapi.rst similarity index 100% rename from docs/docs/services/resourcegroupstaggingapi.rst rename to docs/docs/services/implemented/resourcegroupstaggingapi.rst diff --git a/docs/docs/services/route53.rst b/docs/docs/services/implemented/route53.rst similarity index 100% rename from docs/docs/services/route53.rst rename to docs/docs/services/implemented/route53.rst diff --git a/docs/docs/services/route53resolver.rst b/docs/docs/services/implemented/route53resolver.rst similarity index 100% rename from docs/docs/services/route53resolver.rst rename to docs/docs/services/implemented/route53resolver.rst diff --git a/docs/docs/services/s3.rst b/docs/docs/services/implemented/s3.rst similarity index 100% rename from docs/docs/services/s3.rst rename to docs/docs/services/implemented/s3.rst diff --git a/docs/docs/services/s3control.rst b/docs/docs/services/implemented/s3control.rst similarity index 100% rename from docs/docs/services/s3control.rst rename to docs/docs/services/implemented/s3control.rst diff --git a/docs/docs/services/sagemaker.rst b/docs/docs/services/implemented/sagemaker.rst similarity index 100% rename from docs/docs/services/sagemaker.rst rename to docs/docs/services/implemented/sagemaker.rst diff --git a/docs/docs/services/scheduler.rst b/docs/docs/services/implemented/scheduler.rst similarity index 100% rename from docs/docs/services/scheduler.rst rename to docs/docs/services/implemented/scheduler.rst diff --git a/docs/docs/services/sdb.rst b/docs/docs/services/implemented/sdb.rst similarity index 100% rename from docs/docs/services/sdb.rst rename to docs/docs/services/implemented/sdb.rst diff --git a/docs/docs/services/secretsmanager.rst b/docs/docs/services/implemented/secretsmanager.rst similarity index 100% rename from docs/docs/services/secretsmanager.rst rename to docs/docs/services/implemented/secretsmanager.rst diff --git a/docs/docs/services/service-quotas.rst b/docs/docs/services/implemented/service-quotas.rst similarity index 100% rename from docs/docs/services/service-quotas.rst rename to docs/docs/services/implemented/service-quotas.rst diff --git a/docs/docs/services/servicediscovery.rst b/docs/docs/services/implemented/servicediscovery.rst similarity index 100% rename from docs/docs/services/servicediscovery.rst rename to docs/docs/services/implemented/servicediscovery.rst diff --git a/docs/docs/services/ses.rst b/docs/docs/services/implemented/ses.rst similarity index 100% rename from docs/docs/services/ses.rst rename to docs/docs/services/implemented/ses.rst diff --git a/docs/docs/services/signer.rst b/docs/docs/services/implemented/signer.rst similarity index 100% rename from docs/docs/services/signer.rst rename to docs/docs/services/implemented/signer.rst diff --git a/docs/docs/services/sns.rst b/docs/docs/services/implemented/sns.rst similarity index 100% rename from docs/docs/services/sns.rst rename to docs/docs/services/implemented/sns.rst diff --git a/docs/docs/services/sqs.rst b/docs/docs/services/implemented/sqs.rst similarity index 100% rename from docs/docs/services/sqs.rst rename to docs/docs/services/implemented/sqs.rst diff --git a/docs/docs/services/ssm.rst b/docs/docs/services/implemented/ssm.rst similarity index 100% rename from docs/docs/services/ssm.rst rename to docs/docs/services/implemented/ssm.rst diff --git a/docs/docs/services/sso-admin.rst b/docs/docs/services/implemented/sso-admin.rst similarity index 100% rename from docs/docs/services/sso-admin.rst rename to docs/docs/services/implemented/sso-admin.rst diff --git a/docs/docs/services/stepfunctions.rst b/docs/docs/services/implemented/stepfunctions.rst similarity index 100% rename from docs/docs/services/stepfunctions.rst rename to docs/docs/services/implemented/stepfunctions.rst diff --git a/docs/docs/services/sts.rst b/docs/docs/services/implemented/sts.rst similarity index 100% rename from docs/docs/services/sts.rst rename to docs/docs/services/implemented/sts.rst diff --git a/docs/docs/services/support.rst b/docs/docs/services/implemented/support.rst similarity index 100% rename from docs/docs/services/support.rst rename to docs/docs/services/implemented/support.rst diff --git a/docs/docs/services/swf.rst b/docs/docs/services/implemented/swf.rst similarity index 100% rename from docs/docs/services/swf.rst rename to docs/docs/services/implemented/swf.rst diff --git a/docs/docs/services/textract.rst b/docs/docs/services/implemented/textract.rst similarity index 100% rename from docs/docs/services/textract.rst rename to docs/docs/services/implemented/textract.rst diff --git a/docs/docs/services/timestream-write.rst b/docs/docs/services/implemented/timestream-write.rst similarity index 100% rename from docs/docs/services/timestream-write.rst rename to docs/docs/services/implemented/timestream-write.rst diff --git a/docs/docs/services/transcribe.rst b/docs/docs/services/implemented/transcribe.rst similarity index 100% rename from docs/docs/services/transcribe.rst rename to docs/docs/services/implemented/transcribe.rst diff --git a/docs/docs/services/wafv2.rst b/docs/docs/services/implemented/wafv2.rst similarity index 100% rename from docs/docs/services/wafv2.rst rename to docs/docs/services/implemented/wafv2.rst diff --git a/docs/docs/services/index.rst b/docs/docs/services/index.rst index 34d4fa3d373f..64a0527eb7cf 100644 --- a/docs/docs/services/index.rst +++ b/docs/docs/services/index.rst @@ -30,4 +30,4 @@ Note that you can mock multiple services at the same time: :maxdepth: 1 :glob: - * + implemented/* diff --git a/docs/index.rst b/docs/index.rst index 0ba6134a9747..cbf9cd485309 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -49,6 +49,7 @@ Additional Resources :caption: Implemented Services docs/services/index + docs/services/cf docs/services/patching_other_services .. toctree:: diff --git a/scripts/cloudformation_coverage.py b/scripts/cloudformation_coverage.py index cb00dace5bab..e3a823d360c4 100755 --- a/scripts/cloudformation_coverage.py +++ b/scripts/cloudformation_coverage.py @@ -1,8 +1,7 @@ #!/usr/bin/env python -import importlib -import json -import mock +from unittest.mock import patch import requests +import os import moto @@ -10,6 +9,9 @@ moto.mock_all() +script_dir = os.path.dirname(os.path.abspath(__file__)) + + def check(condition): if bool(condition): return "x" @@ -17,6 +19,10 @@ def check(condition): return " " +def utf_checkbox(condition): + return "☑" if bool(condition) else " " + + def is_implemented(model, method_name): # method_name in model.__dict__ will be True if the method # exists on the model and False if it's only inherited from @@ -73,7 +79,7 @@ def missing_attrs(self): for attr in self.expected_attrs: try: # TODO: Change the actual abstract method to return False - with mock.patch( + with patch( "moto.core.common_models.CloudFormationModel.has_cfn_attr", return_value=False, ): @@ -96,16 +102,86 @@ def deletable(self): return is_implemented(self.moto_model, "delete_from_cloudformation_json") +def write_main_document(supported): + implementation_coverage_file = "{}/../CLOUDFORMATION_COVERAGE.md".format(script_dir) + try: + os.remove(implementation_coverage_file) + except OSError: + pass + + print("Writing to {}".format(implementation_coverage_file)) + with open(implementation_coverage_file, "w+") as file: + file.write("## Supported CloudFormation resources") + file.write("\n\n") + file.write("A list of all resources that can be created via CloudFormation. \n") + file.write("Please let us know if you'd like support for a resource not yet listed here.") + file.write("\n\n") + + for checklist in supported: + file.write(str(checklist)) + file.write("\n") + + +def write_documentation(supported): + docs_file = "{}/../docs/docs/services/cf.rst".format(script_dir) + try: + os.remove(docs_file) + except OSError: + pass + + print("Writing to {}".format(docs_file)) + with open(docs_file, "w+") as file: + file.write(f".. _cloudformation_resources:\n") + file.write("\n") + file.write("==================================\n") + file.write("Supported CloudFormation resources\n") + file.write("==================================\n") + file.write("\n\n") + file.write("A list of all resources that can be created via CloudFormation. \n") + file.write("Please let us know if you'd like support for a resource not yet listed here.") + file.write("\n\n") + + max_resource_name_length = max([len(cf.resource_name) for cf in supported]) + 2 + max_fn_att_length = 35 + + file.write(".. table:: \n\n") + file.write(f" +{('-'*max_resource_name_length)}+--------+--------+--------+{('-' * max_fn_att_length)}+\n") + file.write(f" |{(' '*max_resource_name_length)}| Create | Update | Delete | {('Fn::GetAtt'.ljust(max_fn_att_length-2))} |\n") + file.write(f" +{('='*max_resource_name_length)}+========+========+========+{('=' * max_fn_att_length)}+\n") + + for checklist in supported: + attrs = [f" - [{check(att not in checklist.missing_attrs)}] {att}" for att in checklist.expected_attrs] + first_attr = attrs[0] if attrs else "" + file.write(" |") + file.write(checklist.resource_name.ljust(max_resource_name_length)) + file.write("|") + file.write(f" {check(checklist.creatable)} ") + file.write("|") + file.write(f" {check(checklist.updatable)} ") + file.write("|") + file.write(f" {check(checklist.deletable)} ") + file.write(f"|{first_attr.ljust(max_fn_att_length)}|") + file.write("\n") + for index, attr in enumerate(attrs[1:]): + if index % 2 == 0: + file.write( + f" +{('-' * max_resource_name_length)}+--------+--------+--------+{attr.ljust(max_fn_att_length)}|\n") + else: + file.write( + f" |{(' ' * max_resource_name_length)}| | | |{attr.ljust(max_fn_att_length)}|\n") + if len(attrs) > 1 and len(attrs) % 2 == 0: + file.write(f" |{(' ' * max_resource_name_length)}| | | |{(' ' * max_fn_att_length)}|\n") + file.write(f" +{('-'*max_resource_name_length)}+--------+--------+--------+{('-' * max_fn_att_length)}+\n") + + if __name__ == "__main__": # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html cfn_spec = requests.get( "https://dnwj8swjjbsbt.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json" ).json() - for resource_name, schema in sorted(cfn_spec["ResourceTypes"].items()): - checklist = CloudFormationChecklist(resource_name, schema) - # Only print checklists for models that implement CloudFormationModel; - # otherwise the checklist is very long and mostly empty because there - # are so many niche AWS services and resources that moto doesn't - # implement yet. - if checklist.moto_model: - print(checklist) + # Only collect checklists for models that implement CloudFormationModel; + # otherwise the checklist is very long and mostly empty because there + # are so many niche AWS services and resources that moto doesn't implement yet. + supported = [CloudFormationChecklist(resource_name, schema) for resource_name, schema in sorted(cfn_spec["ResourceTypes"].items()) if CloudFormationChecklist(resource_name, schema).moto_model] + #write_main_document(supported) + write_documentation(supported) diff --git a/scripts/implementation_coverage.py b/scripts/implementation_coverage.py index 16dc6500724b..8f0fcbafe37b 100755 --- a/scripts/implementation_coverage.py +++ b/scripts/implementation_coverage.py @@ -196,7 +196,7 @@ def write_implementation_coverage_to_docs(coverage): not_implemented = coverage.get(service_name)["not_implemented"] operations = sorted(list(implemented.keys()) + not_implemented) - service_coverage_file = "{}/../docs/docs/services/{}.rst".format(script_dir, service_name) + service_coverage_file = "{}/../docs/docs/services/implemented/{}.rst".format(script_dir, service_name) shorthand = service_name.replace(" ", "_") with open(service_coverage_file, "w+") as file: @@ -276,7 +276,7 @@ def test_{coverage[service_name]['name'][5:]}_behaviour: file.write(" :maxdepth: 1\n") file.write(" :glob:\n") file.write("\n") - file.write(" *\n") + file.write(" implemented/*\n") if __name__ == "__main__":