NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #523 most downloaded on PyPI
A library that allows you to easily mock out tests based on AWS infrastructure
Last release 1 months ago
22 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
1022 releases · first in 2017
Docker Digest for 4.0.12: _sha256:06916d3f310c68fd445468f06d6d4ae6f855e7f2b80e007a90bd11eeb421b5ed_
Docker Digest for 4.0.12: sha256:06916d3f310c68fd445468f06d6d4ae6f855e7f2b80e007a90bd11eeb421b5ed
General:
* Fixes our Kinesis-compatibility with botocore>=1.29.31 - earlier Moto-versions will connect to AWS when using this botocore-version
New Methods:
* Athena:
* get_query_results()
* list_query_executions()
* RDS:
* promote_read_replica()
* Sagemaker:
* create_pipeline()
* delete_pipeline()
* list_pipelines()
Miscellaneous:
* AWSLambda: publish_function() and update_function_code() now only increment the version if the source code has changed
* CognitoIDP: Passwords are now validated using the PasswordPolicy (either supplied, or the default)
* CloudFormation: create_stack() now propagates parameters StackPolicyBody and TimeoutInMinutes
* CloudFormation: create_stack_instances() now returns the actual OperationId
* CloudFormation: create_stack_set() now validates the provided name
* CloudFormation: create_stack_set() now supports the DeploymentTargets-parameter
* CloudFormation: create_stack_set() now actually creates the provided resources
* CloudFormation: create_stack_set() now propagates parameters AdministrationRoleARN and ExecutionRoleName
* CloudFormation: describe_stack_set() now returns the attributes Description, PermissionModel
* CloudFormation: delete_stack_set() now validates that no instances are present before deleting the set
* CloudWatch: get_metric_data() now supports the Label-parameter
* EC2: allocate_address() now has improved behaviour for the Domain-parameter
* EC2: create_volume() now supports the Iops-parameter
* ECR: Improved ImageManifest support
* KMS: describe_key() now returns an AccessDeniedException if the supplied policy does not allow this action
* Route53: change_resource_record_sets() has additional validations
* Route53: create_hosted_zone() now also creates a SOA-record by default
* S3: put_object() now returns the ChecksumAlgorithm-attribute if supplied
* SSM: describe_parameters() now has improved support for filtering by tags
One column per quarter.
Docker Digest for 4.0.11: _sha256:ba07f61edd4f91b221ea20368586dce024e7da4d018e2741aceafa1f07f47ec5_
Docker Digest for 4.0.11: sha256:ba07f61edd4f91b221ea20368586dce024e7da4d018e2741aceafa1f07f47ec5
New Services:
* ACM-PCA:
* create_certificate_authority()
* delete_certificate_authority()
* describe_certificate_authority()
* get_certificate()
* get_certificate_authority_certificate()
* get_certificate_authority_csr()
* import_certificate_authority_certificate()
* issue_certificate()
* list_tags()
* revoke_certificate()
* tag_certificate_authority()
* update_certificate_authority()
* untag_certificate_authority()
New Methods:
* create_api_mapping()
* create_domain_name()
* delete_api_mapping()
* delete_domain_name()
* get_api_mapping()
* get_api_mappings()
* get_domain_name()
* get_domain_names()
Miscellaneous:
* APIGateway: create_rest_api() now supports the propagation of parameter disableExecuteApiEndpoint (not the actual behaviour)
* APIGateway: put_integration() now supports the parameters contentHandling, credentials, tlsConfig
* AWSLambda: create_function() is now able to validate the existence of the provided ImageURI. Set environment variable MOTO_LAMBDA_STUB_ECR=false to enable this.
* Batch: submit_job() now adds validation for the jobName parameter
* CloudWatch: get_metric_data() now adds support for filtering by the unit-value
* DynamoDB: transact_write_items() now supports up to 100 items instead of 25, in line with AWS
* ELB: describe_instance_health() now validates the existence of the provided LoadBalancer
* Polly: The list of available voices has been updated.
* S3: put_object() now has improved support for filenames containing spaces
* SQS: send_message() and send_message_batch() now adds validation for the DelaySeconds-parameter
Docker Digest for 4.0.10: _sha256:faf0e4b591c47c7775da4f827c2ec2e1ff48a32b31169236fa604ffb95dafb78_
Docker Digest for 4.0.10: sha256:faf0e4b591c47c7775da4f827c2ec2e1ff48a32b31169236fa604ffb95dafb78
New Methods:
* CloudFront:
* get_distribution_config()
* Organizations:
* delete_organizational_unit()
Miscellaneous:
* APIGateway: put_integration_response() now supports the responseParameters-parameter
* Cloudformation now supports the creation/update/deletion of AWS::SSM::Parameter
* Cloudformation: create_stack() now returns the attribute EnableTerminationProtection
* CloudWatch: put_metric_data() now supports the MetricData.Values parameter
* DynamoDB: transact_write_items() now supports the ReturnValuesOnConditionCheckFailure-parameter
* RDS: describe_db_cluster now returns the EarliestRestorableTime-attribute
* S3: get_object() and head_object() now correctly handle the IfModifiedSince-parameter
Docker Digest for 4.0.9: _sha256:0c7a87255814035794733764d497fcb659ae0d6c843fae41040bb1a29c0726ab_
Docker Digest for 4.0.9: sha256:0c7a87255814035794733764d497fcb659ae0d6c843fae41040bb1a29c0726ab
Miscellaneous:
* CloudTrail: describe_trails() now returns the correct (MultiRegion) trails
* CloudWatch:tag_resource() now allows tagting new Alarms that didn't have tags yet
* EC2: create_instances() now supports the `IamInstanceProfile`-parameter
* EC2: describe_route_tables() now supports the `route.vpc-peering-connection-id`-filter
* EC2: modify_vpc_attribute() now supports the enableNetworkAddressUsageMetrics-attribute
* S3: delete_objects() now works against the JS SDK v3.197.0
Docker Digest for 4.0.8: _sha256:41883fb0f38572f3194dcbef6731eafdc6d8d7d4e319257d2ba2468c401c9881_
Docker Digest for 4.0.8: sha256:41883fb0f38572f3194dcbef6731eafdc6d8d7d4e319257d2ba2468c401c9881
General:
* Unpins the werkzeug-dependency - Moto now works with werkzeug==2.2.2
* Fixes the Docker-build to run on M1 Macbooks.
New Services:
* ServiceQuotas:
* get_service_quota()
* list_aws_default_service_quotas()
New Methods:
* CloudFront: list_invalidations()
* RDS: modify_db_cluster()
Miscellaneous:
* Lambda:delete_function() - fixed an issue where the wrong Function would be deleted when providing a qualifier
* ECR:put_image() now removes any existing images that have the provided tag
* IAM:detach_user/group/role_policy() now throws the correct error message when the policy is not attached in the first place
* S3:list_object_versions(): Fix delimiter to take prefix into account
* S3: Now closes file handles as early as possible when deleting files/multipart uploads
* Sagamaker:describe_training_job() now throws the correct exception when trying to explain a non-existing job
Docker Digest for 4.0.7: _sha256:a8ecbdba177c91c557ff76814c1b9a4d6673dc8e1e4183b183e5cff4ce73c356_
Docker Digest for 4.0.7: sha256:a8ecbdba177c91c557ff76814c1b9a4d6673dc8e1e4183b183e5cff4ce73c356
New Services:
* Comprehend:
* create_entity_recognizer()
* delete_entity_recognizer()
* describe_entity_recognizer()
* list_entity_recognizers()
* list_tags_for_resource()
* stop_training_entity_recognizer()
* MeteringMarketplace:
* batch_meter_usage()
New Methods:
* EC2:
* modify_vpc_endpoint()
* MediaConnect:
* grant_flow_entitlements()
* revoke_flow_entitlement()
* update_flow_entitlement()
* update_flow_output()
Miscellaneous:
* DynamoDB:transact_write_items() - Now includes validation if multipel operations are provided in the same item
* EC2:cancel_spot_fleet_request() - Fixed a bug where instances were always terminated
* EC2:create_instances() - Now uses the private IP address as as provided in the NetworkInterface
* EC2:describe_instance_types() - Now supports all filters
* ECS:run_task() - Now creates/attaches an ENI if appropriate
* S3: Fixed an issue where file handles were not closed on large uploads
Docker Digest for 4.0.6: _sha256:01582a705be7c50bc15993acc2271cd190db9c08c5fc09d85c59c8ddae6bb260_
Docker Digest for 4.0.6: sha256:01582a705be7c50bc15993acc2271cd190db9c08c5fc09d85c59c8ddae6bb260
General:
* Moto can now be seeded, which will make identifiers deterministic.
See http://docs.getmoto.org/en/latest/docs/configuration/recorder/index.html
* The format for access-key and role ids has been changed, and is now generated using the same algorithm that AWS uses
Miscellaneous:
* AWSLambda:add_permission() now properly handles the PrincipalOrgID-param
* DynamoDB:update_item() now validates duplicate UpdateExpressions
* EC2 now exposes instance types in the correct availability zones for us-west-1 (us-west-1a and us-west-1b)
* EC2 has various improvements around the handling of RouteTableAssociations
* Glue:get_tables() now supports the Expression-parameter
* Organizations:create_organization() now uses a default value for FeatureSet=ALL
* RDS:describe_db_subnet_groups() now returns the DBSubnetGroupArn-attribute
* S3:upload_file() now supports the ExtraArgs: ChecksumAlgorithm-parameter
* SSM:list_commands() now returns the DeliveryTimedOutCount-attribute
Docker Digest for 4.0.5: _sha256:d18f760f3498b212b0c8c205c9c28c2b41e8c7a108f44e1bd1d7ee86dfc37c03_
Docker Digest for 4.0.5: sha256:d18f760f3498b212b0c8c205c9c28c2b41e8c7a108f44e1bd1d7ee86dfc37c03
General:
* Moto now has a Recorder, to easily record and replay a given set of requests.
See http://docs.getmoto.org/en/latest/docs/configuration/recorder/index.html
Miscellaneous:
* CloudFormation now supports the creation/update/deletion of AWS::EC2::LaunchTemplate
* Glue:start_job_run() now respects the MaxConcurrentRuns-parameter
* S3:get_object() now performs rudimentary BucketPolicy validation
* StateManager now supports `glue::job_run`, managing how long it takes to for a Glue job to become 'SUCCEEDED'
Compatible with openapi-spec-validator 0.5.x
Docker Digest for 4.0.3: <autopopulateddigest>
General:
* Compatible with openapi-spec-validator 0.5.x
New Methods:
* Kinesis:
* update_stream_mode()
* WAFv2:
* associate_web_acl()
* delete_web_acl()
* disassociate_web_acl()
* get_web_acl()
* get_web_acl_for_resource()
* list_rule_groups()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* update_web_acl()
Miscellaneous:
* DynamoDB:query() now has improved support for KeyConditionExpression
* Kinesis:put_records() now validates the size/number of records, following AWS' behaviour
Docker Digest for 4.0.2: _sha256:32b30fef5d54d30eb7beca263dcb0ba08bd3718adb8b5d95f9f4b6e9cfc854f1_
Docker Digest for 4.0.2: sha256:32b30fef5d54d30eb7beca263dcb0ba08bd3718adb8b5d95f9f4b6e9cfc854f1
New Services:
* Amazon Managed Prometheus (AMP)
* create_rule_groups_namespace()
* create_workspace()
* delete_rule_groups_namespace()
* delete_workspace()
* describe_rule_groups_namespace()
* describe_workspace()
* list_rule_groups_namespaces()
* list_tags_for_resource()
* list_workspaces()
* put_rule_groups_namespace()
* tag_resource()
* untag_resource()
* update_workspace_alias()
Miscellaneous:
* APIGateway:put_method() now supports the requestParameters-parameter
* AutoScaling:create_auto_scaling_group() now supports the MixedInstancesPolicy-parameter
* CloudWatchLogs:filter_log_events() now supports the filterPattern-parameter
* DynamoDB:batch_put_item() now has validatior for empty keys
* Kinesis:create_stream() now supports stream-mode=OnDemand
* S3:head_object() now returns the PartsCount-header
* SNS:subscribe() now has increased support for the FilterPolicy-argument
* SSM now returns the /aws/service/ami-amazon-linux-latest-parameters as provided by AWS
Docker Digest for 4.0.1: _sha256:effbe303d0ac958569537b725e7632354deb6e9ce0a78ced1a2c6bdd4123831d_
Docker Digest for 4.0.1: sha256:effbe303d0ac958569537b725e7632354deb6e9ce0a78ced1a2c6bdd4123831d
New Services:
* Personalize:
* create_schema()
* delete_schema()
* describe_schema()
* list_schemas()
* Signer:
* cancel_signing_profile()
* get_signing_profile()
* list_signing_platforms()
* put_signing_profile()
New Methods:
* AWS Lambda:
* create_function_url_config()
* delete_function_url_config()
* get_function_url_config()
* update_function_url_config()
* Glue:
* update_database()
* EC2:
* describe_volumes_modifications()
* modify_volume()
* S3:
* delete_bucket_ownership_rule()
* get_bucket_ownership_rule()
* put_bucket_ownership_rule()
Miscellaneous:
* CloudFormation: Fixed a bug where deletion of AWS::Route53::RecordSet would result in an error
* DynamoDB: Fixed a bug where a TableARN would always return region=us-east-1
* EC2:create_launch_template() now supports the TagSpecifications-parameter
* EC2:describe_instance_types() now supports the Filters-parameter
* EC2:run_instances() now supports the HibernationOptions-param
Removes deprecated decorators mock_dynamodb2 and mock_rds2
Docker Digest for 4.0.0: sha256:348b516e706e19544dec3643d25304e24b75e48c92b1a6d347e5cd8c349cd8cd
General:
* Introduces MultiAccount support (see http://docs.getmoto.org/en/latest/docs/multi_account.html)
* Removes deprecated decorators mock_dynamodb2 and mock_rds2
* The API for the TreadedMotoServer is now considered stable
Dependencies:
* The responses-module now has a minimum version of 0.13.0
Nothing published for this version
Docker Digest for 3.1.18: _sha256:52fa7fdf8deee66d47fa760fafce1231ec9007d7bfc9c7a3080a8badd372b300_
Docker Digest for 3.1.18: sha256:52fa7fdf8deee66d47fa760fafce1231ec9007d7bfc9c7a3080a8badd372b300
General:
* Flask has now also been pinned to 2.1.x, as that is the latest release that works with werkzeug 2.1.x
New Methods:
* EC2:
* create_fleet()
* describe_fleets()
* describe_fleet_instances()
* delete_fleets()
* SES:
* describe_configuration_set()
* send_bulk_templated_email()
Miscellaneous:
* EC2: describe_key_pairs() now returns the KeyPairId-attribute
* EC2: import_key_pair() now returns the KeyPairId-attribute
* EC2: describe_launch_templates() now behaves correctly when called with an unknown template name
* RDS: create_db_instance() now returns the AvailabilityZone-attribute
* RDS: describe_db_instances() now returns the AvailabilityZone-attribute
Docker Digest for 3.1.17: _sha256:8a7e397a8856a5e63ad50689cdc3638831112768b193ea0fc308ac7dfdac57f0_
Docker Digest for 3.1.17: sha256:8a7e397a8856a5e63ad50689cdc3638831112768b193ea0fc308ac7dfdac57f0
General:
* Werkzeug has been pinned to 2.1.x, as the latest 2.2.x releases cause some issues
New Services:
* CodeBuild:
* batch_get_builds()
* delete_project()
* list_builds()
* list_builds_for_project()
* start_build()
* stop_build()
* Cost Explorer:
* create_cost_category_definition()
* delete_cost_category_definition()
* describe_cost_category_definition()
* update_cost_category_definition()
* EMR Serverless:
* create_application()
* delete_application()
* get_application()
* list_applications()
* start_application()
* start_job_run()
* stop_application()
* update_application()
New Methods:
* Autoscaling:
* delete_scheduled_action()
* describe_scheduled_actions()
* put_scheduled_update_group_action()
* CloudFront:
* create_distribution_with_tags()
* create_invalidation()
* list_tags_for_resource()
* Glue:
* create_schema()
* delete_schema()
* get_schema_by_definition()
* get_schema_version()
* put_schema_version_metadata()
* register_schema_version()
* Greengrass:
* associate_role_to_group()
* create_deployment()
* disassociate_role_from_group()
* get_associated_role()
* get_deployment_status()
* list_deployments()
* reset_deployments()
* IAM:
* update_assume_role_policy()
* IOT:
* list_targets_for_policy()
* KMS:
* replicate_key()
* MediaConnect:
* add_flow_sources()
* update_flow_source()
Miscellaneous:
* CloudFormation now supports the creation of AWS::AutoScaling::ScheduledAction
* CognitoIDP now supports pagination for list_groups() and list_users_in_group()
* EC2:describe_instances() now supports the filter 'key-name'
* IAM:create_access_key() now limits the number of keys per user to 2
Docker Digest for 3.1.16: _sha256:e7d79262fac1553966fb8c894dc81a750c4a18745977da6a15dffc35c596f8c4_
Docker Digest for 3.1.16: sha256:e7d79262fac1553966fb8c894dc81a750c4a18745977da6a15dffc35c596f8c4
New Methods:
* Autoscaling:
* enable_metrics_collection()
Miscellaneous:
* Fixes a dependency-error that popped up in 3.1.15.
Docker Digest for 3.1.15: _sha256:fad9fc39322cbabf4440ac5f6a3a158ee759dcd963995fea9672136c50bd2fc3_
Docker Digest for 3.1.15: sha256:fad9fc39322cbabf4440ac5f6a3a158ee759dcd963995fea9672136c50bd2fc3
Known bugs:
* Some services will throw an error: Missing module 'openapi_spec_validator'. This is fixed in 3.1.16.
New Methods:
* Databrew:
* create_profile_job()
* create_recipe_job()
* delete_job()
* describe_job()
* list_jobs()
* update_profile_job()
* update_recipe_job()
* Glue:
* create_registry()
* Greengrass:
* create_group()
* create_group_version()
* delete_group()
* get_group()
* get_group_version()
* list_groups()
* list_group_versions()
* update_group()
* KMS:
* sign()
* verify()
* Route53Resolver:
* associate_resolver_endpoint_ip_address()
* disassociate_resolver_endpoint_ip_address()
Docker Digest for 3.1.14: _sha256:a8ad7f54d7c469e34454f6774f743251c02093c6b2d7e9d7961a5de366783e11_
Docker Digest for 3.1.14: sha256:a8ad7f54d7c469e34454f6774f743251c02093c6b2d7e9d7961a5de366783e11
New Methods:
* Greengrass:
* create_function_definition()
* create_resource_definition()
* create_function_definition_version()
* create_resource_definition_version()
* create_subscription_definition()
* create_subscription_definition_version()
* delete_function_definition()
* delete_resource_definition()
* delete_subscription_definition()
* get_function_definition()
* get_function_definition_version()
* get_resource_definition()
* get_resource_definition_version()
* get_subscription_definition()
* get_subscription_definition_version()
* list_function_definitions()
* list_function_definition_versions()
* list_resource_definitions()
* list_resource_definition_versions()
* list_subscription_definitions()
* list_subscription_definition_versions()
* update_function_definition()
* update_resource_definition()
* update_subscription_definition()
* EKS:
* list_tags_for_resources()
* tag_resource()
* untag_resource()
* Route53:
* associate_vpc_with_hosted_zone()
* disassociate_vpc_from_hosted_zone()
* update_health_check()
* update_hosted_zone_comment()
Miscellaneous:
* APIGateway:put_integration() now supports the requestParameters-parameter
* EC2:create_route() now validates whether a route already exists
Docker Digest for 3.1.13: _sha256:d7f6c779c79f03b686747ae26b52bdca26fd81a50c6a41a8a6cba50c96982abf_
Docker Digest for 3.1.13: sha256:d7f6c779c79f03b686747ae26b52bdca26fd81a50c6a41a8a6cba50c96982abf
New Methods:
* EC2:
* create_default_vpc()
* Greengrass:
* create_device_definition()
* create_device_definition_version()
* delete_core_definition()
* delete_device_definition()
* get_core_definition()
* get_core_definition_version()
* get_device_definition()
* get_device_definition_version()
* list_core_definitions()
* list_core_definition_versions()
* list_device_definitions()
* list_device_definition_versions()
* update_core_definition()
* update_device_definition()
* SSO Admin:
* create_permission_set()
* delete_permission_set()
* describe_permission_set()
* list_permission_sets()
* update_permission_set()
* Route53:
* get_dnssec()
* get_health_check()
* Miscellaneous:
* StateManager now supports `s3::keyrestore`, managing how long it takes to restore S3 objects from Glacier.
Docker Digest for 3.1.12: _sha256:64dcfb63b252b3413481683b90f105d01644b6bec150b60e6f612a2569ee630c_
Docker Digest for 3.1.12: sha256:64dcfb63b252b3413481683b90f105d01644b6bec150b60e6f612a2569ee630c
New Services:
* Greengrass:
* create_core_definition()
* create_core_definition_version()
Internal Changes:
* The data structure containing all of Moto's state has been updated to support multiple accounts
Docker Digest for 3.1.11: _sha256:bb359c5e57e38534eb8e934757354277fff30598ca305d0f18f68ddfe4ce6359_
Docker Digest for 3.1.11: sha256:bb359c5e57e38534eb8e934757354277fff30598ca305d0f18f68ddfe4ce6359
New Methods:
* GuardDuty:
* create_filter()
* delete_detector()
* delete_filter()
* enable_organization_admin_account()
* get_detector()
* get_filter()
* list_organization_admin_accounts()
* update_detector()
* update_filter()
* KMS:
* create_grant()
* list_grants()
* list_retirable_grants()
* retire_grant()
* revoke_grant()
Miscellaneous:
* EC2:describe_network_acls() now supports the `entry.egress`-filter
* EC2:run_instances() now supports validation for the KeyPair-parameter. This is disabled by default - set MOTO_ENABLE_KEYPAIR_VALIDATION to true to enable this.
* EC2:run_instances() now supports validation for the ImageId-parameter. This is disabled by default - set MOTO_ENABLE_AMI_VALIDATION to true to enable this.
Docker Digest for 3.1.10: _sha256:18c6367dbb843850a5b52bc2b74cde9fd2a03719da667aa01b7c80de26849fb6_
Docker Digest for 3.1.10: sha256:18c6367dbb843850a5b52bc2b74cde9fd2a03719da667aa01b7c80de26849fb6
New Methods:
* APIGateway:
* import_rest_api()
* put_rest_api()
* Glue:
* get_tags()
* tag_resource()
* untag_resource()
Miscellaneous:
* APIGateway:put_integration() now supports the passthroughBehavior-parameter
* APIGatewayV2:create_authorizer() now supports the AuthorizerPayloadFormatVersion-parameter
* AWSLamba:publish_layer_version() now supports the CompatibleArchitectures-parameter
* DAX:create_cluster() now supports the ClusterEndpointEncryptionType-parameter
* EC2:describe_route_tables() now supports the filter `route.gateway-id`
* EC2:run_instances() now validates whether the Placement-parameter has a valid availability zone
* ECS:list_services() now supports the launchType-parameter
* ELB:describe_instance_health() now returns the OutOfService-status when appropriate
* Organizations:list_accounts_for_parent() now supports pagination
* Organizations:list_organizational_units_for_parent() now supports pagination
Docker Digest for 3.1.9: _sha256:eea31d2f99b2fef16cffb3ea86d21dd911647835a3182bedd8918074292ce552_
Docker Digest for 3.1.9: sha256:eea31d2f99b2fef16cffb3ea86d21dd911647835a3182bedd8918074292ce552
New Services:
* EBS:
* complete_snapshot()
* get_snapshot_block()
* list_changed_blocks()
* list_snapshot_blocks()
* put_snapshot_block()
* start_snapshot()
New Methods:
* CloudFront:
* update_distribution()
* Datasets:
* create_dataset()
* delete_dataset()
* describe_dataset()
* list_datasets()
* update_dataset()
* Glue:
* list_crawlers()
* Rekognition:
* get_face_search()
* start_face_seach()
Miscellaneous:
* EC2:describe_vpc_endpoints() now supports the `vpc-endpoint-type`-filter
* RDS:create_db_cluster() now supports the EnableCloudwatchLogsExports-parameter
* RDS:create_db_instance() now supports the EnableCloudwatchLogsExports-parameter
* SSM now integrates with SecretsManager
Docker Digest for 3.1.8: _sha256:a7d8c55eec8d75d75dd2532a6a0a9647935238236a54e4de7bb3f72bc28b7bf8_
Docker Digest for 3.1.8: sha256:a7d8c55eec8d75d75dd2532a6a0a9647935238236a54e4de7bb3f72bc28b7bf8
General:
* Moto now supports a way to delay state transitions.
See http://docs.getmoto.org/en/latest/docs/configuration/state_transition/index.html
* Moto now supports `@mock_batch_simple`, a way to mock the Batch-service without invoking Docker.
New Methods:
* CognitoIDP:
* global_sign_out()
* update_group()
* update_user_attributes()
* DataBrew:
* delete_recipe_version()
* list_recipe_versions()
* publish_recipe()
* IAM:
* create_service_linked_role()
* delete_service_linked_role()
* get_service_linked_role_deletion_status()
* Sagemaker:
* update_endpoint_weights_and_capacities()
Miscellaneous:
* EC2: request_spot_fleet() now supports the parameters LaunchTemplateConfigs, InstanceInterruptionBehavior
* EC2: request_spot_instances() now supports the InstanceInterruptionBehavior-parameter
* EC2: The status of a SpotInstances request now automatically transitions to 'Active/Fulfilled'
* EC2: Tags specified into create_launch_template() are now passed through when calling `run_instances()` with this template
* RDS: describe_db_instances() now supports the filter `db-cluster-id`
* TimestreamWrite: create_table() now supports the MagneticStoreWriteProps-parameter
* TimestreamWrite: update_table() now supports the MagneticStoreWriteProps-parameter
Docker Digest for 3.1.7: _sha256:d9661c13c2f790cbe9ed6531cefec132494fc0e8c37fcceca1f709292ef0880f_
Docker Digest for 3.1.7: sha256:d9661c13c2f790cbe9ed6531cefec132494fc0e8c37fcceca1f709292ef0880f
New Methods:
* SES:
* get_identity_verification_attributes()
Miscellaneous:
* CognitoIDP: UserPools now come with default values for the following attributes: Policies, AdminCreateUserConfig, EmailConfiguration, VerificationMessageTemplate
* ELBv2: Improved the response-format of the `create_rule()` and `set_rule_priorities()`-methods
* MediaConnect: Now has the correct format for flow/source ARN's
* Organizations: Fixes the behaviour for close_account()
* Sagemaker: Now supports tagging of Models, EndpointConfigs, ProcessingJobs
Docker Digest for 3.1.6: _sha256:722b9c05ad3454047688db4ba95991f6af4166c63d871149b1b1eef9d70be70f_
Docker Digest for 3.1.6: sha256:722b9c05ad3454047688db4ba95991f6af4166c63d871149b1b1eef9d70be70f
New Methods:
* Organizations:
* close_account()
Miscellaneous:
* Autoscaling: the BlockDeviceMappings in LaunchConfigurations and LaunchTemplates are now respected when launching EC2 instances
* CloudWatch: get_metric_data() now supports the Dimensions-parameter
* ELB: set_rule_priorities() now correctly returns the Rules-attribute
* ELBv2: create_target_group() now supports the Tags-parameter
* Events: delete_rule() now verifies whether any targets are still attached before deletion
Docker Digest for 3.1.5: _sha256:79050ce5b729f6eff3282a79dace9cb7e5983588250452f8821aeffa87eca334_
Docker Digest for 3.1.5: sha256:79050ce5b729f6eff3282a79dace9cb7e5983588250452f8821aeffa87eca334
New Methods:
* ApplicationAutoscaling:
* delete_scheduled_action()
* describe_scheduled_actions()
* put_scheduled_action()
* Databrew:
* create_ruleset()
* delete_ruleset()
* list_rulesets()
* update_recipe()
* update_ruleset()
* EC2:
* describe_network_interface_attribute()
Miscellaneous:
* Glue:get_partitions() now supports the Expression-parameter
* RDS:delete_db_cluster() now supports the FinalDBSnapshotIdentifier-parameter
* S3 actions can now send notifications for (a subset of) supported events and targets
Docker Digest for 3.1.4: _sha256:795eb8a1d966ef30c53f504e358afb23ec262e5ad1cba18d474096c0fba794bd_
Docker Digest for 3.1.4: sha256:795eb8a1d966ef30c53f504e358afb23ec262e5ad1cba18d474096c0fba794bd
General:
* Compatible with botocore 1.24.30.
The IOTData service in older versions of Moto is incompatible with botocore >= 1.24.30, due to the fact that AWS changed their URL endpoints.
New Services:
* QuickSight:
* create_data_set()
* create_group()
* create_group_membership()
* create_ingestion()
* delete_group()
* delete_user()
* describe_group()
* describe_group_membership()
* describe_user()
* list_groups()
* list_group_memberships()
* list_users()
* register_user()
* update_group()
* describe_group()
* describe_group()
* describe_group()
* Rekognition:
* get_text_detection()
* start_text_detection()
New Methods:
* EC2:
* delete_launch_template()
* ECS:
* create_capacity_provider()
* delete_capacity_provider()
* describe_capacity_providers()
Miscellaneous:
* Autoscaling:put_scaling_policy() now supports the parameters MetricAggregationType, MinAdjustmentMagnitude, EstimatedInstanceWarmup, PredictiveScalingConfiguration
* Autoscaling:create_auto_scaling_group() now supports launch template versions '$Latest' and '$Default'
* RDS: Improved tagging support for Clusters and ClusterSnapshots
Docker Digest for 3.1.3: _sha256:d0716d84d376e7aafeb4a40a29d298725aa39e6553b64f55a6be1287e4bee80c_
Docker Digest for 3.1.3: sha256:d0716d84d376e7aafeb4a40a29d298725aa39e6553b64f55a6be1287e4bee80c
New Methods:
* TimestreamWrite:
* list_tags_for_resource()
* tag_resource()
* untag_resource()
Miscellaneous:
* EC2:run_instances(): Fixed a bug when supplying the NetworkInterfaces.Groups-parameter
* Logs:delete_metric_filter(): Fixed a bug where the logGroupName-validator was too strict
Docker Digest for 3.1.2: _sha256:884923ae6449b2db64e6805ef82209fcc5aab4991024c495aea07a191257aa4d_
Docker Digest for 3.1.2: sha256:884923ae6449b2db64e6805ef82209fcc5aab4991024c495aea07a191257aa4d
Known Bugs:
* EC2:run_instances(): This call will fail when supplying the NetworkInterfaces.Groups-parameter
New Methods:
* ELB
* attach_load_balancer_to_subnets()
* detach_load_balancer_from_subnets()
* describe_load_balancer_policies()
* delete_load_balancer_policy()
* enable_availability_zones_for_load_balancer()
* disable_availability_zones_for_load_balancer()
* ELBv2:
* add_listener_certificates()
* describe_listener_certificates()
* remove_listener_certificates()
* Glue:
* get_job()
* get_job_run()
* start_job_run()
Miscellaneous:
* AWSLambda:add_permission() now supports the Qualifier-parameter
* ELB:create_load_balancer() now retrieves the subnets based on the AvailabilityZones-parameter
* ELB:create_load_balancer() now creates a default SecurityGroup, if none is provided
* ELBv2:create_load_balancer() now supports the SubnetMappings-parameter
* ELBv2:create_listener() now supports the AlpnPolicy-parameter
* ELBv2: Improved tagging support
* ELBv2: Exposes the TargetGroupStickinessConfig-attribute when describing a Action of type ForwardConfig
Docker Digest for 3.1.1: _sha256:e2b8145574e01d1630be307f418211e09e089b87d8d87b1ac69878a50d8dde0c_
Docker Digest for 3.1.1: sha256:e2b8145574e01d1630be307f418211e09e089b87d8d87b1ac69878a50d8dde0c
New Methods:
* AWSLambda:
* create_alias()
* delete_alias()
* delete_layer_version()
* get_alias()
* get_layer_version()
* update_alias()
* EFS:
* create_access_point()
* delete_access_point()
* describe_access_points()
* describe_lifecycle_configuration()
* describe_mount_target_security_groups()
* list_tags_for_resource()
* modify_mount_target_security_groups()
* put_lifecycle_configuration()
* tag_resource()
* untag_resource()
Miscellaneous:
* AWSLambda: get_function now returns the parameters Tags, LastUpdateStatus, TracingConfig
* ELBV2:describe_tags() now supports ListenerRules.
The mock_dynamodb2-decorator is now considered deprecated, and will be removed in the next major version.
Docker Digest for 3.1.0: sha256:1656754cf4de441d85b08f584d9dcb095880d3bf250f05da26a03ff219d586c8
General:
* Users of `mock_dynamodb2` should start using `mock_dynamodb` instead.
The `mock_dynamodb`-decorator has been repurposed to mock the latest version of DynamoDB, making the behaviour equivalent to `mock_dynamodb2`.
The `mock_dynamodb2`-decorator is now considered deprecated, and will be removed in the next major version.
* Similarly, users of the `mock_rds2` should start using `mock_rds` instead.
The `mock_rds`-decorator has been repurposed to mock the latest version of RDS, making the behaviour equivalent to `mock_rds2`.
The `mock_rds2`-decorator has also been deprecated, and will be removed in the next major version.
Internal Changes:
* We've upgraded our linting process to use Black 22.1.0, and have enabled more pylint rules.
Please continue to run `make lint` prior to creating a PR, to ensure any changes are formatted correctly.
Docker Digest for 3.0.7: _sha256:4db9433e741de635606fd2d997e555c26f51fc82e69d5043d0d9de90bbade229_
Docker Digest for 3.0.7: sha256:4db9433e741de635606fd2d997e555c26f51fc82e69d5043d0d9de90bbade229
General:
* Compatible with the latest `responses`-release (0.19.0)
New Services:
* DataBrew:
* create_recipe()
* get_recipe()
* list_recipes()
* Pinpoint:
* create_app()
* delete_app()
* delete_event_stream()
* get_app()
* get_application_settings()
* get_apps()
* get_event_stream()
* list_tags_for_resource()
* put_event_stream()
* tag_resource()
* untag_resource()
* update_application_settings()
Docker Digest for 3.0.6: _sha256:de6b4ba576e143b3bbae250186b563c836f233afea5b3579629d3565824de74d_
Docker Digest for 3.0.6: sha256:de6b4ba576e143b3bbae250186b563c836f233afea5b3579629d3565824de74d
General:
* Feature to start the MotoServer from within Python (in beta)
Miscellaneous:
* CloudFormation now supports creation of type AWS::EC2::VPCEndpoint
* ECS: run_task() - The task count now defaults to 1
Docker Digest for 3.0.5: _sha256:914ba446c1aad3917029fefe5d1c4a7a6a3866173391fb470151fe4a2163efcb_
Docker Digest for 3.0.5: sha256:914ba446c1aad3917029fefe5d1c4a7a6a3866173391fb470151fe4a2163efcb
New Services:
* Textract:
* get_document_text_detection()
* start_document_text_detection()
New Methods:
* APIGateway:
* delete_gateway_responses()
* get_gateway_response()
* get_gateway_responses()
* put_gateway_response()
* CloudTrail:
* add_tags()
* get_event_selectors()
* get_insight_selectors()
* list_tags()
* put_event_selectors()
* put_insight_selectors()
* remove_tags()
* update_trail()
* CognitoIDP:
* admin_set_user_mfa_preference()
* S3Control:
* create_access_point()
* delete_access_point()
* delete_access_point_policy()
* get_access_point()
* get_access_point_policy()
* get_access_point_policy_status()
Miscellaneous:
* APIGateway: put_integration() now supports the timeoutInMillis-parameter
* AWSLambda: Made the docker image repository selectable via the `MOTO_DOCKER_LAMBDA_IMAGE` environment variable.
* Batch: register_job_definition() now supports the parameters `platformCapabilities`, `propagateTags` and `retryStrategy`
* IAM: list_entities_for_policy() now returns the RoleId/GroupId/UserId-attributes
* S3Control is now available in ServerMode.
Docker Digest for 3.0.4: _sha256:320e1d2ab89729d5580dbe08d8c2153a28db4c28023c57747fb292ffceee84b6_
Docker Digest for 3.0.4: sha256:320e1d2ab89729d5580dbe08d8c2153a28db4c28023c57747fb292ffceee84b6
New Services:
* Redshift-Data:
* cancel_statement()
* describe_statement()
* execute_statement()
* get_statement_result()
* Servicediscovery/Cloudmap:
* create_http_namespace()
* create_private_dns_namespace()
* create_public_dns_namespace()
* create_service()
* delete_namespace()
* delete_service()
* get_namespace()
* get_operation()
* get_service()
* list_namespaces()
* list_operations()
* list_services()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* update_service()
New Methods:
* Athena:
* create_data_catalog()
* get_data_catalog()
* list_data_catalogs()
* SES:
* get_identity_mail_from_domain_attributes()
* set_identity_mail_from_domain()
Miscellaneous:
* SSM: Global infrastructure parameters supplied by AWS are now available in Moto
delete_route_request_parameter()
New Services: * APIGatewayV2 * create_api() * create_authorizer() * create_integration() * create_integration_response() * create_model() * create_route() * create_route_response() * create_vpc_link() * delete_api() * delete_authorizer() * delete_cors_configuration() * delete_integration() * delete_integration_response() * delete_model() * delete_route() * delete_route_request_parameter() * delete_route_response() * delete_vpc_link() * get_api() * get_apis() * get_authorizer() * get_integration() * get_integration_response() * get_integration_responses() * get_integrations() * get_model() * get_route() * get_route_response() * get_routes() * get_tags() * get_vpc_link() * get_vpc_links() * reimport_api() * tag_resource() * untag_resource() * update_api() * update_authorizer() * update_integration() * update_integration_response() * update_model() * update_route() * update_vpc_link()
New Methods:
Miscellaneous:
describe_db_cluster_snapshots()
New Methods: * Kinesis: * deregister_stream_consumer() * describe_stream_consumer() * disable_enhanced_monitoring() * enable_enhanced_monitoring() * list_stream_consumers() * register_stream_consumer() * start_stream_encryption() * stop_stream_encryption() * update_shard_count() * RDS: * cancel_export_task() * copy_db_cluster_snapshot() * copy_db_snapshot() * create_db_cluster_snapshot() * create_event_subscription() * delete_db_cluster_snapshot() * delete_event_subscription() * describe_db_cluster_snapshots() * describe_event_subscriptions() * describe_export_tasks() * start_export_task() * Route53 * list_hosted_zones_by_vpc()
describe_configuration_revision()
New Services: * MQ: * create_broker() * create_configuration() * create_tags() * create_user() * delete_broker() * delete_tags() * delete_user() * describe_broker() * describe_configuration() * describe_configuration_revision() * describe_user() * list_brokers() * list_configurations() * list_tags() * list_users() * reboot_broker() * update_broker() * update_configuration() * update_user()
New Methods:
Miscellaneous:
This is a major release, and as such contains some breaking changes.
This is a major release, and as such contains some breaking changes.
* Removed:
- All deprecated decorators have been removed
* Changes:
- The behaviour of the class-decorator has been reworked - the state is now reset before every test-method.
- ECS ARN's are now using the long format.
* Rebranded:
- The new mock_s3control-decorator has been introduced. The existing S3control methods (get/put/delete_public_access_block) are no longer available via mock_s3, only via mock_s3control.
* General:
- Python 3.5 support has been removed
- Python 3.10 is now supported
Compatible with the latest responses-release (0.17.0)
General:
* Compatible with the latest responses-release (0.17.0)
New Services:
* Appsync:
* create_api_key()
* create_graphql_api()
* delete_api_key()
* delete_graphql_api()
* get_graphql_api()
* get_schema_creation_status()
* get_type()
* list_api_keys()
* list_graphql_apis()
* list_tags_for_resource()
* start_schema_creation()
* tag_resource()
* untag_resource()
* update_api_key()
* update_graphql_api()
Miscellaneous:
* AWSLambda:invoke() now throws an error when trying to return an oversized payload (>6MB)
* EC2:describe_instances() now supports filtering by `dns-name`
* EC2:describe_managed_prefix_lists() now supports filtering by tags
* SQS:delete_message_batch() now correctly deals with invalid receipt handles
ECS: run_task() now supports the launchType-parameter
New Services: * DAX: * create_cluster() * decrease_replication_factor() * delete_cluster() * describe_clusters() * increase_replication_factor() * list_tags() * SSO-Admin: * create_account_assignment() * delete_account_assignment() * list_account_assignments()
New Methods:
* APIGateway:
* update_base_path_mapping()
* SNS:
* publish_batch()
Miscellaneous:
* ECS: run_task() now supports the launchType-parameter
* SNS: publish() now supports FIFO-topics
* SWF: respond_decision_task_completed() now supports RecordMarker/StartTimer/CancelTimer/CancelWorkflowExecution decisions
It is now possible to use a mocked region. This will throw an error by default, but can be enabled using the MOTO_ALLOW_NONEXISTENT_REGION-environment
General:
* It is now possible to use a mocked region. This will throw an error by default, but can be enabled using the MOTO_ALLOW_NONEXISTENT_REGION-environment variable.
* Performance improvements - only the backend for the requested region is now loaded into memory, instead of (naively) loading a backend for every region.
describe_elasticsearch_domain()
New Services: * ElasticsearchService: * create_elasticsearch_domain() * delete_elasticsearch_domain() * describe_elasticsearch_domain() * list_domain_names()
New Methods:
* EC2:
* disable_ebs_encryption_by_default()
* enable_ebs_encryption_by_default()
* get_ebs_encryption_by_default()
* Redshift:
* pause_cluster()
* resume_cluster()
Miscellaneous:
* ELBv2: create_listener now supports the DefaultActions.ForwardConfig parameter
* Redshift: restore_from_cluster_snapshot() now supports the NodeType and NumberOfNodes-parameters
* Sagemaker: list_experiments() now supports pagination
* Sagemaker: list_trials() now supports pagination
* Sagemaker: list_trial_components() now supports pagination
General: * Support for ap-southeast-3
General: * Support for ap-southeast-3
list_open_id_connect_provider_tags()
New Services: * ElastiCache: * create_user() * delete_user() * describe_users() * GuardDuty: * create_detector() * list_detectors()
New Methods:
* IAM:
* list_open_id_connect_provider_tags()
* tag_open_id_connect_provider()
* untag_open_id_connect_provider()
* update_open_id_connect_provider_thumbprint()
* IOT:
* create_domain_configuration()
* delete_domain_configuration()
* describe_domain_configuration()
* list_domain_configurations()
* update_domain_configuration()
Miscellaneous:
* ResourceGroupTaggingAPI now supports Lambda Functions
* SecretsManager:list_secrets() now supports negative filters
restore_table_to_point_in_time()
New Services: * CloudFront: * create_distribution() * delete_distribution() * get_distribution() * list_distributions()
New Methods:
* Autoscaling:
* describe_tags()
* CloudFormation:
* get_stack_policy()
* set_stack_policy()
* DynamoDB:
* restore_table_to_point_in_time()
* Glue:
* delete_database()
* list_jobs()
* IAM:
* update_group()
* Route53 Resolver:
* associate_resolver_rule()
* create_resolver_rule()
* delete_resolver_rule()
* disassociate_resolver_rule()
* get_resolver_rule()
* get_resolver_rule_association()
* list_resolver_rules()
* list_resolver_rule_associations()
Miscellaneous:
* Batch: register_job_definition() now supports the timeout-parameter
* Batch: submit_job() now supports the timeout-parameter
* EC2: describe_network_interfaces() now supports the `attachment.instance-id` filter
list_resolver_endpoint_ip_addresses()
New Services: * SimpleDB: * create_domain() * delete_domain() * get_attributes() * list_domains() * put_attributes()
New Methods:
* Glue:
* create_job
* Route53 Resolver:
* create_resolver_endpoint()
* delete_resolver_endpoint()
* get_resolver_endpoint()
* list_resolver_endpoints()
* list_resolver_endpoint_ip_addresses()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* update_resolver_endpoint()
Miscellaneous:
* Moto now supports mocking S3-equivalent libraries such as Ceph
* Cognito IDP now exposes the `cognito:groups`-attribute as part of the AccessToken
Fixed the dependency bug - moto install[all] now installs all required dependencies again.
General:
* Fixed the dependency bug - moto install[all] now installs all required dependencies again.
Running pip install moto[all] will not install all required dependencies.
Known bugs:
* Running pip install moto[all] will not install all required dependencies.
General:
* Improved documentation for both users and contributors:
http://docs.getmoto.org/en/latest/
* The `@mock_all`-decorator is now available to mock all services at the same time
* The `moto.core.patch_client`/`moto.core.patch_resource`-methods are now available to patch boto3-clients and -resources instantiated after the mock was started.
This provides a workaround when encountering InvalidAccessKeyId-errors.
New Methods:
* APIGateway:
* delete_base_path_mapping()
* EC2:
* assign_ipv6_addresses()
* assign_private_ip_addresses()
* unassign_ipv6_addresses()
* unassign_private_ip_addresses()
* SSM:
* create_maintenance_window()
* delete_maintenance_window()
* get_maintenance_window()
Miscellaneous:
* CloudFormation no longer throws errors when trying to update unsupported resources.
* CloudTrail:get_trail_status() now also supports ARN's as a parameter
* CognitoIDP:list_users() now supports the AttributesToGet-parameter
* IOT:attach_policy() now supports Cognito IdentityPools as a target
* IOT:list_job_executions_for_thing() now supports pagination
* Kinesis:split_shards() now behaves more like AWS, by closing the original shard and creating two new ones
* Logs:put_log_events() now enforces timestamp-validation
* S3:create_multipart_upload() now supports the Tagging-parameter
* SSM:get_parameters_by_path() now support filtering by label
The mock_dynamodb and mock_rds-decorators have been deprecated, and will be repurposed in a later release. Please see https://github.com/getmoto/moto/…
General: * The mock_dynamodb and mock_rds-decorators have been deprecated, and will be repurposed in a later release. Please see https://github.com/getmoto/moto/issues/4526 for more information.
New Methods:
* API Gateway:
* get_base_path_mappings()
* Cognito Identity:
* list_identities()
* DirectoryService:
* disable_sso()
* enable_sso()
* connect_directory()
* create_alias()
* create_microsoft_ad()
* EMR Containers:
* cancel_job_run()
* describe_job_run()
* list_job_runs()
* start_job_run()
* IAM:
* list_policy_tags()
* tag_policy()
* untag_policy()
* Sagemaker:
* create_processing_job()
* describe_processing_job()
* list_processing_jobs()
Miscellaneous:
* CloudFormation: Now supports creation of Custom:: resources. Note that this only works in ServerMode.
KMS: Now returns default AWS aliases (alias/aws/s3, etc)
New Services: * EMR Containers: * create_virtual_cluster() * delete_virtual_cluster() * describe_virtual_cluster() * list_virtual_clusters() * DirectoryService: * add_tags_to_resource() * create_directory() * delete_directory() * describe_directories() * get_directory_limits() * list_tags_for_resource() * remove_tags_for_resource()
New Methods:
* API Gateway:
* create_base_path_mapping()
* get_base_path_mappings()
* CognitoIDP:
* add_custom_attributes()
* admin_delete_user_attributes()
* Glue:
* start_crawler()
* stop_crawler()
* Sagemaker:
* add_tags()
* associate_trial_component()
* create_experiment()
* create_trial()
* create_trial_component()
* delete_experiment()
* delete_tags()
* delete_trial()
* delete_trial_component()
* describe_experiment()
* describe_trial()
* describe_trial_component()
* disassociate_trial_component()
* list_associations()
* list_experiments()
* list_trial_components()
* list_trials()
* search()
* SES:
* describe_receipt_rule_set()
* update_receipt_rule()
Miscellaneous:
* KMS: Now returns default AWS aliases (alias/aws/s3, etc)
ECS now has an option to enable long-format ARNs, by setting the environment variable MOTO_ECS_NEW_ARN=true Alternatively, use the put_account_setting
General:
* Support for AWS China regions
* ECS now has an option to enable long-format ARNs, by setting the environment variable MOTO_ECS_NEW_ARN=true
Alternatively, use the put_account_setting to enable long-format for the current user.
New Services:
* Timestream:
* create_database()
* create_table()
* delete_database()
* delete_table()
* describe_database()
* describe_endpoints()
* describe_table()
* list_databases()
* list_tables()
* update_database()
* update_table()
* write_records()
New Methods:
* CognitoIDP:
* admin_confirm_sign_up()
* update_user_pool()
* ECS:
* delete_account_setting()
* list_account_settings()
* put_account_setting()
* Route53:
* create_query_logging_config()
* delete_query_logging_config()
* get_query_logging_config()
* list_query_logging_config()
* SES
* describe_receipt_rule()
* get_identity_notification_attributes()
* set_identity_feedback_forwarding_enabled()
Miscellaneous:
* CloudFormation: Support create/update/delete of resource AWS::Logs::ResourcePolicy
* CloudFormation:get_template_summary() now returns the Parameters-attribute
* CognitoIDP: Allow the UserAttributes email or phone_number to be used as username
* CognitoIDP: Improved behaviour for the ForgotPassword()-feature
ACM: describe_certificate(): the InUseBy-attribute will now show the appropriate Elastic Load Balancers
New Services: * CloudTrail: * create_trail() * delete_trail() * describe_trails() * get_trail() * get_trail_status() * list_trails() * start_logging() * stop_logging()
New Methods:
* CognitoIDP:
* admin_reset_user_password()
* S3:
* delete_bucket_replication()
* get_bucket_replication()
* put_bucket_replication()
Miscellaneous:
* ACM: describe_certificate(): the InUseBy-attribute will now show the appropriate Elastic Load Balancers
* AWSLambda: If you're running Linux, 'host.docker.internal' is now added as an extra host in the Docker container used to invoke the function.
This makes it easier for Lambda-functions to communicate with other servers running on the host-system.
* CloudFormation: Now supports update/deletion of type AWS::SNS::Topic
* CognitoIdentityProvider: list_users() now has improved support for the Filter-parameter
* Kinesis: describe_stream() now supports the Filter-parameter
* S3: list_object_versions() now supports the Delimiter and KeyMarker-parameter
Moto is now compatible with Sure 2.x
General: * Moto is now compatible with Sure 2.x
New Methods:
* Kinesis:
* list_shards()
* RDS:
* create_db_cluster()
* delete_db_cluster()
* describe_db_clusters()
* restore_db_instance_from_db_snapshot()
* start_db_cluster()
* stop_db_cluster()
* S3:
* get_object_legal_hold()
Miscellaneous:
* CF: Now supports creation of AWS::EC2::VPNGateway
* CF: Now supports deletion of AWS::Events::Rule
* EC2: create_volume() now supports the VolumeType-parameter
* EC2: describe_customer_gateways() now supports the CustomerGatewayIds-parameter
* EC2: describe_security_groups() now has improved support for the Filters-parameter
* EC2: describe_spot_instance_requests() now supports the SpotInstanceRequestIds-parameter
* EC2: describe_transit_gateways() now supports the TransitGatewayIds-parameter
APIGateway: update_rest_api() now has improved support for the patchOperations-parameter
New Services: * ACM: * export_certificate() * APIGateway: * create_request_validator() * delete_request_validator() * get_request_validators() * update_request_validator()
Miscellaneous:
* APIGateway: update_rest_api() now has improved support for the patchOperations-parameter
* Batch: register_job_definition() now supports the tags-parameter
* CloudFormation: Stack Events are now propagated to SNS when the NotificationARNs-parameter is supplied.
* EC2: describe_vpc_endpoint_services() now returns the default endpoints for implemented services
* IOT: list_job_executions_for_job() now supports the status-parameter
* IOT: list_job_executions_for_thing() now supports the status-parameter
* KMS: list_resource_tags() now supports an ARN as the KeyId-parameter
* KMS: tag_resource() now supports an ARN as the KeyId-parameter
* KMS: untag_resource() now supports an ARN as the KeyId-parameter
* SecretsManager: update_secret() now supports the ClientRequestToken-parameter
Performance improvements when using Moto in Server Mode. Only services that are actually used will now be loaded into memory, greatly reducing the wai
General: * Performance improvements when using Moto in Server Mode. Only services that are actually used will now be loaded into memory, greatly reducing the waiting times when starting the server, making an initial request and calling the reset-api.
New Services:
* Firehose
* create_delivery_stream()
* delete_delivery_stream()
* describe_delivery_stream()
* list_delivery_streams()
* list_tags_for_delivery_stream()
* put_record()
* put_record_batch()
* tag_delivery_stream()
* untag_delivery_stream()
* update_destination()
New Methods:
* Autoscaling:
* delete_lifecycle_hook()
* describe_lifecycle_hooks()
* put_lifecycle_hook()
* EC2:
* associate_subnet_cidr_block()
* create_carrier_gateway()
* delete_carrier_gateway()
* describe_carrier_gateways()
* describe_spot_price_history()
* disassociate_subnet_cidr_block()
* update_security_group_rule_descriptions_egress()
* update_security_group_rule_descriptions_ingress()
* Logs:
* delete_metric_filter()
* describe_metric_filters()
* put_metric_filter()
* SageMaker:
* list_training_jobs()
* Transcribe
* create_vocabulary()
* delete_transcription_job()
* delete_vocabulary()
* get_transcription_job()
* get_vocabulary()
* list_transcription_jobs()
* start_transcription_job()
Miscellaneous:
* DynamoDB: Improved support for the ReturnConsumedCapacity-parameter across all methods
* EC2:create_route() now supports the parameters CarrierGatewayId, DestinationPrefixListId
* EC2:create_subnet() now supports the Ipv6CidrBlock-parameter
* EC2:describe_nat_gateways() now supports the NatGatewayIds-parameter
* EC2:describe_vpn_gateways() now supports the VpnGatewayIds-parameter
* EC2:modify_network_interface_attribute() now supports the SourceDestCheck-parameter
* EC2:replace_route() now supports the parameters DestinationIpv6CidrBlock, DestinationPrefixListId, NatGatewayId, EgressOnlyInternetGatewayId, TransitGatewayId
* EC2:run_instances() now supports the InstanceMarketOptions.MarketType-parameter
* Logs:put_log_events() now supports Firehose as a destination
* Logs:put_subscription_filter() now supports Firehose as a destination
* S3:create_bucket(): Improved error handling for duplicate buckets
* S3:head_object() now validates incoming calls when using the `set_initial_no_auth_action_count`-decorator
* SSM:put_parameter() now supports the DataType-parameter
pip install will no longer log a warning when installing a service that does not have any dependencies Example: pip install moto[acm]
General:
* pip install will no longer log a warning when installing a service that does not have any dependencies
Example: pip install moto[acm]
New Services:
ElasticTranscoder:
* create_pipeline
* delete_pipeline
* list_pipelines
* read_pipeline
* update_pipeline
New Methods:
* DynamoDB:
* describe_endpoints()
Miscellaneous:
* AWSLambda now sends logs to CloudWatch when Docker encounters an error, to make debugging easier
* AWSLambda: For all methods, the FunctionName-parameter can be either the Lambda name or the Lambda ARN
* AWSLambda:list_functions() now returns only the latest version by default
* AWSLambda:invoke() now returns the correct Payload for invocations that resulted in an error
* CloudFormation now supports the creation of type AWS::IAM::ManagedPolicy
* CloudFormation now supports the deletion of type AWS::IAM::InstanceProfile
* CloudFormation now supports the deletion of type AWS::IAM::Role
* CloudWatch:create_log_group() now has proper validation for the length of the logGroupName-parameter
* CloudWatch:describe_log_groups() now has proper validation for the limit-parameter
* CloudWatch:describe_log_streams() now has proper validation for the limit-parameter
* CloudWatch:get_log_events() now has proper validation for the limit-parameter
* CloudWatch:filter_log_events() now has proper validation for the limit-parameter
* DynamoDB:update_item(): fixed a bug where an item was created, despite throwing an error
* DynamoDB:update_item() now throws an error when both UpdateExpression and AttributeUpdates are supplied
* EC2:modify_instance_attribute() now supports Attribute="disableApiTermination"
* S3 now supports direct uploads using the requests-library without having to specify the 'Content-Type' header
* S3 now supports creating S3 buckets that start with a service name, i.e. `iot-bucket`
* S3 now returns the RequestID in every response
* S3:list_parts() now supports the MaxPart-parameter
* SQS:get_queue_attributes() now behaves correctly when the AttributeNames-parameter is not provided
* SQS:receive_message() no longer accepts queue-names for the QueueUrl-parameter, as per AWS' spec
* SQS: The sqs.Queue-class no longer accepts queue-names, only queue-URLs, as per AWS' spec
DynamoDB (API v20111205, now deprecated)
General: * Python 3.9 is now officially supported
Known bugs:
* SQS:get_queue_attributes() throws an error when the AttributeNames-parameter is not provided
New Methods:
* DynamoDB (API v20111205, now deprecated)
* UpdateItem
* EC2:
* modify_vpc_peering_connection_options()
* Glue:
* create_crawler()
* delete_crawler()
* get_crawler()
* get_crawlers()
* SSM:
* describe_document_permission()
* modify_document_permission()
Miscellaneous:
* CloudFormation:create_stack() now has validation for an empty Outputs-parameter
* EC2 now returns errors in the correct format, fixing various bugs with `terraform destroy`
* EC2:authorize_security_group_egress() now returns the securityGroupRuleSet-attribute
* EC2:authorize_security_group_ingress() now returns the securityGroupRuleSet-attribute
* EC2:create_route() now supports the EgressOnlyInternetGatewayId-parameter
* EC2:create_route_table() now adds an IPv6-route when enabled
* EC2:describe_security_groups() now returns the ipv6Ranges-attribute
* EC2:describe_vpc_peering_connection() now supports the VpcPeeringConnectionIds-parameter
* Organisations:detach_policy() now actually detaches a policy - before it was essentially a no-op
* Route53:create_health_check() now supports the CallerReference-parameter
* Route53:create_health_check() now support default values for integer-parameters such as Port/RequestInterval/FailureThreshold
* Route53:create_health_check() now supports several additional parameters such as MeasureLatency/Inverted/Disabled/EnableSNI/ChildHealthChecks
* SQS:create_queue() now supports the queue-attributes FifoThroughputLimit and DeduplicationScope
IOT:create_thing() now throws an exception if the thing type is deprecated
New Methods: * ConfigService: * delete_config_rule() * describe_config_rule() * put_config_rule() * EC2: * create_egress_only_internet_gateway() * delete_egress_only_internet_gateway() * describe_egress_only_internet_gateways() * Fargate: * create_fargate_profile() * delete_fargate_profile() * describe_fargate_profile() * list_fargate_profiles() * IOT: * deprecate_thing_type() * S3: * get_object_lock_configuration() * put_object_legal_hold() * put_object_lock_configuration() * put_object_retention()
Miscellaneous:
* CloudFormation:describe_stack_resource() now throws an exception of the LogicalResourceId does not exist
* CloudFormation: AWS::Events::Rule now supports the EventPattern-property
* CloudFormation: Improved Parameter handling
* EC2:describe_instances() now handles wildcards correctly when filtering by tags
* EC2:terminate_instances() now throws an exception when trying to terminate a protected instance
* ELBv2:describe_rules() now returns the correct value for the IsDefault-attribute
* IOT:create_thing() now throws an exception if the thing type is deprecated
* IOT:update_thing() now throws an exception if the thing type is deprecated
* S3:create_bucket() now supports the ObjectLockEnabledForBucket-parameter
* S3:putObject() is fixed for the Java SDK, which failed with a eTag-validation
Your coding agent can read these notes before it upgrades. Set up the MCP server →