diff --git a/CHANGELOG.md b/CHANGELOG.md index 5836554ad49a..2952aa56e285 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,26 @@ Moto Changelog ============== +5.0.18 +----- +Docker Digest for 5.0.18: + + New Methods: + * RDS: + * delete_db_proxy() + * deregister_db_proxy_targets() + * describe_db_proxy_target_groups() + * describe_db_proxy_targets() + * modify_db_proxy_target_group() + * register_db_proxy_targets() + + Miscellaneous: + * CloudFormation: create_change_set() now supports the UsePreviousTemplate-parameter + * CognitoIDP: MFA-related features (like AssociateSoftwareToken) now also work with non-Python SDK's + * ECS: update_service() now correctly sets the createdAt/updatedAt values when forceNewDeployment=True + * ELBv2: remove_tags() now throws a ResourceNotFound Exception + + 5.0.17 ----- Docker Digest for 5.0.17: _sha256:39372432cb24ab46211ca45648ca787e104589070b0d0a13ea0d73c6eb550079_ diff --git a/IMPLEMENTATION_COVERAGE.md b/IMPLEMENTATION_COVERAGE.md index f80ef52af228..9a028d6bdad0 100644 --- a/IMPLEMENTATION_COVERAGE.md +++ b/IMPLEMENTATION_COVERAGE.md @@ -6379,6 +6379,7 @@ - [ ] start_asset_bundle_export_job - [ ] start_asset_bundle_import_job - [ ] start_dashboard_snapshot_job +- [ ] start_dashboard_snapshot_job_schedule - [ ] tag_resource - [ ] untag_resource - [ ] update_account_customization @@ -6640,7 +6641,7 @@ ## redshift
-22% implemented +21% implemented - [ ] accept_reserved_node_exchange - [ ] add_partner @@ -6664,6 +6665,7 @@ - [ ] create_event_subscription - [ ] create_hsm_client_certificate - [ ] create_hsm_configuration +- [ ] create_integration - [ ] create_redshift_idc_application - [ ] create_scheduled_action - [X] create_snapshot_copy_grant @@ -6682,6 +6684,7 @@ - [ ] delete_event_subscription - [ ] delete_hsm_client_certificate - [ ] delete_hsm_configuration +- [ ] delete_integration - [ ] delete_partner - [ ] delete_redshift_idc_application - [ ] delete_resource_policy @@ -6714,6 +6717,7 @@ - [ ] describe_hsm_client_certificates - [ ] describe_hsm_configurations - [ ] describe_inbound_integrations +- [ ] describe_integrations - [ ] describe_logging_status - [ ] describe_node_configuration_options - [ ] describe_orderable_cluster_options @@ -6755,6 +6759,7 @@ - [ ] modify_custom_domain_association - [ ] modify_endpoint_access - [ ] modify_event_subscription +- [ ] modify_integration - [ ] modify_redshift_idc_application - [ ] modify_scheduled_action - [X] modify_snapshot_copy_retention_period @@ -8755,6 +8760,7 @@ - [ ] list_certificates - [ ] list_connectors - [ ] list_executions +- [ ] list_file_transfer_results - [ ] list_host_keys - [ ] list_profiles - [ ] list_security_policies diff --git a/docs/docs/services/quicksight.rst b/docs/docs/services/quicksight.rst index 90d4b7b1a9b6..f97f959b3161 100644 --- a/docs/docs/services/quicksight.rst +++ b/docs/docs/services/quicksight.rst @@ -164,6 +164,7 @@ quicksight - [ ] start_asset_bundle_export_job - [ ] start_asset_bundle_import_job - [ ] start_dashboard_snapshot_job +- [ ] start_dashboard_snapshot_job_schedule - [ ] tag_resource - [ ] untag_resource - [ ] update_account_customization diff --git a/docs/docs/services/redshift.rst b/docs/docs/services/redshift.rst index 840e7fb45bb9..09ce63485a4d 100644 --- a/docs/docs/services/redshift.rst +++ b/docs/docs/services/redshift.rst @@ -36,6 +36,7 @@ redshift - [ ] create_event_subscription - [ ] create_hsm_client_certificate - [ ] create_hsm_configuration +- [ ] create_integration - [ ] create_redshift_idc_application - [ ] create_scheduled_action - [X] create_snapshot_copy_grant @@ -54,6 +55,7 @@ redshift - [ ] delete_event_subscription - [ ] delete_hsm_client_certificate - [ ] delete_hsm_configuration +- [ ] delete_integration - [ ] delete_partner - [ ] delete_redshift_idc_application - [ ] delete_resource_policy @@ -86,6 +88,7 @@ redshift - [ ] describe_hsm_client_certificates - [ ] describe_hsm_configurations - [ ] describe_inbound_integrations +- [ ] describe_integrations - [ ] describe_logging_status - [ ] describe_node_configuration_options - [ ] describe_orderable_cluster_options @@ -127,6 +130,7 @@ redshift - [ ] modify_custom_domain_association - [ ] modify_endpoint_access - [ ] modify_event_subscription +- [ ] modify_integration - [ ] modify_redshift_idc_application - [ ] modify_scheduled_action - [X] modify_snapshot_copy_retention_period diff --git a/docs/docs/services/transfer.rst b/docs/docs/services/transfer.rst index 2d1a3d6a45f0..63cb525d890a 100644 --- a/docs/docs/services/transfer.rst +++ b/docs/docs/services/transfer.rst @@ -52,6 +52,7 @@ transfer - [ ] list_certificates - [ ] list_connectors - [ ] list_executions +- [ ] list_file_transfer_results - [ ] list_host_keys - [ ] list_profiles - [ ] list_security_policies diff --git a/moto/backend_index.py b/moto/backend_index.py index 35b88973d3f7..781aeeb2affc 100644 --- a/moto/backend_index.py +++ b/moto/backend_index.py @@ -8,9 +8,7 @@ ("apigateway", re.compile("https?://apigateway\\.(.+)\\.amazonaws.com")), ( "apigatewaymanagementapi", - re.compile( - "https?://([^.]+\\.)*execute-api\\.[a-z]{2}-[-a-z]+-\\d+\\.amazonaws\\.com" - ), + re.compile("https?://([^.]+\\.)*execute-api\\.[^.]+\\.amazonaws\\.com"), ), ("appconfig", re.compile("https?://appconfig\\.(.+)\\.amazonaws\\.com")), ( @@ -121,10 +119,13 @@ ("memorydb", re.compile("https?://memory-db\\.(.+)\\.amazonaws\\.com")), ( "meteringmarketplace", - re.compile("https?://metering.marketplace.(.+).amazonaws.com"), + re.compile("https?://metering\\.marketplace\\.(.+)\\.amazonaws\\.com"), + ), + ( + "meteringmarketplace", + re.compile("https?://aws-marketplace\\.(.+)\\.amazonaws\\.com"), ), - ("meteringmarketplace", re.compile("https?://aws-marketplace.(.+).amazonaws.com")), - ("moto_api._internal", re.compile("https?://motoapi.amazonaws.com")), + ("moto_api._internal", re.compile("https?://motoapi\\.amazonaws\\.com")), ("mq", re.compile("https?://mq\\.(.+)\\.amazonaws\\.com")), ("networkmanager", re.compile("https?://networkmanager\\.(.+)\\.amazonaws\\.com")), ("opensearchserverless", re.compile("https?://aoss\\.(.+)\\.amazonaws\\.com")), @@ -171,7 +172,7 @@ ("sagemaker", re.compile("https?://api\\.sagemaker\\.(.+)\\.amazonaws.com")), ( "sagemakermetrics", - re.compile("https?://metrics.sagemaker\\.(.+)\\.amazonaws\\.com"), + re.compile("https?://metrics\\.sagemaker\\.(.+)\\.amazonaws\\.com"), ), ( "sagemakerruntime", @@ -202,7 +203,7 @@ ("textract", re.compile("https?://textract\\.(.+)\\.amazonaws\\.com")), ( "timestreamquery", - re.compile("https?://query.timestream\\.(.+)\\.amazonaws\\.com"), + re.compile("https?://query\\.timestream\\.(.+)\\.amazonaws\\.com"), ), ( "timestreamwrite", diff --git a/moto/meteringmarketplace/urls.py b/moto/meteringmarketplace/urls.py index 64abc56b5818..5d9db9c39e00 100644 --- a/moto/meteringmarketplace/urls.py +++ b/moto/meteringmarketplace/urls.py @@ -1,8 +1,8 @@ from .responses import MarketplaceMeteringResponse url_bases = [ - "https?://metering.marketplace.(.+).amazonaws.com", - "https?://aws-marketplace.(.+).amazonaws.com", + r"https?://metering\.marketplace\.(.+)\.amazonaws\.com", + r"https?://aws-marketplace\.(.+)\.amazonaws\.com", ] url_paths = {"{0}/$": MarketplaceMeteringResponse.dispatch} diff --git a/moto/moto_api/_internal/urls.py b/moto/moto_api/_internal/urls.py index 9f3e66f18110..7f814c9e1fbd 100644 --- a/moto/moto_api/_internal/urls.py +++ b/moto/moto_api/_internal/urls.py @@ -1,7 +1,7 @@ from .recorder.responses import RecorderResponse from .responses import MotoAPIResponse -url_bases = ["https?://motoapi.amazonaws.com"] +url_bases = [r"https?://motoapi\.amazonaws\.com"] response_instance = MotoAPIResponse() recorder_response = RecorderResponse() diff --git a/moto/sagemakermetrics/urls.py b/moto/sagemakermetrics/urls.py index ff42973274a0..46e1eebd5ae7 100644 --- a/moto/sagemakermetrics/urls.py +++ b/moto/sagemakermetrics/urls.py @@ -3,7 +3,7 @@ from .responses import SageMakerMetricsResponse url_bases = [ - r"https?://metrics.sagemaker\.(.+)\.amazonaws\.com", + r"https?://metrics\.sagemaker\.(.+)\.amazonaws\.com", ] url_paths = { diff --git a/moto/sns/models.py b/moto/sns/models.py index db60167acfc2..f86c08664ac7 100644 --- a/moto/sns/models.py +++ b/moto/sns/models.py @@ -385,7 +385,7 @@ def get_post_data( @lru_cache() def private_key(self) -> rsa.RSAPrivateKey: - return rsa.generate_private_key(public_exponent=65537, key_size=2028) + return rsa.generate_private_key(public_exponent=65537, key_size=2048) def _parse_message_structure(self, message: str, protocol: str) -> str: try: diff --git a/moto/timestreamquery/urls.py b/moto/timestreamquery/urls.py index 9053d6c32365..35e346db6cbb 100644 --- a/moto/timestreamquery/urls.py +++ b/moto/timestreamquery/urls.py @@ -3,7 +3,7 @@ from moto.timestreamwrite.responses import TimestreamWriteResponse url_bases = [ - r"https?://query.timestream\.(.+)\.amazonaws\.com", + r"https?://query\.timestream\.(.+)\.amazonaws\.com", ] url_paths = { diff --git a/tests/test_iam/test_iam_signing_certificates.py b/tests/test_iam/test_iam_signing_certificates.py index d3a7f2fb4d67..6c6834567dd1 100644 --- a/tests/test_iam/test_iam_signing_certificates.py +++ b/tests/test_iam/test_iam_signing_certificates.py @@ -191,7 +191,7 @@ def test_update_unknown_certificate(user_name=None): def create_certificate(): - key = rsa.generate_private_key(public_exponent=65537, key_size=2028) + key = rsa.generate_private_key(public_exponent=65537, key_size=2048) cert_subject = [NameAttribute(NameOID.COMMON_NAME, "iam.amazonaws.com")] issuer = [ NameAttribute(NameOID.COUNTRY_NAME, "US"), diff --git a/tests/test_secretsmanager/test_secretsmanager.py b/tests/test_secretsmanager/test_secretsmanager.py index b98349b4cea9..fea06fa0a322 100644 --- a/tests/test_secretsmanager/test_secretsmanager.py +++ b/tests/test_secretsmanager/test_secretsmanager.py @@ -1991,7 +1991,7 @@ def test_create_secret_with_tag_custom_id(set_custom_id): secret_suffix = "randomSuffix" secret_name = "secret-name" - client = boto3.client("secretsmanager") + client = boto3.client("secretsmanager", "us-east-1") secret = client.create_secret( Name=secret_name, diff --git a/tests/test_stepfunctions/parser/test_stepfunctions.py b/tests/test_stepfunctions/parser/test_stepfunctions.py index 91f97776502a..e0c9adf11e05 100644 --- a/tests/test_stepfunctions/parser/test_stepfunctions.py +++ b/tests/test_stepfunctions/parser/test_stepfunctions.py @@ -110,9 +110,9 @@ def test_version_is_only_available_when_published(): PolicyName="allowLambdaInvoke", RoleName=role_name, ) - kms_key_id = boto3.client("kms", region_name="us-east-1").create_key()[ - "KeyMetadata" - ]["KeyId"] + + kms = boto3.client("kms", region_name="us-east-1") + kms_key_id = kms.create_key()["KeyMetadata"]["KeyId"] sleep(10 if allow_aws_request() else 0) client = boto3.client("stepfunctions", region_name="us-east-1") @@ -122,7 +122,7 @@ def test_version_is_only_available_when_published(): encryption_config = { "kmsDataKeyReusePeriodSeconds": 60, "kmsKeyId": kms_key_id, - "type": "CUSTOMER_MANAGED_CMK", + "type": "CUSTOMER_MANAGED_KMS_KEY", } response = client.create_state_machine( name=name1, @@ -165,3 +165,4 @@ def test_version_is_only_available_when_published(): client.delete_state_machine(stateMachineArn=arn2) iam.delete_role_policy(RoleName=role_name, PolicyName="allowLambdaInvoke") iam.delete_role(RoleName=role_name) + kms.schedule_key_deletion(KeyId=kms_key_id, PendingWindowInDays=7)