getmoto/moto (moto)
### [`v4.1.14`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4114)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.13...4.1.14)
Docker Digest for 4.1.14: *sha256:4cc82c0803c6b578d5c4146a8e38ff0387dec565483cfaa63eb238cb867e97e6*
New Methods:
* SageMaker:
* create_model_package()
* create_model_package_group()
* describe_model_package()
* list_model_packages()
Miscellaneous:
* CloudFormation: describe_stack_instances() now returns the StackInstanceStatus-attribute
* CloudFront: update_distribution() now supports the DefaultRootObject-parameter
* CloudWatch: get_metric_data() now support (simple) Expressions
* CognitoIDP: initiate_auth() and admin_initiate_auth() now throw a NotAuthorizedError for disabled users
* EC2 VPC's: Add CloudFront, Ground Station and Lattice prefix lists
* IOT: search_index() now returns the connectivity-attribute
* Organizations: Introduce more trusted service principals
* RDS: create_db_cluster() now supports the VpcSecurityGroupIds-parameter
* S3: Optional support for CRC32C checksums
* SNS: publish_batch() now sends the required `MessageDeduplicationId` for FIFO queues
* SQS: send_message_batch() now only throws a `BatchRequestTooLong` if the sum of all messages exceed the limit
### [`v4.1.13`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4113)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.12...4.1.13)
Docker Digest for 4.1.13: *sha256:ec471bcfbf66def946466398f002e8edfbb667bde7b1d8033aedbdd4453fbb8e*
General:
* The ISO-regions introduced in 4.1.12 are now locked behind an environment variable: `MOTO_ENABLE_ISO_REGIONS`
* General performance improvements in the URL matching logic - especially `mock_all` users should notice improvements
New Methods:
* APIGatewayV2:
* create_stage()
* delete_stage()
* get_stage()
* get_stages()
* CloudFront:
* create_origin_access_control()
* delete_origin_access_control()
* get_origin_access_control()
* list_origin_access_controls()
* update_origin_access_control()
* Lambda:
* list_aliases()
* Logs:
* delete_destination()
* describe_destinations()
* get_destination()
* put_destination()
* put_destination_policy()
* Route53:
* get_health_check_status()
* SSM:
* deregister_task_from_maintenance_window()
* describe_maintenance_window_tasks()
* register_task_with_maintenance_window()
Miscellaneous:
* Batch: create_compute_environment() now validates instanceRole and minvCpu
* CloudFront: create_distribution() now correctly handles a single alias
* CloudFront - CustomOrigins now have default timeouts if not supplied
* DynamoDB: delete_item() now throws the correct error when the table is not found
* EC2: describe_security_group_rules() now returns the GroupId
* ECR: create_repository() now validates the repositoryName-parameter
* Lambda: create_function() now returns the ImageConfigResponse and EphemeralStorage parameters
* IOTData: publish() can now handle non-Unicode bytes
* RDS: Automated snapshots now have the appropriate SnapshotType
* Route53: create_hosted_zone() now returns the Location
* Scheduler: get_schedule() now returns the CreationDate and LastModificationDate
* SecretsManager: delete_secret() now throws an error when setting the Recovery to 0 days
* StepFunctions: start_execution() now validates the name-length
### [`v4.1.12`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4112)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.11...4.1.12)
Docker Digest for 4.1.12: *sha256:38e34a1ee4042fd52f15703c2e750780fe0fd809b2745fd263b2d1de33566590*
General:
* Support for ISO regions
* The official Docker image now comes with curl pre-installed
New Services:
* AppConfig:
* create_application()
* create_configuration_profile()
* create_hosted_configuration_version()
* delete_application()
* delete_configuration_profile()
* delete_hosted_configuration_version()
* get_application()
* get_configuration_profile()
* get_hosted_configuration_version()
* list_configuration_profiles()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* update_application()
* update_configuration_profile()
New Methods:
* IdentityStore:
* create_user()
* describe_user()
* delete_user()
* get_group_id()
* delete_group()
* create_group_membership()
* get_group_memberships()
* delete_group_membership()
* SSM:
* create_patch_baseline()
* describe_patch_baselines()
* delete_patch_baseline()
* register_target_with_maintenance_window()
* describe_maintenance_window_targets()
* deregister_target_from_maintenance_window()
Miscellaneous:
* Moto Dashboard no longer fails to load after an S3 file is overwritten
* CloudFormation: AWS:SSM::Parameter now exposes the PhysicalResourceId
* CloudFront: create_invalidation() now behaves correctly when supplying a single Path
* CloudWatch: get_metrics_data() now validates the provided start/end times
* CodeBuild: create_project() now accepts all ServiceRole ARN's, not just ARN's that end in /service-role/
* Config: put_configuration_recorder() now supports resource type exclusions
* DMS: describe_replication_tasks() now returns TableMappings and ReplicationTaskSettings in the correct format
* DynamoDB now supports ProjectionExpressions on (nested) lists
* EC2: New availability zones have been added for ap-south-1, sa-east-1, ca-central-1, us-west-2
* EC2: create_flow_logs() now allows different LogDestinations for a single ResourceId
* EC2: replace_route() now returns the appropriate error when called with missing route
* EC2: create_volume() now supports the Throughput-parameter
* ECR: put_image() now correctly overwrites tags on images with multiple tags
* IAM: add_role_to_instance_profile() now validates whether a role was already attached (only one is allowed)
* Lambda: delete_layer_version() now also accepts function ARNs
* MediaConnect: create_flow_payload() no longer requires the Entitlements-parameter
* RDS: Further improve Global Cluster behaviour
* S3: GET/PUT requests now return Access-Control headers, if a CORS configuration has been set
* S3: put_bucket_lifecycle_configuration() now supports multiple Transitions
* SESv2: create_contact_list() now correctly reads Topics with special characters
* SESv2: send_email() now correctly reads raw emails
### [`v4.1.11`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4111)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.10...4.1.11)
Docker Digest for 4.1.11: *sha256:0ac1ec726e428bd3134c10c32639d72f814bbe002b9d2010420850aab8bc2550*
New Methods:
* AppSync:
* get_introspection_schema()
* Comprehend:
* detect_key_phrases()
* detect_pii_entities()
* detect_sentiment()
Miscellaneous:
* EC2: describe_key_pairs() now returns the CreateTime-attribute
* EC2: describe_spot_fleet_requests() now returns the Tags-attribute
* ECR: put_image(): now behaves correctly on duplicate images with duplicate tags
* Organizations: create_policy() now supports the Tags-parameter
* RDS: creation times of all objects are now in UTC
* Redshift: creation times of all objects are now in UTC
* S3: Bucket names are now global, meaning they have to be unique across accounts
* S3: select_object_content() now supports None-values
* S3: select_object_content() now supports nested FROM-clauses (from x.y as xy)
* SecretsManager - update_secret() now supports the Description-parameter
* SNS now returns the correct error message for non-existing topics
* SNS: Topics are no longer accessible across regions (only across accounts)
* SNS: delete_topic() is now idempotent and no longer throws an error for non-existent topics
* SQS: Requests and responses in JSON-format are now supported
* SSM: MaintenanceWindows now have tagging support
### [`v4.1.10`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4110)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.9...4.1.10)
Docker Digest for 4.1.10: *sha256:095d1dfadc71b4c68f05240129a32acf6dd7ba722c78afd4f01d8c7c3af0ebb4*
New Services:
* Glue:
* create_session()
* delete_session()
* get_session()
* list_sessions()
* stop_session()
* Sagemaker:
* create_transform_job()
* describe_transform_job()
* list_transform_jobs()
Miscellaneous:
* Core: The `date`-header is now returned for all operations (set to the current date)
* AutoScaling: describe_policies() now returns the field `TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics`
* Cloudformation: delete_stack_instances() now behaves correctly when deleting multiple regions
* EC2: create_route() now takes the `VpcEndpointId`-parameter into account
* EC2: describe_instances() now throws an exception when both the InstanceIds and PaginationConfig parameters are supplied
* IAM: get_group() now returns the fields `CreateDate` and `PasswordLastUsed`
* RDS: start_export_task() now returns the field `SourceType`
* S3: aligned checksum calculation with how AWS behaves
* S3: now returns `Accept-Ranges`-headers, instead of `AcceptRanges`, in-line with AWS
* S3: copy_object() now behaves correctly when copying objects in encrypted buckets
* S3: put_object_legal_hold() now takes the VersionId-parameter into account
* S3: put_object_retention() now takes the VersionId-parameter into account
* SecretsManager: list_secrets now returns the fields `LastRotatedDate` and `NextRotationDate`
* SNS: Topics can now be accessed across accounts
* SNS: Fixed a bug so that topics without properties can now be deleted using CloudFormation
### [`v4.1.9`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#419)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.8...4.1.9)
Docker Digest for 4.1.9: *sha256:121a51dcf0e42e53a601803bdeb25324d18b2d45f08a79923c65034f4f14448a*
New Services:
* Glue:
* batch_get_triggers
* create_trigger
* delete_trigger
* get_trigger
* get_triggers
* list_triggers
* start_trigger
* stop_trigger
* Glue:
* create_contact
* create_contact_list
* delete_contact
* delete_contact_list
* get_contact
* get_contact_list
* list_contact_lists
* list_contacts
* send_email
Miscellaneous:
* Kinesis: Improve calculations on stream limits
* EC2: Improve logic behind describe_image_attribute()
* S3: Various improvements to the logic behind copy_object()
* Scheduler: update_schedule() now supports the GroupName-parameter
* SNS: Improve and enhance validation of numeric parameters
* SNS: MessageDeduplicationId is now forwarded to SQS queues (Fixes a bug in 4.1.7)
### [`v4.1.8`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#418)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.7...4.1.8)
Docker Digest for 4.1.8: *sha256:e83d868df71b193d625d9fb031282f6632c6c80d0314cfca6780f9a3f37d1f61*
New Methods:
* DynamoDB:
* batch_execute_statement()
* execute_statement()
* execute_transaction()
* Glue:
* batch_get_jobs()
* delete_job()
* KMS:
* get_public_key()
Miscellaneous:
* Athena: Fixed a bug causing every call to `get_workgroup(WorkGroup="primary")` to fail
* AWSLambda: Performance improvement: Docker images are no longer re-downloaded if they already exist
* BatchSimple now uses the environment variable MOTO_SIMPLE_BATCH_FAIL_AFTER=0 to determine whether the job should fail, and after how many seconds
* EC2: replace_route() now supports the NetworkInterfaceId-parameter
* ECR: batch_get_image() now correctly returns images when requested using an older tag
* ELBv2: describe_target_health() now returns the correct error message for unregistered targets
* S3: copy_object() now adds a checksum to a copied object if requested
* S3: get_object() no longer returns a VersionId for non-versioned buckets
* SES: Templates now allow a single curly brace, and no longer assume it's part of a variable
* SSM: describe_parameters() now allows filtering by existence of tag-name
* StepFunctions: The SF_EXECUTION_HISTORY_TYPE=FAILURE environment variable can now be used to generate failure responses for all operations
* STS: assume_role() now stores the AccessKey in the requesting account
### [`v4.1.7`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#417)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.6...4.1.7)
Docker Digest for 4.1.7: *sha256:6b877d5efe86562d27f296638d6b163c7987913c203874578d00fa1f83eea000*
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
* RDS: describe_db_clusters() now returns the parameters KmsKeyId, NetworkType, DBSubnetGroupName, ScalingConfiguration
* S3: head_object() now returns the AcceptRanges header
* SQS: Improvements in the deduplication-logic
### [`v4.1.6`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#416)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.5...4.1.6)
Docker Digest for 4.1.6: *sha256:36122dca33cb8f70d84734d1a0a6a5931f7a533fab3c58edd7ca0b2ebe325797*
New Services:
* OpenSearch:
* add_tags()
* create_domain()
* delete_domain()
* describe_domain()
* describe_domain_config()
* get_compatible_versions()
* list_tags()
* remove_tags()
* update_domain_config()
Methods:
* S3: select_object_content()
Miscellaneous:
* Batch: The AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS-variable now plays nicely with custom Docker networks
* CloudFormation now supports deletion of AWS::EC2::Subnet, AWS::EC2::VPC
* CloudFormation now supports variable mapping inside "Fn::Sub"
* CloudFormation: delete_stack() now adheres to "DeletionPolicy": "Retain" set for individual resources
* Events: The EventBusName-parameter is now supported for these methods:
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
* S3: get_object() now returns the AcceptRanges header
* S3: head_bucket() now returns the region-header
* SecretsManager now supports partial ARN's
### [`v4.1.5`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#415)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.4...4.1.5)
Docker Digest for 4.1.5: *sha256:0e43c36e1b1390106ec43b2e383486c45fef27646838acaa8073cbd2b4a97a31*
General:
* Our Docker-images are now also hosted in GHCR:
https://github.com/getmoto/moto/pkgs/container/motoserver
New Methods:
* Athena:
* create_prepared_statement()
* get_prepared_statement()
* list_named_queries()
* S3:
* get_object_attributes()
* SecretsManager:
* delete_resource_policy()
* put_resource_policy()
Miscellaneous:
* Athena: Now automatically creates the default WorkGroup called `primary`
* AWSLambda: the default data dir for Docker containers can now be customized using the environment variable MOTO_LAMBDA_DATA_DIR
* CloudFormation now supports the resource AWS::CloudFormation::Stack
* CognitoIDP: the ID-token now uses the key cognito:username, instead of username
* EC2: describe_security_group_rules() now provides the correct value for the IsEgress-parameter
* EC2: revoke_security_group_egress() no longer throws an error when the IPProtocol-argument is not provided
* Glue: get_job() now supports the parameters CodeGenConfigurationNodes, ExecutionClass, SourceControlDetails
* IOT: delete_certificate() now supports the forceDelete-parameter
### [`v4.1.4`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#414)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.3...4.1.4)
Docker Digest for 4.1.4: *sha256:32ed22e2c69826a90482d0e473c460d60c3c7dc60819d95c0c165e0e978208db*
General:
Data is now deleted after the mock ends. If you use manual mocks, you can still choose the keep the data:
mock = mock_sqs()
mock.start()
mock.stop(remove_data=False)
New Services:
* Neptune:
* create_db_cluster()
* create_global_cluster()
* delete_db_cluster()
* delete_global_cluster()
* describe_db_clusters()
* describe_global_clusters()
* describe_orderable_db_instance_options()
* modify_db_cluster()
* start_db_cluster()
New Methods:
* Glue:
* get_jobs()
* get_table_version()
Miscellaneous:
* APIGateway: update_rest_api() now updates the policy-attribute
* Athena now exposes an endpoint to store mock query results. See http://docs.getmoto.org/en/latest/docs/services/athena.html
* CognitoIDP: The idToken now contains the cognito:groups attribute
* DynamoDB: scan() now respects the Projection-attribute of a GSI/LSI
* KMS: encrypt(), decrypt(), re_encrypt() now accept aliases as arguments
* KMS: list_aliases() now supports the KeyId-parameter
* Lambda: FIFO Queues are now supported event sources
* RDS: create_option_group() now returns the OptionGroupArn-attribute
* ResourceGroupsTaggingAPI: get_resources() now supports RDS Clusters and ClusterSnapshots
* SSM now includes the parameters at /aws/service/ecs/optimized-ami
### [`v4.1.3`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#413)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.2...4.1.3)
Docker Digest for 4.1.3: *sha256:3139cdae44d5da35d92d9e385cb878581eef8df3514cbda5cbc3e103488095a7*
New Services:
* IdentityStore:
* create_group()
Miscellaneous:
* DynamoDB: create_table() now deals correctly with non-key attributes supplied as part of the KeySchema
* Glue: get_partitions() now supports nano-second precision when filtering timestamps
* Glue: get_table_version() now returns the Table.VersionId and Table.UpdateTime-attributes
* Transcribe: start_transcription_job() now supports the IdentifyMultipleLanguages-parameter
### [`v4.1.2`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#412)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.1...4.1.2)
Docker Digest for 4.1.2: *sha256:742bd95faadb80133aa7082ca6f4d1d71af2f4802833e92348b082b11ec8d4ed*
New Methods:
* Batch:
* create_scheduling_policy()
* delete_scheduling_policy()
* describe_scheduling_policies()
* list_scheduling_policies()
* update_scheduling_policy()
* EC2:
* allocate_hosts()
* describe_hosts()
* modify_hosts()
* release_hosts()
* ECS:
* put_cluster_capacity_providers()
* update_capacity_provider()
* update_cluster()
* Glue:
* batch_get_crawlers()
Miscellaneous:
* AWSLambda: Base Images are now pulled from multiple repositories, increasing the number of supported language/versions out of the box
* CognitoIDP: admin_update_user_attributes() now checks for duplicate emails
* ECS: create_cluster() now supports the parameters configuration, capacityProviders, defaultCapacityProviderStrategy
* ECS: delete_cluster() now marks the cluster as INACTIVE, rather than removing it outright, in-line with how AWS behaves
* ECS: register_task_definition() now supports the parameters proxyConfiguration, inferenceAccelerators, runtimePlatform, ipcMode, pidMode, ephemeralStorage
* ECS: run_task() no longer crashes when providing launchType=FARGATE
* ECS now has improved tagging-support
* EKS: create_nodegroup() now returns the correct launchTemplate-attributes
* Kinesis now supports the streamARN-parameter for all arguments
* S3: Improved bucket policy enforcement
### [`v4.1.1`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4114)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.1.0...4.1.1)
Docker Digest for 4.1.14: *sha256:4cc82c0803c6b578d5c4146a8e38ff0387dec565483cfaa63eb238cb867e97e6*
New Methods:
* SageMaker:
* create_model_package()
* create_model_package_group()
* describe_model_package()
* list_model_packages()
Miscellaneous:
* CloudFormation: describe_stack_instances() now returns the StackInstanceStatus-attribute
* CloudFront: update_distribution() now supports the DefaultRootObject-parameter
* CloudWatch: get_metric_data() now support (simple) Expressions
* CognitoIDP: initiate_auth() and admin_initiate_auth() now throw a NotAuthorizedError for disabled users
* EC2 VPC's: Add CloudFront, Ground Station and Lattice prefix lists
* IOT: search_index() now returns the connectivity-attribute
* Organizations: Introduce more trusted service principals
* RDS: create_db_cluster() now supports the VpcSecurityGroupIds-parameter
* S3: Optional support for CRC32C checksums
* SNS: publish_batch() now sends the required `MessageDeduplicationId` for FIFO queues
* SQS: send_message_batch() now only throws a `BatchRequestTooLong` if the sum of all messages exceed the limit
### [`v4.1.0`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#410)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.13...4.1.0)
Docker Digest for 4.1.0: *sha256:1c38613f7273054650d08f3cb3ce118753296d08ffbfee8c96400c89a529c9ca*
General:
* Dropped support for Py 3.6
* Moto now uses setup.cfg to hold our packaging configuration, instead of setup.py, making Moto compatible with more recent Pip-versions
### [`v4.0.13`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4013)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.12...4.0.13)
Docker Digest for 4.0.13: *sha256:703a9d464c11e1f4cacff66acdc9b46f9fa8fb0b969ca9f1e79fa4eb41678565*
New Methods:
* EC2:
* get_password_data()
* Sagemaker:
* update_pipeline()
* SecretsManager:
* cancel_rotate_secret()
Miscellaneous:
* CloudWatch: put_metric_data() now supports the StatisticValues-parameter
* CognitoIDP: sign_out() now also invalidates the AccessToken
* IAM: get_account_authorization_details() now returns the Tags-attribute
* IOT: create_keys_and_certificate() now creates valid certificates, instead of random data
### [`v4.0.12`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4012)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.11...4.0.12)
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
### [`v4.0.11`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4011)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.10...4.0.11)
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
### [`v4.0.10`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4010)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.9...4.0.10)
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
### [`v4.0.9`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#409)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.8...4.0.9)
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
### [`v4.0.8`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#408)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.7...4.0.8)
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
### [`v4.0.7`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#407)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.6...4.0.7)
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
### [`v4.0.6`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#406)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.5...4.0.6)
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
### [`v4.0.5`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#405)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.3...4.0.5)
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'
### [`v4.0.3`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#403)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.2...4.0.3)
Docker Digest for 4.0.3:
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
### [`v4.0.2`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#402)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.1...4.0.2)
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
### [`v4.0.1`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4013)
[Compare Source](https://togithub.com/getmoto/moto/compare/4.0.0...4.0.1)
Docker Digest for 4.0.13: *sha256:703a9d464c11e1f4cacff66acdc9b46f9fa8fb0b969ca9f1e79fa4eb41678565*
New Methods:
* EC2:
* get_password_data()
* Sagemaker:
* update_pipeline()
* SecretsManager:
* cancel_rotate_secret()
Miscellaneous:
* CloudWatch: put_metric_data() now supports the StatisticValues-parameter
* CognitoIDP: sign_out() now also invalidates the AccessToken
* IAM: get_account_authorization_details() now returns the Tags-attribute
* IOT: create_keys_and_certificate() now creates valid certificates, instead of random data
### [`v4.0.0`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#400)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.18...4.0.0)
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
### [`v3.1.18`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3118)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.17...3.1.18)
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
### [`v3.1.17`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3117)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.16...3.1.17)
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
### [`v3.1.16`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3116)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.15...3.1.16)
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.
### [`v3.1.15`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3115)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.14...3.1.15)
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()
### [`v3.1.14`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3114)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.13...3.1.14)
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
### [`v3.1.13`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3113)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.12...3.1.13)
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.
### [`v3.1.12`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3112)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.11...3.1.12)
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
### [`v3.1.11`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3111)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.10...3.1.11)
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.
### [`v3.1.10`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#3110)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.9...3.1.10)
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 availabilty 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
### [`v3.1.9`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#319)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.8...3.1.9)
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
### [`v3.1.8`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#318)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.7...3.1.8)
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
### [`v3.1.7`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#317)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.6...3.1.7)
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
### [`v3.1.6`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#316)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.5...3.1.6)
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
### [`v3.1.5`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#315)
[Compare Source](https://togithub.com/getmoto/moto/compare/3.1.4...3.1.5)
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
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==1.3.13
->==4.1.14
Release Notes
getmoto/moto (moto)
### [`v4.1.14`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4114) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.13...4.1.14) Docker Digest for 4.1.14: *sha256:4cc82c0803c6b578d5c4146a8e38ff0387dec565483cfaa63eb238cb867e97e6* New Methods: * SageMaker: * create_model_package() * create_model_package_group() * describe_model_package() * list_model_packages() Miscellaneous: * CloudFormation: describe_stack_instances() now returns the StackInstanceStatus-attribute * CloudFront: update_distribution() now supports the DefaultRootObject-parameter * CloudWatch: get_metric_data() now support (simple) Expressions * CognitoIDP: initiate_auth() and admin_initiate_auth() now throw a NotAuthorizedError for disabled users * EC2 VPC's: Add CloudFront, Ground Station and Lattice prefix lists * IOT: search_index() now returns the connectivity-attribute * Organizations: Introduce more trusted service principals * RDS: create_db_cluster() now supports the VpcSecurityGroupIds-parameter * S3: Optional support for CRC32C checksums * SNS: publish_batch() now sends the required `MessageDeduplicationId` for FIFO queues * SQS: send_message_batch() now only throws a `BatchRequestTooLong` if the sum of all messages exceed the limit ### [`v4.1.13`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4113) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.12...4.1.13) Docker Digest for 4.1.13: *sha256:ec471bcfbf66def946466398f002e8edfbb667bde7b1d8033aedbdd4453fbb8e* General: * The ISO-regions introduced in 4.1.12 are now locked behind an environment variable: `MOTO_ENABLE_ISO_REGIONS` * General performance improvements in the URL matching logic - especially `mock_all` users should notice improvements New Methods: * APIGatewayV2: * create_stage() * delete_stage() * get_stage() * get_stages() * CloudFront: * create_origin_access_control() * delete_origin_access_control() * get_origin_access_control() * list_origin_access_controls() * update_origin_access_control() * Lambda: * list_aliases() * Logs: * delete_destination() * describe_destinations() * get_destination() * put_destination() * put_destination_policy() * Route53: * get_health_check_status() * SSM: * deregister_task_from_maintenance_window() * describe_maintenance_window_tasks() * register_task_with_maintenance_window() Miscellaneous: * Batch: create_compute_environment() now validates instanceRole and minvCpu * CloudFront: create_distribution() now correctly handles a single alias * CloudFront - CustomOrigins now have default timeouts if not supplied * DynamoDB: delete_item() now throws the correct error when the table is not found * EC2: describe_security_group_rules() now returns the GroupId * ECR: create_repository() now validates the repositoryName-parameter * Lambda: create_function() now returns the ImageConfigResponse and EphemeralStorage parameters * IOTData: publish() can now handle non-Unicode bytes * RDS: Automated snapshots now have the appropriate SnapshotType * Route53: create_hosted_zone() now returns the Location * Scheduler: get_schedule() now returns the CreationDate and LastModificationDate * SecretsManager: delete_secret() now throws an error when setting the Recovery to 0 days * StepFunctions: start_execution() now validates the name-length ### [`v4.1.12`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4112) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.11...4.1.12) Docker Digest for 4.1.12: *sha256:38e34a1ee4042fd52f15703c2e750780fe0fd809b2745fd263b2d1de33566590* General: * Support for ISO regions * The official Docker image now comes with curl pre-installed New Services: * AppConfig: * create_application() * create_configuration_profile() * create_hosted_configuration_version() * delete_application() * delete_configuration_profile() * delete_hosted_configuration_version() * get_application() * get_configuration_profile() * get_hosted_configuration_version() * list_configuration_profiles() * list_tags_for_resource() * tag_resource() * untag_resource() * update_application() * update_configuration_profile() New Methods: * IdentityStore: * create_user() * describe_user() * delete_user() * get_group_id() * delete_group() * create_group_membership() * get_group_memberships() * delete_group_membership() * SSM: * create_patch_baseline() * describe_patch_baselines() * delete_patch_baseline() * register_target_with_maintenance_window() * describe_maintenance_window_targets() * deregister_target_from_maintenance_window() Miscellaneous: * Moto Dashboard no longer fails to load after an S3 file is overwritten * CloudFormation: AWS:SSM::Parameter now exposes the PhysicalResourceId * CloudFront: create_invalidation() now behaves correctly when supplying a single Path * CloudWatch: get_metrics_data() now validates the provided start/end times * CodeBuild: create_project() now accepts all ServiceRole ARN's, not just ARN's that end in /service-role/ * Config: put_configuration_recorder() now supports resource type exclusions * DMS: describe_replication_tasks() now returns TableMappings and ReplicationTaskSettings in the correct format * DynamoDB now supports ProjectionExpressions on (nested) lists * EC2: New availability zones have been added for ap-south-1, sa-east-1, ca-central-1, us-west-2 * EC2: create_flow_logs() now allows different LogDestinations for a single ResourceId * EC2: replace_route() now returns the appropriate error when called with missing route * EC2: create_volume() now supports the Throughput-parameter * ECR: put_image() now correctly overwrites tags on images with multiple tags * IAM: add_role_to_instance_profile() now validates whether a role was already attached (only one is allowed) * Lambda: delete_layer_version() now also accepts function ARNs * MediaConnect: create_flow_payload() no longer requires the Entitlements-parameter * RDS: Further improve Global Cluster behaviour * S3: GET/PUT requests now return Access-Control headers, if a CORS configuration has been set * S3: put_bucket_lifecycle_configuration() now supports multiple Transitions * SESv2: create_contact_list() now correctly reads Topics with special characters * SESv2: send_email() now correctly reads raw emails ### [`v4.1.11`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4111) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.10...4.1.11) Docker Digest for 4.1.11: *sha256:0ac1ec726e428bd3134c10c32639d72f814bbe002b9d2010420850aab8bc2550* New Methods: * AppSync: * get_introspection_schema() * Comprehend: * detect_key_phrases() * detect_pii_entities() * detect_sentiment() Miscellaneous: * EC2: describe_key_pairs() now returns the CreateTime-attribute * EC2: describe_spot_fleet_requests() now returns the Tags-attribute * ECR: put_image(): now behaves correctly on duplicate images with duplicate tags * Organizations: create_policy() now supports the Tags-parameter * RDS: creation times of all objects are now in UTC * Redshift: creation times of all objects are now in UTC * S3: Bucket names are now global, meaning they have to be unique across accounts * S3: select_object_content() now supports None-values * S3: select_object_content() now supports nested FROM-clauses (from x.y as xy) * SecretsManager - update_secret() now supports the Description-parameter * SNS now returns the correct error message for non-existing topics * SNS: Topics are no longer accessible across regions (only across accounts) * SNS: delete_topic() is now idempotent and no longer throws an error for non-existent topics * SQS: Requests and responses in JSON-format are now supported * SSM: MaintenanceWindows now have tagging support ### [`v4.1.10`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4110) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.9...4.1.10) Docker Digest for 4.1.10: *sha256:095d1dfadc71b4c68f05240129a32acf6dd7ba722c78afd4f01d8c7c3af0ebb4* New Services: * Glue: * create_session() * delete_session() * get_session() * list_sessions() * stop_session() * Sagemaker: * create_transform_job() * describe_transform_job() * list_transform_jobs() Miscellaneous: * Core: The `date`-header is now returned for all operations (set to the current date) * AutoScaling: describe_policies() now returns the field `TargetTrackingConfiguration.CustomizedMetricSpecification.Metrics` * Cloudformation: delete_stack_instances() now behaves correctly when deleting multiple regions * EC2: create_route() now takes the `VpcEndpointId`-parameter into account * EC2: describe_instances() now throws an exception when both the InstanceIds and PaginationConfig parameters are supplied * IAM: get_group() now returns the fields `CreateDate` and `PasswordLastUsed` * RDS: start_export_task() now returns the field `SourceType` * S3: aligned checksum calculation with how AWS behaves * S3: now returns `Accept-Ranges`-headers, instead of `AcceptRanges`, in-line with AWS * S3: copy_object() now behaves correctly when copying objects in encrypted buckets * S3: put_object_legal_hold() now takes the VersionId-parameter into account * S3: put_object_retention() now takes the VersionId-parameter into account * SecretsManager: list_secrets now returns the fields `LastRotatedDate` and `NextRotationDate` * SNS: Topics can now be accessed across accounts * SNS: Fixed a bug so that topics without properties can now be deleted using CloudFormation ### [`v4.1.9`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#419) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.8...4.1.9) Docker Digest for 4.1.9: *sha256:121a51dcf0e42e53a601803bdeb25324d18b2d45f08a79923c65034f4f14448a* New Services: * Glue: * batch_get_triggers * create_trigger * delete_trigger * get_trigger * get_triggers * list_triggers * start_trigger * stop_trigger * Glue: * create_contact * create_contact_list * delete_contact * delete_contact_list * get_contact * get_contact_list * list_contact_lists * list_contacts * send_email Miscellaneous: * Kinesis: Improve calculations on stream limits * EC2: Improve logic behind describe_image_attribute() * S3: Various improvements to the logic behind copy_object() * Scheduler: update_schedule() now supports the GroupName-parameter * SNS: Improve and enhance validation of numeric parameters * SNS: MessageDeduplicationId is now forwarded to SQS queues (Fixes a bug in 4.1.7) ### [`v4.1.8`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#418) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.7...4.1.8) Docker Digest for 4.1.8: *sha256:e83d868df71b193d625d9fb031282f6632c6c80d0314cfca6780f9a3f37d1f61* New Methods: * DynamoDB: * batch_execute_statement() * execute_statement() * execute_transaction() * Glue: * batch_get_jobs() * delete_job() * KMS: * get_public_key() Miscellaneous: * Athena: Fixed a bug causing every call to `get_workgroup(WorkGroup="primary")` to fail * AWSLambda: Performance improvement: Docker images are no longer re-downloaded if they already exist * BatchSimple now uses the environment variable MOTO_SIMPLE_BATCH_FAIL_AFTER=0 to determine whether the job should fail, and after how many seconds * EC2: replace_route() now supports the NetworkInterfaceId-parameter * ECR: batch_get_image() now correctly returns images when requested using an older tag * ELBv2: describe_target_health() now returns the correct error message for unregistered targets * S3: copy_object() now adds a checksum to a copied object if requested * S3: get_object() no longer returns a VersionId for non-versioned buckets * SES: Templates now allow a single curly brace, and no longer assume it's part of a variable * SSM: describe_parameters() now allows filtering by existence of tag-name * StepFunctions: The SF_EXECUTION_HISTORY_TYPE=FAILURE environment variable can now be used to generate failure responses for all operations * STS: assume_role() now stores the AccessKey in the requesting account ### [`v4.1.7`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#417) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.6...4.1.7) Docker Digest for 4.1.7: *sha256:6b877d5efe86562d27f296638d6b163c7987913c203874578d00fa1f83eea000* 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 * RDS: describe_db_clusters() now returns the parameters KmsKeyId, NetworkType, DBSubnetGroupName, ScalingConfiguration * S3: head_object() now returns the AcceptRanges header * SQS: Improvements in the deduplication-logic ### [`v4.1.6`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#416) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.5...4.1.6) Docker Digest for 4.1.6: *sha256:36122dca33cb8f70d84734d1a0a6a5931f7a533fab3c58edd7ca0b2ebe325797* New Services: * OpenSearch: * add_tags() * create_domain() * delete_domain() * describe_domain() * describe_domain_config() * get_compatible_versions() * list_tags() * remove_tags() * update_domain_config() Methods: * S3: select_object_content() Miscellaneous: * Batch: The AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS-variable now plays nicely with custom Docker networks * CloudFormation now supports deletion of AWS::EC2::Subnet, AWS::EC2::VPC * CloudFormation now supports variable mapping inside "Fn::Sub" * CloudFormation: delete_stack() now adheres to "DeletionPolicy": "Retain" set for individual resources * Events: The EventBusName-parameter is now supported for these methods: 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 * S3: get_object() now returns the AcceptRanges header * S3: head_bucket() now returns the region-header * SecretsManager now supports partial ARN's ### [`v4.1.5`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#415) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.4...4.1.5) Docker Digest for 4.1.5: *sha256:0e43c36e1b1390106ec43b2e383486c45fef27646838acaa8073cbd2b4a97a31* General: * Our Docker-images are now also hosted in GHCR: https://github.com/getmoto/moto/pkgs/container/motoserver New Methods: * Athena: * create_prepared_statement() * get_prepared_statement() * list_named_queries() * S3: * get_object_attributes() * SecretsManager: * delete_resource_policy() * put_resource_policy() Miscellaneous: * Athena: Now automatically creates the default WorkGroup called `primary` * AWSLambda: the default data dir for Docker containers can now be customized using the environment variable MOTO_LAMBDA_DATA_DIR * CloudFormation now supports the resource AWS::CloudFormation::Stack * CognitoIDP: the ID-token now uses the key cognito:username, instead of username * EC2: describe_security_group_rules() now provides the correct value for the IsEgress-parameter * EC2: revoke_security_group_egress() no longer throws an error when the IPProtocol-argument is not provided * Glue: get_job() now supports the parameters CodeGenConfigurationNodes, ExecutionClass, SourceControlDetails * IOT: delete_certificate() now supports the forceDelete-parameter ### [`v4.1.4`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#414) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.3...4.1.4) Docker Digest for 4.1.4: *sha256:32ed22e2c69826a90482d0e473c460d60c3c7dc60819d95c0c165e0e978208db* General: Data is now deleted after the mock ends. If you use manual mocks, you can still choose the keep the data: mock = mock_sqs() mock.start() mock.stop(remove_data=False) New Services: * Neptune: * create_db_cluster() * create_global_cluster() * delete_db_cluster() * delete_global_cluster() * describe_db_clusters() * describe_global_clusters() * describe_orderable_db_instance_options() * modify_db_cluster() * start_db_cluster() New Methods: * Glue: * get_jobs() * get_table_version() Miscellaneous: * APIGateway: update_rest_api() now updates the policy-attribute * Athena now exposes an endpoint to store mock query results. See http://docs.getmoto.org/en/latest/docs/services/athena.html * CognitoIDP: The idToken now contains the cognito:groups attribute * DynamoDB: scan() now respects the Projection-attribute of a GSI/LSI * KMS: encrypt(), decrypt(), re_encrypt() now accept aliases as arguments * KMS: list_aliases() now supports the KeyId-parameter * Lambda: FIFO Queues are now supported event sources * RDS: create_option_group() now returns the OptionGroupArn-attribute * ResourceGroupsTaggingAPI: get_resources() now supports RDS Clusters and ClusterSnapshots * SSM now includes the parameters at /aws/service/ecs/optimized-ami ### [`v4.1.3`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#413) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.2...4.1.3) Docker Digest for 4.1.3: *sha256:3139cdae44d5da35d92d9e385cb878581eef8df3514cbda5cbc3e103488095a7* New Services: * IdentityStore: * create_group() Miscellaneous: * DynamoDB: create_table() now deals correctly with non-key attributes supplied as part of the KeySchema * Glue: get_partitions() now supports nano-second precision when filtering timestamps * Glue: get_table_version() now returns the Table.VersionId and Table.UpdateTime-attributes * Transcribe: start_transcription_job() now supports the IdentifyMultipleLanguages-parameter ### [`v4.1.2`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#412) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.1...4.1.2) Docker Digest for 4.1.2: *sha256:742bd95faadb80133aa7082ca6f4d1d71af2f4802833e92348b082b11ec8d4ed* New Methods: * Batch: * create_scheduling_policy() * delete_scheduling_policy() * describe_scheduling_policies() * list_scheduling_policies() * update_scheduling_policy() * EC2: * allocate_hosts() * describe_hosts() * modify_hosts() * release_hosts() * ECS: * put_cluster_capacity_providers() * update_capacity_provider() * update_cluster() * Glue: * batch_get_crawlers() Miscellaneous: * AWSLambda: Base Images are now pulled from multiple repositories, increasing the number of supported language/versions out of the box * CognitoIDP: admin_update_user_attributes() now checks for duplicate emails * ECS: create_cluster() now supports the parameters configuration, capacityProviders, defaultCapacityProviderStrategy * ECS: delete_cluster() now marks the cluster as INACTIVE, rather than removing it outright, in-line with how AWS behaves * ECS: register_task_definition() now supports the parameters proxyConfiguration, inferenceAccelerators, runtimePlatform, ipcMode, pidMode, ephemeralStorage * ECS: run_task() no longer crashes when providing launchType=FARGATE * ECS now has improved tagging-support * EKS: create_nodegroup() now returns the correct launchTemplate-attributes * Kinesis now supports the streamARN-parameter for all arguments * S3: Improved bucket policy enforcement ### [`v4.1.1`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4114) [Compare Source](https://togithub.com/getmoto/moto/compare/4.1.0...4.1.1) Docker Digest for 4.1.14: *sha256:4cc82c0803c6b578d5c4146a8e38ff0387dec565483cfaa63eb238cb867e97e6* New Methods: * SageMaker: * create_model_package() * create_model_package_group() * describe_model_package() * list_model_packages() Miscellaneous: * CloudFormation: describe_stack_instances() now returns the StackInstanceStatus-attribute * CloudFront: update_distribution() now supports the DefaultRootObject-parameter * CloudWatch: get_metric_data() now support (simple) Expressions * CognitoIDP: initiate_auth() and admin_initiate_auth() now throw a NotAuthorizedError for disabled users * EC2 VPC's: Add CloudFront, Ground Station and Lattice prefix lists * IOT: search_index() now returns the connectivity-attribute * Organizations: Introduce more trusted service principals * RDS: create_db_cluster() now supports the VpcSecurityGroupIds-parameter * S3: Optional support for CRC32C checksums * SNS: publish_batch() now sends the required `MessageDeduplicationId` for FIFO queues * SQS: send_message_batch() now only throws a `BatchRequestTooLong` if the sum of all messages exceed the limit ### [`v4.1.0`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#410) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.13...4.1.0) Docker Digest for 4.1.0: *sha256:1c38613f7273054650d08f3cb3ce118753296d08ffbfee8c96400c89a529c9ca* General: * Dropped support for Py 3.6 * Moto now uses setup.cfg to hold our packaging configuration, instead of setup.py, making Moto compatible with more recent Pip-versions ### [`v4.0.13`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4013) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.12...4.0.13) Docker Digest for 4.0.13: *sha256:703a9d464c11e1f4cacff66acdc9b46f9fa8fb0b969ca9f1e79fa4eb41678565* New Methods: * EC2: * get_password_data() * Sagemaker: * update_pipeline() * SecretsManager: * cancel_rotate_secret() Miscellaneous: * CloudWatch: put_metric_data() now supports the StatisticValues-parameter * CognitoIDP: sign_out() now also invalidates the AccessToken * IAM: get_account_authorization_details() now returns the Tags-attribute * IOT: create_keys_and_certificate() now creates valid certificates, instead of random data ### [`v4.0.12`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4012) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.11...4.0.12) 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 ### [`v4.0.11`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4011) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.10...4.0.11) 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 ### [`v4.0.10`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#4010) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.9...4.0.10) 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 ### [`v4.0.9`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#409) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.8...4.0.9) 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 ### [`v4.0.8`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#408) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.7...4.0.8) 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 ### [`v4.0.7`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#407) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.6...4.0.7) 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 ### [`v4.0.6`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#406) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.5...4.0.6) 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 ### [`v4.0.5`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#405) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.3...4.0.5) 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' ### [`v4.0.3`](https://togithub.com/getmoto/moto/blob/HEAD/CHANGELOG.md#403) [Compare Source](https://togithub.com/getmoto/moto/compare/4.0.2...4.0.3) Docker Digest for 4.0.3:Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.