Copy disabled (too large)
Download .txt
Showing preview only (105,513K chars total). Download the full file to get everything.
Repository: getmoto/moto
Branch: master
Commit: f69b6e7147ee
Files: 3372
Total size: 107.9 MB
Directory structure:
gitextract_ov1j6yo8/
├── .devcontainer/
│ └── devcontainer.json
├── .dockerignore
├── .git-blame-ignore-revs
├── .github/
│ ├── FUNDING.yml
│ ├── actions/
│ │ └── run_moto_server/
│ │ └── action.yml
│ ├── dependabot.yml
│ └── workflows/
│ ├── build.yml
│ ├── codeql-analysis.yml
│ ├── data-update_config-managed-rules.yml
│ ├── data-update_ec2-instance-offerings.yml
│ ├── data-update_ec2-instance-types.yml
│ ├── data-update_emr_instance_types.yml
│ ├── data-update_iam-managed-policies.yml
│ ├── data-update_ssm-default-amis.yml
│ ├── data-update_ssm-default-parameters.yml
│ ├── data-update_ssm-optimized-amis.yml
│ ├── dependency_test.yml
│ ├── dockertests.yml
│ ├── release.yml
│ ├── release_dev.yml
│ ├── test_cloudwatch.yml
│ ├── test_outdated_versions.yml
│ ├── test_sqs.yml
│ ├── tests_cdk.yml
│ ├── tests_cli.yml
│ ├── tests_decoratormode.yml
│ ├── tests_proxymode.yml
│ ├── tests_real_aws.yml
│ ├── tests_sdk_cpp.yml
│ ├── tests_sdk_dotnet.yml
│ ├── tests_sdk_go.yml
│ ├── tests_sdk_java.yml
│ ├── tests_sdk_js.yml
│ ├── tests_sdk_ruby.yml
│ ├── tests_sdk_sagemaker.yml
│ ├── tests_servermode.yml
│ ├── tests_terraform_examples.yml
│ └── tests_without_docker.yml
├── .gitignore
├── .gitmodules
├── .readthedocs.yaml
├── AUTHORS.md
├── CHANGELOG.md
├── CLOUDFORMATION_COVERAGE.md
├── CODE_OF_CONDUCT.md
├── CONFIG_README.md
├── CONTRIBUTING.md
├── Dockerfile
├── IMPLEMENTATION_COVERAGE.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.md
├── codecov.yml
├── docs/
│ ├── Makefile
│ ├── conf.py
│ ├── docs/
│ │ ├── aws_config.rst
│ │ ├── configuration/
│ │ │ ├── environment_variables.rst
│ │ │ ├── index.rst
│ │ │ ├── recorder/
│ │ │ │ └── index.rst
│ │ │ └── state_transition/
│ │ │ ├── index.rst
│ │ │ └── models.rst
│ │ ├── contributing/
│ │ │ ├── architecture.rst
│ │ │ ├── checklist.rst
│ │ │ ├── development_tips/
│ │ │ │ ├── index.rst
│ │ │ │ ├── new_state_transitions.rst
│ │ │ │ ├── tests.rst
│ │ │ │ ├── urls.rst
│ │ │ │ └── utilities.rst
│ │ │ ├── faq.rst
│ │ │ ├── index.rst
│ │ │ ├── installation.rst
│ │ │ └── new_feature.rst
│ │ ├── faq.rst
│ │ ├── getting_started.rst
│ │ ├── iam.rst
│ │ ├── multi_account.rst
│ │ ├── proxy_mode.rst
│ │ ├── releases.rst
│ │ ├── server_mode.rst
│ │ └── services/
│ │ ├── account.rst
│ │ ├── acm-pca.rst
│ │ ├── acm.rst
│ │ ├── amp.rst
│ │ ├── apigateway.rst
│ │ ├── apigatewaymanagementapi.rst
│ │ ├── apigatewayv2.rst
│ │ ├── appconfig.rst
│ │ ├── application-autoscaling.rst
│ │ ├── appmesh.rst
│ │ ├── appsync.rst
│ │ ├── athena.rst
│ │ ├── autoscaling.rst
│ │ ├── backup.rst
│ │ ├── batch.rst
│ │ ├── bedrock-agent.rst
│ │ ├── bedrock.rst
│ │ ├── budgets.rst
│ │ ├── ce.rst
│ │ ├── cf.rst
│ │ ├── clouddirectory.rst
│ │ ├── cloudformation.rst
│ │ ├── cloudfront.rst
│ │ ├── cloudhsmv2.rst
│ │ ├── cloudtrail.rst
│ │ ├── cloudwatch.rst
│ │ ├── codebuild.rst
│ │ ├── codecommit.rst
│ │ ├── codedeploy.rst
│ │ ├── codepipeline.rst
│ │ ├── cognito-identity.rst
│ │ ├── cognito-idp.rst
│ │ ├── comprehend.rst
│ │ ├── config.rst
│ │ ├── connect.rst
│ │ ├── connectcampaigns.rst
│ │ ├── databrew.rst
│ │ ├── datapipeline.rst
│ │ ├── datasync.rst
│ │ ├── dax.rst
│ │ ├── directconnect.rst
│ │ ├── dms.rst
│ │ ├── ds.rst
│ │ ├── dsql.rst
│ │ ├── dynamodb.rst
│ │ ├── dynamodbstreams.rst
│ │ ├── ebs.rst
│ │ ├── ec2-instance-connect.rst
│ │ ├── ec2.rst
│ │ ├── ecr.rst
│ │ ├── ecs.rst
│ │ ├── efs.rst
│ │ ├── eks.rst
│ │ ├── elasticache.rst
│ │ ├── elasticbeanstalk.rst
│ │ ├── elb.rst
│ │ ├── elbv2.rst
│ │ ├── emr-containers.rst
│ │ ├── emr-serverless.rst
│ │ ├── emr.rst
│ │ ├── es.rst
│ │ ├── events.rst
│ │ ├── firehose.rst
│ │ ├── forecast.rst
│ │ ├── fsx.rst
│ │ ├── glacier.rst
│ │ ├── glue.rst
│ │ ├── greengrass.rst
│ │ ├── guardduty.rst
│ │ ├── iam.rst
│ │ ├── identitystore.rst
│ │ ├── index.rst
│ │ ├── inspector2.rst
│ │ ├── iot-data.rst
│ │ ├── iot.rst
│ │ ├── ivs.rst
│ │ ├── kafka.rst
│ │ ├── kinesis-video-archived-media.rst
│ │ ├── kinesis.rst
│ │ ├── kinesisanalyticsv2.rst
│ │ ├── kinesisvideo.rst
│ │ ├── kms.rst
│ │ ├── lakeformation.rst
│ │ ├── lambda.rst
│ │ ├── lexv2-models.rst
│ │ ├── logs.rst
│ │ ├── macie2.rst
│ │ ├── managedblockchain.rst
│ │ ├── mediaconnect.rst
│ │ ├── medialive.rst
│ │ ├── mediapackage.rst
│ │ ├── mediapackagev2.rst
│ │ ├── mediastore-data.rst
│ │ ├── mediastore.rst
│ │ ├── memorydb.rst
│ │ ├── meteringmarketplace.rst
│ │ ├── mq.rst
│ │ ├── neptune.rst
│ │ ├── network-firewall.rst
│ │ ├── networkmanager.rst
│ │ ├── opensearch.rst
│ │ ├── opensearchserverless.rst
│ │ ├── organizations.rst
│ │ ├── osis.rst
│ │ ├── panorama.rst
│ │ ├── patching_other_services.rst
│ │ ├── personalize.rst
│ │ ├── pinpoint.rst
│ │ ├── pipes.rst
│ │ ├── polly.rst
│ │ ├── quicksight.rst
│ │ ├── ram.rst
│ │ ├── rds-data.rst
│ │ ├── rds.rst
│ │ ├── redshift-data.rst
│ │ ├── redshift.rst
│ │ ├── rekognition.rst
│ │ ├── resiliencehub.rst
│ │ ├── resource-groups.rst
│ │ ├── resourcegroupstaggingapi.rst
│ │ ├── route53.rst
│ │ ├── route53domains.rst
│ │ ├── route53resolver.rst
│ │ ├── s3.rst
│ │ ├── s3control.rst
│ │ ├── s3tables.rst
│ │ ├── s3vectors.rst
│ │ ├── sagemaker-metrics.rst
│ │ ├── sagemaker-runtime.rst
│ │ ├── sagemaker.rst
│ │ ├── scheduler.rst
│ │ ├── sdb.rst
│ │ ├── secretsmanager.rst
│ │ ├── securityhub.rst
│ │ ├── service-quotas.rst
│ │ ├── servicecatalog-appregistry.rst
│ │ ├── servicecatalog.rst
│ │ ├── servicediscovery.rst
│ │ ├── ses.rst
│ │ ├── sesv2.rst
│ │ ├── shield.rst
│ │ ├── signer.rst
│ │ ├── sns.rst
│ │ ├── sqs.rst
│ │ ├── ssm.rst
│ │ ├── sso-admin.rst
│ │ ├── stepfunctions.rst
│ │ ├── sts.rst
│ │ ├── support.rst
│ │ ├── swf.rst
│ │ ├── synthetics.rst
│ │ ├── textract.rst
│ │ ├── timestream-influxdb.rst
│ │ ├── timestream-query.rst
│ │ ├── timestream-write.rst
│ │ ├── transcribe.rst
│ │ ├── transfer.rst
│ │ ├── vpc-lattice.rst
│ │ ├── wafv2.rst
│ │ ├── workspaces-web.rst
│ │ └── workspaces.rst
│ ├── index.rst
│ ├── make.bat
│ └── requirements.txt
├── moto/
│ ├── __init__.py
│ ├── account/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── acm/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── acmpca/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── amp/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── apigateway/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── integration_parsers/
│ │ │ ├── __init__.py
│ │ │ ├── aws_parser.py
│ │ │ ├── http_parser.py
│ │ │ └── unknown_parser.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── apigatewaymanagementapi/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── apigatewayv2/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── appconfig/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── applicationautoscaling/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── appmesh/
│ │ ├── __init__.py
│ │ ├── dataclasses/
│ │ │ ├── mesh.py
│ │ │ ├── route.py
│ │ │ ├── shared.py
│ │ │ ├── virtual_node.py
│ │ │ └── virtual_router.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils/
│ │ ├── common.py
│ │ └── spec_parsing.py
│ ├── appsync/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── athena/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── autoscaling/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── awslambda/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── policy.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── awslambda_simple/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ └── responses.py
│ ├── backend_index.py
│ ├── backends.py
│ ├── backup/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── batch/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── batch_simple/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ └── responses.py
│ ├── bedrock/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── bedrockagent/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── bedrockruntime/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── budgets/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── ce/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── clouddirectory/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── cloudformation/
│ │ ├── __init__.py
│ │ ├── custom_model.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── parsing.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── cloudfront/
│ │ ├── 2020-05-31/
│ │ │ └── service-2.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── cloudhsmv2/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── cloudtrail/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── cloudwatch/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── metric_data_expression_parser.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── codebuild/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── codecommit/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── codedeploy/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── codepipeline/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── cognitoidentity/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── cognitoidp/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── resources/
│ │ │ ├── jwks-private.json
│ │ │ └── jwks-public.json
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── comprehend/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── config/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── resources/
│ │ │ └── aws_managed_rules.json
│ │ ├── responses.py
│ │ └── urls.py
│ ├── connect/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── connectcampaigns/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── _mock_architecture.md
│ │ ├── authorization.py
│ │ ├── base_backend.py
│ │ ├── botocore_stubber.py
│ │ ├── common_models.py
│ │ ├── common_types.py
│ │ ├── config.py
│ │ ├── constants.py
│ │ ├── custom_responses_mock.py
│ │ ├── decorator.py
│ │ ├── errors.py
│ │ ├── exceptions.py
│ │ ├── loaders.py
│ │ ├── mime_types.py
│ │ ├── model.py
│ │ ├── model_instances.py
│ │ ├── models.py
│ │ ├── parse.py
│ │ ├── request.py
│ │ ├── responses.py
│ │ ├── responses_custom_registry.py
│ │ ├── serialize.py
│ │ ├── types.py
│ │ ├── utils.py
│ │ └── versions.py
│ ├── databrew/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── datapipeline/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── datasync/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── dax/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── directconnect/
│ │ ├── __init__.py
│ │ ├── enums.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── dms/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── ds/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ ├── utils.py
│ │ └── validations.py
│ ├── dsql/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── dynamodb/
│ │ ├── __init__.py
│ │ ├── comparisons.py
│ │ ├── exceptions.py
│ │ ├── limits.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── dynamo_type.py
│ │ │ ├── table.py
│ │ │ ├── table_export.py
│ │ │ ├── table_import.py
│ │ │ └── utilities.py
│ │ ├── parsing/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── ast_nodes.py
│ │ │ ├── executors.py
│ │ │ ├── expressions.py
│ │ │ ├── key_condition_expression.py
│ │ │ ├── partiql.py
│ │ │ ├── reserved_keywords.py
│ │ │ ├── reserved_keywords.txt
│ │ │ ├── tokens.py
│ │ │ └── validators.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── dynamodb_v20111205/
│ │ ├── __init__.py
│ │ ├── comparisons.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── dynamodbstreams/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── ebs/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── ec2/
│ │ ├── 2016-11-15/
│ │ │ └── service-2.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── amis.py
│ │ │ ├── availability_zones_and_regions.py
│ │ │ ├── carrier_gateways.py
│ │ │ ├── core.py
│ │ │ ├── customer_gateways.py
│ │ │ ├── dhcp_options.py
│ │ │ ├── elastic_block_store.py
│ │ │ ├── elastic_ip_addresses.py
│ │ │ ├── elastic_network_interfaces.py
│ │ │ ├── fleets.py
│ │ │ ├── flow_logs.py
│ │ │ ├── hosts.py
│ │ │ ├── iam_instance_profile.py
│ │ │ ├── instance_types.py
│ │ │ ├── instances.py
│ │ │ ├── internet_gateways.py
│ │ │ ├── key_pairs.py
│ │ │ ├── launch_templates.py
│ │ │ ├── managed_prefixes.py
│ │ │ ├── nat_gateways.py
│ │ │ ├── network_acls.py
│ │ │ ├── reserved_instances.py
│ │ │ ├── route_tables.py
│ │ │ ├── security_groups.py
│ │ │ ├── spot_requests.py
│ │ │ ├── subnets.py
│ │ │ ├── tags.py
│ │ │ ├── transit_gateway.py
│ │ │ ├── transit_gateway_attachments.py
│ │ │ ├── transit_gateway_route_tables.py
│ │ │ ├── vpc_peering_connections.py
│ │ │ ├── vpc_service_configuration.py
│ │ │ ├── vpcs.py
│ │ │ ├── vpn_connections.py
│ │ │ ├── vpn_gateway.py
│ │ │ └── windows.py
│ │ ├── regions.py
│ │ ├── resources/
│ │ │ ├── amis.json
│ │ │ ├── ecs/
│ │ │ │ └── optimized_amis/
│ │ │ │ ├── af-south-1.json
│ │ │ │ ├── ap-east-1.json
│ │ │ │ ├── ap-northeast-1.json
│ │ │ │ ├── ap-northeast-2.json
│ │ │ │ ├── ap-northeast-3.json
│ │ │ │ ├── ap-south-1.json
│ │ │ │ ├── ap-south-2.json
│ │ │ │ ├── ap-southeast-1.json
│ │ │ │ ├── ap-southeast-2.json
│ │ │ │ ├── ap-southeast-3.json
│ │ │ │ ├── ap-southeast-4.json
│ │ │ │ ├── ap-southeast-5.json
│ │ │ │ ├── ca-central-1.json
│ │ │ │ ├── ca-west-1.json
│ │ │ │ ├── eu-central-1.json
│ │ │ │ ├── eu-central-2.json
│ │ │ │ ├── eu-north-1.json
│ │ │ │ ├── eu-south-1.json
│ │ │ │ ├── eu-south-2.json
│ │ │ │ ├── eu-west-1.json
│ │ │ │ ├── eu-west-2.json
│ │ │ │ ├── eu-west-3.json
│ │ │ │ ├── il-central-1.json
│ │ │ │ ├── me-central-1.json
│ │ │ │ ├── me-south-1.json
│ │ │ │ ├── sa-east-1.json
│ │ │ │ ├── us-east-1.json
│ │ │ │ ├── us-east-2.json
│ │ │ │ ├── us-west-1.json
│ │ │ │ └── us-west-2.json
│ │ │ ├── instance_type_offerings/
│ │ │ │ ├── availability-zone/
│ │ │ │ │ ├── af-south-1.json
│ │ │ │ │ ├── ap-east-1.json
│ │ │ │ │ ├── ap-northeast-1.json
│ │ │ │ │ ├── ap-northeast-2.json
│ │ │ │ │ ├── ap-northeast-3.json
│ │ │ │ │ ├── ap-south-1.json
│ │ │ │ │ ├── ap-south-2.json
│ │ │ │ │ ├── ap-southeast-1.json
│ │ │ │ │ ├── ap-southeast-2.json
│ │ │ │ │ ├── ap-southeast-3.json
│ │ │ │ │ ├── ap-southeast-4.json
│ │ │ │ │ ├── ap-southeast-5.json
│ │ │ │ │ ├── ca-central-1.json
│ │ │ │ │ ├── ca-west-1.json
│ │ │ │ │ ├── eu-central-1.json
│ │ │ │ │ ├── eu-central-2.json
│ │ │ │ │ ├── eu-north-1.json
│ │ │ │ │ ├── eu-south-1.json
│ │ │ │ │ ├── eu-south-2.json
│ │ │ │ │ ├── eu-west-1.json
│ │ │ │ │ ├── eu-west-2.json
│ │ │ │ │ ├── eu-west-3.json
│ │ │ │ │ ├── il-central-1.json
│ │ │ │ │ ├── me-central-1.json
│ │ │ │ │ ├── me-south-1.json
│ │ │ │ │ ├── sa-east-1.json
│ │ │ │ │ ├── us-east-1.json
│ │ │ │ │ ├── us-east-2.json
│ │ │ │ │ ├── us-west-1.json
│ │ │ │ │ └── us-west-2.json
│ │ │ │ ├── availability-zone-id/
│ │ │ │ │ ├── af-south-1.json
│ │ │ │ │ ├── ap-east-1.json
│ │ │ │ │ ├── ap-northeast-1.json
│ │ │ │ │ ├── ap-northeast-2.json
│ │ │ │ │ ├── ap-northeast-3.json
│ │ │ │ │ ├── ap-south-1.json
│ │ │ │ │ ├── ap-south-2.json
│ │ │ │ │ ├── ap-southeast-1.json
│ │ │ │ │ ├── ap-southeast-2.json
│ │ │ │ │ ├── ap-southeast-3.json
│ │ │ │ │ ├── ap-southeast-4.json
│ │ │ │ │ ├── ap-southeast-5.json
│ │ │ │ │ ├── ca-central-1.json
│ │ │ │ │ ├── ca-west-1.json
│ │ │ │ │ ├── eu-central-1.json
│ │ │ │ │ ├── eu-central-2.json
│ │ │ │ │ ├── eu-north-1.json
│ │ │ │ │ ├── eu-south-1.json
│ │ │ │ │ ├── eu-south-2.json
│ │ │ │ │ ├── eu-west-1.json
│ │ │ │ │ ├── eu-west-2.json
│ │ │ │ │ ├── eu-west-3.json
│ │ │ │ │ ├── il-central-1.json
│ │ │ │ │ ├── me-central-1.json
│ │ │ │ │ ├── me-south-1.json
│ │ │ │ │ ├── sa-east-1.json
│ │ │ │ │ ├── us-east-1.json
│ │ │ │ │ ├── us-east-2.json
│ │ │ │ │ ├── us-west-1.json
│ │ │ │ │ └── us-west-2.json
│ │ │ │ └── region/
│ │ │ │ ├── af-south-1.json
│ │ │ │ ├── ap-east-1.json
│ │ │ │ ├── ap-northeast-1.json
│ │ │ │ ├── ap-northeast-2.json
│ │ │ │ ├── ap-northeast-3.json
│ │ │ │ ├── ap-south-1.json
│ │ │ │ ├── ap-south-2.json
│ │ │ │ ├── ap-southeast-1.json
│ │ │ │ ├── ap-southeast-2.json
│ │ │ │ ├── ap-southeast-3.json
│ │ │ │ ├── ap-southeast-4.json
│ │ │ │ ├── ap-southeast-5.json
│ │ │ │ ├── ca-central-1.json
│ │ │ │ ├── ca-west-1.json
│ │ │ │ ├── eu-central-1.json
│ │ │ │ ├── eu-central-2.json
│ │ │ │ ├── eu-north-1.json
│ │ │ │ ├── eu-south-1.json
│ │ │ │ ├── eu-south-2.json
│ │ │ │ ├── eu-west-1.json
│ │ │ │ ├── eu-west-2.json
│ │ │ │ ├── eu-west-3.json
│ │ │ │ ├── il-central-1.json
│ │ │ │ ├── me-central-1.json
│ │ │ │ ├── me-south-1.json
│ │ │ │ ├── sa-east-1.json
│ │ │ │ ├── us-east-1.json
│ │ │ │ ├── us-east-2.json
│ │ │ │ ├── us-west-1.json
│ │ │ │ └── us-west-2.json
│ │ │ ├── instance_types.json
│ │ │ └── latest_amis/
│ │ │ ├── af-south-1.json
│ │ │ ├── ap-east-1.json
│ │ │ ├── ap-northeast-1.json
│ │ │ ├── ap-northeast-2.json
│ │ │ ├── ap-northeast-3.json
│ │ │ ├── ap-south-1.json
│ │ │ ├── ap-south-2.json
│ │ │ ├── ap-southeast-1.json
│ │ │ ├── ap-southeast-2.json
│ │ │ ├── ap-southeast-3.json
│ │ │ ├── ap-southeast-4.json
│ │ │ ├── ap-southeast-5.json
│ │ │ ├── ca-central-1.json
│ │ │ ├── ca-west-1.json
│ │ │ ├── eu-central-1.json
│ │ │ ├── eu-central-2.json
│ │ │ ├── eu-north-1.json
│ │ │ ├── eu-south-1.json
│ │ │ ├── eu-south-2.json
│ │ │ ├── eu-west-1.json
│ │ │ ├── eu-west-2.json
│ │ │ ├── eu-west-3.json
│ │ │ ├── il-central-1.json
│ │ │ ├── me-central-1.json
│ │ │ ├── me-south-1.json
│ │ │ ├── sa-east-1.json
│ │ │ ├── us-east-1.json
│ │ │ ├── us-east-2.json
│ │ │ ├── us-west-1.json
│ │ │ └── us-west-2.json
│ │ ├── responses/
│ │ │ ├── __init__.py
│ │ │ ├── _base_response.py
│ │ │ ├── account_attributes.py
│ │ │ ├── amis.py
│ │ │ ├── availability_zones_and_regions.py
│ │ │ ├── carrier_gateways.py
│ │ │ ├── customer_gateways.py
│ │ │ ├── dhcp_options.py
│ │ │ ├── egress_only_internet_gateways.py
│ │ │ ├── elastic_block_store.py
│ │ │ ├── elastic_ip_addresses.py
│ │ │ ├── elastic_network_interfaces.py
│ │ │ ├── fleets.py
│ │ │ ├── flow_logs.py
│ │ │ ├── general.py
│ │ │ ├── hosts.py
│ │ │ ├── iam_instance_profiles.py
│ │ │ ├── instances.py
│ │ │ ├── internet_gateways.py
│ │ │ ├── key_pairs.py
│ │ │ ├── launch_templates.py
│ │ │ ├── monitoring.py
│ │ │ ├── nat_gateways.py
│ │ │ ├── network_acls.py
│ │ │ ├── reserved_instances.py
│ │ │ ├── route_tables.py
│ │ │ ├── security_groups.py
│ │ │ ├── settings.py
│ │ │ ├── spot_fleets.py
│ │ │ ├── spot_instances.py
│ │ │ ├── subnets.py
│ │ │ ├── tags.py
│ │ │ ├── transit_gateway_attachments.py
│ │ │ ├── transit_gateway_route_tables.py
│ │ │ ├── transit_gateways.py
│ │ │ ├── virtual_private_gateways.py
│ │ │ ├── vpc_peering_connections.py
│ │ │ ├── vpc_service_configuration.py
│ │ │ ├── vpcs.py
│ │ │ ├── vpn_connections.py
│ │ │ └── windows.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── ec2instanceconnect/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── ecr/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── policy_validation.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── ecs/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── efs/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── eks/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── elasticache/
│ │ ├── 2015-02-02/
│ │ │ └── paginators-1.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── elasticbeanstalk/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── elb/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── policies.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── elbv2/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── ssl_policies.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── emr/
│ │ ├── 2009-03-31/
│ │ │ └── paginators-1.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── resources/
│ │ │ ├── README.md
│ │ │ ├── instance-types-emr-4.2.0.json
│ │ │ ├── instance-types-emr-4.3.0.json
│ │ │ ├── instance-types-emr-4.4.0.json
│ │ │ ├── instance-types-emr-4.5.0.json
│ │ │ ├── instance-types-emr-4.6.0.json
│ │ │ ├── instance-types-emr-4.6.1.json
│ │ │ ├── instance-types-emr-4.8.2.json
│ │ │ ├── instance-types-emr-4.8.3.json
│ │ │ ├── instance-types-emr-4.8.4.json
│ │ │ ├── instance-types-emr-4.8.5.json
│ │ │ ├── instance-types-emr-4.9.1.json
│ │ │ ├── instance-types-emr-4.9.2.json
│ │ │ ├── instance-types-emr-4.9.3.json
│ │ │ ├── instance-types-emr-4.9.4.json
│ │ │ ├── instance-types-emr-4.9.5.json
│ │ │ ├── instance-types-emr-4.9.6.json
│ │ │ ├── instance-types-emr-5.0.0.json
│ │ │ ├── instance-types-emr-5.0.1.json
│ │ │ ├── instance-types-emr-5.0.2.json
│ │ │ ├── instance-types-emr-5.0.3.json
│ │ │ ├── instance-types-emr-5.1.0.json
│ │ │ ├── instance-types-emr-5.1.1.json
│ │ │ ├── instance-types-emr-5.10.0.json
│ │ │ ├── instance-types-emr-5.10.1.json
│ │ │ ├── instance-types-emr-5.11.0.json
│ │ │ ├── instance-types-emr-5.11.1.json
│ │ │ ├── instance-types-emr-5.11.2.json
│ │ │ ├── instance-types-emr-5.11.3.json
│ │ │ ├── instance-types-emr-5.11.4.json
│ │ │ ├── instance-types-emr-5.12.0.json
│ │ │ ├── instance-types-emr-5.12.1.json
│ │ │ ├── instance-types-emr-5.12.2.json
│ │ │ ├── instance-types-emr-5.12.3.json
│ │ │ ├── instance-types-emr-5.13.0.json
│ │ │ ├── instance-types-emr-5.13.1.json
│ │ │ ├── instance-types-emr-5.14.0.json
│ │ │ ├── instance-types-emr-5.14.1.json
│ │ │ ├── instance-types-emr-5.14.2.json
│ │ │ ├── instance-types-emr-5.15.0.json
│ │ │ ├── instance-types-emr-5.15.1.json
│ │ │ ├── instance-types-emr-5.16.0.json
│ │ │ ├── instance-types-emr-5.16.1.json
│ │ │ ├── instance-types-emr-5.17.0.json
│ │ │ ├── instance-types-emr-5.17.1.json
│ │ │ ├── instance-types-emr-5.17.2.json
│ │ │ ├── instance-types-emr-5.18.0.json
│ │ │ ├── instance-types-emr-5.18.1.json
│ │ │ ├── instance-types-emr-5.19.0.json
│ │ │ ├── instance-types-emr-5.19.1.json
│ │ │ ├── instance-types-emr-5.2.0.json
│ │ │ ├── instance-types-emr-5.2.1.json
│ │ │ ├── instance-types-emr-5.2.2.json
│ │ │ ├── instance-types-emr-5.2.3.json
│ │ │ ├── instance-types-emr-5.20.0.json
│ │ │ ├── instance-types-emr-5.20.1.json
│ │ │ ├── instance-types-emr-5.21.0.json
│ │ │ ├── instance-types-emr-5.21.1.json
│ │ │ ├── instance-types-emr-5.21.2.json
│ │ │ ├── instance-types-emr-5.22.0.json
│ │ │ ├── instance-types-emr-5.23.0.json
│ │ │ ├── instance-types-emr-5.23.1.json
│ │ │ ├── instance-types-emr-5.24.0.json
│ │ │ ├── instance-types-emr-5.24.1.json
│ │ │ ├── instance-types-emr-5.25.0.json
│ │ │ ├── instance-types-emr-5.26.0.json
│ │ │ ├── instance-types-emr-5.27.0.json
│ │ │ ├── instance-types-emr-5.27.1.json
│ │ │ ├── instance-types-emr-5.28.0.json
│ │ │ ├── instance-types-emr-5.28.1.json
│ │ │ ├── instance-types-emr-5.29.0.json
│ │ │ ├── instance-types-emr-5.3.0.json
│ │ │ ├── instance-types-emr-5.3.1.json
│ │ │ ├── instance-types-emr-5.3.2.json
│ │ │ ├── instance-types-emr-5.30.0-preview.json
│ │ │ ├── instance-types-emr-5.30.0.json
│ │ │ ├── instance-types-emr-5.30.1.json
│ │ │ ├── instance-types-emr-5.30.2.json
│ │ │ ├── instance-types-emr-5.31.0.json
│ │ │ ├── instance-types-emr-5.31.1.json
│ │ │ ├── instance-types-emr-5.32.0.json
│ │ │ ├── instance-types-emr-5.32.1.json
│ │ │ ├── instance-types-emr-5.33.0.json
│ │ │ ├── instance-types-emr-5.33.1.json
│ │ │ ├── instance-types-emr-5.34.0.json
│ │ │ ├── instance-types-emr-5.35.0.json
│ │ │ ├── instance-types-emr-5.36.0.json
│ │ │ ├── instance-types-emr-5.36.1.json
│ │ │ ├── instance-types-emr-5.36.2.json
│ │ │ ├── instance-types-emr-5.4.0.json
│ │ │ ├── instance-types-emr-5.4.1.json
│ │ │ ├── instance-types-emr-5.5.0.json
│ │ │ ├── instance-types-emr-5.5.1.json
│ │ │ ├── instance-types-emr-5.5.2.json
│ │ │ ├── instance-types-emr-5.5.3.json
│ │ │ ├── instance-types-emr-5.5.4.json
│ │ │ ├── instance-types-emr-5.6.0.json
│ │ │ ├── instance-types-emr-5.6.1.json
│ │ │ ├── instance-types-emr-5.7.0.json
│ │ │ ├── instance-types-emr-5.7.1.json
│ │ │ ├── instance-types-emr-5.8.0.json
│ │ │ ├── instance-types-emr-5.8.1.json
│ │ │ ├── instance-types-emr-5.8.2.json
│ │ │ ├── instance-types-emr-5.8.3.json
│ │ │ ├── instance-types-emr-5.9.0.json
│ │ │ ├── instance-types-emr-5.9.1.json
│ │ │ ├── instance-types-emr-6.0.0-beta.json
│ │ │ ├── instance-types-emr-6.0.0-beta2.json
│ │ │ ├── instance-types-emr-6.0.0.json
│ │ │ ├── instance-types-emr-6.0.1.json
│ │ │ ├── instance-types-emr-6.1.0.json
│ │ │ ├── instance-types-emr-6.1.1.json
│ │ │ ├── instance-types-emr-6.10.0.json
│ │ │ ├── instance-types-emr-6.10.1.json
│ │ │ ├── instance-types-emr-6.11.0.json
│ │ │ ├── instance-types-emr-6.11.1.json
│ │ │ ├── instance-types-emr-6.12.0.json
│ │ │ ├── instance-types-emr-6.13.0.json
│ │ │ ├── instance-types-emr-6.14.0.json
│ │ │ ├── instance-types-emr-6.15.0.json
│ │ │ ├── instance-types-emr-6.2.0.json
│ │ │ ├── instance-types-emr-6.2.1.json
│ │ │ ├── instance-types-emr-6.3.0.json
│ │ │ ├── instance-types-emr-6.3.1.json
│ │ │ ├── instance-types-emr-6.4.0.json
│ │ │ ├── instance-types-emr-6.5.0.json
│ │ │ ├── instance-types-emr-6.6.0.json
│ │ │ ├── instance-types-emr-6.7.0.json
│ │ │ ├── instance-types-emr-6.8.0.json
│ │ │ ├── instance-types-emr-6.8.1.json
│ │ │ ├── instance-types-emr-6.9.0.json
│ │ │ ├── instance-types-emr-6.9.1.json
│ │ │ ├── instance-types-emr-7.0.0.json
│ │ │ ├── instance-types-emr-7.1.0.json
│ │ │ ├── instance-types-emr-7.10.0.json
│ │ │ ├── instance-types-emr-7.11.0.json
│ │ │ ├── instance-types-emr-7.12.0.json
│ │ │ ├── instance-types-emr-7.2.0.json
│ │ │ ├── instance-types-emr-7.3.0.json
│ │ │ ├── instance-types-emr-7.4.0.json
│ │ │ ├── instance-types-emr-7.5.0.json
│ │ │ ├── instance-types-emr-7.6.0.json
│ │ │ ├── instance-types-emr-7.7.0.json
│ │ │ ├── instance-types-emr-7.8.0.json
│ │ │ ├── instance-types-emr-7.9.0.json
│ │ │ ├── instance_types.json
│ │ │ ├── release-labels-af-south-1.json
│ │ │ ├── release-labels-ap-east-1.json
│ │ │ ├── release-labels-ap-east-2.json
│ │ │ ├── release-labels-ap-northeast-1.json
│ │ │ ├── release-labels-ap-northeast-2.json
│ │ │ ├── release-labels-ap-northeast-3.json
│ │ │ ├── release-labels-ap-south-1.json
│ │ │ ├── release-labels-ap-south-2.json
│ │ │ ├── release-labels-ap-southeast-1.json
│ │ │ ├── release-labels-ap-southeast-2.json
│ │ │ ├── release-labels-ap-southeast-3.json
│ │ │ ├── release-labels-ap-southeast-4.json
│ │ │ ├── release-labels-ap-southeast-5.json
│ │ │ ├── release-labels-ap-southeast-7.json
│ │ │ ├── release-labels-ca-central-1.json
│ │ │ ├── release-labels-ca-west-1.json
│ │ │ ├── release-labels-eu-central-1.json
│ │ │ ├── release-labels-eu-central-2.json
│ │ │ ├── release-labels-eu-north-1.json
│ │ │ ├── release-labels-eu-south-1.json
│ │ │ ├── release-labels-eu-south-2.json
│ │ │ ├── release-labels-eu-west-1.json
│ │ │ ├── release-labels-eu-west-2.json
│ │ │ ├── release-labels-eu-west-3.json
│ │ │ ├── release-labels-il-central-1.json
│ │ │ ├── release-labels-me-central-1.json
│ │ │ ├── release-labels-me-south-1.json
│ │ │ ├── release-labels-mx-central-1.json
│ │ │ ├── release-labels-sa-east-1.json
│ │ │ ├── release-labels-us-east-1.json
│ │ │ ├── release-labels-us-east-2.json
│ │ │ ├── release-labels-us-west-1.json
│ │ │ └── release-labels-us-west-2.json
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── emrcontainers/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── emrserverless/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── es/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ └── urls.py
│ ├── events/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── notifications.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── firehose/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── forecast/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── fsx/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── glacier/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── glue/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── glue_schema_registry_constants.py
│ │ ├── glue_schema_registry_utils.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── greengrass/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── guardduty/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── iam/
│ │ ├── __init__.py
│ │ ├── access_control.py
│ │ ├── aws_managed_policies.py
│ │ ├── config.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── policy_conditions.py
│ │ ├── policy_validation.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── identitystore/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── inspector2/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── instance_metadata/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── iot/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── iotdata/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── ivs/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── kafka/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── kinesis/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── kinesisanalyticsv2/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── kinesisvideo/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── kinesisvideoarchivedmedia/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── kms/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── policy_validator.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── lakeformation/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── lexv2models/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── logs/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── logs_query/
│ │ │ ├── __init__.py
│ │ │ └── query_parser.py
│ │ ├── metric_filters.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── macie2/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── managedblockchain/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── mediaconnect/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── medialive/
│ │ ├── 2017-10-14/
│ │ │ └── paginators-1.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── mediapackage/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── mediapackagev2/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── mediastore/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── mediastoredata/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── memorydb/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── meteringmarketplace/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── moto_api/
│ │ ├── __init__.py
│ │ └── _internal/
│ │ ├── __init__.py
│ │ ├── managed_state_model.py
│ │ ├── models.py
│ │ ├── moto_random.py
│ │ ├── recorder/
│ │ │ ├── __init__.py
│ │ │ ├── models.py
│ │ │ └── responses.py
│ │ ├── responses.py
│ │ ├── state_manager.py
│ │ └── urls.py
│ ├── moto_proxy/
│ │ ├── __init__.py
│ │ ├── ca.crt
│ │ ├── ca.key
│ │ ├── cert.key
│ │ ├── certificate_creator.py
│ │ ├── certs/
│ │ │ ├── __init__.py
│ │ │ └── req.conf.tmpl
│ │ ├── proxy3.py
│ │ ├── setup_https_intercept.sh
│ │ └── utils.py
│ ├── moto_server/
│ │ ├── templates/
│ │ │ ├── dashboard.html
│ │ │ └── lib.js
│ │ ├── threaded_moto_server.py
│ │ ├── utilities.py
│ │ └── werkzeug_app.py
│ ├── mq/
│ │ ├── __init__.py
│ │ ├── configuration.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── neptune/
│ │ └── README.md
│ ├── networkfirewall/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── networkmanager/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── opensearch/
│ │ ├── __init__.py
│ │ ├── data.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── opensearchserverless/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── organizations/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── osis/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── packages/
│ │ ├── __init__.py
│ │ ├── boto/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ └── ec2/
│ │ │ ├── __init__.py
│ │ │ ├── blockdevicemapping.py
│ │ │ ├── ec2object.py
│ │ │ ├── image.py
│ │ │ ├── instance.py
│ │ │ ├── instancetype.py
│ │ │ └── tag.py
│ │ └── cfnresponse/
│ │ ├── __init__.py
│ │ └── cfnresponse.py
│ ├── panorama/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── personalize/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── pinpoint/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── pipes/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── polly/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── resources.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── proxy.py
│ ├── py.typed
│ ├── quicksight/
│ │ ├── __init__.py
│ │ ├── data_models.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── ram/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── rds/
│ │ ├── 2014-10-31/
│ │ │ └── paginators-1.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── resources/
│ │ │ ├── cluster_options/
│ │ │ │ ├── aurora-postgresql.json
│ │ │ │ └── neptune.json
│ │ │ └── option_group_options/
│ │ │ ├── db2-ae.json
│ │ │ ├── db2-se.json
│ │ │ ├── mariadb.json
│ │ │ ├── mysql.json
│ │ │ ├── oracle-ee-cdb.json
│ │ │ ├── oracle-ee.json
│ │ │ ├── oracle-se2-cdb.json
│ │ │ ├── oracle-se2.json
│ │ │ ├── postgres.json
│ │ │ ├── sqlserver-ee.json
│ │ │ ├── sqlserver-ex.json
│ │ │ ├── sqlserver-se.json
│ │ │ └── sqlserver-web.json
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── rdsdata/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── redshift/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── redshiftdata/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── rekognition/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── resiliencehub/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── resourcegroups/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── resourcegroupstaggingapi/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── route53/
│ │ ├── 2013-04-01/
│ │ │ └── service-2.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── route53domains/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── validators.py
│ ├── route53resolver/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ ├── utils.py
│ │ └── validations.py
│ ├── s3/
│ │ ├── __init__.py
│ │ ├── cloud_formation.py
│ │ ├── config.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── notifications.py
│ │ ├── responses.py
│ │ ├── select_object_content.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── s3bucket_path/
│ │ ├── __init__.py
│ │ └── utils.py
│ ├── s3control/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── s3tables/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── s3vectors/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── sagemaker/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ ├── utils.py
│ │ └── validators.py
│ ├── sagemakermetrics/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── sagemakerruntime/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── scheduler/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── sdb/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── secretsmanager/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── list_secrets/
│ │ │ ├── __init__.py
│ │ │ └── filters.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── securityhub/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── server.py
│ ├── servicecatalog/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── servicecatalogappregistry/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── servicediscovery/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── servicequotas/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── resources/
│ │ │ ├── __init__.py
│ │ │ └── default_quotas/
│ │ │ ├── __init__.py
│ │ │ └── vpc.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── ses/
│ │ ├── 2010-12-01/
│ │ │ └── paginators-1.moto-extras.json
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── feedback.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── template.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── sesv2/
│ │ ├── 2019-09-27/
│ │ │ └── service-2.moto-extras.json
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── settings.py
│ ├── shield/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── signer/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── sns/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── sqs/
│ │ ├── 2012-11-05/
│ │ │ └── service-2.moto-extras.json
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── ssm/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── resources/
│ │ │ ├── ami-amazon-linux-latest/
│ │ │ │ ├── af-south-1.json
│ │ │ │ ├── ap-east-1.json
│ │ │ │ ├── ap-northeast-1.json
│ │ │ │ ├── ap-northeast-2.json
│ │ │ │ ├── ap-northeast-3.json
│ │ │ │ ├── ap-south-1.json
│ │ │ │ ├── ap-south-2.json
│ │ │ │ ├── ap-southeast-1.json
│ │ │ │ ├── ap-southeast-2.json
│ │ │ │ ├── ap-southeast-3.json
│ │ │ │ ├── ap-southeast-4.json
│ │ │ │ ├── ap-southeast-5.json
│ │ │ │ ├── ca-central-1.json
│ │ │ │ ├── ca-west-1.json
│ │ │ │ ├── eu-central-1.json
│ │ │ │ ├── eu-central-2.json
│ │ │ │ ├── eu-north-1.json
│ │ │ │ ├── eu-south-1.json
│ │ │ │ ├── eu-south-2.json
│ │ │ │ ├── eu-west-1.json
│ │ │ │ ├── eu-west-2.json
│ │ │ │ ├── eu-west-3.json
│ │ │ │ ├── il-central-1.json
│ │ │ │ ├── me-central-1.json
│ │ │ │ ├── me-south-1.json
│ │ │ │ ├── sa-east-1.json
│ │ │ │ ├── us-east-1.json
│ │ │ │ ├── us-east-2.json
│ │ │ │ ├── us-west-1.json
│ │ │ │ └── us-west-2.json
│ │ │ ├── default_baselines.json
│ │ │ ├── ecs/
│ │ │ │ └── optimized_amis/
│ │ │ │ ├── af-south-1.json
│ │ │ │ ├── ap-east-1.json
│ │ │ │ ├── ap-northeast-1.json
│ │ │ │ ├── ap-northeast-2.json
│ │ │ │ ├── ap-northeast-3.json
│ │ │ │ ├── ap-south-1.json
│ │ │ │ ├── ap-south-2.json
│ │ │ │ ├── ap-southeast-1.json
│ │ │ │ ├── ap-southeast-2.json
│ │ │ │ ├── ap-southeast-3.json
│ │ │ │ ├── ap-southeast-4.json
│ │ │ │ ├── ap-southeast-5.json
│ │ │ │ ├── ca-central-1.json
│ │ │ │ ├── ca-west-1.json
│ │ │ │ ├── eu-central-1.json
│ │ │ │ ├── eu-central-2.json
│ │ │ │ ├── eu-north-1.json
│ │ │ │ ├── eu-south-1.json
│ │ │ │ ├── eu-south-2.json
│ │ │ │ ├── eu-west-1.json
│ │ │ │ ├── eu-west-2.json
│ │ │ │ ├── eu-west-3.json
│ │ │ │ ├── il-central-1.json
│ │ │ │ ├── me-central-1.json
│ │ │ │ ├── me-south-1.json
│ │ │ │ ├── sa-east-1.json
│ │ │ │ ├── us-east-1.json
│ │ │ │ ├── us-east-2.json
│ │ │ │ ├── us-west-1.json
│ │ │ │ └── us-west-2.json
│ │ │ ├── regions.json
│ │ │ └── services.json
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── ssoadmin/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── stepfunctions/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── parser/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── api.py
│ │ │ ├── asl/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── antlr/
│ │ │ │ │ ├── ASLIntrinsicLexer.g4
│ │ │ │ │ ├── ASLIntrinsicParser.g4
│ │ │ │ │ ├── ASLLexer.g4
│ │ │ │ │ ├── ASLParser.g4
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── runtime/
│ │ │ │ │ ├── ASLIntrinsicLexer.py
│ │ │ │ │ ├── ASLIntrinsicParser.py
│ │ │ │ │ ├── ASLIntrinsicParserListener.py
│ │ │ │ │ ├── ASLIntrinsicParserVisitor.py
│ │ │ │ │ ├── ASLLexer.py
│ │ │ │ │ ├── ASLParser.py
│ │ │ │ │ ├── ASLParserListener.py
│ │ │ │ │ ├── ASLParserVisitor.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── antlt4utils/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── antlr4utils.py
│ │ │ │ ├── component/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── assign/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── assign_decl.py
│ │ │ │ │ │ │ ├── assign_decl_binding.py
│ │ │ │ │ │ │ ├── assign_template_binding.py
│ │ │ │ │ │ │ ├── assign_template_value.py
│ │ │ │ │ │ │ ├── assign_template_value_array.py
│ │ │ │ │ │ │ ├── assign_template_value_object.py
│ │ │ │ │ │ │ └── assign_template_value_terminal.py
│ │ │ │ │ │ ├── catch/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── catch_decl.py
│ │ │ │ │ │ │ ├── catch_outcome.py
│ │ │ │ │ │ │ ├── catcher_decl.py
│ │ │ │ │ │ │ ├── catcher_outcome.py
│ │ │ │ │ │ │ └── catcher_props.py
│ │ │ │ │ │ ├── comment.py
│ │ │ │ │ │ ├── error_name/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── custom_error_name.py
│ │ │ │ │ │ │ ├── error_equals_decl.py
│ │ │ │ │ │ │ ├── error_name.py
│ │ │ │ │ │ │ ├── failure_event.py
│ │ │ │ │ │ │ ├── states_error_name.py
│ │ │ │ │ │ │ └── states_error_name_type.py
│ │ │ │ │ │ ├── flow/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── end.py
│ │ │ │ │ │ │ ├── next.py
│ │ │ │ │ │ │ └── start_at.py
│ │ │ │ │ │ ├── jsonata/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── jsonata_template_binding.py
│ │ │ │ │ │ │ ├── jsonata_template_value.py
│ │ │ │ │ │ │ ├── jsonata_template_value_array.py
│ │ │ │ │ │ │ ├── jsonata_template_value_object.py
│ │ │ │ │ │ │ └── jsonata_template_value_terminal.py
│ │ │ │ │ │ ├── outputdecl.py
│ │ │ │ │ │ ├── parargs.py
│ │ │ │ │ │ ├── path/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── input_path.py
│ │ │ │ │ │ │ ├── items_path.py
│ │ │ │ │ │ │ ├── output_path.py
│ │ │ │ │ │ │ └── result_path.py
│ │ │ │ │ │ ├── payload/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── payloadvalue/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── payload_value.py
│ │ │ │ │ │ │ ├── payloadarr/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ └── payload_arr.py
│ │ │ │ │ │ │ ├── payloadbinding/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ └── payload_binding.py
│ │ │ │ │ │ │ ├── payloadtmpl/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ └── payload_tmpl.py
│ │ │ │ │ │ │ └── payloadvaluelit/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── payload_value_bool.py
│ │ │ │ │ │ │ ├── payload_value_float.py
│ │ │ │ │ │ │ ├── payload_value_int.py
│ │ │ │ │ │ │ ├── payload_value_lit.py
│ │ │ │ │ │ │ ├── payload_value_null.py
│ │ │ │ │ │ │ └── payload_value_str.py
│ │ │ │ │ │ ├── query_language.py
│ │ │ │ │ │ ├── result_selector.py
│ │ │ │ │ │ ├── retry/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── backoff_rate_decl.py
│ │ │ │ │ │ │ ├── interval_seconds_decl.py
│ │ │ │ │ │ │ ├── jitter_strategy_decl.py
│ │ │ │ │ │ │ ├── max_attempts_decl.py
│ │ │ │ │ │ │ ├── max_delay_seconds_decl.py
│ │ │ │ │ │ │ ├── retrier_decl.py
│ │ │ │ │ │ │ ├── retrier_outcome.py
│ │ │ │ │ │ │ ├── retrier_props.py
│ │ │ │ │ │ │ ├── retry_decl.py
│ │ │ │ │ │ │ └── retry_outcome.py
│ │ │ │ │ │ ├── string/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── string_expression.py
│ │ │ │ │ │ └── timeouts/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── heartbeat.py
│ │ │ │ │ │ └── timeout.py
│ │ │ │ │ ├── component.py
│ │ │ │ │ ├── eval_component.py
│ │ │ │ │ ├── intrinsic/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── argument/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── argument.py
│ │ │ │ │ │ ├── component.py
│ │ │ │ │ │ ├── function/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── function.py
│ │ │ │ │ │ │ └── statesfunction/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── array/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── array.py
│ │ │ │ │ │ │ │ ├── array_contains.py
│ │ │ │ │ │ │ │ ├── array_get_item.py
│ │ │ │ │ │ │ │ ├── array_length.py
│ │ │ │ │ │ │ │ ├── array_partition.py
│ │ │ │ │ │ │ │ ├── array_range.py
│ │ │ │ │ │ │ │ └── array_unique.py
│ │ │ │ │ │ │ ├── encoding_decoding/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── base_64_decode.py
│ │ │ │ │ │ │ │ └── base_64_encode.py
│ │ │ │ │ │ │ ├── factory.py
│ │ │ │ │ │ │ ├── generic/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ └── string_format.py
│ │ │ │ │ │ │ ├── hash_calculations/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── hash_algorithm.py
│ │ │ │ │ │ │ │ └── hash_func.py
│ │ │ │ │ │ │ ├── json_manipulation/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── json_merge.py
│ │ │ │ │ │ │ │ ├── json_to_string.py
│ │ │ │ │ │ │ │ └── string_to_json.py
│ │ │ │ │ │ │ ├── math_operations/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── math_add.py
│ │ │ │ │ │ │ │ └── math_random.py
│ │ │ │ │ │ │ ├── states_function.py
│ │ │ │ │ │ │ ├── states_function_array.py
│ │ │ │ │ │ │ ├── states_function_format.py
│ │ │ │ │ │ │ ├── states_function_json_to_string.py
│ │ │ │ │ │ │ ├── states_function_string_to_json.py
│ │ │ │ │ │ │ ├── states_function_uuid.py
│ │ │ │ │ │ │ ├── string_operations/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ └── string_split.py
│ │ │ │ │ │ │ └── unique_id_generation/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── uuid.py
│ │ │ │ │ │ ├── functionname/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── custom_function_name.py
│ │ │ │ │ │ │ ├── function_name.py
│ │ │ │ │ │ │ ├── state_function_name_types.py
│ │ │ │ │ │ │ └── states_function_name.py
│ │ │ │ │ │ ├── jsonata.py
│ │ │ │ │ │ ├── member.py
│ │ │ │ │ │ ├── member_access.py
│ │ │ │ │ │ └── program.py
│ │ │ │ │ ├── program/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── program.py
│ │ │ │ │ │ ├── states.py
│ │ │ │ │ │ └── version.py
│ │ │ │ │ ├── state/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── choice/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── choice_rule.py
│ │ │ │ │ │ │ ├── choices_decl.py
│ │ │ │ │ │ │ ├── comparison/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── comparison.py
│ │ │ │ │ │ │ │ ├── comparison_func.py
│ │ │ │ │ │ │ │ ├── comparison_operator_type.py
│ │ │ │ │ │ │ │ ├── comparison_type.py
│ │ │ │ │ │ │ │ ├── comparison_variable.py
│ │ │ │ │ │ │ │ ├── operator/
│ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ ├── factory.py
│ │ │ │ │ │ │ │ │ ├── implementations/
│ │ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ │ ├── boolean_equals.py
│ │ │ │ │ │ │ │ │ │ ├── is_operator.py
│ │ │ │ │ │ │ │ │ │ ├── numeric.py
│ │ │ │ │ │ │ │ │ │ ├── string_operators.py
│ │ │ │ │ │ │ │ │ │ └── timestamp_operators.py
│ │ │ │ │ │ │ │ │ └── operator.py
│ │ │ │ │ │ │ │ └── variable.py
│ │ │ │ │ │ │ ├── default_decl.py
│ │ │ │ │ │ │ └── state_choice.py
│ │ │ │ │ │ ├── exec/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── execute_state.py
│ │ │ │ │ │ │ ├── state_map/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── execution_type.py
│ │ │ │ │ │ │ │ ├── item_reader/
│ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ ├── eval/
│ │ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ │ ├── resource_eval.py
│ │ │ │ │ │ │ │ │ │ ├── resource_eval_factory.py
│ │ │ │ │ │ │ │ │ │ ├── resource_eval_s3.py
│ │ │ │ │ │ │ │ │ │ └── resource_output_transformer/
│ │ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ │ ├── transformer.py
│ │ │ │ │ │ │ │ │ │ ├── transformer_csv.py
│ │ │ │ │ │ │ │ │ │ ├── transformer_factory.py
│ │ │ │ │ │ │ │ │ │ └── transformer_json.py
│ │ │ │ │ │ │ │ │ ├── item_reader_decl.py
│ │ │ │ │ │ │ │ │ └── reader_config/
│ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ ├── csv_header_location.py
│ │ │ │ │ │ │ │ │ ├── csv_headers.py
│ │ │ │ │ │ │ │ │ ├── input_type.py
│ │ │ │ │ │ │ │ │ ├── max_items_decl.py
│ │ │ │ │ │ │ │ │ ├── reader_config_decl.py
│ │ │ │ │ │ │ │ │ └── reader_config_props.py
│ │ │ │ │ │ │ │ ├── item_selector.py
│ │ │ │ │ │ │ │ ├── items/
│ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ └── items.py
│ │ │ │ │ │ │ │ ├── iteration/
│ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ ├── distributed_iteration_component.py
│ │ │ │ │ │ │ │ │ ├── inline_iteration_component.py
│ │ │ │ │ │ │ │ │ ├── itemprocessor/
│ │ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ │ ├── distributed_item_processor.py
│ │ │ │ │ │ │ │ │ │ ├── distributed_item_processor_worker.py
│ │ │ │ │ │ │ │ │ │ ├── inline_item_processor.py
│ │ │ │ │ │ │ │ │ │ ├── inline_item_processor_worker.py
│ │ │ │ │ │ │ │ │ │ ├── item_processor_decl.py
│ │ │ │ │ │ │ │ │ │ ├── item_processor_factory.py
│ │ │ │ │ │ │ │ │ │ ├── map_run_record.py
│ │ │ │ │ │ │ │ │ │ └── processor_config.py
│ │ │ │ │ │ │ │ │ ├── iteration_component.py
│ │ │ │ │ │ │ │ │ ├── iteration_declaration.py
│ │ │ │ │ │ │ │ │ ├── iteration_worker.py
│ │ │ │ │ │ │ │ │ ├── iterator/
│ │ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ │ ├── distributed_iterator.py
│ │ │ │ │ │ │ │ │ │ ├── distributed_iterator_worker.py
│ │ │ │ │ │ │ │ │ │ ├── inline_iterator.py
│ │ │ │ │ │ │ │ │ │ ├── inline_iterator_worker.py
│ │ │ │ │ │ │ │ │ │ ├── iterator_decl.py
│ │ │ │ │ │ │ │ │ │ └── iterator_factory.py
│ │ │ │ │ │ │ │ │ └── job.py
│ │ │ │ │ │ │ │ ├── label.py
│ │ │ │ │ │ │ │ ├── max_concurrency.py
│ │ │ │ │ │ │ │ ├── mode.py
│ │ │ │ │ │ │ │ ├── result_writer/
│ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ ├── resource_eval/
│ │ │ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ │ │ ├── resource_eval.py
│ │ │ │ │ │ │ │ │ │ ├── resource_eval_factory.py
│ │ │ │ │ │ │ │ │ │ └── resource_eval_s3.py
│ │ │ │ │ │ │ │ │ └── result_writer_decl.py
│ │ │ │ │ │ │ │ ├── state_map.py
│ │ │ │ │ │ │ │ └── tolerated_failure.py
│ │ │ │ │ │ │ ├── state_parallel/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── branch_worker.py
│ │ │ │ │ │ │ │ ├── branches_decl.py
│ │ │ │ │ │ │ │ └── state_parallel.py
│ │ │ │ │ │ │ └── state_task/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── credentials.py
│ │ │ │ │ │ │ ├── lambda_eval_utils.py
│ │ │ │ │ │ │ ├── mock_eval_utils.py
│ │ │ │ │ │ │ ├── service/
│ │ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ │ ├── resource.py
│ │ │ │ │ │ │ │ ├── state_task_service.py
│ │ │ │ │ │ │ │ ├── state_task_service_api_gateway.py
│ │ │ │ │ │ │ │ ├── state_task_service_aws_sdk.py
│ │ │ │ │ │ │ │ ├── state_task_service_batch.py
│ │ │ │ │ │ │ │ ├── state_task_service_callback.py
│ │ │ │ │ │ │ │ ├── state_task_service_dynamodb.py
│ │ │ │ │ │ │ │ ├── state_task_service_ecs.py
│ │ │ │ │ │ │ │ ├── state_task_service_events.py
│ │ │ │ │ │ │ │ ├── state_task_service_factory.py
│ │ │ │ │ │ │ │ ├── state_task_service_glue.py
│ │ │ │ │ │ │ │ ├── state_task_service_lambda.py
│ │ │ │ │ │ │ │ ├── state_task_service_sfn.py
│ │ │ │ │ │ │ │ ├── state_task_service_sns.py
│ │ │ │ │ │ │ │ ├── state_task_service_sqs.py
│ │ │ │ │ │ │ │ └── state_task_service_unsupported.py
│ │ │ │ │ │ │ ├── state_task.py
│ │ │ │ │ │ │ ├── state_task_activitiy.py
│ │ │ │ │ │ │ ├── state_task_factory.py
│ │ │ │ │ │ │ └── state_task_lambda.py
│ │ │ │ │ │ ├── fail/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── cause_decl.py
│ │ │ │ │ │ │ ├── error_decl.py
│ │ │ │ │ │ │ └── state_fail.py
│ │ │ │ │ │ ├── state.py
│ │ │ │ │ │ ├── state_continue_with.py
│ │ │ │ │ │ ├── state_pass/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── result.py
│ │ │ │ │ │ │ └── state_pass.py
│ │ │ │ │ │ ├── state_props.py
│ │ │ │ │ │ ├── state_succeed/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── state_succeed.py
│ │ │ │ │ │ ├── state_type.py
│ │ │ │ │ │ └── wait/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── state_wait.py
│ │ │ │ │ │ └── wait_function/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── seconds.py
│ │ │ │ │ │ ├── seconds_path.py
│ │ │ │ │ │ ├── timestamp.py
│ │ │ │ │ │ └── wait_function.py
│ │ │ │ │ └── test_state/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── program/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── test_state_program.py
│ │ │ │ │ └── state/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── test_state_state_props.py
│ │ │ │ ├── eval/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── callback/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── callback.py
│ │ │ │ │ ├── contex_object.py
│ │ │ │ │ ├── count_down_latch.py
│ │ │ │ │ ├── environment.py
│ │ │ │ │ ├── evaluation_details.py
│ │ │ │ │ ├── event/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── event_detail.py
│ │ │ │ │ │ ├── event_manager.py
│ │ │ │ │ │ └── logging.py
│ │ │ │ │ ├── program_state.py
│ │ │ │ │ ├── states.py
│ │ │ │ │ ├── test_state/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── environment.py
│ │ │ │ │ │ └── program_state.py
│ │ │ │ │ └── variable_store.py
│ │ │ │ ├── jsonata/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── jsonata.py
│ │ │ │ │ └── validations.py
│ │ │ │ ├── parse/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── asl_parser.py
│ │ │ │ │ ├── intrinsic/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── intrinsic_parser.py
│ │ │ │ │ │ └── preprocessor.py
│ │ │ │ │ ├── preprocessor.py
│ │ │ │ │ ├── test_state/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── asl_parser.py
│ │ │ │ │ │ └── preprocessor.py
│ │ │ │ │ └── typed_props.py
│ │ │ │ ├── static_analyser/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── express_static_analyser.py
│ │ │ │ │ ├── intrinsic/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── intrinsic_static_analyser.py
│ │ │ │ │ │ └── variable_names_intrinsic_static_analyser.py
│ │ │ │ │ ├── static_analyser.py
│ │ │ │ │ ├── test_state/
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── test_state_analyser.py
│ │ │ │ │ ├── usage_metrics_static_analyser.py
│ │ │ │ │ └── variable_references_static_analyser.py
│ │ │ │ └── utils/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── boto_client.py
│ │ │ │ ├── encoding.py
│ │ │ │ └── json_path.py
│ │ │ ├── backend/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── activity.py
│ │ │ │ ├── alias.py
│ │ │ │ ├── execution.py
│ │ │ │ ├── execution_worker.py
│ │ │ │ ├── execution_worker_comm.py
│ │ │ │ ├── state_machine.py
│ │ │ │ ├── store.py
│ │ │ │ └── test_state/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── execution.py
│ │ │ │ └── execution_worker.py
│ │ │ ├── mocking/
│ │ │ │ ├── __init__.py
│ │ │ │ └── mock_config.py
│ │ │ ├── models.py
│ │ │ ├── packages.py
│ │ │ ├── plugins.py
│ │ │ ├── provider.py
│ │ │ ├── quotas.py
│ │ │ ├── resource_providers/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── aws_stepfunctions_activity.py
│ │ │ │ ├── aws_stepfunctions_activity.schema.json
│ │ │ │ ├── aws_stepfunctions_activity_plugin.py
│ │ │ │ ├── aws_stepfunctions_statemachine.py
│ │ │ │ ├── aws_stepfunctions_statemachine.schema.json
│ │ │ │ └── aws_stepfunctions_statemachine_plugin.py
│ │ │ ├── stepfunctions_utils.py
│ │ │ └── utils.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── sts/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── support/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── resources/
│ │ │ └── describe_trusted_advisor_checks.json
│ │ ├── responses.py
│ │ └── urls.py
│ ├── swf/
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── exceptions.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── activity_task.py
│ │ │ ├── activity_type.py
│ │ │ ├── decision_task.py
│ │ │ ├── domain.py
│ │ │ ├── generic_type.py
│ │ │ ├── history_event.py
│ │ │ ├── timeout.py
│ │ │ ├── timer.py
│ │ │ ├── workflow_execution.py
│ │ │ └── workflow_type.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── synthetics/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── textract/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── timestreaminfluxdb/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── timestreamquery/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ └── urls.py
│ ├── timestreamwrite/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── transcribe/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── transfer/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── types.py
│ │ └── urls.py
│ ├── utilities/
│ │ ├── __init__.py
│ │ ├── arns.py
│ │ ├── aws_headers.py
│ │ ├── collections.py
│ │ ├── constants.py
│ │ ├── distutils_version.py
│ │ ├── docker_utilities.py
│ │ ├── id_generator.py
│ │ ├── paginator.py
│ │ ├── tagging_service.py
│ │ ├── tokenizer.py
│ │ └── utils.py
│ ├── vpclattice/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── wafv2/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ ├── urls.py
│ │ └── utils.py
│ ├── workspaces/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ ├── workspacesweb/
│ │ ├── __init__.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── responses.py
│ │ └── urls.py
│ └── xray/
│ ├── __init__.py
│ ├── exceptions.py
│ ├── mock_client.py
│ ├── models.py
│ ├── responses.py
│ └── urls.py
├── other_langs/
│ ├── sqsSample.java
│ ├── sqsSample.scala
│ ├── terraform/
│ │ ├── account/
│ │ │ ├── contact.tf
│ │ │ └── provider.tf
│ │ ├── acm/
│ │ │ ├── acm.tf
│ │ │ └── providers.tf
│ │ ├── apigw2/
│ │ │ ├── apigateway.tf
│ │ │ ├── data.tf
│ │ │ └── provider.tf
│ │ ├── autoscaling/
│ │ │ ├── data.tf
│ │ │ ├── main.tf
│ │ │ ├── provider.tf
│ │ │ ├── security_groups.tf
│ │ │ └── variables.tf
│ │ ├── awslambda/
│ │ │ ├── event_invoke_config.tf
│ │ │ ├── event_source_mapping.tf
│ │ │ ├── event_source_mapping_common.tf
│ │ │ ├── event_source_mapping_sqs.tf
│ │ │ ├── event_source_mapping_sqs_fifo.tf
│ │ │ ├── lambda.js
│ │ │ └── provider.tf
│ │ ├── backup/
│ │ │ ├── provider.tf
│ │ │ └── resources.tf
│ │ ├── cloudfront/
│ │ │ ├── cloudfront.tf
│ │ │ └── providers.tf
│ │ ├── codebuild/
│ │ │ ├── project.tf
│ │ │ └── provider.tf
│ │ ├── ds/
│ │ │ ├── provider.tf
│ │ │ └── simple_ad.tf
│ │ ├── dsql/
│ │ │ ├── cluster.tf
│ │ │ └── provider.tf
│ │ ├── ec2/
│ │ │ ├── ami.tf
│ │ │ ├── instances.tf
│ │ │ ├── provider.tf
│ │ │ └── vpc.tf
│ │ ├── ecr/
│ │ │ ├── provider.tf
│ │ │ └── repository.tf
│ │ ├── elb/
│ │ │ ├── listener.tf
│ │ │ ├── load_balancer.tf
│ │ │ └── provider.tf
│ │ ├── firehose/
│ │ │ ├── main.tf
│ │ │ └── provider.tf
│ │ ├── iam/
│ │ │ ├── data.tf
│ │ │ ├── iam.tf
│ │ │ ├── output.tf
│ │ │ ├── providers.tf
│ │ │ └── sample-metadata.xml
│ │ ├── mq/
│ │ │ ├── broker.tf
│ │ │ └── provider.tf
│ │ ├── pipes/
│ │ │ ├── pipe.tf
│ │ │ └── provider.tf
│ │ ├── rds/
│ │ │ ├── providers.tf
│ │ │ ├── proxy.tf
│ │ │ └── rds.tf
│ │ ├── route53/
│ │ │ ├── providers.tf
│ │ │ └── route53.tf
│ │ ├── s3/
│ │ │ ├── bucket.tf
│ │ │ ├── bucket_with_lifecycle_policy.tf
│ │ │ ├── minimal_lifecycle_configuration.tf
│ │ │ ├── provider.tf
│ │ │ └── public_access_block.tf
│ │ ├── sqs/
│ │ │ ├── provider.tf
│ │ │ └── queue.tf
│ │ └── wafv2/
│ │ ├── cognito.tf
│ │ └── provider.tf
│ ├── test.js
│ ├── test.rb
│ ├── tests_cdk/
│ │ └── s3_eventbridge/
│ │ ├── app.py
│ │ ├── cdk.json
│ │ └── requirements.txt
│ ├── tests_cli/
│ │ └── test_cognity_identity.bats
│ ├── tests_cpp/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ └── hello_s3.cpp
│ ├── tests_dotnet/
│ │ ├── ebs/
│ │ │ ├── ElasticBlockStore.csproj
│ │ │ ├── UnitTest.cs
│ │ │ └── Usings.cs
│ │ ├── s3/
│ │ │ ├── UnitTest.cs
│ │ │ ├── Usings.cs
│ │ │ └── s3.csproj
│ │ └── sqs/
│ │ ├── UnitTest.cs
│ │ ├── Usings.cs
│ │ └── sqs.csproj
│ ├── tests_go/
│ │ ├── dynamodbstreams_test.go
│ │ ├── eks_test.go
│ │ └── go.mod
│ ├── tests_java/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── moto/
│ │ │ └── tests/
│ │ │ ├── DependencyFactory.java
│ │ │ └── DynamoLogic.java
│ │ └── test/
│ │ └── java/
│ │ └── moto/
│ │ └── tests/
│ │ ├── CognitoIDPTest.java
│ │ ├── DynamoTest.java
│ │ ├── S3Test.java
│ │ └── SESTest.java
│ ├── tests_js/
│ │ ├── ec2.test.js
│ │ ├── lambda.test.js
│ │ ├── package.json
│ │ ├── rds.test.js
│ │ ├── s3.test.js
│ │ └── sqs.test.js
│ ├── tests_ruby/
│ │ ├── Gemfile
│ │ └── test/
│ │ └── aws_sqs_test.rb
│ └── tests_sagemaker_client/
│ ├── __init__.py
│ ├── custom_script.py
│ ├── test_model_training.py
│ └── test_pipeline_session.py
├── pyproject.toml
├── requirements-dev.txt
├── requirements-tests.txt
├── requirements.txt
├── scripts/
│ ├── bump_version
│ ├── ci_moto_server.sh
│ ├── ci_wait_for_server.py
│ ├── cloudformation_coverage.py
│ ├── dependency_test.sh
│ ├── ec2_get_instance_type_offerings.py
│ ├── emr_get_releases.py
│ ├── get_amis.py
│ ├── get_instance_info.py
│ ├── implementation_coverage.py
│ ├── import_sfn_parser.sh
│ ├── pull_down_aws_managed_rules.py
│ ├── rds_describe_option_group_options.py
│ ├── rds_get_orderable_db_cluster_options.py
│ ├── scaffold.py
│ ├── ssm_get_default_amis.py
│ ├── ssm_get_default_params.py
│ ├── ssm_get_default_patch_baselines.py
│ ├── ssm_get_optimized_amis.py
│ ├── template/
│ │ ├── lib/
│ │ │ ├── __init__.py.j2
│ │ │ ├── exceptions.py.j2
│ │ │ ├── models.py.j2
│ │ │ ├── responses.py.j2
│ │ │ └── urls.py.j2
│ │ └── test/
│ │ ├── __init__.py.j2
│ │ ├── test_server.py.j2
│ │ └── test_service.py.j2
│ ├── update_backend_index.py
│ ├── update_managed_policies.py
│ └── update_ssl_policies.py
├── setup.cfg
├── setup.py
├── tests/
│ ├── __init__.py
│ ├── conftest.py
│ ├── markers.py
│ ├── test_account/
│ │ ├── __init__.py
│ │ └── test_account_alternate_contacts.py
│ ├── test_acm/
│ │ ├── __init__.py
│ │ ├── resources/
│ │ │ ├── README.md
│ │ │ ├── __init__.py
│ │ │ ├── ca.key
│ │ │ ├── ca.pem
│ │ │ ├── ca.srl
│ │ │ ├── star_moto_com-bad.pem
│ │ │ ├── star_moto_com.csr
│ │ │ ├── star_moto_com.key
│ │ │ ├── star_moto_com.pem
│ │ │ ├── star_moto_com_ec_prime256v1.key
│ │ │ ├── star_moto_com_ec_prime256v1.pem
│ │ │ ├── star_moto_com_ec_secp384r1.key
│ │ │ ├── star_moto_com_ec_secp384r1.pem
│ │ │ ├── star_moto_com_ec_secp521r1.key
│ │ │ ├── star_moto_com_ec_secp521r1.pem
│ │ │ ├── star_moto_com_rsa_1024.key
│ │ │ ├── star_moto_com_rsa_1024.pem
│ │ │ ├── star_moto_com_rsa_3072.key
│ │ │ ├── star_moto_com_rsa_3072.pem
│ │ │ ├── star_moto_com_rsa_4096.key
│ │ │ └── star_moto_com_rsa_4096.pem
│ │ └── test_acm.py
│ ├── test_acmpca/
│ │ ├── __init__.py
│ │ └── test_acmpca.py
│ ├── test_amp/
│ │ ├── __init__.py
│ │ ├── test_amp_logging_config.py
│ │ ├── test_amp_rulegroupnamespaces.py
│ │ └── test_amp_workspaces.py
│ ├── test_apigateway/
│ │ ├── __init__.py
│ │ ├── resources/
│ │ │ ├── petstore-swagger-v3.yaml
│ │ │ ├── test_api.json
│ │ │ ├── test_api.yaml
│ │ │ ├── test_api_integration.yaml
│ │ │ ├── test_api_invalid.json
│ │ │ ├── test_api_invalid_version.json
│ │ │ └── test_deep_api.yaml
│ │ ├── test_apigateway.py
│ │ ├── test_apigateway_cloudformation.py
│ │ ├── test_apigateway_custom_ids.py
│ │ ├── test_apigateway_deployments.py
│ │ ├── test_apigateway_export.py
│ │ ├── test_apigateway_gatewayresponses.py
│ │ ├── test_apigateway_importrestapi.py
│ │ ├── test_apigateway_integration.py
│ │ ├── test_apigateway_putrestapi.py
│ │ ├── test_apigateway_stage.py
│ │ ├── test_apigateway_validators.py
│ │ ├── test_apigateway_vpclink.py
│ │ └── test_server.py
│ ├── test_apigatewaymanagementapi/
│ │ ├── __init__.py
│ │ └── test_apigatewaymanagementapi.py
│ ├── test_apigatewayv2/
│ │ ├── __init__.py
│ │ ├── test_apigatewayv2.py
│ │ ├── test_apigatewayv2_authorizers.py
│ │ ├── test_apigatewayv2_domains.py
│ │ ├── test_apigatewayv2_integrationresponses.py
│ │ ├── test_apigatewayv2_integrations.py
│ │ ├── test_apigatewayv2_mappings.py
│ │ ├── test_apigatewayv2_models.py
│ │ ├── test_apigatewayv2_reimport.py
│ │ ├── test_apigatewayv2_routes.py
│ │ ├── test_apigatewayv2_stages.py
│ │ ├── test_apigatewayv2_tags.py
│ │ ├── test_apigatewayv2_vpclinks.py
│ │ └── test_server.py
│ ├── test_appconfig/
│ │ ├── __init__.py
│ │ ├── test_appconfig_applications.py
│ │ ├── test_appconfig_config_profiles.py
│ │ └── test_appconfig_hosted_config_versions.py
│ ├── test_applicationautoscaling/
│ │ ├── __init__.py
│ │ ├── test_applicationautoscaling.py
│ │ ├── test_applicationautoscaling_policies.py
│ │ └── test_validation.py
│ ├── test_appmesh/
│ │ ├── __init__.py
│ │ ├── data.py
│ │ └── test_appmesh.py
│ ├── test_appsync/
│ │ ├── __init__.py
│ │ ├── test_appsync.py
│ │ ├── test_appsync_apikeys.py
│ │ ├── test_appsync_integration.py
│ │ ├── test_appsync_schema.py
│ │ ├── test_appsync_tags.py
│ │ └── test_server.py
│ ├── test_athena/
│ │ ├── __init__.py
│ │ ├── test_athena.py
│ │ ├── test_athena_capacity_reservations.py
│ │ ├── test_athena_execution_state.py
│ │ ├── test_athena_integration.py
│ │ ├── test_athena_resourcegroupstagging_integration.py
│ │ └── test_athena_server_api.py
│ ├── test_autoscaling/
│ │ ├── __init__.py
│ │ ├── test_autoscaling.py
│ │ ├── test_autoscaling_cloudformation.py
│ │ ├── test_autoscaling_group_filters.py
│ │ ├── test_autoscaling_groups.py
│ │ ├── test_autoscaling_metrics.py
│ │ ├── test_autoscaling_scheduledactions.py
│ │ ├── test_autoscaling_tags.py
│ │ ├── test_autoscaling_warm_pools.py
│ │ ├── test_elb.py
│ │ ├── test_elbv2.py
│ │ ├── test_launch_configurations.py
│ │ ├── test_policies.py
│ │ ├── test_server.py
│ │ └── utils.py
│ ├── test_awslambda/
│ │ ├── __init__.py
│ │ ├── test_awslambda_cloudformation.py
│ │ ├── test_lambda.py
│ │ ├── test_lambda_alias.py
│ │ ├── test_lambda_concurrency.py
│ │ ├── test_lambda_eventsourcemapping.py
│ │ ├── test_lambda_function_urls.py
│ │ ├── test_lambda_invoke.py
│ │ ├── test_lambda_layers.py
│ │ ├── test_lambda_layers_invoked.py
│ │ ├── test_lambda_policy.py
│ │ ├── test_lambda_tags.py
│ │ ├── test_policy.py
│ │ └── utilities.py
│ ├── test_awslambda_simple/
│ │ ├── __init__.py
│ │ └── test_lambda_simple.py
│ ├── test_backup/
│ │ ├── __init__.py
│ │ ├── test_backup.py
│ │ └── test_backup_report_plans.py
│ ├── test_batch/
│ │ ├── __init__.py
│ │ ├── test_batch.py
│ │ ├── test_batch_cloudformation.py
│ │ ├── test_batch_compute_envs.py
│ │ ├── test_batch_eks.py
│ │ ├── test_batch_job_queue.py
│ │ ├── test_batch_jobs.py
│ │ ├── test_batch_scheduling_policy.py
│ │ ├── test_batch_tags_job.py
│ │ ├── test_batch_tags_job_definition.py
│ │ ├── test_batch_tags_job_queue.py
│ │ ├── test_batch_tags_scheduling_policy.py
│ │ ├── test_batch_task_definition.py
│ │ ├── test_server.py
│ │ └── test_utils.py
│ ├── test_batch_simple/
│ │ ├── __init__.py
│ │ ├── test_batch_cloudformation.py
│ │ ├── test_batch_compute_envs.py
│ │ └── test_batch_jobs.py
│ ├── test_bedrock/
│ │ ├── __init__.py
│ │ └── test_bedrock.py
│ ├── test_bedrockagent/
│ │ ├── __init__.py
│ │ └── test_bedrockagent.py
│ ├── test_bedrockruntime/
│ │ ├── __init__.py
│ │ ├── test_bedrockruntime.py
│ │ └── test_server.py
│ ├── test_budgets/
│ │ ├── __init__.py
│ │ ├── test_budgets.py
│ │ ├── test_notifications.py
│ │ └── test_server.py
│ ├── test_ce/
│ │ ├── __init__.py
│ │ ├── test_ce.py
│ │ ├── test_ce_cost_and_usage.py
│ │ └── test_ce_tags.py
│ ├── test_clouddirectory/
│ │ ├── __init__.py
│ │ ├── test_clouddirectory.py
│ │ └── test_clouddirectory_integration.py
│ ├── test_cloudformation/
│ │ ├── __init__.py
│ │ ├── fixtures/
│ │ │ ├── __init__.py
│ │ │ ├── custom_lambda.py
│ │ │ ├── ec2_classic_eip.py
│ │ │ ├── fn_join.py
│ │ │ ├── kms_key.py
│ │ │ ├── rds_mysql_with_db_parameter_group.py
│ │ │ ├── rds_mysql_with_read_replica.py
│ │ │ ├── redshift.py
│ │ │ ├── route53_ec2_instance_with_public_ip.py
│ │ │ ├── route53_health_check.py
│ │ │ ├── route53_roundrobin.py
│ │ │ ├── single_instance_with_ebs_volume.py
│ │ │ ├── vpc_eip.py
│ │ │ ├── vpc_eni.py
│ │ │ └── vpc_single_instance_in_subnet.py
│ │ ├── test_cloudformation_custom_resources.py
│ │ ├── test_cloudformation_depends_on.py
│ │ ├── test_cloudformation_multi_accounts.py
│ │ ├── test_cloudformation_nested_stacks.py
│ │ ├── test_cloudformation_stack_crud.py
│ │ ├── test_cloudformation_stack_integration.py
│ │ ├── test_cloudformation_stack_policies.py
│ │ ├── test_conditions.py
│ │ ├── test_import_value.py
│ │ ├── test_server.py
│ │ ├── test_stack_parsing.py
│ │ ├── test_utilities.py
│ │ └── test_validate.py
│ ├── test_cloudfront/
│ │ ├── __init__.py
│ │ ├── cloudfront_test_scaffolding.py
│ │ ├── test_cloudfront.py
│ │ ├── test_cloudfront_dist_tags.py
│ │ ├── test_cloudfront_distributions.py
│ │ ├── test_cloudfront_integration.py
│ │ ├── test_cloudfront_invalidation.py
│ │ ├── test_cloudfront_keys.py
│ │ ├── test_cloudfront_oac.py
│ │ └── test_server.py
│ ├── test_cloudhsmv2/
│ │ ├── __init__.py
│ │ └── test_cloudhsmv2.py
│ ├── test_cloudtrail/
│ │ ├── __init__.py
│ │ ├── test_cloudtrail.py
│ │ ├── test_cloudtrail_eventselectors.py
│ │ ├── test_cloudtrail_tags.py
│ │ └── test_server.py
│ ├── test_cloudwatch/
│ │ ├── __init__.py
│ │ ├── test_cloudwatch.py
│ │ ├── test_cloudwatch_alarms.py
│ │ ├── test_cloudwatch_cloudformation.py
│ │ ├── test_cloudwatch_dashboards.py
│ │ ├── test_cloudwatch_expression_parser.py
│ │ ├── test_cloudwatch_expressions.py
│ │ ├── test_cloudwatch_insight_rules.py
│ │ └── test_cloudwatch_tags.py
│ ├── test_codebuild/
│ │ └── test_codebuild.py
│ ├── test_codecommit/
│ │ └── test_codecommit.py
│ ├── test_codedeploy/
│ │ ├── __init__.py
│ │ └── test_codedeploy.py
│ ├── test_codepipeline/
│ │ ├── __init__.py
│ │ └── test_codepipeline.py
│ ├── test_cognitoidentity/
│ │ ├── __init__.py
│ │ ├── test_cognitoidentity.py
│ │ └── test_server.py
│ ├── test_cognitoidp/
│ │ ├── __init__.py
│ │ ├── test_cognitoidp.py
│ │ ├── test_cognitoidp_exceptions.py
│ │ ├── test_cognitoidp_replay.py
│ │ ├── test_cognitoidp_utils.py
│ │ └── test_server.py
│ ├── test_comprehend/
│ │ ├── __init__.py
│ │ ├── test_comprehend.py
│ │ ├── test_comprehend_integration.py
│ │ └── test_comprehend_jobs.py
│ ├── test_config/
│ │ ├── __init__.py
│ │ ├── test_config.py
│ │ ├── test_config_rules.py
│ │ ├── test_config_rules_integration.py
│ │ └── test_config_tags.py
│ ├── test_connect/
│ │ ├── __init__.py
│ │ └── test_connect.py
│ ├── test_connectcampaigns/
│ │ ├── __init__.py
│ │ └── test_connectcampaigns.py
│ ├── test_core/
│ │ ├── __init__.py
│ │ ├── protocols/
│ │ │ ├── input/
│ │ │ │ ├── ec2.json
│ │ │ │ ├── json.json
│ │ │ │ ├── query.json
│ │ │ │ ├── rest-json.json
│ │ │ │ └── rest-xml.json
│ │ │ └── output/
│ │ │ ├── ec2.json
│ │ │ ├── json.json
│ │ │ ├── query-json.json
│ │ │ ├── query.json
│ │ │ ├── rest-json.json
│ │ │ └── rest-xml.json
│ │ ├── test_account_id_resolution.py
│ │ ├── test_auth.py
│ │ ├── test_auth_context_manager.py
│ │ ├── test_backenddict.py
│ │ ├── test_backends.py
│ │ ├── test_botocore_stubber.py
│ │ ├── test_config.py
│ │ ├── test_decorator_calls.py
│ │ ├── test_docker.py
│ │ ├── test_ec2_vpc_endpoint_services.py
│ │ ├── test_environ_patching.py
│ │ ├── test_errors.py
│ │ ├── test_exceptions.py
│ │ ├── test_importorder.py
│ │ ├── test_instance_metadata.py
│ │ ├── test_mock_regions.py
│ │ ├── test_moto_api.py
│ │ ├── test_mypy.py
│ │ ├── test_nested.py
│ │ ├── test_protocols.py
│ │ ├── test_proxy.py
│ │ ├── test_request_mocking.py
│ │ ├── test_request_passthrough.py
│ │ ├── test_response_serialization.py
│ │ ├── test_responses.py
│ │ ├── test_responses_module.py
│ │ ├── test_serialize.py
│ │ ├── test_server.py
│ │ ├── test_settings.py
│ │ ├── test_url_base_regex.py
│ │ ├── test_url_mapping.py
│ │ ├── test_utils.py
│ │ └── utilities.py
│ ├── test_databrew/
│ │ ├── __init__.py
│ │ ├── test_databrew_datasets.py
│ │ ├── test_databrew_jobs.py
│ │ ├── test_databrew_recipes.py
│ │ └── test_databrew_rulesets.py
│ ├── test_datapipeline/
│ │ ├── __init__.py
│ │ ├── test_datapipeline.py
│ │ ├── test_datapipeline_cloudformation.py
│ │ └── test_server.py
│ ├── test_datasync/
│ │ ├── __init__.py
│ │ └── test_datasync.py
│ ├── test_dax/
│ │ ├── __init__.py
│ │ ├── test_dax.py
│ │ └── test_server.py
│ ├── test_directconnect/
│ │ ├── __init__.py
│ │ ├── test_directconnect.py
│ │ └── test_directconnect_integration.py
│ ├── test_dms/
│ │ ├── __init__.py
│ │ ├── test_dms.py
│ │ ├── test_dms_connection_state.py
│ │ ├── test_dms_integration.py
│ │ └── test_dms_replication_instance_state.py
│ ├── test_ds/
│ │ ├── __init__.py
│ │ ├── test_ds.py
│ │ ├── test_ds_ad_connect.py
│ │ ├── test_ds_microsoft_ad.py
│ │ ├── test_ds_simple_ad_directory.py
│ │ └── test_ds_tags.py
│ ├── test_dsql/
│ │ ├── __init__.py
│ │ └── test_dsql.py
│ ├── test_dynamodb/
│ │ ├── __init__.py
│ │ ├── conftest.py
│ │ ├── exceptions/
│ │ │ ├── __init__.py
│ │ │ ├── test_dynamodb_exceptions.py
│ │ │ ├── test_dynamodb_transactions.py
│ │ │ └── test_key_length_exceptions.py
│ │ ├── models/
│ │ │ ├── test_item.py
│ │ │ ├── test_key_condition_expression_parser.py
│ │ │ └── test_utilities.py
│ │ ├── test_dynamodb.py
│ │ ├── test_dynamodb_account_mode.py
│ │ ├── test_dynamodb_batch_get_item.py
│ │ ├── test_dynamodb_batch_write.py
│ │ ├── test_dynamodb_cloudformation.py
│ │ ├── test_dynamodb_condition_expressions.py
│ │ ├── test_dynamodb_consumedcapacity.py
│ │ ├── test_dynamodb_create_table.py
│ │ ├── test_dynamodb_executor.py
│ │ ├── test_dynamodb_export_table.py
│ │ ├── test_dynamodb_expression_tokenizer.py
│ │ ├── test_dynamodb_expressions.py
│ │ ├── test_dynamodb_iam_permission.py
│ │ ├── test_dynamodb_import_table.py
│ │ ├── test_dynamodb_multi_attribute_gsi.py
│ │ ├── test_dynamodb_query.py
│ │ ├── test_dynamodb_resource_policy.py
│ │ ├── test_dynamodb_scan.py
│ │ ├── test_dynamodb_statements.py
│ │ ├── test_dynamodb_table_with_range_key.py
│ │ ├── test_dynamodb_table_without_range_key.py
│ │ ├── test_dynamodb_transact.py
│ │ ├── test_dynamodb_update_expressions.py
│ │ ├── test_dynamodb_update_table.py
│ │ ├── test_dynamodb_utils.py
│ │ ├── test_dynamodb_validation.py
│ │ └── test_server.py
│ ├── test_dynamodb_v20111205/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ └── test_servermode.py
│ ├── test_dynamodbstreams/
│ │ ├── __init__.py
│ │ └── test_dynamodbstreams.py
│ ├── test_ebs/
│ │ ├── __init__.py
│ │ └── test_ebs.py
│ ├── test_ec2/
│ │ ├── __init__.py
│ │ ├── conftest.py
│ │ ├── helpers.py
│ │ ├── test_account_attributes.py
│ │ ├── test_amis.py
│ │ ├── test_availability_zones_and_regions.py
│ │ ├── test_carrier_gateways.py
│ │ ├── test_customer_gateways.py
│ │ ├── test_dhcp_options.py
│ │ ├── test_ec2_cloudformation.py
│ │ ├── test_ec2_integration.py
│ │ ├── test_egress_only_igw.py
│ │ ├── test_elastic_block_store.py
│ │ ├── test_elastic_ip_addresses.py
│ │ ├── test_elastic_network_interfaces.py
│ │ ├── test_fleets.py
│ │ ├── test_flow_logs.py
│ │ ├── test_flow_logs_cloudformation.py
│ │ ├── test_general.py
│ │ ├── test_hosts.py
│ │ ├── test_iam_integration.py
│ │ ├── test_instance_type_offerings.py
│ │ ├── test_instance_types.py
│ │ ├── test_instances.py
│ │ ├── test_internet_gateways.py
│ │ ├── test_key_pairs.py
│ │ ├── test_launch_templates.py
│ │ ├── test_launch_templates_cloudformation.py
│ │ ├── test_nat_gateway.py
│ │ ├── test_network_acls.py
│ │ ├── test_prefix_lists.py
│ │ ├── test_regions.py
│ │ ├── test_reserved_instances_offerings.py
│ │ ├── test_route_tables.py
│ │ ├── test_security_groups.py
│ │ ├── test_security_groups_cloudformation.py
│ │ ├── test_server.py
│ │ ├── test_settings.py
│ │ ├── test_spot_fleet.py
│ │ ├── test_spot_instances.py
│ │ ├── test_subnets.py
│ │ ├── test_tags.py
│ │ ├── test_transit_gateway.py
│ │ ├── test_transit_gateway_cloudformation.py
│ │ ├── test_transit_gateway_peering_attachments.py
│ │ ├── test_utils.py
│ │ ├── test_virtual_private_gateways.py
│ │ ├── test_vpc_endpoint_services_integration.py
│ │ ├── test_vpc_peering.py
│ │ ├── test_vpc_service_configuration_integration.py
│ │ ├── test_vpcs.py
│ │ ├── test_vpn_connections.py
│ │ └── test_windows.py
│ ├── test_ec2instanceconnect/
│ │ └── test_ec2instanceconnect.py
│ ├── test_ecr/
│ │ ├── __init__.py
│ │ ├── test_ecr.py
│ │ ├── test_ecr_cloudformation.py
│ │ ├── test_ecr_helpers.py
│ │ ├── test_ecr_policy_validation.py
│ │ ├── test_ecr_scan_results.py
│ │ └── test_ecr_scanning_config.py
│ ├── test_ecs/
│ │ ├── __init__.py
│ │ ├── test_ecs.py
│ │ ├── test_ecs_account_settings.py
│ │ ├── test_ecs_capacity_provider.py
│ │ ├── test_ecs_cloudformation.py
│ │ ├── test_ecs_efs.py
│ │ ├── test_ecs_task_def_tags.py
│ │ ├── test_ecs_task_definitions.py
│ │ ├── test_ecs_task_tags.py
│ │ └── test_ecs_tasksets.py
│ ├── test_efs/
│ │ ├── __init__.py
│ │ ├── junk_drawer.py
│ │ ├── test_access_point_tagging.py
│ │ ├── test_access_points.py
│ │ ├── test_efs_cloudformation.py
│ │ ├── test_file_system.py
│ │ ├── test_filesystem_policy.py
│ │ ├── test_filesystem_tagging.py
│ │ ├── test_lifecycle_config.py
│ │ ├── test_mount_target.py
│ │ ├── test_mount_target_security_groups.py
│ │ └── test_server.py
│ ├── test_eks/
│ │ ├── __init__.py
│ │ ├── test_eks.py
│ │ ├── test_eks_constants.py
│ │ ├── test_eks_ec2.py
│ │ ├── test_eks_utils.py
│ │ └── test_server.py
│ ├── test_elasticache/
│ │ ├── __init__.py
│ │ ├── test_elasticache.py
│ │ └── test_server.py
│ ├── test_elasticbeanstalk/
│ │ ├── __init__.py
│ │ ├── test_elasticbeanstalk.py
│ │ └── test_server.py
│ ├── test_elb/
│ │ ├── __init__.py
│ │ ├── test_elb.py
│ │ ├── test_elb_availabilityzones.py
│ │ ├── test_elb_cloudformation.py
│ │ ├── test_elb_policies.py
│ │ ├── test_elb_subnets.py
│ │ └── test_server.py
│ ├── test_elbv2/
│ │ ├── __init__.py
│ │ ├── test_elbv2.py
│ │ ├── test_elbv2_cloudformation.py
│ │ ├── test_elbv2_integration.py
│ │ ├── test_elbv2_listener_attributes.py
│ │ ├── test_elbv2_listener_rule_tags.py
│ │ ├── test_elbv2_listener_rules.py
│ │ ├── test_elbv2_listener_tags.py
│ │ ├── test_elbv2_set_subnets.py
│ │ ├── test_elbv2_target_groups.py
│ │ ├── test_elbv2_target_health.py
│ │ └── test_server.py
│ ├── test_emr/
│ │ ├── __init__.py
│ │ ├── test_emr.py
│ │ ├── test_emr_boto3.py
│ │ ├── test_emr_cloudformation.py
│ │ ├── test_emr_instance_types.py
│ │ ├── test_emr_integration.py
│ │ ├── test_server.py
│ │ └── test_utils.py
│ ├── test_emrcontainers/
│ │ ├── __init__.py
│ │ ├── test_emrcontainers.py
│ │ └── test_server.py
│ ├── test_emrserverless/
│ │ ├── __init__.py
│ │ ├── test_emrserverless.py
│ │ └── test_server.py
│ ├── test_es/
│ │ ├── __init__.py
│ │ ├── test_domain_tags.py
│ │ ├── test_es.py
│ │ └── test_server.py
│ ├── test_events/
│ │ ├── __init__.py
│ │ ├── test_event_pattern.py
│ │ ├── test_events.py
│ │ ├── test_events_cloudformation.py
│ │ ├── test_events_http_integration.py
│ │ ├── test_events_integration.py
│ │ ├── test_events_lambdatriggers_integration.py
│ │ ├── test_events_partners_integration.py
│ │ └── test_events_sfn_integration.py
│ ├── test_firehose/
│ │ ├── __init__.py
│ │ ├── test_firehose.py
│ │ ├── test_firehose_destination_types.py
│ │ ├── test_firehose_encryption.py
│ │ ├── test_firehose_put.py
│ │ ├── test_firehose_tags.py
│ │ └── test_http_destinations.py
│ ├── test_forecast/
│ │ ├── __init__.py
│ │ └── test_forecast.py
│ ├── test_fsx/
│ │ ├── __init__.py
│ │ ├── test_fsx.py
│ │ └── test_fsx_integration.py
│ ├── test_glacier/
│ │ ├── __init__.py
│ │ ├── test_glacier_archives.py
│ │ ├── test_glacier_jobs.py
│ │ ├── test_glacier_vaults.py
│ │ └── test_server.py
│ ├── test_glue/
│ │ ├── __init__.py
│ │ ├── fixtures/
│ │ │ ├── __init__.py
│ │ │ ├── datacatalog.py
│ │ │ └── schema_registry.py
│ │ ├── helpers.py
│ │ ├── test_datacatalog.py
│ │ ├── test_glue.py
│ │ ├── test_glue_job_runs.py
│ │ ├── test_partition_filter.py
│ │ ├── test_schema_registry.py
│ │ └── test_workflows.py
│ ├── test_greengrass/
│ │ ├── __init__.py
│ │ ├── test_greengrass_core.py
│ │ ├── test_greengrass_deployment.py
│ │ ├── test_greengrass_device.py
│ │ ├── test_greengrass_functions.py
│ │ ├── test_greengrass_groups.py
│ │ ├── test_greengrass_resource.py
│ │ └── test_greengrass_subscriptions.py
│ ├── test_guardduty/
│ │ ├── __init__.py
│ │ ├── test_guardduty.py
│ │ ├── test_guardduty_filters.py
│ │ ├── test_guardduty_organization.py
│ │ └── test_server.py
│ ├── test_iam/
│ │ ├── __init__.py
│ │ ├── test_iam.py
│ │ ├── test_iam_access_integration.py
│ │ ├── test_iam_account_aliases.py
│ │ ├── test_iam_cloudformation.py
│ │ ├── test_iam_groups.py
│ │ ├── test_iam_oidc.py
│ │ ├── test_iam_password_last_used.py
│ │ ├── test_iam_policies.py
│ │ ├── test_iam_resets.py
│ │ ├── test_iam_response_attributes.py
│ │ ├── test_iam_server_certificates.py
│ │ ├── test_iam_signing_certificates.py
│ │ └── test_server.py
│ ├── test_identitystore/
│ │ ├── __init__.py
│ │ └── test_identitystore.py
│ ├── test_inspector2/
│ │ ├── __init__.py
│ │ ├── test_inspector2.py
│ │ ├── test_inspector2_admin_accounts.py
│ │ ├── test_inspector2_enable.py
│ │ ├── test_inspector2_findings.py
│ │ ├── test_inspector2_members.py
│ │ ├── test_inspector2_organization.py
│ │ └── test_inspector2_tags.py
│ ├── test_iot/
│ │ ├── __init__.py
│ │ ├── test_iot.py
│ │ ├── test_iot_billing_groups.py
│ │ ├── test_iot_ca_certificates.py
│ │ ├── test_iot_certificates.py
│ │ ├── test_iot_cloudformation.py
│ │ ├── test_iot_deprecate_thing_type.py
│ │ ├── test_iot_domain_configuration.py
│ │ ├── test_iot_indexing_configuration.py
│ │ ├── test_iot_integration.py
│ │ ├── test_iot_job_executions.py
│ │ ├── test_iot_job_templates.py
│ │ ├── test_iot_jobs.py
│ │ ├── test_iot_policies.py
│ │ ├── test_iot_rolealias.py
│ │ ├── test_iot_search.py
│ │ ├── test_iot_thing_groups.py
│ │ ├── test_iot_thing_types.py
│ │ ├── test_iot_things.py
│ │ ├── test_iot_topic_rules.py
│ │ └── test_server.py
│ ├── test_iotdata/
│ │ ├── __init__.py
│ │ ├── test_iotdata.py
│ │ └── test_server.py
│ ├── test_ivs/
│ │ ├── __init__.py
│ │ └── test_ivs.py
│ ├── test_kafka/
│ │ ├── __init__.py
│ │ └── test_kafka.py
│ ├── test_kinesis/
│ │ ├── __init__.py
│ │ ├── test_kinesis.py
│ │ ├── test_kinesis_boto3.py
│ │ ├── test_kinesis_cloudformation.py
│ │ ├── test_kinesis_encryption.py
│ │ ├── test_kinesis_monitoring.py
│ │ ├── test_kinesis_resource_policy.py
│ │ ├── test_kinesis_stream_consumers.py
│ │ ├── test_kinesis_stream_limits.py
│ │ └── test_server.py
│ ├── test_kinesisanalyticsv2/
│ │ ├── __init__.py
│ │ ├── test_kinesisanalyticsv2.py
│ │ └── test_kinesisanalyticsv2_integration.py
│ ├── test_kinesisvideo/
│ │ ├── __init__.py
│ │ ├── test_kinesisvideo.py
│ │ └── test_server.py
│ ├── test_kinesisvideoarchivedmedia/
│ │ ├── __init__.py
│ │ ├── test_kinesisvideoarchivedmedia.py
│ │ └── test_server.py
│ ├── test_kms/
│ │ ├── __init__.py
│ │ ├── test_kms.py
│ │ ├── test_kms_cloudformation.py
│ │ ├── test_kms_encrypt.py
│ │ ├── test_kms_grants.py
│ │ ├── test_kms_key_rotation.py
│ │ ├── test_kms_mac.py
│ │ ├── test_kms_policy_enforcement.py
│ │ ├── test_model.py
│ │ ├── test_server.py
│ │ └── test_utils.py
│ ├── test_lakeformation/
│ │ ├── __init__.py
│ │ ├── test_lakeformation.py
│ │ ├── test_permission.py
│ │ └── test_resource_tags_integration.py
│ ├── test_lexv2models/
│ │ ├── __init__.py
│ │ └── test_lexv2models.py
│ ├── test_logs/
│ │ ├── __init__.py
│ │ ├── test_export_tasks.py
│ │ ├── test_integration.py
│ │ ├── test_logs.py
│ │ ├── test_logs_cloudformation.py
│ │ ├── test_logs_filter_log_events.py
│ │ ├── test_logs_metric_filters.py
│ │ ├── test_logs_query/
│ │ │ ├── test_boto3.py
│ │ │ ├── test_query.py
│ │ │ └── test_query_parser.py
│ │ ├── test_logs_tags.py
│ │ └── test_models.py
│ ├── test_macie/
│ │ ├── __init__.py
│ │ └── test_macie.py
│ ├── test_managedblockchain/
│ │ ├── __init__.py
│ │ ├── helpers.py
│ │ ├── test_managedblockchain_invitations.py
│ │ ├── test_managedblockchain_members.py
│ │ ├── test_managedblockchain_networks.py
│ │ ├── test_managedblockchain_nodes.py
│ │ ├── test_managedblockchain_proposals.py
│ │ └── test_managedblockchain_proposalvotes.py
│ ├── test_mediaconnect/
│ │ ├── __init__.py
│ │ ├── test_mediaconnect.py
│ │ └── test_server.py
│ ├── test_medialive/
│ │ ├── __init__.py
│ │ ├── test_medialive.py
│ │ └── test_server.py
│ ├── test_mediapackage/
│ │ ├── __init__.py
│ │ ├── test_mediapackage.py
│ │ └── test_server.py
│ ├── test_mediapackagev2/
│ │ ├── __init__.py
│ │ ├── test_interaction_mediapackage_v1_and_v2.py
│ │ └── test_mediapackagev2.py
│ ├── test_mediastore/
│ │ ├── __init__.py
│ │ ├── test_mediastore.py
│ │ └── test_server.py
│ ├── test_mediastoredata/
│ │ ├── __init__.py
│ │ ├── test_mediastoredata.py
│ │ └── test_server.py
│ ├── test_memorydb/
│ │ ├── __init__.py
│ │ └── test_memorydb.py
│ ├── test_meteringmarketplace/
│ │ └── test_meteringmarketplace.py
│ ├── test_moto_api/
│ │ ├── __init__.py
│ │ ├── mock_random/
│ │ │ └── test_mock_random.py
│ │ ├── recorder/
│ │ │ ├── __init__.py
│ │ │ └── test_recorder.py
│ │ ├── seeder/
│ │ │ ├── __init__.py
│ │ │ └── test_seeder.py
│ │ └── state_manager/
│ │ ├── __init__.py
│ │ ├── servermode/
│ │ │ ├── test_inmemory_server.py
│ │ │ └── test_state_manager.py
│ │ ├── test_batch_integration.py
│ │ ├── test_managed_state_model.py
│ │ └── test_state_manager.py
│ ├── test_mq/
│ │ ├── __init__.py
│ │ ├── test_mq.py
│ │ ├── test_mq_configuration.py
│ │ ├── test_mq_tags.py
│ │ ├── test_mq_users.py
│ │ └── test_server.py
│ ├── test_neptune/
│ │ ├── __init__.py
│ │ ├── test_cluster_options.py
│ │ ├── test_cluster_tags.py
│ │ ├── test_clusters.py
│ │ └── test_global_clusters.py
│ ├── test_networkfirewall/
│ │ ├── __init__.py
│ │ └── test_networkfirewall.py
│ ├── test_networkmanager/
│ │ ├── __init__.py
│ │ ├── test_networkmanager.py
│ │ └── test_server.py
│ ├── test_opensearch/
│ │ ├── __init__.py
│ │ ├── test_domain_tags.py
│ │ └── test_opensearch.py
│ ├── test_opensearchserverless/
│ │ ├── __init__.py
│ │ └── test_opensearchserverless.py
│ ├── test_organizations/
│ │ ├── __init__.py
│ │ ├── organizations_test_utils.py
│ │ └── test_organizations.py
│ ├── test_osis/
│ │ ├── __init__.py
│ │ ├── test_osis.py
│ │ └── test_server.py
│ ├── test_panorama/
│ │ ├── __init__.py
│ │ ├── test_application_instance.py
│ │ ├── test_nodes.py
│ │ ├── test_panorama_device.py
│ │ └── test_server.py
│ ├── test_personalize/
│ │ ├── __init__.py
│ │ └── test_personalize_schema.py
│ ├── test_pinpoint/
│ │ ├── __init__.py
│ │ ├── test_pinpoint.py
│ │ ├── test_pinpoint_application_tags.py
│ │ └── test_pinpoint_event_stream.py
│ ├── test_pipes/
│ │ ├── __init__.py
│ │ └── test_pipes.py
│ ├── test_polly/
│ │ ├── __init__.py
│ │ ├── test_polly.py
│ │ └── test_server.py
│ ├── test_quicksight/
│ │ ├── __init__.py
│ │ ├── test_quicksight.py
│ │ ├── test_quicksight_dashboard.py
│ │ ├── test_quicksight_data_source.py
│ │ ├── test_quicksight_datasets.py
│ │ ├── test_quicksight_groups.py
│ │ ├── test_quicksight_tagging.py
│ │ └── test_quicksight_users.py
│ ├── test_ram/
│ │ ├── test_ram.py
│ │ └── test_ram_utils.py
│ ├── test_rds/
│ │ ├── __init__.py
│ │ ├── test_db_cluster_param_group.py
│ │ ├── test_db_cluster_params.py
│ │ ├── test_db_shard_group.py
│ │ ├── test_filters.py
│ │ ├── test_global_clusters.py
│ │ ├── test_integrations.py
│ │ ├── test_rds.py
│ │ ├── test_rds_blue_green_deployment.py
│ │ ├── test_rds_cloudformation.py
│ │ ├── test_rds_clusters.py
│ │ ├── test_rds_clusters_with_instances.py
│ │ ├── test_rds_event_subscriptions.py
│ │ ├── test_rds_export_tasks.py
│ │ ├── test_rds_proxy.py
│ │ ├── test_rds_proxy_target_groups.py
│ │ ├── test_server.py
│ │ └── test_utils.py
│ ├── test_rdsdata/
│ │ ├── __init__.py
│ │ └── test_rdsdata.py
│ ├── test_redshift/
│ │ ├── __init__.py
│ │ ├── test_redshift.py
│ │ ├── test_redshift_cloudformation.py
│ │ └── test_server.py
│ ├── test_redshiftdata/
│ │ ├── __init__.py
│ │ ├── test_redshiftdata.py
│ │ ├── test_redshiftdata_constants.py
│ │ └── test_server.py
│ ├── test_rekognition/
│ │ ├── __init__.py
│ │ └── test_rekognition.py
│ ├── test_resiliencehub/
│ │ ├── __init__.py
│ │ ├── test_resiliencehub.py
│ │ ├── test_resiliencyhub_resources.py
│ │ └── test_resiliencyhub_tagging.py
│ ├── test_resourcegroups/
│ │ ├── __init__.py
│ │ └── test_resourcegroups.py
│ ├── test_resourcegroupstaggingapi/
│ │ ├── __init__.py
│ │ ├── test_resourcegroupstagging_dynamodb.py
│ │ ├── test_resourcegroupstagging_firehose.py
│ │ ├── test_resourcegroupstagging_glue.py
│ │ ├── test_resourcegroupstagging_logs.py
│ │ ├── test_resourcegroupstagging_rds.py
│ │ ├── test_resourcegroupstaggingapi.py
│ │ ├── test_resourcegroupstaggingapi_kms.py
│ │ ├── test_resourcegroupstaggingapi_workspaces.py
│ │ ├── test_resourcegroupstaggingapi_workspacesweb.py
│ │ └── test_server.py
│ ├── test_route53/
│ │ ├── __init__.py
│ │ ├── test_change_set_model.py
│ │ ├── test_route53.py
│ │ ├── test_route53_cloudformation.py
│ │ ├── test_route53_delegationsets.py
│ │ ├── test_route53_healthchecks.py
│ │ ├── test_route53_hosted_zone_ids.py
│ │ ├── test_route53_query_logging_config.py
│ │ ├── test_route53_vpcs.py
│ │ └── test_server.py
│ ├── test_route53domains/
│ │ ├── __init__.py
│ │ └── test_route53domains_domain.py
│ ├── test_route53resolver/
│ │ ├── __init__.py
│ │ ├── test_route53resolver.py
│ │ ├── test_route53resolver_dnssec_config.py
│ │ ├── test_route53resolver_endpoint.py
│ │ ├── test_route53resolver_rule.py
│ │ ├── test_route53resolver_rule_associations.py
│ │ └── test_route53resolver_tags.py
│ ├── test_s3/
│ │ ├── __init__.py
│ │ ├── test_multiple_accounts_server.py
│ │ ├── test_s3.py
│ │ ├── test_s3_acl.py
│ │ ├── test_s3_auth.py
│ │ ├── test_s3_bucket_policy.py
│ │ ├── test_s3_classdecorator.py
│ │ ├── test_s3_cloudformation.py
│ │ ├── test_s3_conditionals.py
│ │ ├── test_s3_config.py
│ │ ├── test_s3_content_encoding.py
│ │ ├── test_s3_copyobject.py
│ │ ├── test_s3_cross_account.py
│ │ ├── test_s3_custom_endpoint.py
│ │ ├── test_s3_encryption.py
│ │ ├── test_s3_eventbridge_integration.py
│ │ ├── test_s3_file_handles.py
│ │ ├── test_s3_lambda_integration.py
│ │ ├── test_s3_lifecycle.py
│ │ ├── test_s3_list_object_versions.py
│ │ ├── test_s3_list_objects.py
│ │ ├── test_s3_locales.py
│ │ ├── test_s3_lock.py
│ │ ├── test_s3_logging.py
│ │ ├── test_s3_metadata.py
│ │ ├── test_s3_multipart.py
│ │ ├── test_s3_notifications.py
│ │ ├── test_s3_object_attributes.py
│ │ ├── test_s3_ownership.py
│ │ ├── test_s3_replication.py
│ │ ├── test_s3_response_headers.py
│ │ ├── test_s3_select.py
│ │ ├── test_s3_storageclass.py
│ │ ├── test_s3_tagging.py
│ │ ├── test_s3_utils.py
│ │ └── test_server.py
│ ├── test_s3bucket_path/
│ │ ├── __init__.py
│ │ ├── test_s3bucket_path_utils.py
│ │ └── test_server.py
│ ├── test_s3control/
│ │ ├── __init__.py
│ │ ├── test_multi_region_access_points.py
│ │ ├── test_s3control.py
│ │ ├── test_s3control_access_points.py
│ │ ├── test_s3control_accesspoint_policy.py
│ │ ├── test_s3control_config_integration.py
│ │ ├── test_s3control_s3.py
│ │ └── test_s3control_tagging.py
│ ├── test_s3tables/
│ │ ├── __init__.py
│ │ ├── test_s3tables.py
│ │ └── test_server.py
│ ├── test_s3vectors/
│ │ ├── __init__.py
│ │ ├── test_s3vector_buckets.py
│ │ ├── test_s3vector_indexes.py
│ │ ├── test_s3vector_policies.py
│ │ └── test_s3vector_vectors.py
│ ├── test_sagemaker/
│ │ ├── __init__.py
│ │ ├── cloudformation_test_configs.py
│ │ ├── test_sagemaker_automljobs.py
│ │ ├── test_sagemaker_cloudformation.py
│ │ ├── test_sagemaker_cluster.py
│ │ ├── test_sagemaker_compilation_jobs.py
│ │ ├── test_sagemaker_data_quality_jobs_definitions.py
│ │ ├── test_sagemaker_domains.py
│ │ ├── test_sagemaker_endpoint.py
│ │ ├── test_sagemaker_experiment.py
│ │ ├── test_sagemaker_feature_groups.py
│ │ ├── test_sagemaker_hyper_parameter_tuning_job.py
│ │ ├── test_sagemaker_model_bias_job_definitions.py
│ │ ├── test_sagemaker_model_cards.py
│ │ ├── test_sagemaker_model_expainability.py
│ │ ├── test_sagemaker_model_package_groups.py
│ │ ├── test_sagemaker_model_packages.py
│ │ ├── test_sagemaker_model_quality.py
│ │ ├── test_sagemaker_models.py
│ │ ├── test_sagemaker_notebooks.py
│ │ ├── test_sagemaker_pipeline.py
│ │ ├── test_sagemaker_processing.py
│ │ ├── test_sagemaker_search.py
│ │ ├── test_sagemaker_training.py
│ │ ├── test_sagemaker_transform.py
│ │ ├── test_sagemaker_trial.py
│ │ └── test_sagemaker_trial_component.py
│ ├── test_sagemakermetrics/
│ │ ├── __init__.py
│ │ ├── test_sagemakermetrics.py
│ │ └── test_server.py
│ ├── test_sagemakerruntime/
│ │ ├── __init__.py
│ │ └── test_sagemakerruntime.py
│ ├── test_scheduler/
│ │ ├── __init__.py
│ │ ├── test_schedule_groups.py
│ │ ├── test_scheduler.py
│ │ ├── test_scheduler_tags.py
│ │ └── test_server.py
│ ├── test_sdb/
│ │ ├── __init__.py
│ │ ├── test_sdb_attributes.py
│ │ ├── test_sdb_domains.py
│ │ └── test_server.py
│ ├── test_secretsmanager/
│ │ ├── __init__.py
│ │ ├── test_list_secrets.py
│ │ ├── test_policy.py
│ │ ├── test_rotate_simple_lambda.py
│ │ ├── test_secrets_duplication.py
│ │ ├── test_secretsmanager.py
│ │ └── test_server.py
│ ├── test_securityhub/
│ │ ├── __init__.py
│ │ └── test_securityhub.py
│ ├── test_servicecatalog/
│ │ ├── __init__.py
│ │ ├── test_servicecatalog.py
│ │ └── test_servicecatalog_integration.py
│ ├── test_servicecatalogappregistry/
│ │ ├── __init__.py
│ │ ├── test_servicecatalogappregistry.py
│ │ └── test_servicecatalogappregistry_cloudformation.py
│ ├── test_servicediscovery/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ ├── test_servicediscovery_httpnamespaces.py
│ │ ├── test_servicediscovery_instance.py
│ │ ├── test_servicediscovery_operations.py
│ │ ├── test_servicediscovery_service.py
│ │ └── test_servicediscovery_tags.py
│ ├── test_servicequotas/
│ │ ├── __init__.py
│ │ └── test_servicequotas.py
│ ├── test_ses/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ ├── test_ses.py
│ │ ├── test_ses_sns.py
│ │ ├── test_ses_utils.py
│ │ └── test_templating.py
│ ├── test_sesv2/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ └── test_sesv2.py
│ ├── test_shield/
│ │ ├── __init__.py
│ │ └── test_shield.py
│ ├── test_signer/
│ │ ├── __init__.py
│ │ ├── test_signing_platforms.py
│ │ └── test_signing_profiles.py
│ ├── test_sns/
│ │ ├── __init__.py
│ │ ├── test_application.py
│ │ ├── test_http_message_verification.py
│ │ ├── test_publish_batch.py
│ │ ├── test_publishing.py
│ │ ├── test_server.py
│ │ ├── test_sns_cloudformation.py
│ │ ├── test_subscriptions.py
│ │ ├── test_topics.py
│ │ └── test_utils.py
│ ├── test_special_cases/
│ │ └── test_custom_amis.py
│ ├── test_sqs/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ ├── test_sqs.py
│ │ ├── test_sqs_authentication.py
│ │ ├── test_sqs_cloudformation.py
│ │ ├── test_sqs_integration.py
│ │ ├── test_sqs_message_attributes.py
│ │ └── test_sqs_multiaccount.py
│ ├── test_ssm/
│ │ ├── __init__.py
│ │ ├── test_ssm.py
│ │ ├── test_ssm_cloudformation.py
│ │ ├── test_ssm_default_amis.py
│ │ ├── test_ssm_defaults.py
│ │ ├── test_ssm_doc_permissions.py
│ │ ├── test_ssm_docs.py
│ │ ├── test_ssm_ec2_integration.py
│ │ ├── test_ssm_ecs_images.py
│ │ ├── test_ssm_maintenance_windows.py
│ │ ├── test_ssm_parameterstore.py
│ │ ├── test_ssm_parameterstore_cloudformation.py
│ │ ├── test_ssm_patch_baseline.py
│ │ ├── test_ssm_patch_group.py
│ │ ├── test_ssm_secretsmanager.py
│ │ ├── test_ssm_utils.py
│ │ └── test_templates/
│ │ └── good.yaml
│ ├── test_ssoadmin/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ ├── test_ssoadmin.py
│ │ ├── test_ssoadmin_instances.py
│ │ ├── test_ssoadmin_permission_sets.py
│ │ └── test_ssoadmin_policies.py
│ ├── test_stepfunctions/
│ │ ├── __init__.py
│ │ ├── parser/
│ │ │ ├── __init__.py
│ │ │ ├── templates/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── choice_state_singleton.json
│ │ │ │ ├── comments/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── comments_as_per_docs.py
│ │ │ │ │ └── comments_in_parameters.json
│ │ │ │ ├── credentials.json
│ │ │ │ ├── failure.json
│ │ │ │ ├── json_regex.json
│ │ │ │ ├── map_item_reader.json
│ │ │ │ ├── map_item_reader_with_header.json
│ │ │ │ ├── parallel_fail.json
│ │ │ │ ├── parallel_states.json
│ │ │ │ ├── parallel_states_catch.json
│ │ │ │ ├── parallel_states_order.json
│ │ │ │ ├── retry.py
│ │ │ │ ├── retry_jitter_none.py
│ │ │ │ ├── services/
│ │ │ │ │ ├── dynamodb_invalid_task_token.json
│ │ │ │ │ ├── dynamodb_put_delete_item.json
│ │ │ │ │ ├── dynamodb_put_item.json
│ │ │ │ │ ├── dynamodb_task_token.json
│ │ │ │ │ ├── dynamodb_zero_retry.json
│ │ │ │ │ ├── sns_publish.json
│ │ │ │ │ └── sqs_heartbeat.json
│ │ │ │ ├── state_with_role.json
│ │ │ │ ├── templates.py
│ │ │ │ ├── wait_1.json
│ │ │ │ └── wait_15.json
│ │ │ ├── test_choice_state.py
│ │ │ ├── test_comments.py
│ │ │ ├── test_map_item.py
│ │ │ ├── test_parallel_states.py
│ │ │ ├── test_stepfunctions.py
│ │ │ ├── test_stepfunctions_dynamodb_integration.py
│ │ │ ├── test_stepfunctions_idempotency.py
│ │ │ ├── test_stepfunctions_lambda_integration.py
│ │ │ ├── test_stepfunctions_lambda_retry_integration.py
│ │ │ ├── test_stepfunctions_sns_integration.py
│ │ │ └── test_stepfunctions_sqs_integration.py
│ │ ├── test_stepfunctions.py
│ │ ├── test_stepfunctions_cloudformation.py
│ │ ├── test_stepfunctions_idempotency.py
│ │ └── test_stepfunctions_versions.py
│ ├── test_sts/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ ├── test_sts.py
│ │ └── test_sts_integration.py
│ ├── test_support/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ └── test_support.py
│ ├── test_swf/
│ │ ├── __init__.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── test_activity_task.py
│ │ │ ├── test_decision_task.py
│ │ │ ├── test_domain.py
│ │ │ ├── test_generic_type.py
│ │ │ ├── test_history_event.py
│ │ │ ├── test_timeout.py
│ │ │ ├── test_timer.py
│ │ │ └── test_workflow_execution.py
│ │ ├── responses/
│ │ │ ├── __init__.py
│ │ │ ├── test_activity_tasks.py
│ │ │ ├── test_activity_types.py
│ │ │ ├── test_decision_tasks.py
│ │ │ ├── test_domains.py
│ │ │ ├── test_timeouts.py
│ │ │ ├── test_workflow_executions.py
│ │ │ └── test_workflow_types.py
│ │ ├── test_exceptions.py
│ │ ├── test_utils.py
│ │ └── utils.py
│ ├── test_synthetics/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ └── test_synthetics.py
│ ├── test_textract/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ └── test_textract.py
│ ├── test_timestreaminfluxdb/
│ │ ├── __init__.py
│ │ ├── test_timestreaminfluxdb.py
│ │ └── test_timestreaminfluxdb_tagging.py
│ ├── test_timestreamquery/
│ │ ├── __init__.py
│ │ └── test_timestreamquery.py
│ ├── test_timestreamwrite/
│ │ ├── __init__.py
│ │ ├── test_server.py
│ │ ├── test_timestreamwrite_database.py
│ │ ├── test_timestreamwrite_table.py
│ │ └── test_timestreamwrite_tagging.py
│ ├── test_transcribe/
│ │ ├── __init__.py
│ │ └── test_transcribe.py
│ ├── test_transfer/
│ │ ├── __init__.py
│ │ └── test_transfer.py
│ ├── test_utilities/
│ │ ├── test_docker_utilities.py
│ │ ├── test_id_generator.py
│ │ ├── test_paginator.py
│ │ ├── test_tagging_service.py
│ │ ├── test_threaded_server.py
│ │ └── test_utils.py
│ ├── test_vpclattice/
│ │ ├── __init__.py
│ │ ├── test_vpclattice.py
│ │ └── test_vpclattice_integration.py
│ ├── test_wafv2/
│ │ ├── __init__.py
│ │ ├── test_helper_functions.py
│ │ ├── test_regex_pattern_sets.py
│ │ ├── test_server.py
│ │ ├── test_utils.py
│ │ ├── test_wafv2.py
│ │ ├── test_wafv2_integration.py
│ │ ├── test_wafv2_logging_configuration.py
│ │ ├── test_wafv2_rules.py
│ │ └── test_wafv2_tags.py
│ ├── test_workspaces/
│ │ ├── __init__.py
│ │ └── test_workspaces.py
│ ├── test_workspacesweb/
│ │ ├── __init__.py
│ │ └── test_workspacesweb.py
│ └── test_xray/
│ ├── __init__.py
│ ├── test_xray.py
│ └── test_xray_client.py
└── update_version_from_git.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "moto",
"image": "mcr.microsoft.com/devcontainers/python:3.11",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"portsAttributes": {
"5000": {
"onAutoForward": "silent",
"elevateIfNeeded": true,
"protocol": "http",
"requireLocalPort": false
}
},
"postCreateCommand": "python -m venv .venv",
"postStartCommand": ". .venv/bin/activate && make init",
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.makefile-tools",
"ms-python.python",
"ms-python.black-formatter"
],
"settings": {
"editor.formatOnSave": true,
"python.defaultInterpreterPath": "${workspaceFolder}/.venv",
"python.formatting.provider": "none",
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"label": "Open Port 5000",
"type": "shell",
"command": "bash",
"args": [
"-c",
"until gh codespace ports visibility 5000:public --codespace ${CODESPACE_NAME} 2>/dev/null; do sleep 1; done"
],
"presentation": {
"reveal": "silent",
"focus": false
}
},
{
"label": "Kill MotoServer",
"type": "shell",
"command": "pkill -f '${workspaceFolder}/moto/server.py'",
"problemMatcher": [],
"presentation": {
"reveal": "silent",
"focus": false
}
}
]
},
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Run MotoServer",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/moto/server.py",
"args": [
"--reload"
],
"console": "internalConsole",
"presentation": {
"order": 11
}
},
{
"name": "Run MotoServer Tests",
"type": "debugpy",
"request": "launch",
"module": "pytest",
"console": "integratedTerminal",
"preLaunchTask": "Open Port 5000",
"postDebugTask": "Kill MotoServer",
"env": {
"TEST_SERVER_MODE": "true",
"TEST_SERVER_MODE_ENDPOINT": "https://${env:CODESPACE_NAME}-5000.${env:GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}"
},
"presentation": {
"order": 12
},
"args": [
"-sv",
"--cov=moto",
"--cov-report=xml",
"${workspaceFolder}/tests/",
"-k",
"${input:pytestFilter}"
]
}
],
"inputs": [
{
"id": "pytestFilter",
"type": "promptString",
"description": "pytest -k filter (leave empty to run all tests)",
"default": ""
}
],
"compounds": [
{
"name": "MotoServer Tests",
"configurations": [
"Run MotoServer Tests",
"Run MotoServer"
],
"presentation": {
"order": 1
},
"stopAll": true
}
]
}
}
}
}
}
================================================
FILE: .dockerignore
================================================
# Ignore everything by default
*
!README.md
!moto/
!setup.cfg
!setup.py
================================================
FILE: .git-blame-ignore-revs
================================================
# You can configure git to automatically use this file with the following config:
# git config --global blame.ignoreRevsFile .git-blame-ignore-revs
# Black Formatting
96e5b1993d7f2451443bfabff4265029ac6625af
e00af2f73cb7d27c3755f18b2161b9acbd8ca8aa
29d01c35bc06d5a8462487d614e33b9e8416ba96
# import sorting
ca682c8e5647feacb26f8570f77f1bdb6b5d3b9a
# Ruff formatting
90bdd725552e8cc1466c2b3c1152e0501519a568
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: getmoto
open_collective: moto
================================================
FILE: .github/actions/run_moto_server/action.yml
================================================
name: run_moto_server
author: bblommers
description: run_moto_server
runs:
using: "composite"
steps:
- name: Download artifact
uses: actions/download-artifact@v5
with:
name: localimage
path: /tmp
- name: Load Docker image
shell: bash
run: |
docker load --input /tmp/localimage.tar
docker image ls -a
- name: Run MotoServer
shell: bash
env:
TEST_SERVER_MODE: true
MOTO_EC2_LOAD_DEFAULT_AMIS: false
AWS_SECRET_ACCESS_KEY: server_secret
AWS_ACCESS_KEY_ID: server_key
run: |
docker run --rm -t --name motoserver -v `pwd`:/moto -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock motoserver/moto:local &
================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
- package-ecosystem: "gomod"
directory: "other_langs/tests_go"
schedule:
interval: "monthly"
groups:
go-deps:
patterns:
- "*"
- package-ecosystem: "maven"
directory: "other_langs/tests_java"
schedule:
interval: "monthly"
groups:
java-deps:
patterns:
- "*"
- package-ecosystem: "nuget"
directory: "other_langs/tests_dotnet"
schedule:
interval: "monthly"
groups:
dotnet-deps:
patterns:
- "*"
================================================
FILE: .github/workflows/build.yml
================================================
name: TestNDeploy
on: [push, pull_request]
jobs:
cache:
name: Caching
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13", "3.14" ]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Get pip cache dir
id: pip-cache-dir
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
id: pip-cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
if: ${{ steps.pip-cache.outputs.cache-hit != 'true' }}
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
if: ${{ steps.pip-cache.outputs.cache-hit != 'true' }}
run: |
pip install -r requirements-dev.txt
lint:
name: Linting
runs-on: ubuntu-latest
needs: cache
strategy:
fail-fast: false
matrix:
python-version: [3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
# Retrieve the previously cached dependencies
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
# Update PIP
- name: Update pip
run: |
python -m pip install --upgrade pip
# Still need to properly install the dependencies - caching will only skip the download part
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Lint
run: |
mkdir .mypy_cache
make lint
buildserver:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
# Retrieve the previously cached dependencies
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build Docker Image
uses: docker/build-push-action@v7
with:
tags: motoserver/moto:local
outputs: type=docker,dest=/tmp/localimage.tar
push: false
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: localimage
path: /tmp/localimage.tar
clitest:
needs: buildserver
uses: ./.github/workflows/tests_cli.yml
cpptest:
needs: buildserver
uses: ./.github/workflows/tests_sdk_cpp.yml
sagemaker_client_test:
needs: lint
uses: ./.github/workflows/tests_sdk_sagemaker.yml
javatest:
needs: buildserver
uses: ./.github/workflows/tests_sdk_java.yml
jstest:
needs: buildserver
uses: ./.github/workflows/tests_sdk_js.yml
dotnettest:
needs: buildserver
uses: ./.github/workflows/tests_sdk_dotnet.yml
rubytest:
needs: buildserver
uses: ./.github/workflows/tests_sdk_ruby.yml
gotest:
needs: buildserver
uses: ./.github/workflows/tests_sdk_go.yml
terraformexamplestest:
needs: buildserver
uses: ./.github/workflows/tests_terraform_examples.yml
test:
needs: [lint]
if: "!contains(github.event.pull_request.labels.*.name, 'java')"
uses: ./.github/workflows/tests_decoratormode.yml
secrets: inherit
testserver:
needs: [lint]
if: "!contains(github.event.pull_request.labels.*.name, 'java')"
uses: ./.github/workflows/tests_servermode.yml
secrets: inherit
testproxy:
needs: [lint]
if: "!contains(github.event.pull_request.labels.*.name, 'java')"
uses: ./.github/workflows/tests_proxymode.yml
testcdk:
needs: [buildserver]
if: "!contains(github.event.pull_request.labels.*.name, 'java')"
uses: ./.github/workflows/tests_cdk.yml
================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
schedule:
- cron: '00 12 * * 4'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v6
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
================================================
FILE: .github/workflows/data-update_config-managed-rules.yml
================================================
# Data Update:
# Config Managed Rules
#
# This Github Action:
# - executes the script that updates the Config Managed Rules that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_ConfigManagedRules"
on:
schedule:
- cron: '00 6 1 * *'
workflow_dispatch:
jobs:
update:
name: Update Config Managed Rules
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.9
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Pull Config managed rules from AWS
run: |
pip install -r requirements-dev.txt
cd scripts
./pull_down_aws_managed_rules.py
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-config-managed-rules-${{ github.run_number }}'
title: 'chore: update Config Managed Rules'
commit-message: 'chore: update Config Managed Rules'
================================================
FILE: .github/workflows/data-update_ec2-instance-offerings.yml
================================================
# Data Update:
# EC2 Instance Offerings
#
# This Github Action:
# - executes the script that updates the EC2 instance offerings that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_EC2InstanceOfferings"
on:
schedule:
- cron: '00 6 * * 0'
workflow_dispatch:
jobs:
update:
name: Update EC2 Instance Offerings
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.9
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
- name: Pull EC2 instance types from AWS
run: |
pip install boto3
scripts/ec2_get_instance_type_offerings.py
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-ec2-offerings-${{ github.run_number }}'
title: 'chore: update EC2 Instance Offerings'
commit-message: 'chore: update EC2 Instance Offerings'
================================================
FILE: .github/workflows/data-update_ec2-instance-types.yml
================================================
# Data Update:
# EC2 Instance Types
#
# This Github Action:
# - executes the script that updates the EC2 instance types that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_EC2InstanceTypes"
on:
schedule:
- cron: '00 8 * * 0'
workflow_dispatch:
jobs:
update:
name: Update EC2 Instance Types
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.9
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
- name: Pull EC2 instance types from AWS
run: |
pip install boto3
scripts/get_instance_info.py
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-ec2-types-${{ github.run_number }}'
title: 'chore: update EC2 Instance Types'
commit-message: 'chore: update EC2 Instance Types'
================================================
FILE: .github/workflows/data-update_emr_instance_types.yml
================================================
# Data Update:
# EMR Instance Types
#
# This GitHub Action:
# - executes the script that updates the EMR instance types that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_EMRInstanceTypes"
on:
schedule:
- cron: '00 4 * * 0'
workflow_dispatch:
jobs:
update:
name: Update EMR Instance Types
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.11
uses: actions/setup-python@v6
with:
python-version: 3.11
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
- name: Pull EMR instance types from AWS
run: |
pip install boto3
python scripts/emr_get_releases.py
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-emr-instance-types-${{ github.run_number }}'
title: 'chore: update EMR Instance Types'
commit-message: 'chore: update EMR Instance Types'
================================================
FILE: .github/workflows/data-update_iam-managed-policies.yml
================================================
# Data Update:
# IAM Managed Policies
#
# This Github Action:
# - executes the script that updates the IAM Managed Policies that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_IAMManagedPolicies"
on:
schedule:
- cron: '00 6 1 * *'
workflow_dispatch:
jobs:
update:
name: Update IAM Managed Policies
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.9
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
- name: Pull IAM managed policies from AWS
run: |
pip install -r requirements-dev.txt
make aws_managed_policies
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-iam-managed-policies-${{ github.run_number }}'
title: 'chore: update IAM Managed Policies'
commit-message: 'chore: update IAM Managed Policies'
================================================
FILE: .github/workflows/data-update_ssm-default-amis.yml
================================================
# Data Update:
# SSM default AMIs
#
# This Github Action:
# - executes the script that updates the SSM default AMI's that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_SSMdefaultAMIs"
on:
schedule:
- cron: '00 10 1 * *'
workflow_dispatch:
jobs:
update:
name: Update SSM default AMIs
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.9
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
- name: Pull SSM default AMIs from AWS
run: |
pip install boto3
pip install moto[all]
python scripts/ssm_get_default_amis.py
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-ssm-amis-${{ github.run_number }}'
title: "chore: update SSM Instance AMI's"
commit-message: "chore: update SSM default AMI's"
================================================
FILE: .github/workflows/data-update_ssm-default-parameters.yml
================================================
# Data Update:
# SSM default parameters
#
# This Github Action:
# - executes the script that updates the SSM default parameters that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_SSMdefaultParameters"
on:
schedule:
- cron: '00 12 * * 0'
workflow_dispatch:
jobs:
update:
name: Update SSM default parameters
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.9
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
- name: Pull SSM default Parameters from AWS
run: |
pip install boto3
pip install moto[all]
python scripts/ssm_get_default_params.py
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-ssm-params-${{ github.run_number }}'
title: "chore: update SSM Default parameters"
commit-message: "chore: update SSM default parameters"
================================================
FILE: .github/workflows/data-update_ssm-optimized-amis.yml
================================================
# Data Update:
# SSM Optmized AMIs
#
# This Github Action:
# - executes the script that updates the SSM Optimized AMI's that come bundled with Moto
# - creates a PR
#
name: "DataUpdate_SSMoptimizedAMIs"
on:
schedule:
- cron: '00 10 1 * *'
workflow_dispatch:
jobs:
update:
name: Update SSM Optimized AMIs
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.repository == 'getmoto/moto' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python 3.9
uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
- name: Pull SSM Optimized AMIs from AWS
run: |
pip install boto3
pip install moto[all]
python scripts/ssm_get_optimized_amis.py
- name: Create PR
uses: peter-evans/create-pull-request@v8
with:
branch: 'chore-update-ssm-amis-${{ github.run_number }}'
title: "chore: update SSM Instance AMI's"
commit-message: "chore: update SSM Optimized AMI's"
================================================
FILE: .github/workflows/dependency_test.yml
================================================
name: "Service-specific Dependencies Test"
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # every day at midnight
jobs:
prepare_list:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- id: set-matrix
run: echo "matrix=[$(ls -A1 moto | grep -v '.py' | awk '{ printf "%s\047%s\047", (NR==1?"":", "), $0 } END{ print "" }')]" >> $GITHUB_OUTPUT
- run: echo "matrix=[$(ls -A1 moto | grep -v '.py' | awk '{ printf "%s\047%s\047", (NR==1?"":", "), $0 } END{ print "" }')]"
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
runtest:
name: Run Dependency Test
runs-on: ubuntu-latest
needs: prepare_list
strategy:
fail-fast: false
matrix:
python-version: [ "3.10" ]
service: ${{ fromJson(needs.prepare_list.outputs.matrix) }}
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Run test
env:
AWS_ACCESS_KEY_ID: key
AWS_SECRET_ACCESS_KEY: secret
run: |
scripts/dependency_test.sh ${{ matrix.service }}
================================================
FILE: .github/workflows/dockertests.yml
================================================
name: DockerTests
on: [push, pull_request]
jobs:
cache:
name: Caching
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ "3.11" ]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Get pip cache dir
id: pip-cache-dir
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
id: pip-cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
if: ${{ steps.pip-cache.outputs.cache-hit != 'true' }}
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
if: ${{ steps.pip-cache.outputs.cache-hit != 'true' }}
run: |
pip install -r requirements-dev.txt
test_custom_port:
name: Test Custom Port
runs-on: ubuntu-latest
needs: cache
strategy:
matrix:
python-version: ["3.11"]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Start MotoServer on an unusual port
run: |
pip install --upgrade build
python -m build
docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e AWS_SECRET_ACCESS_KEY=server_secret -e MOTO_PORT=4555 -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 4555:4555 -v /var/run/docker.sock:/var/run/docker.sock python:3.11-slim /moto/scripts/ci_moto_server.sh &
MOTO_PORT=4555 python scripts/ci_wait_for_server.py
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Test
env:
TEST_SERVER_MODE: ${{ true }}
MOTO_PORT: 4555
run: |
pytest -sv tests/test_awslambda/test_lambda_invoke.py::test_invoke_lambda_using_environment_port tests/test_cloudformation/test_cloudformation_custom_resources.py
- name: Collect Logs
if: always()
run: |
mkdir serverlogs1
cp server_output.log serverlogs1/server_output.log
docker stop motoserver
- name: Archive Logs
if: always()
uses: actions/upload-artifact@v7
with:
name: custom_port
path: |
serverlogs1/*
test_custom_name:
name: Test Custom Network Name
runs-on: ubuntu-latest
needs: cache
strategy:
matrix:
python-version: ["3.11"]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Start MotoServer on a custom Docker network bridge
run: |
pip install --upgrade build
python -m build
docker network create -d bridge my-custom-network
docker run --rm -t -e TEST_SERVER_MODE=true -e MOTO_DOCKER_NETWORK_NAME=my-custom-network -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 5000:5000 --network my-custom-network -v /var/run/docker.sock:/var/run/docker.sock python:3.11-slim /moto/scripts/ci_moto_server.sh &
python scripts/ci_wait_for_server.py
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Test
env:
TEST_SERVER_MODE: ${{ true }}
run: |
pytest -sv tests/test_awslambda/test_lambda_invoke.py::test_invoke_lambda_using_environment_port tests/test_cloudformation/test_cloudformation_custom_resources.py
- name: Collect Logs
if: always()
run: |
mkdir serverlogs2
cp server_output.log serverlogs2/server_output.log
- name: Archive logs
if: always()
uses: actions/upload-artifact@v7
with:
name: custom_name
path: |
serverlogs2/*
test_custom_networkmode:
name: Pass NetworkMode to AWSLambda
runs-on: ubuntu-latest
needs: cache
strategy:
matrix:
python-version: ["3.11"]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Start MotoServer on an unusual port
run: |
pip install --upgrade build
python -m build
docker run --rm -t -e MOTO_DOCKER_NETWORK_MODE=host -e TEST_SERVER_MODE=true -e AWS_SECRET_ACCESS_KEY=server_secret -e MOTO_PORT=4555 -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 4555:4555 -v /var/run/docker.sock:/var/run/docker.sock python:3.11-slim /moto/scripts/ci_moto_server.sh &
MOTO_PORT=4555 python scripts/ci_wait_for_server.py
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Test
env:
TEST_SERVER_MODE: ${{ true }}
MOTO_PORT: 4555
MOTO_DOCKER_NETWORK_MODE: host
run: |
pytest -sv tests/test_awslambda/test_lambda_invoke.py::test_invoke_lambda_using_networkmode tests/test_cloudformation/test_cloudformation_custom_resources.py
- name: Collect Logs
if: always()
run: |
mkdir serverlogs3
cp server_output.log serverlogs3/server_output.log
- name: Archive Logs
if: always()
uses: actions/upload-artifact@v7
with:
name: custom_mode
path: |
serverlogs3/*
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version'
required: true
current_release:
description: 'Release Docker and update version info in moto/__init__.py'
default: true
required: true
type: boolean
jobs:
release-moto-job:
runs-on: ubuntu-latest
name: Release Moto
permissions:
contents: write
id-token: write
packages: write
env:
VERSION: 0.0.0
steps:
- name: Set Env
run: |
echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: 3.12
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install wheel setuptools packaging twine build --upgrade
pip install -r requirements-dev.txt
- name: Verify Tag does not exist
run: |
! git rev-parse ${{ env.VERSION }} || { echo "Ensure that no tag exists for ${{ env.VERSION }}" ; exit 1; }
- name: Verify supplied version exists in the CHANGELOG
run: |
grep ${{ env.VERSION }} CHANGELOG.md || { echo "Ensure that the CHANGELOG contains an entry for ${{ env.VERSION }}" ; exit 1; }
- name: Set version number
run: python update_version_from_git.py ${{ env.VERSION }}
- name: Build Python
run: python -m build
- name: Build Docker release
if: ${{ inputs.current_release }}
run: |
docker build -t motoserver/moto . --tag moto:${{ env.VERSION }}
- name: Test Docker release
if: ${{ inputs.current_release }}
run: |
docker run -p 5000:5000 --name moto motoserver/moto &
TEST_SERVER_MODE=true pytest -sv tests/test_core tests/test_s3/test_s3.py
docker stop moto
- name: Commit Version Change
run: |
git config --local user.email "admin@getmoto.org"
git config --local user.name "Moto Admin"
git add moto/__init__.py
git add setup.cfg
git commit -m "Pre-Release: Up Version Number" || echo "No Changes!"
git push || echo "No Changes!"
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
- name: Tag version on Github
run: |
git tag ${{ env.VERSION }}
git push origin ${{ env.VERSION }}
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
name: ${{ env.VERSION }}
tag_name: ${{ env.VERSION }}
files: dist/*
# Required to get the correct Digest
# See https://github.com/docker/build-push-action/issues/461
- name: Set up QEMU
if: ${{ inputs.current_release }}
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
if: ${{ inputs.current_release }}
uses: docker/setup-buildx-action@v4
- name: Login to DockerHub
if: ${{ inputs.current_release }}
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GHCR
if: ${{ inputs.current_release }}
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push to DockerHub and GHCR
if: ${{ inputs.current_release }}
id: build_and_push
uses: docker/build-push-action@v7
with:
platforms: linux/amd64,linux/arm64
push: true
tags: |
motoserver/moto:latest
motoserver/moto:${{ env.VERSION }}
ghcr.io/getmoto/motoserver:latest
ghcr.io/getmoto/motoserver:${{ env.VERSION }}
- name: Increase patch version number
if: ${{ inputs.current_release }}
run: |
python update_version_from_git.py patch
sed -i 's/Docker Digest for ${{ env.VERSION }}: <autopopulateddigest>/Docker Digest for ${{ env.VERSION }}: _${{ steps.build_and_push.outputs.digest }}_/' CHANGELOG.md
git config --local user.email "admin@getmoto.org"
git config --local user.name "Moto Admin"
git add moto/__init__.py
git add setup.cfg
git add CHANGELOG.md
git commit -m "Admin: Post-release steps"
git push
================================================
FILE: .github/workflows/release_dev.yml
================================================
name: Release Dev
on: [workflow_dispatch]
jobs:
release:
name: Dev Release
runs-on: ubuntu-latest
permissions:
id-token: write
packages: write
pull-requests: write
if: ${{ github.repository == 'getmoto/moto' }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Update & Build
run: |
pip install build
python update_version_from_git.py
python -m build
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
- name: Build Docker release
run: |
docker build -t motoserver/moto . --tag moto:latest
# Required to get the correct Digest
# See https://github.com/docker/build-push-action/issues/461
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Login to DockerHub
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GHCR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push to DockerHub and GHCR
uses: docker/build-push-action@v7
with:
push: true
platforms: linux/amd64,linux/arm64
tags: |
motoserver/moto:latest
ghcr.io/getmoto/motoserver:latest
================================================
FILE: .github/workflows/test_cloudwatch.yml
================================================
name: "CloudWatch Wire Protocol Tests"
on:
pull_request:
paths:
- ".github/workflows/test_cloudwatch.yml"
- "moto/core/**"
- "moto/cloudwatch/**"
- "tests/test_cloudwatch/**"
schedule:
- cron: '00 12 * * 0'
workflow_dispatch:
env:
python-version: "3.12"
jobs:
test-cloudwatch-protocols:
name: "${{ matrix.protocol }} protocol, server mode: ${{ matrix.test-server-mode }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
protocol: [ "json", "query" ]
test-server-mode: [ "true", "false" ]
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ env.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ env.python-version }}
- name: Start MotoServer
if: ${{ matrix.test-server-mode == 'true' }}
run: |
pip install build
python -m build
docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e MOTO_EC2_LOAD_DEFAULT_AMIS=false -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock python:${{ env.python-version }}-slim /moto/scripts/ci_moto_server.sh &
python scripts/ci_wait_for_server.py
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Install AWS Client SDK for JSON Protocol
if: ${{ matrix.protocol == 'json' }}
run: |
pip install --upgrade boto3 botocore
- name: Install AWS Client SDK for Query Protocol
if: ${{ matrix.protocol == 'query' }}
run: |
pip install botocore==1.42.6 boto3==1.42.6
- name: Run tests
run: |
pytest -sv tests/test_cloudwatch
env:
TEST_SERVER_MODE: ${{ matrix.test-server-mode }}
- name: "Stop MotoServer"
if: ${{ matrix.test-server-mode == 'true' }}
run: |
ls -la
docker stop motoserver
mkdir serverlogs
cp server_output.log serverlogs/server_output.log
- name: Archive Server logs
if: ${{ matrix.test-server-mode == 'true' }}
uses: actions/upload-artifact@v7
with:
name: motoserver-with-client-using-${{ matrix.protocol }}-protocol
path: |
serverlogs/*
================================================
FILE: .github/workflows/test_outdated_versions.yml
================================================
# Run separate test cases to verify Moto works with older versions of dependencies
#
name: "Outdated Dependency Tests"
on:
pull_request:
types: [ labeled ]
jobs:
test:
if: ${{ github.event.label.name == 'moto-core' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
botocore: ["--upgrade boto3 botocore", "--upgrade boto3 botocore && pip install urllib3==2.2.1", "boto3==1.17.0 botocore==1.20.88"]
python-version: [ "3.11" ]
responses-version: ["0.15.0", "0.17.0", "0.19.0", "0.20.0" ]
werkzeug-version: ["2.0.1", "2.1.1", "2.2.2"]
openapi-spec-validator-version: ["0.5.0"]
cryptography-version: ["35.0.0"]
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
pip install responses==${{ matrix.responses-version }}
pip install flask==${{ matrix.werkzeug-version }}
pip install werkzeug==${{ matrix.werkzeug-version }}
pip install openapi-spec-validator==${{ matrix.openapi-spec-validator-version }}
pip install ${{ matrix.botocore }}
pip install cryptography==${{ matrix.cryptography-version }}
- name: Run tests
run: |
pytest -sv tests/test_core ./tests/test_apigateway/test_apigateway_integration.py tests/test_iotdata ./tests/test_s3/test_server.py
- name: Start MotoServer
run: |
python -m build
docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock python:3.9-slim /moto/scripts/ci_moto_server.sh &
python scripts/ci_wait_for_server.py
- name: Test ServerMode/Coverage
env:
TEST_SERVER_MODE: ${{ true }}
run: |
pytest -sv tests/test_core tests/test_awslambda tests/test_cloudformation tests/test_iotdata
- name: "Stop MotoServer"
if: always()
run: |
mkdir serverlogs
cp server_output.log serverlogs/server_output.log
docker stop motoserver
- name: Archive TF logs
if: always()
uses: actions/upload-artifact@v7
with:
name: test-${{ matrix.responses-version }}-${{ matrix.werkzeug-version }}-${{ matrix.werkzeug-version }}-${{ matrix.openapi-spec-validator-version }}-${{ matrix.botocore }}
path: |
serverlogs/*
================================================
FILE: .github/workflows/test_sqs.yml
================================================
name: "SQS Wire Protocol Tests"
on:
pull_request:
paths:
- ".github/workflows/test_sqs.yml"
- "moto/core/**"
- "moto/sqs/**"
- "tests/test_sqs/**"
schedule:
- cron: '00 12 * * 0'
workflow_dispatch:
env:
python-version: "3.12"
jobs:
test-sqs-protocols:
name: "${{ matrix.protocol }} protocol, server mode: ${{ matrix.test-server-mode }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
protocol: [ "json", "query" ]
test-server-mode: [ "true", "false" ]
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ env.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ env.python-version }}
- name: Start MotoServer
if: ${{ matrix.test-server-mode == 'true' }}
run: |
pip install build
python -m build
docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e MOTO_EC2_LOAD_DEFAULT_AMIS=false -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock python:${{ env.python-version }}-slim /moto/scripts/ci_moto_server.sh &
python scripts/ci_wait_for_server.py
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Install AWS Client SDK for JSON Protocol
if: ${{ matrix.protocol == 'json' }}
run: |
pip install --upgrade boto3 botocore
- name: Install AWS Client SDK for Query Protocol
if: ${{ matrix.protocol == 'query' }}
run: |
pip install botocore==1.29.126 boto3==1.26.126
- name: Run tests
run: |
pytest -sv tests/test_sqs
env:
TEST_SERVER_MODE: ${{ matrix.test-server-mode }}
- name: "Stop MotoServer"
if: always() && matrix.test-server-mode == 'true'
run: |
ls -la
docker stop motoserver
mkdir serverlogs
cp server_output.log serverlogs/server_output.log
- name: Archive Server logs
if: always() && matrix.test-server-mode == 'true'
uses: actions/upload-artifact@v7
with:
name: motoserver-with-client-using-${{ matrix.protocol }}-protocol
path: |
serverlogs/*
================================================
FILE: .github/workflows/tests_cdk.yml
================================================
name: Unit tests in Server Mode
on: [workflow_call]
jobs:
cdk_start:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.12"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- name: Install CDK
id: install-cdk
run: |
sudo npm install -g aws-cdk
- name: Init CDK APP
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
mkdir cdk_example_app
cd cdk_example_app
cdk init app --language python
source .venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
- name: Bootstrap CDK
env:
AWS_ENDPOINT_URL: "http://localhost:5000"
run: |
pwd
ls -la
cd cdk_example_app
source .venv/bin/activate
cdk bootstrap -v
find-jobs:
runs-on: ubuntu-latest
needs: cdk_start
name: Find Jobs
outputs:
folders: ${{ steps.set-folders.outputs.folders }}
steps:
- uses: actions/checkout@v6
- id: set-folders
name: Get CDK Examples
shell: bash
run: |
cd other_langs/tests_cdk/
folders=$(tree -J -d -L 1 | jq -c '.[0].contents | map(.name)')
echo $folders
echo "folders=$folders" >> $GITHUB_OUTPUT
test:
runs-on: ubuntu-latest
needs: find-jobs
strategy:
fail-fast: false
matrix:
service: ${{ fromJson(needs.find-jobs.outputs.folders )}}
steps:
- uses: actions/checkout@v6
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- name: Install Dependencies
run: |
pip install -r other_langs/tests_cdk/${{ matrix.service }}/requirements.txt
- name: Deploy Service ${{ matrix.service }}
env:
AWS_ENDPOINT_URL: "http://localhost:5000"
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
npm install -g aws-cdk
cd other_langs/tests_cdk/${{ matrix.service }}
cdk bootstrap
cdk deploy --require-approval never
================================================
FILE: .github/workflows/tests_cli.yml
================================================
name: AWS CLI test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- name: Install BATS
run: sudo apt-get install bats -y
- name: Run tests
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
bats other_langs/tests_cli
================================================
FILE: .github/workflows/tests_decoratormode.yml
================================================
name: Unit test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
pip install pytest-cov
pip install pytest-github-actions-annotate-failures
- name: Download Docker dependencies
# This happens automatically during test execution
# However, our tests can run concurrently
# Which means that our tests can pull this image concurrently
# Pulling it once is more efficient
run: |
docker pull mlupin/docker-lambda:python3.11
- name: Test with pytest
run: |
make test-only
- name: "Upload coverage to Codecov"
if: ${{ github.repository == 'getmoto/moto'}}
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: false
flags: unittests
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
================================================
FILE: .github/workflows/tests_proxymode.yml
================================================
name: Unit tests in Proxy Mode
on: [workflow_call]
jobs:
test:
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "windows-latest"]
python-version: ["3.10", "3.11", "3.12"]
include:
- os: ubuntu-latest
path: ~/.cache/pip
- os: windows-latest
path: ~\AppData\Local\pip\Cache
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ matrix.path }}
key: pip-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
restore-keys: |
pip-${{ runner.os }}-${{ matrix.python-version }}-
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-tests.txt
pip install .[all,server]
- name: Start MotoProxy on Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
moto_proxy -H 0.0.0.0 -v > moto_proxy.log &
- name: Test ProxyMode on Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
env:
TEST_PROXY_MODE: ${{ true }}
run: |
pytest -sv tests/test_acmpca tests/test_athena tests/test_awslambda tests/test_apigateway tests/test_core/test_proxy.py tests/test_s3
- name: Test ProxyMode on Windows
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
env:
TEST_PROXY_MODE: ${{ true }}
# We should start moto_proxy in a different step
# But I can't keep the process alive, across different steps
# It does run in the background - but it looks like the process is killed at the end of the step
# Starting the proxy in the same step has the same outcome though, even if it's not pretty
#
# This step does not test everything, because it takes ages on Windows for some reason
run: |
moto_proxy -v &
pytest -sv tests/test_acmpca tests/test_core/test_proxy.py
- name: "Stop MotoProxy"
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
kill $(lsof -t -i:5005)
- name: Archive Proxy logs
if: always()
uses: actions/upload-artifact@v7
with:
name: motoproxy-${{ matrix.os }}-${{ matrix.python-version }}
path: |
moto_proxy.log
================================================
FILE: .github/workflows/tests_real_aws.yml
================================================
name: Execute tests against AWS
on:
schedule:
- cron: '00 6 * * 0'
workflow_dispatch:
inputs:
ref:
description: "The branch, tag or SHA to checkout, e.g. refs/pull/<pr_number>/merge"
required: true
type: string
tests_specifier:
default: "tests"
description: "pytest test(s) specifier"
required: false
type: string
jobs:
test:
runs-on: ubuntu-latest
name: "Test Against AWS"
if: ${{ github.repository == 'getmoto/moto' }}
permissions:
id-token: write
steps:
- name: Set git ref for `workflow_dispatch` event
if: github.event_name == 'workflow_dispatch'
run: echo "GITHUB_REF=${{ inputs.ref }}" >> $GITHUB_ENV
- uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ env.GITHUB_REF }}
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-3.11-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v6
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::682283128318:role/GithubActionsRole
role-duration-seconds: 7200
- name: Test with pytest
env:
MOTO_TEST_ALLOW_AWS_REQUEST: ${{ true }}
TESTS_SPECIFIER: ${{ github.event_name == 'workflow_dispatch' && inputs.tests_specifier || 'tests' }}
run: |
pytest -sv -n auto --dist loadfile ${{ env.TESTS_SPECIFIER }} -m aws_verified --durations 100
================================================
FILE: .github/workflows/tests_sdk_cpp.yml
================================================
name: C++ SDK test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- name: Check build cache
id: build-cache
uses: actions/cache@v5
with:
path: other_langs/tests_cpp/build/hello_s3
key: cpp-build-${{ hashFiles('other_langs/tests_cpp/hello_s3.cpp') }}
- name: Build Project
if: steps.build-cache.outputs.cache-hit != 'true'
working-directory: other_langs/tests_cpp
run: |
make build
- name: Run tests
working-directory: other_langs/tests_cpp
run: |
make test
================================================
FILE: .github/workflows/tests_sdk_dotnet.yml
================================================
name: .NET SDK test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- uses: actions/setup-dotnet@v5
- uses: actions/cache@v5
with:
path: ~/.nuget/packages
# Look to see if there is a cache hit for the corresponding requirements file
key: ${{ runner.os }}-nuget
restore-keys: |
${{ runner.os }}-nuget
- name: Install dependencies
run: cd other_langs/tests_dotnet && dotnet restore s3 && dotnet restore sqs
- name: Run tests
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
cd other_langs/tests_dotnet
dotnet test s3 -v n
dotnet test sqs -v n
================================================
FILE: .github/workflows/tests_sdk_go.yml
================================================
name: Go SDK test
on:
workflow_call:
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v6
with:
go-version: '1.24.x'
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- name: Install Dependencies
run: cd other_langs/tests_go && go get -t .
- name: Run Tests
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
cd other_langs/tests_go
go test
================================================
FILE: .github/workflows/tests_sdk_java.yml
================================================
name: Java SDK test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
- name: Build with Maven
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
cd other_langs/tests_java && mvn test
================================================
FILE: .github/workflows/tests_sdk_js.yml
================================================
name: JS SDK test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python 3.11
uses: actions/setup-python@v6
with:
python-version: "3.11"
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- uses: actions/setup-node@v6
- name: Install dependencies
run: |
cd other_langs/tests_js && npm install && npm list
- name: Run tests
run: |
cd other_langs/tests_js && npm test
================================================
FILE: .github/workflows/tests_sdk_ruby.yml
================================================
name: Ruby SDK test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
ruby-version: ['3.3']
steps:
- uses: actions/checkout@v6
- name: Set up Ruby ${{ matrix.ruby-version }}
uses: ruby/setup-ruby@dffb23f65a78bba8db45d387d5ea1bbd6be3ef18
with:
ruby-version: ${{ matrix.ruby-version }}
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- name: Install dependencies
run: cd other_langs/tests_ruby && bundle install
- name: Run tests
env:
AWS_ENDPOINT_URL: "http://localhost:5000"
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
cd other_langs/tests_ruby && ruby test/*
================================================
FILE: .github/workflows/tests_sdk_sagemaker.yml
================================================
name: SageMaker SDK test
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install Moto
run: |
pip install .[sagemaker]
- name: Install dependencies
run: |
pip install boto3 pytest pytz "sagemaker<3"
- name: Run tests
run: |
mkdir ~/.aws
touch ~/.aws/credentials
echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
touch ~/.aws/config
echo -e "[default]\nregion = us-east-1" > ~/.aws/config
cd other_langs/tests_sagemaker_client
pytest -sv .
================================================
FILE: .github/workflows/tests_servermode.yml
================================================
name: Unit tests in Server Mode
on: [workflow_call]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Start MotoServer
run: |
pip install build
python -m build
docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e MOTO_EC2_LOAD_DEFAULT_AMIS=false -e MOTO_COGNITO_IDP_USER_POOL_ENABLE_TOTP=true -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock python:${{ matrix.python-version }}-slim /moto/scripts/ci_moto_server.sh &
python scripts/ci_wait_for_server.py
- name: Get pip cache dir
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: pip cache
uses: actions/cache@v5
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: pip-${{ matrix.python-version }}-${{ hashFiles('**/setup.cfg') }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
- name: Download Docker dependencies
# This happens automatically during test execution
# However, our tests can run concurrently
# Which means that our tests can pull this image concurrently
# Pulling it once is more efficient
run: |
docker pull mlupin/docker-lambda:python3.11
- name: Test ServerMode/Coverage
env:
TEST_SERVER_MODE: ${{ true }}
run: |
make test-only
- name: "Upload coverage to Codecov"
if: ${{ github.repository == 'getmoto/moto'}}
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: false
flags: servertests
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
- name: "Stop MotoServer"
if: always()
run: |
ls -la
docker stop motoserver
mkdir serverlogs
cp server_output.log serverlogs/server_output.log
- name: Archive Server logs
if: always()
uses: actions/upload-artifact@v7
with:
name: motoserver-${{ matrix.python-version }}
path: |
serverlogs/*
================================================
FILE: .github/workflows/tests_terraform_examples.yml
================================================
# Small, self contained Terraform examples
# Scripts should be placed in:
# other_langs/terraform/service
name: Terraform Examples
on: [workflow_call]
jobs:
find-jobs:
runs-on: ubuntu-latest
name: Find Jobs
outputs:
folders: ${{ steps.set-folders.outputs.folders }}
steps:
- uses: actions/checkout@v6
- id: set-folders
name: Get Services
shell: bash
run: |
cd other_langs/terraform/
folders=$(tree -J -d -L 1 | jq -c '.[0].contents | map(.name)')
echo $folders
echo "folders=$folders" >> $GITHUB_OUTPUT
test:
runs-on: ubuntu-latest
needs: find-jobs
strategy:
fail-fast: false
matrix:
service: ${{ fromJson(needs.find-jobs.outputs.folders )}}
steps:
- uses: actions/checkout@v6
- name: Start MotoServer
uses: ./.github/actions/run_moto_server
- name: Set up Terraform
uses: hashicorp/setup-terraform@v4
- name: Run tests
if: ${{ matrix.service != 'rds' }}
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
cd other_langs/terraform/${{ matrix.service }}
terraform init
terraform apply --auto-approve
echo "Verify nothing changes when ACM certificates are validated"
sleep 30
terraform plan -detailed-exitcode
sleep 30
terraform plan -detailed-exitcode
terraform apply -destroy --auto-approve
- name: Run tests
if: ${{ matrix.service == 'rds' }}
run: |
mkdir ~/.aws && touch ~/.aws/credentials && echo -e "[default]\naws_access_key_id = test\naws_secret_access_key = test" > ~/.aws/credentials
cd other_langs/terraform/${{ matrix.service }}
terraform init
terraform apply --auto-approve
terraform apply -destroy --auto-approve
================================================
FILE: .github/workflows/tests_without_docker.yml
================================================
# Verify that the `TESTS_SKIP_REQUIRES_DOCKER` environment variable works
# Or in other words:
# Verify that all tests that require Docker have the @requires_docker decorator
name: Unit tests without Docker
on:
workflow_dispatch:
schedule:
- cron: '0 1 * * *' # every day at 1AM
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11"]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Update pip
run: |
python -m pip install --upgrade pip
- name: Install project dependencies
run: |
pip install -r requirements-dev.txt
pip install pytest-github-actions-annotate-failures
# We should be skipping all tests that require Docker
# Uninstalling the module enforces that all tests are indeed skipped
- name: Uninstall Docker
run: |
sudo systemctl stop docker
sudo systemctl stop docker.socket
- name: Test with pytest
env:
TESTS_SKIP_REQUIRES_DOCKER: true
run: |
pytest tests
================================================
FILE: .gitignore
================================================
moto*.egg-info/*
dist/*
.cache
.tox
.coverage
coverage.xml
cover/
*.pyc
*~
.noseids
build/
.idea/
*.swp
.DS_Store
python_env
.ropeproject/
.pytest_cache/
venv/
env/
.python-version
.vscode/
tests/file.tmp
.eggs/
.mypy_cache/
*.tmp
.venv/
htmlcov/
.~c9_*
.coverage*
docs/_build
moto_recording
moto/moto_proxy/certs/*.crt
moto/moto_proxy/certs/*.csr
moto/moto_proxy/certs/*.conf
.hypothesis
other_langs/tests_java/target
other_langs/tests_dotnet/ExampleTestProject/bin
other_langs/tests_dotnet/ExampleTestProject/obj
other_langs/tests_ruby/Gemfile.lock
other_langs/terraform/*/.terraform*
other_langs/terraform/*/terraform*
other_langs/terraform/awslambda/lambda_function_payload.zip
other_langs/tests_dotnet/ebs/obj/Debug/*
other_langs/tests_js/node_modules
other_langs/tests_js/package-lock.json
================================================
FILE: .gitmodules
================================================
================================================
FILE: .readthedocs.yaml
================================================
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
build:
os: ubuntu-22.04
tools:
python: "3.12"
sphinx:
configuration: docs/conf.py
formats:
- pdf
python:
install:
- requirements: docs/requirements.txt
- method: pip
path: .
================================================
FILE: AUTHORS.md
================================================
## Moto Contributors
Moto is written by Steve Pulec with contributions from:
* [Zach Smith](https://github.com/zmsmith)
* [Dilshod Tadjibaev](https://github.com/antimora)
* [Dan Berglund](https://github.com/cheif)
* [Lincoln de Sousa](https://github.com/clarete)
* [mhock](https://github.com/mhock)
* [Ilya Sukhanov](https://github.com/IlyaSukhanov)
* [Lucian Branescu Mihaila](https://github.com/lucian1900)
* [Konstantinos Koukopoulos](https://github.com/kouk)
* [attili](https://github.com/attili)
* [JJ Zeng](https://github.com/jjofseattle)
* [Jon Haddad](https://github.com/rustyrazorblade)
* [Andres Riancho](https://github.com/andresriancho)
* [Michael Ossareh](https://github.com/ossareh)
* [JeffMGreg](https://github.com/JeffMGreg)
* [Hugo Lopes Tavares](https://github.com/hltbra)
* [Chris St. Pierre](https://github.com/stpierre)
* [Frank Mata](https://github.com/matafc)
* [Clint Ecker](https://github.com/clintecker)
* [Richard Eames](https://github.com/Naddiseo)
* [Kevin Glisson](https://github.com/kevgliss)
* [Shawn Falkner-Horine](https://github.com/DreadPirateShawn)
* [David Baumgold](https://github.com/singingwolfboy)
* [Rory-Finnegan](https://github.com/Rory-Finnegan)
* [Bobby Impollonia](https://github.com/bobbyi)
* [Ralfas](https://github.com/ralfas)
* [Omer Katz](https://github.com/thedrow)
* [Joseph Lawson](https://github.com/joekiller)
* [Trey Tacon](https://github.com/ttacon)
* [Peter](https://github.com/pvbouwel)
* [Tyler Sanders](https://github.com/tsanders)
* [Gary Dalton](https://github.com/gary-dalton)
* [Chris Henry](https://github.com/chrishenry)
* [Mike Fuller](https://github.com/mfulleratlassian)
* [Andy](https://github.com/aaltepet)
* [Mike Grima](https://github.com/mikegrima)
* [Marco Rucci](https://github.com/mrucci)
* [Zack Kourouma](https://github.com/zkourouma)
* [Pior Bastida](https://github.com/pior)
* [Dustin J. Mitchell](https://github.com/djmitche)
* [Jean-Baptiste Barth](https://github.com/jbbarth)
* [Tom Viner](https://github.com/tomviner)
* [Justin Wiley](https://github.com/SectorNine50)
* [Adam Stauffer](https://github.com/adamstauffer)
* [Guy Templeton](https://github.com/gjtempleton)
* [Michael van Tellingen](https://github.com/mvantellingen)
* [Jessie Nadler](https://github.com/nadlerjessie)
* [Alex Morken](https://github.com/alexmorken)
* [Clive Li](https://github.com/cliveli)
* [Jim Shields](https://github.com/jimjshields)
* [William Richard](https://github.com/william-richard)
* [Alex Casalboni](https://github.com/alexcasalboni)
* [Jon Beilke](https://github.com/jrbeilke)
* [Bendeguz Acs](https://github.com/acsbendi)
* [Craig Anderson](https://github.com/craiga)
* [Robert Lewis](https://github.com/ralewis85)
* [Kyle Jones](https://github.com/Kerl1310)
* [Mickaël Schoentgen](https://github.com/BoboTiG)
* [Ariel Beck](https://github.com/arielb135)
* [Roman Rader](https://github.com/rrader/)
* [Bryan Chen](https://github.com/bchen1116)
* [Jonas Bulik](https://github.com/MrGreenTea)
* [Rita Cheung](https://github.com/rita-cheung)
* [David Acevedo](https://github.com/dacevedo12)
* [Damon Williams](https://github.com/footballencarta)
================================================
FILE: CHANGELOG.md
================================================
Moto Changelog
==============
5.1.22
-----
Docker Digest for 5.1.22: _sha256:1e3802c95726373544967b428201c548f0247c15b00db2d96a5ba0a77d8643b8_
New Methods:
* APIGateway:
* delete_model()
* Athena:
* tag_resource()
* untag_resource()
* Pipes:
* list_tags_for_resource()
* OSIS:
* delete_resource_policy()
* get_resource_policy()
* put_resource_policy()
* RDS:
* copy_db_cluster_parameter_group()
* STS:
* get_access_key_info()
* Transfer:
* list_servers()
Miscellaneous:
* CloudFormation now supports the creation/update/deletion of AWS::CloudWatch::Dashboard resources
* CloudFormation now supports the creation/update/deletion of AWS::KMS::Alias resources
* CloudFormation now supports the creation/update/deletion of AWS::SSM::Document resources
* EC2: create_fleet() now supports the parameters DryRun and LaunchTemplateConfigs.Overrides
* EC2: describe_network_interfaces() now supports the 'attachment.attachment-id'-filter
* EC2: Instances created from a LaunchTemplate now have the 'aws:ec2launchtemplate:id' and 'aws:ec2launchtemplate:version' tags
* RDS: create_db_cluster_parameter_group() now validates the provided group name/description/familiy
* RDS: delete_db_cluster_parameter_group() now validates that the provided group exists
* S3: delete_object() now supports IfMatch
* SecretsManager: create-secret() now throw ResourceExistsException for duplicate requests with different token (broken since 5.1.11)
* SQS: send_message() now returns the SequenceNumber-attribute
* VPCLattice: list_access_log_subscriptions() now also supports arns as resourceIdentifiers
5.1.21
-----
Docker Digest for 5.1.21: _sha256:93ad54da7badce7f9c13e5e6439c93564c764663c42872d2c39f718aa484047a_
General:
* Moto now supports the new AWS partition for the EU sovereign cloud ('eusc-de-east-1')
New Services:
* Account:
* delete_alternate_contact()
* get_alternate_contact()
* put_alternate_contact()
* Connect:
* associate_analytics_data_set()
* create_instance()
* delete_instance()
* describe_instance()
* disassociate_analytics_data_set()
* list_analytics_data_associations()
* list_instances()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
New Methods:
* Backup:
* create_report_plan()
* delete_backup_vault()
* delete_backup_vault_lock_configuration()
* describe_backup_vault()
* describe_report_plan()
* list_report_plans()
* put_backup_vault_lock_configuration()
* EKS:
* update_nodegroup_config()
* Route53Resolver:
* get_resolver_query_log_config_association()
* list_resolver_query_log_configs()
* list_resolver_query_log_config_associations()
* SecurityHub:
* get_master_account()
Miscellaneous:
* DynamoDB now supports multi-attribute composite key support for GSIs
* ELBv2: Internal load balancers can now be `dualstack`
* IAM: Policy validation now correctly validates Boolean conditions and NULL-resources
* Lambda: put_function_event_invoke_config() no longer requires the DestinationConfig-parameter
* ResourceGroupsTaggingAPI: tag_resources() and untag_resources() now supports CloudFront resources
* SageMaker: describe_domain() now returns the DomainSetting-attribute
5.1.20
-----
Docker Digest for 5.1.20: _sha256:d2711655244df58411ce0be34236c95736390db17886370d21e12ae2b1e36f79_
New Methods:
* EC2:
* create_subnet_cidr_reservation()
* delete_subnet_cidr_reservation()
* get_instance_uefi_data() (Just a stub, no actual data is returned)
* get_subnet_cidr_reservations()
* IOT:
* list_thing_principals_v2()
* ResourceGroups:
* cancel_tag_sync_task()
* get_tag_sync_task()
* list_tag_sync_tasks()
* start_tag_sync_task()
* Route53Resolver:
* get_resolver_dnssec_config()
* list_resolver_dnssec_configs()
* update_resolver_dnssec_config()
* S3Control:
* create_multi_region_access_point()
* delete_multi_region_access_point()
* delete_storage_lens_configuration()
* describe_multi_region_access_point_operation()
* get_multi_region_access_point()
* get_multi_region_access_point_policy()
* get_multi_region_access_point_policy_status()
* list_multi_region_access_points()
* put_multi_region_access_point_policy()
* SecurityHub:
* create_members()
* get_members()
* list_members()
Miscellaneous:
* ACM: import_certificate() now supports all key types, RSA and EC
* APIGateway: update_rest_api() now supports `/endpointConfiguration/types`
* Autoscaling: update_auto_scaling_group() now supports the MixedInstancesPolicy-parameter
* Batch: register_job_definition() now supports the eksProperties-parameter
* DMS: create_replication_task() now supports the Tags-parameter
* Organizations: list_policies() now support pagination
* Organizations now supports Resource Control Policy
* Redshift: describe_clusters() now supports the TagKeys-parameter
* Logs: put_subscription_filter() now supports other LogGroups
5.1.19
-----
Docker Digest for 5.1.19: _sha256:1bba01d147a15d14a5816b69ee6d346ba04bd43baab4a3a27a55c368ecc2bb90_
General:
* Removed support for ElasticTranscoder, now that AWS has also deprecated this service
New Methods:
* ACM-PCA:
* revoke_certificate()
* DSQL:
* delete_cluster()
* get_vpc_endpoint_service_name()
* list_tags_for_resource()
* FSX:
* describe_backups()
* SESv2:
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* VPC Lattice:
* delete_auth_policy()
* delete_resource_policy()
* get_auth_policy()
* get_resource_policy()
* put_auth_policy()
* put_resource_policy()
Miscellaneous:
* DynamoDB: put_item() now correctly validates numeric and boolean values
* EC2: describe_instances() now returns the correct status for BlockDeviceMappings.Ebs.Status (attached, instead of in-use)
* EC2: describe_network_acls() now supports the 'association.association-id' Filter
* ELBv2: modify_load_balancer_attributes() no longer fails when modifying the 'health_check_logs.s3.enabled' attribute
* ResourceGroupsTaggingAPI: get_resources() now supports the SESv2 resources: ConfigurationSets, ContactLists, DedicatedIpPool, EmailIdentity
* Route53: change_tags_for_resource() no longer throws an error for removing a non-existing tag
* S3: list_object_versions() now correctly calculates the IsLatest-attribute
* Scheduler: list_schedules() and list_schedule_groups() now support pagination
* SecretsManager: batch_get_secret_value() now returns error handling for unknown secrets
* SSM: put_parameter() now returns the Tier-attribute
5.1.18
-----
Docker Digest for 5.1.18: _sha256:c99ea4ab0881e1d95af5601c2cd42ef4dac15eefdf6597532c59d9631068818a_
General:
* Introduces two methods for enabling and disabling IAM authentication:
from moto.core import disable_iam_authentication, enable_iam_authentication
They behave the same as the `@set_initial_no_auth_action_count`-decorator, but can be used as a fixture/context manager
New Services:
* Pipes:
* create_pipe()
* delete_pipe()
* describe_pipe()
* list_pipes()
* tag_resource()
* untag_resource()
New Methods:
* S3Control:
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* S3Vectors:
* delete_vector_bucket_policy()
* delete_vectors()
* get_vector_bucket_policy()
* get_vectors()
* list_vectors()
* put_vector_bucket_policy()
* put_vectors()
Miscellaneous:
* APIGateway: put_rest_api() now correctly creates integrations
* AutoScaling: create_auto_scaling_group() now correctly calculates the InstancesDistribution for MixedInstancesPolicies
* ResourceGroupsTaggingAPI: get_resources() now supports filtering by `sqs:queue`
* SecretsManager: put_secret_value() now adds the AWSCURRENT-label if it's the first version of the Secret being added
5.1.17
-----
Docker Digest for 5.1.17: _sha256:0361ac8f0cc6687dcf3835da1d60e31cf457fb0d49229d56586f2aa5c510f170_
General:
* The MotoServer dashboard (available on http://localhost:5000/moto-api) now has an new and improved look, making it easier to search for and find your resources
New Methods:
* CloudFront:
* tag_resource()
* untag_resource()
* DMS:
* create_replication_subnet_group()
* describe_connection()
* describe_replication_subnet_group()
* delete_endpoint()
* delete_replication_instance()
* delete_replication_subnet_group()
* test_endpoint()
* EC2:
* describe_reserved_instances_offerings()
* RDS:
* add_role_to_db_cluster()
* add_role_to_db_instance()
* S3Vectors:
* create_index()
* delete_index()
* get_index()
* list_indexes()
* ServiceCatalog:
* create_product()
* describe_product()
* delete_product()
Miscellaneous:
* ACM-PCA: get_certificate() now returns the CertificateChain-attribute, if appropriate
* DMS: Manual control of the State Transition is now available for the `dms:connection` and `dms:replicationinstance` models.
* Organizations: describe_account() now returns the State-attribute.
* ResourceGroupsTaggingAPI: get_resources() now supports all Comprehend models
* StepFunctions: create_execution() now takes the execution input into account when checking idempotency.
5.1.16
-----
Docker Digest for 5.1.16: _sha256:f78c8e0370cabe2516395f351fb27e1df1aa6dc2d728d6de16d5dfbc9ccf595d_
General:
* Removed support for the RoboMaker and QLDB, now that AWS has also deprecated these services
New Services:
* S3Vectors:
* create_vector_bucket()
* delete_vector_bucket()
* get_vector_bucket()
* list_vector_buckets()
New Methods:
* Glue:
* create_security_configuration()
* delete_security_configuration()
* get_security_configuration()
* get_security_configurations()
* FSx:
* create_backup()
* delete_backup()
* list_tags_for_resource()
* VPCLattice:
* get_service()
* get_service_network()
* list_services()
* list_service_networks()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
Miscellaneous:
* ACM: list_certificates() now supports the 'keyTypes'-filter
* APIGateway: get_stage() now supports stages that are URL encoded, like '$default'
* DynamoDB now supports the WarmThroughput parameter on Tables and Indexes
* DynamoDB: execute_statement() now supports querying indexes (both GSI and LSI)
* EC2: create_volume() now supports the MultiAttachEnabled-parameter
* EC2: modify_volume() now supports the parameters Iops, Throughput and MultiAttachEnabled
* ElastiCache: create_cache_cluster() now validates that the mandatory parameter CacheNodeType is provided
* ELBv2: describe_listener_certificates() now returns the IsDefault-field
* Glue: create_connection() now supports the parameters ConnectionProperties, SparkProperties, AthenaProperties and PythonProperties
* ResourceGroupsTaggingAPI: get_resources() now supports FSx resource types (Backups and FileSystems)
* ResourceGroupsTaggingAPI: get_resources() now supports VPCLattice resource types (Services and Service Networks)
* ResourceGroupsTaggingAPI: untag_resources() now supports RDS resource types
* S3: put_object_tagging() now throws MethodNotAllowed when trying to tag a DeleteMarker
* SSM: get_parameters_by_path() now validates that the maxResults-parameter is 10 at most
5.1.15
-----
Docker Digest for 5.1.15: _sha256:8860b18917e1ee4d067df19a406ae95dc26037e6965d5b499e1cffd33755b914_
General:
* Python 3.14 is now officially supported
New Methods:
* IdentityStore:
* get_user_id()
* SESv2:
* delete_email_identity()
* VPCLattice:
* create_access_log_subscription()
* delete_access_log_subscription()
* get_access_log_subscription()
* list_access_log_subscriptions()
* update_access_log_subscription()
Miscellaneous:
* ACM: request_certificate() now supports the Option-parameter
* ACM: list_certificates() now supports the Includes-parameter, supporting Exportable Public Certificates
* APIGatewayV2: get_domain_name() now returns the DomainNameArn-attribute
* Athena: Executions can now be delayed using state transitions
* CloudFormation: validate_template() now supports short function refs (!Sub)
* Config: Now supports "AWS::SNS::Topic"-resources
* EC2: create_subnet() now supports the Ipv6Native-parameter
* EC2: create_transit_gateway_vpc_attachment() now validates that the TransitGateway exists
* EC2: create_transit_gateway_vpc_attachment() now validates that no other attachment to this VPC exists
* EC2: create_transit_gateway_vpc_attachment() now automatically adds the attachment to the default RouteTable
* EC2: create_transit_gateway_vpc_attachment() now correctly creates multiple attachments if called twice (for different VPC's)
* EC2: create_vpn_connection() now validates that only one of [VPNGateway|TransitGateway] is provided
* EC2: create_vpn_connection() now validates that the provided CustomerGateway and TransitGateway exists
* EC2: create/modify/describe_vpc_endpoint_service_configuration now supports the SupportedRegions-param
* EC2: describe_transit_gateway_attachments() now returns the correct RouteTableID
* EC2: describe_vpc_endpoints() now supports the 'vpc-endpoint-state'-filter
* Lambda: list_layer_versions() now returns the layers in the correct order - latest version first.
* ResourceGroupsTaggingAPI: get_resources() now supports SSM Parameters
* ResourceGroupsTaggingAPI: get_resources() now supports the 'kms:key' type
* SESv2: send_email() can now use an email registered by `create_email_identity()`, instead of having the SESv1:verify_domain_identity()-method
5.1.14
-----
Docker Digest for 5.1.14: _sha256:800719627036dc38dc699e9f314f624f2c98ac3d8bb754db078cb2698f08ee77_
New Services:
* CloudWatch-Synthetics:
* create_canary()
* get_canary()
* describe_canaries()
* list_tags_for_resource()
* MediaPackageV2:
* create_channel()
* create_channel_group()
* delete_channel()
* delete_channel_group()
* get_channel()
* get_channel_group()
* list_channel_groups()
* VPCLattice:
* create_service()
* create_service_network()
* create_service_network_vpc_association()
* create_rule()
New Methods:
* Kinesis:
* describe_limits()
* Macie2:
* disassociate_member()
* enable_organization_admin_account()
* list_organization_admin_accounts()
* SecurityHub:
* describe_hub()
* disable_security_hub()
* enable_security_hub()
* ServiceHub-AppRegistry:
* get_configuration()
* put_configuration()
Miscellaneous:
* IOTData: update_thing_shadow() now supports state=None
* ResourceGroupsTaggingAPI: list_tags_for_resource() now returns ARN's for Athena resources, instead of names
* ResourceGroupsTaggingAPI: list_tags_for_resource() now supports Kinesis Firehose resources
* S3: put_object() now stores the correct (actual) content when using the Java SDK, and no longer include the checksum headers in the body
* Shield: create_protection() now only allows ARN's of Elastic IP Addresses, instead of all EC2 resources
5.1.13
-----
Docker Digest for 5.1.13: _sha256:0503bdc569e122966fc5fceef43d4a9562ed21e4091cf865801dba90cbb62ea5_
New Services:
* Macie2:
* accept_invitation()
* create_invitations()
* decline_invitations()
* delete_member()
* disable_macie()
* enable_macie()
* get_administrator_account()
* get_macie_session()
* list_invitations()
* list_members()
New Methods:
* Athena:
* list_capacity_reservation()
* update_capacity_reservation()
Miscellaneous:
* CloudWatch: get_metric_data() now supports the ReturnData-parameter again (broken in 5.1.12)
* CognitoIDP: admin_respond_to_auth_challenge() now returns the scope=aws.cognito.signin.user.admin in the AccessToken
* ELB: modify_load_balancer_attributes() now supports the `secondary_ips.auto_assigned.per_subnet` attribute
* IAM: get_server_certificate() now returns the CertificateChain-parameter
* S3: put_bucket_lifecycle_configuration() now correctly processes a LifeCycleConfiguration with 0 Rules
* SNS: publish_batch() now returns the original MessageAttributes provided by the user again (broken in 5.1.12)
5.1.12
-----
Docker Digest for 5.1.12: _sha256:e1cf8b624019e6eba25cb5b37efdf95a463fc24691978540a1c7008b7d02fda0_
General:
* Removed support for OpsWorks, now that AWS has also deprecated this service.
https://docs.aws.amazon.com/opsworks/latest/userguide/stacks-eol-faqs.html
New Methods:
* Glue:
* batch_get_workflows()
* create_workflow()
* delete_workflow()
* get_workflow()
* get_workflow_run()
* get_workflow_runs()
* get_workflow_run_properties()
* list_workflows()
* put_workflow_run_properties()
* start_workflow_run()
* stop_workflow_run()
* update_workflow()
* IOT:
* add_thing_to_billing_group()
* create_billing_group()
* delete_billing_group()
* describe_billing_group()
* list_billing_groups()
* list_things_in_billing_group()
* remove_thing_from_billing_group()
* update_billing_group()
* SES:
* clone_receipt_rule_set()
* SSM:
* create_data_source()
* deregister_patch_baseline_for_patch_group()
* delete_data_source()
* describe_data_source()
* get_patch_baseline_for_patch_group()
* list_data_sources()
* list_tags_for_resource()
* register_patch_baseline_for_patch_group()
* update_data_source()
* tag_resource()
* untag_resource()
Miscellaneous:
* EC2: describe_network_interfaces() now returns the attributes PublicIP, PublicDNSName and IpOwnerId
* IOT: search_index() now supports logical expression handling in the queryString-parameter, with NOT, AND, OR and parentheses for complex queries
* IOT: search_index() now supports thingGroupNames in the queryString-parameter
* ResourceGroupsTaggingAPI: list_tags_for_resource() now supports QuickSight resources
* ResourceGroupsTaggingAPI: tag_resource() now supports QuickSight resources
* ResourceGroupsTaggingAPI: untag_resource() now supports QuickSight resources
* SES: create_receipt_rule() now contains additional validation around the RuleSetName and the provided rule-actions
* SES: create_receipt_rule() now supports the After-parameter
* STS: assume_role() now validates that the length of the roleSessionName-parameter is max 64 characters long
* QuickSight: create_data_set() now supports the Tags-parameter
5.1.11
-----
Docker Digest for 5.1.11: _sha256:8ca337023ebaa5c0b8b33503b178d4db3326fca184551d6f47b07b8dd8532644_
New Methods:
* Athena:
* list_tags_for_resource()
* Comprehend:
* delete_resource_policy()
* describe_document_classification_job()
* describe_dominant_language_detection_job()
* describe_entities_detection_job()
* describe_events_detection_job()
* describe_key_phrases_detection_job()
* describe_pii_entities_detection_job()
* describe_resource_policy()
* describe_sentiment_detection_job()
* describe_targeted_sentiment_detection_job()
* describe_topics_detection_job()
* list_document_classification_jobs()
* list_dominant_language_detection_jobs()
* list_entities_detection_jobs()
* list_events_detection_jobs()
* list_key_phrases_detection_jobs()
* list_pii_entities_detection_jobs()
* list_sentiment_detection_jobs()
* list_targeted_sentiment_detection_jobs()
* list_topics_detection_jobs()
* put_resource_policy()
* start_document_classification_job()
* start_dominant_language_detection_job()
* start_entities_detection_job()
* start_events_detection_job()
* start_key_phrases_detection_job()
* start_pii_entities_detection_job()
* start_sentiment_detection_job()
* start_targeted_sentiment_detection_job()
* start_topics_detection_job()
* stop_dominant_language_detection_job()
* stop_entities_detection_job()
* stop_events_detection_job()
* stop_key_phrases_detection_job()
* stop_pii_entities_detection_job()
* stop_sentiment_detection_job()
* stop_targeted_sentiment_detection_job()
* ElasticSearch:
* describe_elasticsearch_domain_config()
* Redshift:
* describe_cluster_parameters()
* describe_default_cluster_parameters()
* S3Control:
* list_access_points()
Miscellaneous:
* DMS: describe_replication_tasks() now correctly supports the `Filters`-parameter
* EC2: create_security_group() now returns the SecurityGroupArn-attribute
* EC2: describe_network_interfaces() now returns the `RequesterId` and `RequesterManaged`-attributes
* ECR: create_repository() now supports the imageTagMutabilityExclusionFilters-parameter
* ECR: create_repository() now enforces the imageTagMutability-parameter
* ECS: start_task() now supports the `group`-parameter
* ECS: run_task() now supports the `group`-parameter
* ElastiCache: create_user() now supports the `Tags`-parameter
* ELBv2: ARNs are now unique for Listeners/LoadBalancers/TargetGroups
* ELBv2: create_rule() now assigns a default Weight of 1, if not specified
* ELBv2: create_target_group() now only returns the HealthCheckPort if the target is not 'lambda'
* ELBv2: describe_load_balancer_attributes() now correctly returns an empty string for `access_logs.s3`-attributes
* EMR: describe_cluster() now returns the correct Cluster.MasterPublicDnsName-attribute (if applicable)
* EMR: run_job_flow() now supports the parameters `EbsRootVolumeSize`, `EbsRootVolumeIops` and `EbsRootVolumeThroughput`
* Glue: start_job_run() now no longer returns mock-values for the parameters: `Arguments`, `NotificationProperty`, `SecurityConfiguration`, `Timeout` and `PreviousRunId`
* MediaPackage: create_origin_endpoint() now supports the `WhiteList` and `TimeDelaySeconds`-parameters
* ResourceGroupsTaggingAPI: get_resources() now supports Athena's CapacityReservations, Workgroups and DataCatalog resources
* S3: complete_multipart_upload() now respects the IfNoneMatch-parameter for objects created by MultiPart-uploads
* S3Control: get_storage_lens_configuration() now returns the `AccountLevel` and `StorageLensArn`-attributes
* SecretsManager: create_secret() now supports the `ClientRequestToken`-parameter
* SecretsManager: put_secret_value() now supports the `ClientRequestToken`-parameter
* SecretsManager: update_secret() now supports the `ClientRequestToken`-parameter
5.1.10
-----
Docker Digest for 5.1.10: _sha256:c8d59f06ef51ed29ba1a6d008785e9538f0c32f636c2d77bb188b73dd21d8832_
New Methods:
* Glue:
* delete_dev_endpoint()
* list_crawls()
* ElastiCache:
* delete_replication_group()
* EKS:
* update_cluster_config()
* ResourceGroupsTaggingAPI:
* untag_resources() (Currently only supports Lambda and EFS resources)
* S3Control:
* get_storage_lens_configuration_tagging()
* put_storage_lens_configuration_tagging()
Miscellaneous:
* Batch: list_jobs() now supports filters with an asterisk
* Batch: list_jobs() now ignores jobStatus when the filters parameter is provided, in parity with AWS
* Batch: submit_job() now supports the tags-parameter
* CloudFormation: describe_stack_resources() now supports the LogicalResourceId-parameter
* EC2: describe_images() now returns the CreationDate-attribute in the correct format (RFC3339) (broken in 5.1.9)
* EC2: describe_managed_prefix_lists() now no longer returns a StateMessage, in parity with AWS
* EC2: describe_managed_prefix_lists() now returns 'AWS' in upper case for the OwnerId
* EC2: modify_vpc_endpoint() now supports the parameters AddSecurityGroupId, RemoveSecurityGroupId and RemoveSubnetId
* ELBv2: describe_load_balancers() now returns the CanonicalHostedZoneId again (broken in 5.1.9)
* Events: put_targets() now supports StepFunctions
* RDS: create_blue_green_deployment() now works correctly when ManageMasterUserPassword has been updated to False
* RDS: create_database() now supports the DomainMembership parameters (Domain/DomainFqdn/DomainOu/DomainAuthSecretArn/DomainDnsIps)
* ResourceGroupsTaggingAPI: get_resources() now supports DirectConnect resources
* ResourceGroupsTaggingAPI: tag_resources() now supports Lambda and EFS resources
* SES: describe_receipt_rule_set() now returns the Metadata.CreatedTimestamp field (broken in 5.1.9)
* SQS: The max message size has been updated to 1MB, from 256KB (AWS updated this a week ago).
* SQS: send_message() now no longer throws an error when supplying the MessageGroupId-parameter against a regular (non-FIFO) queues
5.1.9
-----
Docker Digest for 5.1.9: _sha256:1fae2f297efbd05522835fec12c20ae88cb4734e1c4c2b9297ddc3063858dcc4_
General:
* Docker Image is now based on Python 3.13.
Various improvements have been made to reduce the total image size from 792MB to 523MB.
* A large number of services have been refactored to streamline the generation of API responses, and to ensure that the format is equivalent to AWS'.
This should not have any impact - but please let us know if you run into problems.
Miscellaneous:
* CloudFormation: ChangeSets now no longer throw an error if the change set is created without the UsePreviousTemplate argument
* CloudFormation: ChangeSets now also look at default parameters, instead of always expecting a parameter to be provided
* EC2: describe_images() now supports the 'source-instance-id'-filter
* Logs: describe_destinations() no longer treats the DestinationNamePrefix-parameter as mandatory
* ResourceGroupsTaggingAPI: get_resources() now supports ECS: TaskDefinition resources
* S3: Object notifications (to Lambda/SNS/SQS/etc) now send an URL-encoded key name
New Methods:
* Athena:
* create_capacity_reservation()
* get_capacity_reservation()
* ElastiCache:
* create_replication_group()
* describe_replication_groups()
* EMR:
* list_release_labels()
* list_supported_instance_types()
* RDS:
* create_db_shard_group
* describe_db_cluster_parameters()
* describe_db_shard_groups()
* modify_db_cluster_parameter_group()
5.1.8
-----
Docker Digest for 5.1.8: sha256:b5d4a53fc2eefd264b3bfabfc40aa3a883c68c7751d738d490f4e6f2d0191f53
New Methods:
* Connect-Campaigns:
* get_campaign_state()
* list_campaigns()
* list_tags_for_resource()
* pause_campaign()
* resume_campaign()
* start_campaign()
* stop_campaign()
* tag_resource()
* untag_resource()
* ECS:
* delete_task_definitions()
* ElastiCache:
* create_cache_subnet_group()
* describe_cache_subnet_groups()
* RAM:
* list_permissions()
* list_resource_types()
* RDS:
* create_blue_green_deployment()
* delete_blue_green_deployment()
* describe_blue_green_deployments()
* switchover_blue_green_deployment()
Miscellaneous:
* Athena: get_query_execution() now returns some additional attributes: 'ResultReuseConfiguration', 'Status.CompletionDateTime', 'Status.ServicePreProcessingTimeInMillis', 'Status.ResultReuseInformation'
* DynamoDB: query() now validates that all attributes in the KeyConditionExpression are actually keys
* DynamoDB: update_item() now validates unused ExpressionAttributeNames/ExpressionAttributeValues
* EC2: modify_vpc_attribute() now correctly handles the EnableDnsHostnames-attribute
* ECS: list_task_definitions() now supports the status-parameter
* ELB: describe_load_balancer_attributes() now returns the AdditionalAttributes-attribute
* ElastiCache: list_tags_for_resource() now supports SubnetGroups
* EventBridge: put_events() no longer throws a KeyError: 'time' for targets with a custom InputTemplate that do not specify the time
* Logs: get_query_results() now returns values as strings, in-line with how AWS behaves
* NetworkFirewall: describe_logging_configuration() no longer throws an error for LoggingConfigurations without tags
* RDS: create_db_cluster() now supports the PubliclyAccessible-parameter
* ResourceGroupTaggingAPI: get_resources() now supports resources from Comprehend: DocumentClassifiers and EntityRecognizers
* ResourceGroupTaggingAPI: get_resources() now supports resources from ConnectCampaign: Campaigns
* S3: get_bucket_cors() now returns the ID-attribute for CORS-rules
* S3: get_object() no longer returns the ContentEncoding=aws-chunked
* SecretsManager: list_secrets() now supports filtering by tags/description/owning-service for ReplicaSecrets
* ServiceDiscovery: create_public_dns_namespace()/create_private_dns_namespace() now actually creates a HostedZone in Route53
* SES: describe_configuration_set() now supports ConfigurationSetAttributeNames=["eventDestinations"] (other names are not yet supported)
* SSM: describe_parameters() now correctly returns tag-updates from add_tags_to_resource() and remove_tags_from_resource()
5.1.6
-----
Docker Digest for 5.1.6: _sha256:0afd091e9d26ba1660ad54708ff1e853ffa1f437f057c91163b47d35155a852b_
New Methods:
* Athena:
* get_query_statistics()
* AppSync:
* create_api()
* create_channel_namespace()
* delete_api()
* delete_channel_namespace()
* get_api()
* list_apis()
* list_channel_namespaces()
* CloudDirectory:
* apply_schema()
* create_schema()
* delete_schema()
* list_development_schema_arns()
* list_published_schema_arns()
* publish_schema()
* DirectConnect:
* describe_tags()
* tag_resource()
* untag_resource()
* EC2:
* modify_security_group_rules()
* Glue:
* delete_resource_policy()
* SecurityHub:
* describe_organization_configuration()
* enable_organization_admin_account()
* get_administrator_account()
* update_organization_configuration()
* StepFunctions:
* create_activity()
* delete_activity()
* describe_activity()
* list_activities()
Miscellaneous:
* CodeDeploy: get_deployment_group() now returns the deploymentGroupId-attribute
* CognitoIDP: create_user_pool_client() now supports MOTO_COGNITO_IDP_USER_POOL_CLIENT_ID_STRATEGY=HASH to ensure predictable identifiers
* Lambda: EventSourceMappings for FIFO queues now support custom batch sizes
* Lambda: EventSourceMappings now support tagging
* NetworkFirewall: describe_firewall() now returns the UpdateToken-parameter
* OpenSearch: get_compatible_versions() now longer requires the DomainName-parameter
* OpenSearch: describe_domain_config() now actually works (used to be completely broken)
* Route53: change_tags_for_resource(): Validate ZoneId parameter
* SNS: Now allows sending messages from standard topics to FIFO queues
5.1.5
-----
Docker Digest for 5.1.5: _sha256:b9dbd12d211c88e5799d023db15ec809bca4cc6df93a8aa78f26ccbfb073d18a_
New Services:
* Connect Campaign:
* create_campaign()
* delete_campaign()
* describe_campaign()
* get_connect_instance_config()
* start_instance_onboarding_job()
* CloudDirectory:
* create_directory()
* delete_directory()
* get_directory()
* list_directories()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* Network Firewall:
* create_firewall()
* describe_firewall()
* describe_logging_configuration()
* list_firewalls()
* update_logging_configuration()
* ServiceCatalog-AppRegistry:
* associate_resource()
* create_application()
* list_applications()
* list_associated_resources()
New Methods:
* ACM PCA:
* list_certificate_authorities()
* CloudWatch:
* delete_insight_rules()
* describe_insight_rules()
* disable_insight_rules()
* enable_insight_rules()
* put_insight_rule()
* CodeDeploy:
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* Comprehend:
* create_document_classifier()
* create_endpoint()
* create_flywheel()
* describe_document_classifier()
* describe_endpoint()
* describe_flywheel()
* delete_document_classifier()
* delete_endpoint()
* delete_flywheel()
* list_document_classifiers()
* list_endpoints()
* list_flywheels()
* start_flywheel_iteration()
* stop_training_document_classifier()
* update_endpoint()
* Config:
* delete_resource_config()
* put_resource_config()
* select_resource_config()
* DMS:
* create_endpoint()
* describe_endpoints()
* list_tags_for_resource()
* EC2:
* modify_instance_metadata_options()
* Glue:
* get_resource_policy()
* put_resource_policy()
* RAM:
* get_resource_share_associations()
* S3:
* get_bucket_inventory_configuration()
* get_storage_lens_configuration()
* list_bucket_inventory_configuration()
* list_storage_lens_configurations()
* put_bucket_inventory_configurations()
* put_storage_lens_configuration()
* Timestream InfluxDB:
* create_db_cluster()
* create_db_parameter_group()
* get_db_cluster()
* get_db_parameter_group()
* list_db_clusters()
* list_db_parameter_groups()
Miscellaneous:
* ACMPCA: All SAN's are now passed through from the CSR to the certificate
* APIGateway: delete_api_key()/update_api_key() now throw a ApiKeyNotFoundException (instead of a KeyError)
* AppSync: create_graphql_api() now supports the tags-parameter
* CloudFront: create_distribution() now correctly handles the CloudFrontDefaultCertificate-parameter
* CodeDeploy: create_application() now supports the tags-parameter
* CodeDeploy: create_deployment_group() now supports the tags-parameter
* EC2: describe_instance_status() now correctly handles multiple filters and scenarios where both filters and InstanceIds are supplied
* EC2: disassociate_iam_instance_profile() now actually removes the IAMInstanceProfile from the Instances
* EC2: run_instances() now throws an error if now default Subnet is available and no SubnetId is supplied
* EventBridge: describe_event_bus() now returns additional fields (CreationTime, LastModifiedTime, DeadLetterConfig, Description, KmsKeyIdentifier)
* IOTData: update_thing_shadow() now correctly handles empty dicts
* Neptune: create_db_instance() now supports the Neptune-engine
* Organizations: create_policy() now supports TYPE=TAG_POLICY
* ResourceGroups: delete_group()/get_group() now support ARNs as the GroupName-parameter
* ResourceGroupsTaggingApi: get_resources now supports CloudWatch Alarms and InsightRules
* S3: Calls now return Content-Type=application/xml headers where appropriate
* S3: put_object() - IfMatch is now supported
* SageMaker: create_endpoint_config() now supports the AsyncInferenceConfig-parameter
* SageMaker: describe_transform_job() now returns the Arn-attribute
* SQS: receive_message() now supports the MessageSystemAttributeNames-parameter
* Textract: start_document_text_detection() now supports the NotificationChannel-parameter and integrates with SNS
5.1.4
-----
Docker Digest for 5.1.4: _sha256:32d7805d8bd4c81db789c4fff2c36f96a8837cbd8e7a3853116b6516b9490dde_
New Services:
* CodeDeploy:
* batch_get_applications()
* batch_get_deployments()
* create_application()
* create_deployment()
* create_deployment_group()
* get_application()
* get_deployment()
* get_deployment_group()
* list_applications()
* list_deployments()
* list_deployment_groups()
New Methods:
* ACM:
* get_account_configuration()
* put_account_configuration()
* ACM PCA:
* get_policy()
* delete_policy()
* put_policy()
* EC2:
* create_default_subnet()
* Glue:
* get_job_runs()
* Route53 Resolver:
* associate_resolver_query_log_config()
* create_resolver_query_log_config()
* get_resolver_query_log_config()
* SES:
* create_email_identity_policy()
* delete_email_identity_policy()
* get_email_identity_policies()
* get_identity_dkim_attributes()
* update_configuration_set_reputation_metrics_enabled()
* update_email_identity_policy()
* Textract:
* get_document_analysis()
* start_document_analysis()
* WAFv2:
* create_regex_pattern_set()
* delete_regex_pattern_set()
* get_regex_pattern_set()
* list_regex_pattern_sets()
* update_regex_pattern_set()
Miscellaneous:
* If IAM validation is enabled, Moto now also validates the principal and ExternalId for assumed roles
* ACM: describe_certificate() now return status=Expired if appropriate
* ACM: describe_certificate() now always set status=Issued if the issuer=Amazon
* ACM PCA: get_certificate_authority_certificate() now returns the CertificateChain in the correct format
* Batch: create_compute_environment() now supports adding the instanceRole using the role name only, instead of the full ARN
* Batch: create_job_queue() now supports adding the computeEnvironment using just the name, instead of the full ARN
* CloudFormation: update_stack() now allows removal of resources in any order, regardless of dependencies
* CloudFront now supports additional ViewerCertificate fields (IAMCertificateId, ACMCertificateARN, SSLSupportMethod)
* CloudFront now supports TrustedSigners in the DefaultCacheBehaviour
* CognitoIdentity: get_id() now supports identity pools in non-standard regions when using the CLI
* EC2: create_fleet() now propagates instance-tags of type=instant
* EC2: describe_security_group_rules() now correctly filters by group-id and tags
* EC2: delete_vpc() now validates that all Subnets are deleted first
* ECS: The pendingTasksCount and runningTasksCount-properties of a cluster are now updated accordingly when creating/updating services
* ResourceGroupsTaggingAPI: get_resources() now supports KinesisAnalyticsV2' Applications
* RDS: Identifiers of all resources are now case-insensitive
* RDS: stop_db_instance() now creates a snapshot of type=manual, instead of automatic
* S3: get_bucket_replication() now returns Destination.Account for cross-account replication
* S3: get_object() can now retrieve objects in GLACIER_IR; support for EXPRESS_ONEZONE
* SES, SESv2: list_configuration_sets() now supports pagination
* SecretsManager: list_secrets() now supports the owning-service filter
5.1.3
-----
Docker Digest for 5.1.3: _sha256:c96adff67d2bf82c3a61a6f1155db5300be44d82a9403919a6ff994d0e5438b7_
New Methods:
* DMS:
* create_replication_instance()
* describe_replication_instances()
* Service Catalog:
* describe_portfolio()
Miscellaneous:
* ACM: request_certificate() now correctly handles IPv4-addresses
* DynamoDB: update_item(): Fixed a bug where the PathOverlap-exception was thrown erroneously
* EC2: Improved the behaviour of SecurityGroupRules with multiple IP ranges
* MediaConnect: create_flow() now supports the Maintenance-parameter
* RDS: Managed Secrets are now actually created in Secrets Manager
* S3: delete_objects(): The BypassGovernanceMode-parameter is now compatible with botocore==1.27.25
* SNS: SMS messages are now exposed via the Moto API
5.1.2
-----
Docker Digest for 5.1.2: _sha256:3144ffd311b381594efde7ed4a41fb8fe2d66829ae5f3bf493f93f2ca1a8c82b_
* New Services:
* KinesisAnalyticsV2:
* create_application()
* describe_application()
* list_applications()
* list_tags_for_resource()
* tag_resource()
* Service Catalog:
* create_portfolio()
* create_portfolio_share()
* delete_portfolio()
* delete_portfolio_share()
* describe_portfolio_shares()
* list_portfolio_access()
* list_portfolios()
* New Methods:
* DirectoryServices:
* create_log_subscription()
* delete_log_subscription()
* list_log_subscriptions()
* EC2:
* modify_launch_template()
* Glue:
* get_data_catalog_encryption_settings()
* put_data_catalog_encryption_settings()
* Lambda:
* add_layer_version_permission()
* get_layer_version_policy()
* remove_layer_version_permission()
* RDS:
* copy_db_parameter_group()
* SESv2:
* create_email_identity()
* get_email_identity()
* list_email_identities()
* QuickSight:
* create_dashboard()
* describe_account_settings()
* describe_dashboard()
* list_dashboards()
* update_account_settings()
* update_public_sharing_settings()
* Miscellaneous:
* ApplicationAutoscaling: register_scalable_target() now returns the ScalableTargetARN-attribute
* Autoscaling: create_auto_scaling_group() now supports the LaunchTemplate-parameter
* DynamoDB: Add validation around attribute name use checks
* DynamoDB: Add path overlap checks for all updates
* ECS: create_service() now supports the role-parameter
* ECR: describe_image_scan_findings() now allows the configuration of custom results
* EKS: create_cluster() now supports the RemoteNetworkConfig-parameter
* ElastiCache: create_cache_cluster() now supports parameters AutoMinorVersionUpgrade and TransitEncryptionEnabled
* NetworkManager: list_core_networks() now returns the OwnerAccountId-attribute
* ResourceGroupTaggingAPI: get_resources() now supports AppSync's GraphQL-API resources
* ResourceGroupTaggingAPI: get_resources() now supports CloudFront's Distribution resources
* RDS: create_db_cluster() now supports the AutoMinorVersionUpgrade-parameter
* S3: get_object()/head_object() now return the 'x-amz-checksum-' header when appropriate
* TimestreamWrite: list_tables() no longer requires the DatabaseName-parameter
* WAF: Resources in CloudFront scope now use the us-east-1 region in the ARN, instead of 'global'
5.1.1
-----
Docker Digest for 5.1.1: _sha256:a4c04c53a892ad81741a2e006b85d0f98eab42ad988efb360429cb4ba6818323_
* General:
* Compatible with the new Account-based endpoint for DynamoDB (see https://github.com/boto/boto3/issues/4449)
* Removed dependency on typing_extensions (introduced in 5.1.0)
* New Methods:
* CognitoIDP:
* delete_identity_pool()
* Glue:
* create_connection()
* get_connection()
* get_connections()
* GuardDuty:
* get_administrator_account()
* Miscellaneous:
* ResourceGroupsTaggingAPI: get_resources() now supports EventBusses
* RDS: create_db_instance() now throws an error when referencing a non-existent DBCluster
5.1.0
-----
Docker Digest for 5.1.0: _sha256:aaf5f4a72412b753b2115417e26360612564d3a29b1831f9316708e15138d699_
* General:
* Dropped support for Python 3.8
* New Services:
* Lex V2 Models:
* create_bot()
* create_bot_alias()
* create_resource_policy()
* delete_bot()
* delete_bot_alias()
* delete_resource_policy()
* describe_bot()
* describe_bot_alias()
* describe_resource_policy()
* list_bots()
* list_bot_aliases()
* list_tags_for_resource()
* tag_resource()
* update_bot()
* update_bot_alias()
* update_resource_policy()
* untag_resource()
* CloudHSM V2:
* create_cluster()
* delete_cluster()
* describe_backups()
* describe_clusters()
* get_resource_policy()
* list_tags()
* put_resource_policy()
* tag_resource()
* untag_resource()
* New Methods:
* ElasticSearch:
* add_tags()
* list_tags()
* remove_tags()
* RDS:
* describe_events()
* describe_db_log_files()
* failover_db_cluster()
* restore_db_cluster_to_point_in_time()
* SecurityHub:
* batch_import_findings()
* get_findings()
* TimeStream InfluxDB:
* create_db_instance()
* delete_db_instance()
* get_db_instance()
* list_db_instances()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* Miscellaneous:
* CognitoIDP: AccessTokens and IDTokens now contain the jti and origin_jti values
* DynamoDB: query()/scan() now handle pagination for GSI's correctly
* EC2: The DisableApiStop-attribute is now propagated properly and respected
* EC2: create_volume() now throws an error if the Size-parameter is not provided
* EC2: describe_subnets() now correctly handles a Filter without a Value
* ELBv2: create_listener() now validates the provided protocol against the LoadBalancer type
* ECS: run_task() now contains the Container-info in the response
* KMS: create_key() now supports the Origin-parameter
* Lambda: EventSourceMappings now support all parameters
* Lambda: list_functions() now works with the JS SDK
* Lambda: Choosing the image repository is now deterministic - first a custom source, then mlupin, lambci last
* RDS: Too many improvements to list, with many more supported features and bugfixes
5.0.28
-----
Docker Digest for 5.0.28: _sha256:d3532929e4c498334949a014e9f0af6617ec1e89d92be690cd192fa3354ad7e6_
* General:
* Bootstrapping a CDK project is now supported
* New Services:
* S3 Tables:
* create_namespace()
* create_table()
* create_table_bucket()
* delete_namespace()
* delete_table()
* delete_table_bucket()
* get_metadata_location()
* get_table()
* get_table_bucket()
* list_namespaces()
* list_table_buckets()
* list_tables()
* rename_table()
* update_metadata_location()
* Miscellaneous:
* DynamoDB: delete_item() now returns ConsumedCapacity
* DynamoDB: transact_write_items() now returns a ReturnValuesOnConditionCheckFailure for all operations
* ECR: Lifecycle Policies() now support the tagPatternList-parameter
* S3: get_object() now returns the ETag when returning a 304 (Not Modified)
* SecretsManager: get_secret_value() no longer throws an error after calling rotate_secret(RotateImmediately=False)
* SecretsManager: list_secrets() now filters values with special chars correctly
* Organizations: list_roots() now returns the roots of the parent organization, if called from within a child organization
5.0.27
-----
Docker Digest for 5.0.27: _sha256:ac5312f68c6b748b667526025f9e7a8c2e4112837c258eee68f96fa36d9dbbef_
New Methods:
* Glue:
* create_dev_endpoint()
* get_dev_endpoint()
* get_dev_endpoints()
* KMS:
* generate_mac()
* list_key_rotations()
* rotate_key_on_demand()
* verify_mac()
* SES:
* delete_configuration_set()
* list_configuration_sets()
* SESv2:
* create_configuration_set()
* create_dedicated_ip_pool()
* delete_configuration_set()
* delete_dedicated_ip_pool()
* get_configuration_set()
* get_dedicated_ip_pool()
* list_configuration_sets()
* list_dedicated_ip_pools()
Miscellaneous:
* Introduced a new setting for ServerMode, `MOTO_DISABLE_GLOBAL_CORS`. Disabling the global CORS setting makes it possible to test the CORS-policies on S3 buckets
* ElastiCache: create_user() now supports the AuthenticationMode-parameter
* ElasticSearch/OpenSearch: list_domain_names() now returns domains from both services
* Kafka: list_clusters_v2() now returns all parameters
* Scheduler: The `schedule_expression_timezone` now defaults to UTC
* RDS: create_db_instance() now throws an exception if an instance with that ID already exists
* RDS: restore_db_instance_from_db_snapshot() now throws an exception if an instance with that ID already exists
5.0.26
-----
Docker Digest for 5.0.26: _sha256:1cae28be97cc87151ecabb531d1507b8dd3d52d3636b86143a16cccf4b5fcf43_
New Services:
* Kinesis:
* delete_resource_policy()
* get_resource_policy()
* put_resource_policy()
Miscellaneous:
* DynamoDB: transact_write_items() now validates empty ExpressionAttributeValues
* Logs: describe_log_groups() now returns the logStreamArn-property
* Organizations now has additional validation around creation and deletion of organizations and accounts
* SecretsManager: list_secrets() now properly splits words when filtering
* StepFunctions: describe_state_machine() now takes Version ARN's
* StepFunctions: describe_state_machine() now returns the versionDescription
5.0.25
-----
Docker Digest for 5.0.25: _sha256:1ac2d89ce8c79a6cdfebffb37678a5bd8bb54a39dcbced069f6ac5e29e4cc752_
New Services:
* DSQL:
* create_cluster()
* get_cluster()
Miscellaneous:
* IOTData: update_thing_shadow() now better calculates the delta between the desired and reported values
* S3: select_object_content() now returns the proper Stats (BytesScanned, BytesReturned)
* StepFunctions: Various upgrades for the emulated parser
5.0.24
-----
Docker Digest for 5.0.24: _sha256:68042b17e9a55c7a32347f802b7a02f2793201b4f1c788ca0e85084f5218c233_
Miscellaneous:
* EC2: Terminating instances will now release private ip addresses from the NIC's attached to the interface
* S3: Fixes a bug in complete_multipart_upload() where it was no longer possible to overwrite an earlier multipart upload (Broken in 5.0.23)
* S3: get_object_cors() now correctly returns the ExposeHeader-value
5.0.23
-----
Docker Digest for 5.0.23: _sha256:d41e007bb1f7d41b530959ae9cbed1edf42737ee839faf8da7e925bf19f63105_
New Services:
* Kafka:
* create_cluster()
* create_cluster_v2()
* describe_cluster()
* describe_cluster_v2()
* delete_cluster()
* list_clusters()
* list_clusters_v2()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
New Methods:
* DirectConnect:
* associate_mac_sec_key()
* create_lag()
* describe_lags()
* describe_settings()
* disassociate_mac_sec_key()
* update_settings()
* EFS:
* describe_file_system_policy()
* put_file_system_policy()
* ES:
* describe_elasticsearch_domains()
* OpenSearch:
* describe_domains()
Miscellaneous:
* Athena: list_query_executions() now supports the WorkGroup-parameter
* Athena: start_query_execution() now supports the WorkGroup-parameter
* CloudFormation: AWS::IAM::Role now supports updates
* CognitoIDP: list_users() now correctly filters before applying the Limit
* DirectConnect: describe_trusts() no longer requires a DirectoryId-parameter
* DynamoDB: The DeleteProtectionEnabled can now be disabled
* DynamoDB: update_item() can now return list of binaries
* EC2: SecurityGroups now contain a SecurityGroupArn
* EC2: update_route() now correctly handles DestinationPrefixListId
* KMS: get_public_key() now supports passing in aliases
* Lambda: publish_function() now publishes a function even if the updated code hasn't changed
* MemoryDB: tag_resource/list_tags_for_resource() now supports Snapshots and SubnetGroups
* RDS: copy_db_snapshot() now supports the CopyTags-parameter
* RDS: copy_db_snapshot() now accepts ARN's as the SourceSnapshotIdentifier
* RDS: restore_db_instance_from_db_snapshot() now accepts ARN's as the SourceSnapshotIdentifier
* S3: complete_multipart_upload() now supports IfNoneMatch-parameter
5.0.22
-----
Docker Digest for 5.0.22: _sha256:a51561b8b9d94918788cb89799d37a34c4bcdf4669f081014b3a2df6b4fc0a11_
Miscellaneous:
* DS: enable_ldaps() is now supported for 'ADConnector' directory types
* EC2: Resource identifiers are now 17 characters long, up from 8, in-line with the values that AWS returns
* ECS: create_service() now supports and validates the networkConfiguration-parameter
* ELBv2: register_targets() now validates that instances are running
* IOTData: update_thing_shadow() now properly handles complex nested deltas
* MediaLive: list_channels() and list_inputs() now support pagination
* OpenSearch: create_domain() now returns the EngineVersion in the correct format
* ResourceGroupsTaggingAPI: get_resources() now returns secrets from SecretsManager
* S3: put_object_acl() now sends an EventBridge-notification
* SecretsManager: list_secrets() no longer shows deleted secrets unless the `include_planned_deletion`-parameter is set
* WAFv2: list_ip_sets(), list_logging_configurations(), list_rule_groups(), list_tags_for_resource(), list_web_acls() now all support pagination
5.0.21
-----
Docker Digest for 5.0.21: _sha256:9ba3753fddbe2445667a1261a04dc92e75d9c329a1f2d0610f1dd8bb1c4f4eca_
New Methods:
* IOT:
* create_job_template()
* create_role_alias()
* delete_job_template()
* delete_role_alias()
* describe_job_template()
* describe_role_alias()
* get_indexing_configuration()
* list_job_templates()
* list_role_aliases()
* update_indexing_configuration()
* update_role_alias()
Miscellaneous:
* Batch: list_jobs() now supports the arrayJobId-parameter
* CloudFormation now supports the types AWS::IoT::JobTemplate, AWS::IoT::RoleAlias
* DynamoDB: ProjectionExpressions are now validated for duplicate values
* DynamoDB: scan() now supports parallelization using the Segment/TotalSegments parameters
* DynamoDB: update_item() now validates when an ADD/DELETE occurs on the same set
* EC2: create_fleet() now correctly handles Overrides with a single value
* ECR: list_images() now lists images with multiple tags separately
* IOT: create_job() now supports the parameters abortConfig, jobExecutionsRetryConfig, schedulingConfig, timeoutConfig
* S3: get_object_attributes() no longer throws an error for Glacier objects
5.0.20
-----
Docker Digest for 5.0.20: _sha256:a1041f318c56ed341c70541647b256d40dae776ce654ca4db9d27d94600542a1_
Miscellaneous:
* Removed runtime-dependency on `typing_extensions`
5.0.19
-----
Docker Digest for 5.0.19: _sha256:5d857d7ce17a9b1dadea166d8e0d310771983f026334a555a9d2690a370cf904_
New Methods:
* ELBv2:
* describe_listener_attributes()
* modify_listener_attributes()
* Panorama:
* create_application_instance()
* describe_application_instance()
* describe_application_instance_details()
* list_application_instances()
* WAFv2:
* create_rule_group()
* delete_rule_group()
* get_rule_group()
* update_rule_group()
Miscellaneous:
* CloudFormation now supports the types AWS::IoT::Thing, AWS::IoT::ThingType, AWS::IoT::Policy
* EC2: Key Pairs now use the correct algorithm to calculate the fingerprint
* ELBv2: modify_lb_attr() now supports zonal-shift config
* ECS: create_task_set() now actually creates tasks
* Lambda: The MOTO_DOCKER_LAMBDA_IMAGE config option now accepts full image names, including the tag
* Lambda: Events send to DynamoDB now have the correct eventName
* Organizations: describe_organization() now describes the parent account (if applicable)
* WAFv2: create_web_acl() now supports additional parameters (AssociationConfig, CaptchaConfig, ChallengeConfig, CustomResponseBodies, TokenDomains)
* WAFv2: delete_web_acl() now supports the LockToken-parameter
* WAFv2: update_web_acl() now supports additional parameters (LockToken, AssociationConfig, CaptchaConfig, ChallengeConfig, CustomResponseBodies, TokenDomains)
5.0.18
-----
Docker Digest for 5.0.18: _sha256:62423941446f8863f499ebdfd04c1d1743b5afd84c3837799df7ce08ce3bb750_
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_
New Methods:
* CloudFront:
* create_key_group()
* create_public_key()
* delete_public_key()
* get_key_group()
* get_public_key()
* list_key_groups()
* list_public_keys()
* QuickSight:
* list_user_groups()
* search_groups()
* update_user()
* Workspaces Web:
* list_tags_for_resource()
* tag_resource()
* untag_resource()
Miscellaneous:
* APIGateway: get_api_keys()/get_usage_plan_keys() now support the nameQuery param
* AppSync: create_graphql_api() now supports the visibility-parameter
* DynamoDB: delete_item() now returns the item when a ConditionalCheckFailed is thrown and ReturnValuesOnConditionCheckFailure == ALL_OLD
* QuickSight: Users can now have special characters in their name
* QuickSight: list_group_memberships() now supports pagination
* QuickSight: list_groups() now supports pagination
* QuickSight: list_users() now supports pagination
* SageMaker: search() now also supports ModelPackages/Pipelines/Jobs/Executions
* SecretsManager: delete_secret() now allows force deletion of already marked-for-delete secret
* StepFunctions: create_state_machine() now supports the parameters encryptionConfiguration, tracingConfiguration, loggingConfiguration
5.0.16
-----
Docker Digest for 5.0.16: _sha256:9506ad3448a87082a436533855c61afaf3f1869e73f39f6575917db975569908_
New Services:
* OpenSearch Ingestion Service:
* create_pipeline()
* delete_pipeline()
* get_pipeline()
* list_pipelines()
* list_tags_for_resource()
* start_pipeline()
* stop_pipeline()
* tag_resource()
* untag_resource()
* update_pipeline()
New Methods:
* CloudFront:
* get_invalidation()
* Directory Service:
* create_trust()
* delete_trust()
* describe_ldaps_settings()
* describe_trusts()
* disable_ldaps()
* enable_ldaps()
* EC2:
* modify_ebs_default_kms_key_id()
Miscellaneous:
* CloudFormation: AWS::ECS::TaskDefinition now correctly validates the provided memory parameters
* EC2: create_network_acl_entry() now supports the Ipv6CidrBlock-parameter
* EC2: create_tags() now takes existing tags into account before throwing a TagLimitExceeded-exception
* Firehose: put_record_batch() no longer fails when the SnowflakeDestinationConfiguration-parameter is set
* FSx: The FileSystemID now uses the same pattern as AWS (fs-xxxxxxxx)
* GuardDuty: create_detector() now supports the Features-parameter
* Polly has been updated with the latest voices
* RDS: modify_option_groups() now correctly parses OptionsToInclude
* ResourceGroupsTaggingAPI: get_resources() now supports EC2 NAT Gateways, route tables, subnets
* Scheduler: create_chedule() now validates the start_date-parameter for recurrent schedule expressions
* SNS: publish() and publish_batch now support MessageStructure=json
* WAFv2: associate_web_acl() now allows any resource to be associated
5.0.15
-----
Docker Digest for 5.0.15: _sha256:9d78f63668017ca6eb9bdb415418d8077e1e503a1e81edb4657f93cf7ff34be1_
New Services:
* MemoryDB:
* create_cluster()
* create_snapshot()
* create_subnet_group()
* delete_cluster()
* delete_snapshot()
* delete_subnet_group()
* describe_clusters()
* describe_snapshots()
* describe_subnet_groups()
* list_tags()
* tag_resource()
* untag_resource()
* update_cluster()
* WorkspacesWeb:
* associate_browser_settings()
* associate_network_settings()
* associate_user_access_logging_settings()
* associate_user_settings()
* create_browser_settings()
* create_network_settings()
* create_portal()
* create_user_access_logging_settings()
* create_user_settings()
* delete_browser_settings()
* delete_network_settings()
* delete_portal()
* delete_user_access_logging_settings()
* delete_user_settings()
* get_browser_settings()
* get_network_settings()
* get_portal()
* get_user_access_logging_settings()
* get_user_settings()
* list_browser_settings()
* list_network_settings()
* list_portals()
* list_user_access_logging_settings()
* list_user_settings()
New Methods:
* ApiGateway:
* get_account()
* update_account()
* AppSync:
* create_api_cache()
* delete_api_cache()
* get_api_cache()
Miscellaneous:
* DynamoDB: get/delete/update_item() now validates all provided keys exist
* Firehose: create_delivery_stream() now supports the SnowflakeDestinationConfiguration-parameter
* S3: put_object() now support conditional writes
5.0.14
-----
Docker Digest for 5.0.14: _sha256:5399ffa0daadd1eb6c00250ec64453675f9635d0a210563f43c26b43e0dfd178_
General:
* All JSON files in the binary distribution are shipped compressed, significantly reducing the size on disk
New Services:
* Shield:
* create_subscription()
* describe_subscription()
* TimestreamQuery:
* create_scheduled_query()
* delete_scheduled_query()
* describe_endpoints()
* describe_scheduled_query()
* query()
* update_scheduled_query()
New Methods:
* AppMesh:
* create_virtual_node()
* delete_virtual_node()
* describe_virtual_node()
* list_virtual_nodes()
* update_virtual_node()
* create_virtual_router()
* delete_virtual_router()
* describe_virtual_router()
* list_virtual_routers()
* update_virtual_router()
* create_route()
* delete_route()
* describe_route()
* list_routes()
* update_route()
Miscellaneous:
* CloudFormation templates now support the Fn::Base64-function
* CognitoIDP: Enhanced support for MFA flows/challenges
* DynamoDB: update_item() now validates empty string sets
* EC2: describe_snapshots() now supports the kms-key-id filter
* EC2: run_instances() now supports the parameter Ipv6AddressCount
* ECS: Tasks can now be created with unknown security groups
* IAM: generate_credentials_report() now shows active certificates
* KMS: sign() now supports Alias ARNs
* Route53: list_resource_record_sets() now validates record names
* S3: create_bucket() now has additional LocationConstraint-validation
* S3: delete_objects() now respects BucketPolicy and ObjectLocks
* S3: head_object() now handles Range-parameter correctly
* SageMaker: search() now supports the CONTAINS filter
* Sagemaker Runtime: invoke_endpoint_async() now supports failure responses
* SNS: Signature of HTTP Messages are now valid
* SSM: get_maintenance_window() now returns an exception if the window does not exist
* SQS: delete_message_batch() now validates there's at least one entry
5.0.13
-----
Docker Digest for 5.0.13: _sha256:de97faba597d8f1bfb4dab1c7d562e1997ac5e0ba1186c4392430650b0f6bd4e_
General:
* Support for Python 3.13
* Moto now supports whitelisting which services can be used
New Services:
* AppMesh:
* create_mesh()
* delete_mesh()
* describe_mesh()
* list_meshes()
* list_tags_for_resource()
* tag_resource()
* update_mesh()
* Transfer:
* create_server()
* create_user()
* delete_server()
* delete_ssh_public_key()
* delete_user()
* describe_server()
* describe_user()
* import_ssh_public_key()
New Methods:
* Athena:
* delete_work_group()
* CodeBuild:
* batch_get_projects()
* DynamoDB:
* delete_resource_policy()
* get_resource_policy()
* put_resource_policy()
* EMR:
* get_block_public_access_configuration()
* put_block_public_access_configuration()
* QLDB:
* create_ledger()
* delete_ledger()
* describe_ledger()
* list_tags_for_resource()
* tag_resource()
* update_ledger()
* SageMaker:
* create_data_quality_job_definition()
* create_model_bias_job_definition()
* create_model_card()
* delete_data_quality_job_definition()
* delete_model_bias_job_definition()
* delete_model_card()
* describe_data_quality_job_definition()
* describe_model_bias_job_definition()
* describe_model_card()
* list_data_quality_job_definitions()
* list_model_bias_job_definitions()
* list_model_cards()
* list_model_card_versions()
Miscellaneous:
* ACM-PCA: create_certificate_authority() now uses the provided Subject
* Athena: The default work group now has the correct configuration
* ApplicationAutoscaling - put_scheduled_action() now allows multiple actions per Namespace/Dimension/Id
* Autoscaling: update_group() now validates that the Group exists
* Batch: now supports parameters in Job commands
* CloudFormation: create_change_set() now validates the provided ChangeSetName
* CloudFormation: describe_stacks() now returns export names in the Outputs
* CloudFormation: AWS::Events::Rule's now also creates/deletes Targets
* CloudWatch: get_metric_data() now returns everything when querying for Metric Insights Queries
* CodeBuild: create_project() now supports the parameter description, tags, cache, timeoutInMinutes, queuedTimeoutInMinutes, sourceVersion, logsConfig and vpcConfig
* CognitoIDP: sign_up() now returns CodeDeliveryDetails
* DynamoDB: export_table_to_point_in_time() now exports data in correct format
* DynamoDB: update_item() now validates an empty ExpressionAttributeValues and UpdateExpression
* DynamoDB: All applicable methods that accept a TableName-parameter now also accept the ARN of the table
* EC2: describe_security_group_rules() now correctly exposes rules with duplicate port/protocol values
* EC2: Terminating an instance now also terminates any NIC's
* EventBridge: create_connection() now creates a KMS Secret
* EventBridge: Messages are now formatted using the InputTemplate, if provided
* KMS: describe_key() now exposes the MultiRegionConfiguration-attribute
* Organizations: create_account() now comes preconfigured with an IAM role
* RDS: update_db_instance() now supports the CloudwatchLogsExportConfiguration-parameter
* ResourceGroupsTagging API now supports additional SageMaker resources
(CompilationJobs, Domains, ModelExplainabilityJobDefinition, ModelQualityJobDefinition, HyperParameterTuningJob)
* S3: copy_object() now respects the CopySourceIfNoneMatch-parameter
* SageMaker: search() now supports ModelPackageGroups
* StepFunctions now has improved JSONPath support
* StepFunctions now supports MaxItem/MaxItemPath/MaxConcurrencyPath
* StepFunctions now supports MaxAttempts with value 0
5.0.12
-----
Docker Digest for 5.0.12: _sha256:e1bde8f908f2fdf0878c8e4398561badd016b51b4d9fd8dcb9f4daef936a4427_
General:
* The MotoProxy can now be run on Windows
New Services:
* DirectConnect:
* create_connection()
* delete_connection()
* describe_connections()
* update_connection()
* DynamoDB:
* describe_export()
* export_table_to_point_in_time()
* list_export()
* NetworkManager:
* create_device()
* create_link()
* create_link()
* delete_device()
* delete_link()
* delete_site()
* get_devices()
* get_links()
* get_sites()
* list_tags_for_resource()
* SageMaker:
* list_endpoints()
* list_endpoint_configs()
* create_auto_ml_job_v2()
* describe_auto_ml_job_v2()
* list_auto_ml_jobs()
* stop_auto_ml_job()
* create_compilation_job()
* describe_compilation_job()
* list_compilation_jobs()
* delete_compilation_job()
* create_domain()
* describe_domain()
* list_domains()
* delete_domain()
* create_model_explainability_job_definition()
* describe_model_explainability_job_definition()
* list_model_explainability_job_definitions()
* delete_model_explainability_job_definition()
* create_hyper_parameter_tuning_job()
* describe_hyper_parameter_tuning_job()
* list_hyper_parameter_tuning_jobs()
* delete_hyper_parameter_tuning_job()
* create_model_quality_job_definition()
* describe_model_quality_job_definition()
* list_model_quality_job_definitions()
* delete_model_quality_job_definition()
* Route53:
* list_tags_for_resource()
Miscellaneous:
* ACM: export_certificate() now only allows exporting private certificates
* ACM: DomainValidationOptions now have SUCCESS-status, fixing the `certificate_validated` waiter
* Athena: QueryResults are now stored in S3
* CloudFormation: update_stack() now persists the new parameters provided
* CloudFormation: update_stack() now understands UsePreviousValue=False
* CloudFormation: update_stack() now throws an exception when using UsePreviousValue=True and a new parameter value
* CloudFormation: update_stack() is now able to update resources where only the parameters have changed
* CloudFormation: AWS::S3::Bucket resources will now create/update Tags
* CloudFormation: AWS::S3::Bucket resources are no longer recreated for every update
* CognitoIDP: initiate_auth() now supports USERNAME_PASSWORD_AUTH and SMS/Software Token MFA
* CognitoIDP: initiate_auth() now returns th email in the ID-token claims
* DynamoDB: query() now sorts the results correctly when querying GSI data with identical hash keys
* EC2: describe_security_group_rules() now enumerates multiple rules correctly
* EC2: run_instances() can now use $Default or $Latest launch template version
* Events: list_targets_by_rule() now supports pagination
* EventBridge Scheduler - get_schedule() now returns the ActionAfterCompletion
* Firehose: create_delivery_stream() now creates S3 files with the correct filename if no prefix is provided
* IOT: Certificates hashes can now be computed using the DER encoding, per the AWS spec
This is an opt-in behaviour, and can be enabled with the following configuration:
@mock_aws(config={"iot": {"use_valid_cert": True}})
* ResourceGroupsTaggingAPI: tag_resources() now supports SageMaker resources
* S3: head_object()/get_object() now support the PartNumber-argument
* S3: put_object() now correctly enforces the BucketPolicy when creating new objects
* SESv2: send_email() now returns the MessageId
5.0.11
-----
Docker Digest for 5.0.11: _sha256:438f7fbb5fa1dff2cf0887c59466ff78bed5aaca9ea7b5cf54d6a41fc2418e28_
New Methods:
* ServiceDiscovery:
* deregister_instance()
* discover_instances()
* discover_instances_revision()
* get_instance()
* get_instances_health_status()
* list_instances()
* register_instance()
* update_http_namespace()
* update_instance_custom_health_status()
Miscellaneous:
* DynamoDB: transact_write_items() no longer throws a ValidationException when passing multiple set actions, only when passing multiple set clauses
* DynamoDB: transact_write_items() no longer throws an Exception when ExpressionAttributeNames are not provided
(Both bugs were introduced in 5.0.10)
* IOT-data: update_thing_shadow() now calculates the delta correctly
* ResourceGroupsTagging: get_resources() now supports EFS resources
5.0.10
-----
Docker Digest for 5.0.10: _sha256:bfb9cd2a437fc7c754b3a6a66b7fb528ec1a53e0c683e8b75514bff81543cf55_
General:
* CloudFormation now supports cfn-lint v1, as well as v0
New Services:
* FSX:
* create_file_system()
* delete_file_system()
* describe_file_systems()
* tag_resource()
* untag_resource()
* OpenSearch Serverless:
* batch_get_collection()
* create_collection()
* create_security_policy()
* create_vpc_endpoint()
* delete_collection()
* get_security_policy()
* list_collections()
* list_security_policies()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* update_security_policy()
* Shield:
* create_protection()
* delete_protection()
* describe_protection()
* list_protections()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
New Methods:
* Sagemaker:
* create_cluster()
* delete_cluster()
* describe_cluster()
* list_clusters()
* list_cluster_nodes()
Miscellaneous:
* CognitoIDP: admin_list_groups_by_user() now supports pagination
* DynamoDB: transact_write_items() now validates the number of SET expressions
* DynamoDB: update_item() now validates unused ExpressionAttributeValues
* DynamoDB: query() now supports pagination when querying Global Indexes
* EC2: describe_images() - feat: support filtering images by ExecutableUsers=['self']
* EC2: describe_route_tables() now supports the filter `route.transit-gateway-id`
* EC2: update_security_group_rule_descriptions_ingress() now supports updating multiple descriptions
* EKS: create_nodegroup() now supports the `taints`-parameter
* ELBv2: add_listener_certificates() now validates when adding too many certificates (> 25)
* ELBv2: describe_target_health() now handles unknown/deregistered/terminated instances better
* ResourceGroupsTaggingAPI: get_resources() now supports ResourceType=s3:bucket
* RDS: Clusters now have the `creating`-status on create, and `available` immediately after - in line with AWS
* SSM: get_parameter() now supports ARN's for the Name-parameter
5.0.9
-----
Docker Digest for 5.0.9: _sha256:df61e4e76344017f6c82924a3dd1cdd4dcbac4095cf234c6d6fb0a0f800fbeff_
General:
* Fixed an InfiniteRecursion-bug when accessing S3-buckets that was introduced in 5.0.8
New Methods:
* SSO-Admin:
* list_accounts_for_provisioned_permission_set()
* list_instances()
* list_permission_sets_provisioned_to_account()
* provision_permission_set()
* update_instance()
Miscellaneous:
* DynamoDB: query() now handles pagination correctly on a GSI without a range key
* IAM: create_policy() now returns tags correctly
* S3: list_objects(): The default value for MaxKeys can now be configured, using an environment variable:
MOTO_S3_DEFAULT_MAX_KEYS=1
5.0.8
-----
Docker Digest for 5.0.8: _sha256:cfcd97074011bd563cdbeebac35ed710581a23cb2be07ab9b67aa00298fc3369_
General:
* Improved support for non-generic partitions (China, GovCloud, ISO-regions).
All ARN's now contain the correct partition for resources created in those regions.
New Services:
* NetworkManager:
* create_global_network()
* describe_global_networks()
* create_core_network()
* create_global_network()
* delete_core_network()
* list_core_networks()
* get_core_network()
* tag_resource()
* untag_resource()
Miscellaneous:
* ResilienceHub: list_app_assessments() can now return pre-configured results
* ResourceGroupTagging: get_resources() now returns results when filtering on "lambda:function"
* S3: delete_object_tagging()/put_object_tagging() now send an EventBridge notification
5.0.7
-----
Docker Digest for 5.0.7: _sha256:81ac52ff74b0bf0f4957ee4260e6a7e75d66c9e5d040ed4f721a5500b873c88a_
New Services:
* Sagemaker Metrics:
* batch_put_metrics()
New Methods:
* DynamoDB:
* describe_import()
* import_table()
* EMR Serverless:
* cancel_job_run()
* get_job_run()
* list_job_runs()
* start_job_run()
* IAM:
* tag_instance_profile()
* untag_instance_profile()
* Panorama:
* create_node_from_template_job()
* describe_node_from_template_job()
* list_nodes()
* SSO-Admin:
* describe_account_assignment_creation_status()
* describe_account_assignment_deletion_status()
* WAFv2:
* create_ip_set()
* delete_ip_set()
* list_ip_sets()
* get_ip_set()
* update_ip_set()
* put_logging_configuration()
* get_logging_configuration()
* list_logging_configurations()
* delete_logging_configuration()
Miscellaneous:
* Athena: start_query_execution() now supports the ExecutionParameters-parameter
* DynamoDB: Tables now support DeleteProtection
* DynamoDB: update_item() no longer throws an error when deleting an item from an empty set
* DynamoDB: update_item() no throws an error when adding an empty set
* EC2: delete_network_acl() now throws an error when the ACL still has associations attached to it
* EC2: describe_route_tables() now supports the `route.nat-gateway-id` filter
* EC2: revoke_security_group_ingress/_egress() now throw an error when an unknown Security Group is passed
5.0.6
-----
Docker Digest for 5.0.6: _sha256:da919d3c1db07b378c413ed00a6c1c3e32ce1943a13671658c4db0f55dd49e42_
New Services:
* Bedrock:
* create_model_customization_job()
* delete_custom_model()
* delete_model_invocation_logging_configuration()
* get_custom_model()
* get_model_customization_job()
* get_model_invocation_logging_configuration()
* list_custom_models()
* list_model_customization_jobs()
* list_tags_for_resource()
* put_model_invocation_logging_configuration()
* stop_model_customization_job()
* tag_resource()
* untag_resource()
* BedrockAgent:
* create_agent()
* create_knowledge_base()
* delete_agent()
* delete_knowledge_base()
* get_agent()
* get_knowledge_base()
* list_agents()
* list_knowledge_bases()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
New Methods:
* EC2:
* describe_addresses_attributes()
* Rekognition:
* detect_custom_labels()
* Sagemaker:
* update_trial_component()
Miscellaneous:
* CloudFront: update_distribution() now supports the CacheBehaviours-parameter
* DynamoDB: query() now acts correctly when paginating GSI tables without range keys
* EC2: RouteTables can now have multiple propagations
* EC2: describe_instances() now now filter by product-code and product-code.type
* EC2: describe_security_group_rules() now validates the format of the incoming security group id's
* ECS: update_service() now supports the loadBalancers-parameter
* Logs: describe_metric_filter() now has the correct validation for metricNamespaces
* IOT: search_index() now supports thingTypeName
* SFN: send_task_failure()/send_task_success() now work correctly when using the Parser
* SNS: subscribe() now throws an exception if the endpoint doesn't exist
* SQS: Improved queue name validation
5.0.5
-----
Docker Digest for 5.0.5: _sha256:b95cf0d65557475f29e7256938028eef352e23acafe8e07c071cd58b67c44708_
General:
* DynamoDB: scan() now returns items in a alphabetical order
New Methods:
* SecretsManager:
* batch_get_secret_value()
Miscellaneous:
* ApplicationAutoscaling: put_scaling_policy() now generates CW alarms for DynamoDB and ECS
* DynamoDB: Fix pagination for scan()/query()
* DynamoDB: batch_write_item() now validates for duplicate DELETE or PUT requests
* Events: put_events() now validates that input-values cannot be empty
* IOT: create_topic_rule() now validates name-format
* ResourceGroupsTaggingAPI: tag_resources() now supports RDS snapshots
* SFN: Fixed a bug where the executionInput was double encoded
5.0.4
-----
Docker Digest for 5.0.4: _sha256:e13e917e563bd1e3bb745b0ce914bdcc3bd4577542e13e1468eac5078774b2aa_
General:
* Lambda: The results of a Dockerless invocation can now be configured.
See http://docs.getmoto.org/en/latest/docs/services/lambda.html
* StepFunctions can now execute the provided StepFunctionMachine (opt-in), instead of returning static data (still the default).
See http://docs.getmoto.org/en/latest/docs/services/stepfunctions.html
New Service:
* ElastiCache:
* list_tags_for_resource()
* ResilienceHub:
* create_app()
* create_app_version_app_component()
* create_app_version_resource()
* create_resiliency_policy()
* describe_app()
* describe_resiliency_policy()
* import_resources_to_draft_app_version()
* list_app_assessments()
* list_app_version_app_components()
* list_app_version_resources()
* list_app_versions()
* list_apps()
* list_resiliency_policies()
* list_tags_for_resource()
* publish_app_version()
* tag_resource()
* untag_resource()
* Workspaces:
* create_tags()
* create_workspace_image()
* create_workspaces()
* deregister_workspace_directory()
* describe_client_properties()
* describe_tags()
* describe_workspace_directories()
* describe_workspace_image_permissions()
* describe_workspace_images()
* describe_workspaces()
* modify_client_properties()
* modify_selfservice_permissions()
* modify_workspace_creation_properties()
* register_workspace_directory()
* update_workspace_image_permission()
Miscellaneous:
* APIGateway: update_usage_plan() now supports some remove-operations
* Autoscaling: describe_auto_scaling_groups() now returns a dynamic CreatedTime
* CloudFormation: Outputs now support Conditions
* CloudFormation: Outputs now return Descriptions
* CognitoIDP: admin_update_user_attributes() and admin_delete_user_attributes now correctly update the UserLastModifiedDate
* DynamoDB: query() no longer requires the LastEvaluatedKey to exist
* EC2: describe_vpc_endpoint_services() now supports all services
* Kinesis: list_streams() now returns StreamSummaries
* Lambda: get_policy() now throws an error when no statements exist
* ResourceGroupsTaggingAPI now supports DynamoDB tables
* ResourceGroupsTaggingAPI now supports SSM documents
* S3: EventBridge notifications are now supported for ObjectRestore:Post
* S3: restore_object() now contains limited validation when supplying both Days- and Type-argument
* S3: select_object_content() now supports Compressed requests and CSV responses
* SecretsManager: list_secrets() now handles negative matches correctly
* SNS: delete_endpoint() is now an idempotent operation, just like AWS
5.0.3
-----
Docker Digest for 5.0.3: _sha256:032d8ead42f289d9700e9bc844c6d264575ad11b3f6c22cc76d65ff638c8c7bd_
General:
* New configuration options for:
- Passing URL's through the proxy
- Configuring DOcker-less services in ServerMode
See http://docs.getmoto.org/en/latest/docs/configuration/index.html
New Services:
* Route53Domains:
* delete_domain()
* list_domains()
* list_operations()
* register_domain()
* update_domain_nameservers()
New Methods:
* CostExplorer:
* get_cost_and_usage()
* ECR:
* get_registry_scanning_configuration()
Miscellaneous:
* ApiGateway: update_usage_plan() now supports adding apiStages
* Athena: get_query_execution() now returns exact OutputLocation file
* Autoscaling: describe_auto_scaling_groups() now supports the filters-argument
* CloudFront: create_distribution() now supports CustomHeaders
* CloudFront: update_distribution() now handles updates to DistributionConfig correctly
* CloudFormation - Now supports creation and deletion of AWS::EMR::Cluster
* CloudFormation - Now supports creation and deletion of AWS::EMR::SecurityConfiguration
* CloudFormation - Now supports creation and deletion of AWS::EFS::AccessPoint
* CloudFormation - Now supports creation and deletion of AWS::EFS::FileSystem
* CloudFormation - Now supports creation and deletion of AWS::EMR::InstanceGroupConfig
* CloudFormation - Now supports deletion of AWS::Logs::LogGroup
* CloudFormation: delete_stack() now handles resource dependencies better
* CloudWatch: put_metric_data() now supports large (compressed) requests
* CognitoIDP: admin_initiate_auth() and respond_to_auth_challenge() now support SMS_MFA
* DynamoDB: transact_write_items() now raises ValidationException when putting and deleting the same item
* EC2: authorize_security_group_egress/_ingress now support the TagSpecifications-argument
* EC2: describe_security_group_rules() now supports Tag-filters
* S3: EventBridge notifications are now supported for ObjectCreated:POST/COPY/MULTIPART_UPLOAD and ObjectDeleted
* SNS: subscribe() now adds support the `$or`, `equals-ignore-case` and `suffix` features in a FilterPolicy
* SQS: send_message() should respect DelaySeconds of 0
5.0.2
-----
Docker Digest for 5.0.2: _sha256:89cc6c764d714bf76e592a61f0c06fd142f672085e1dd3a53eb734aaeb4e14e2_
General:
* Removed the `python-jose` and `sshpubkeys` dependencies in favor of `joserfc`. This removes a transitive dependency on `ecdsa`, which contains a open security vulnerability
New Methods:
* Autoscaling:
* batch_put_scheduled_update_group_action()
* batch_delete_scheduled_action()
* RDS:
* create_db_proxy()
* describe_db_proxies()
Miscellaneous:
* AWSLambda: The ImageConfig.EntryPoint of a function is now used when invoking it in a Docker container
* CognitoIDP now allows public actions even if IAM auth is enabled
* DynamoDB: create_table() now validates the number of KeySchema-items
* EC2: modify_image_attributes() now supports all LaunchPermissions
* ECS: register_task_definition() now has improved validation around `memory`-parameters
* Glue: create_database() now supports the `tags`-parameter
* IAM: assume_user()/create_user()/get_caller_identity() now return the correct partition for China (aws-cn) when called from a Chinese region
* ResourceGroupsTagging: get_resources() now supports ELB resources
* Route53: list_hosted_zones() now supports pagination
* S3: put_bucket_notification_configuration() now supports EventBridge-notifications
* SES now returns errors in the correct format
5.0.1
-----
Docker Digest for 5.0.1: _sha256:b6004b2e112c0ba870b2103049548abecec476edeac7a724ed9c71249358e821_
New Methods:
* SecretsManager:
* remove_regions_from_replication()
* replicate_secret_to_regions()
Miscellaneous:
* AWSLambda: create_event_source_mapping() now supports Kinesis streams as targets
* CloudFront: Removed error handling for InvalidOriginServer, as our validation was too strict
* DynamoDB: batch_execute_statement() now supports for Update/Insert/Delete-statements
* DynamoDB: query() now correctly handles calls where both Limit and ScanIndexForward are supplied
* EC2: Now supports availability zones for eu-central-2 (Zurich)
* S3: list_objects_v2() can now return more then 1000 results max (again)
* S3: copy_object() now allows in-place copies when bucket versioning is enabled
* SecretsManager: create_secrets() now supports the parameters AddReplicaRegions and ForceOverwriteReplicaSecret
* SecretsManager: list_secrets() now supports the filters primary-region and owning-service
5.0.0
-----
Docker Digest for 5.0.0: _sha256:2faf2460a6446dfe472ac0d799e00341b1c84203d08540c247a6cc09be7c54e9_
General:
* All decorators have been replaced with a single decorator:
`mock_aws`
* The `mock_batch_simple` and `mock_lambda_simple` decorators can now be configured using the `config`-parameter:
`@mock_aws(config={"batch": {"use_docker": False}, "lambda": {"use_docker": False}})`
* It is now possible to configure methods/services which should reach out to AWS.
@mock_aws(
config={"core": {"mock_credentials": False, "passthrough": {"urls": [], "services": []}}}
)
* All requests now return a RequestId
Miscellaneous:
* IAM: The AWS managed Policies are no longer loaded by default.
If your application depends on these policies, tell Moto explicitly to load them like so:
@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
Or by setting an environment variable:
MOTO_IAM_LOAD_MANAGED_POLICIES=true
* S3: list_objects() now returns a hashed ContinuationToken
4.2.14
-----
Docker Digest for 4.2.14: _sha256:2fa10aa48e32f85c63c62a7d437b8a4b320a56a8494bc25d45ced370bc159c23_
New Services:
* Backup:
* create_backup_plan()
* create_backup_vault()
* get_backup_plan()
* describe_backup_vault()
* delete_backup_plan()
* list_backup_plans()
* list_backup_vaults()
* list_tags()
* tag_resource()
* untag_resource()
New Methods:
* RDS:
* describe_db_cluster_snapshot_attributes()
* describe_db_snapshot_attributes()
* modify_db_cluster_snapshot_attribute()
* modify_db_snapshot_attribute()
* restore_db_instance_to_point_in_time()
* SageMaker:
* create_feature_group()
* SageMakerRuntime:
* invoke_endpoint_async()
Miscellaneous:
* Cognito: The ID-token now contains custom attributes
* DynamoDB: query() now returns the correct ScannedCount
* EC2: Security Group Rules now have tag support
* LakeFormation: grant_permissions() now has better support for known principal-resource pairs
* SNS: set_subscription_attributes() can now unset the FilterPolicy
5.0.0alpha3
-----------
Miscellaneous:
* IAM: The AWS managed Policies are no longer loaded by default.
If your application depends on these policies, tell Moto explicitly to load them like so:
@mock_aws(config={"iam": {"load_aws_managed_policies": True}})
Or by setting an environment variable:
MOTO_IAM_LOAD_MANAGED_POLICIES=true
5.0.0alpha2:
------------
General:
* It is now possible to configure methods/services which should reach out to AWS.
@mock_aws(
config={"core": {"mock_credentials": False, "passthrough": {"urls": [], "services": []}}}
)
* All requests now return a RequestId
Miscellaneous:
* S3: list_objects() now returns a hashed ContinuationToken
5.0.0alpha1:
------------
General:
* All decorators have been replaced with a single decorator:
`mock_aws`
* The `mock_batch_simple` and `mock_lambda_simple` decorators can now be configured using the `config`-parameter:
`@mock_aws(config={"batch": {"use_docker": False}, "lambda": {"use_docker": False}})`
4.2.13
-----
Docker Digest for 4.2.13: _sha256:20a2fdd4828b0ce1170ae26186ed28b64523cf6af83af892a74d9b3e23f84471_
New Services:
* Panorama:
* delete_device()
* describe_device()
* list_devices()
* provision_device()
* update_device_metadata()
New Methods:
* CognitoIDP:
* admin_respond_to_auth_challenge()
* IdentityStore:
* list_group_memberships_for_member()
* Rekognition:
* compare_faces()
* detect_labels()
* detect_text()
* SSO-Admin:
* attach_customer_managed_policy_reference_to_permission_set()
* attach_managed_policy_to_permission_set()
* delete_inline_policy_from_permission_set()
* detach_customer_managed_policy_reference_from_permission_set()
* detach_managed_policy_from_permission_set()
* get_inline_policy_for_permission_set()
* list_account_assignments_for_principal()
* list_customer_managed_policy_references_in_permission_set()
* list_managed_policies_in_permission_set()
* put_inline_policy_to_permission_set()
* Textract:
* detect_document_text()
Miscellaneous:
* ACM: describe_certificate() now returns a DomainValidationOption for each SN
* CloudFormation: create_change_set() now longer throws an exception when supplying a YAML TemplateBody
* CognitoIDP: create_resource_server() no longer crashes when the scope-parameter is not provided
* DynamoDB: scan() now correctly handles the ScanFilter-attribute again (broken in 4.2.11)
* EC2: launch templates created by CloudFormation now have a generated name if not provided
* EC2: describe_instance_types() now handles unknown values for EnaSupport correctly
* Sagemaker: create_model_package() nown supports Versioned packages
* Scheduler: delete_scheduler() now throws the correct exception when a Schedule does not exist
* SSO-Admin: list_account_assignments() now supports pagination
4.2.12
------
Miscellaneous:
* AWSLambda: list_functions() now returns a default PackageType (ZIP) if not specified
* CloudFormation: AWS::EC2::LaunchTemplate resources now support Fn::GetAtt operations
* CognitoIDP: admin_initiate_auth() now correctly returns a Challenge when 2FA is enabled
* DynamoDB: execute_statement() now supports INSERT/UPDATE/DELETE queries
* EC2: describe_availability_zones() now supports the ZoneNames/ZoneIds-parameters
* KMS: encrypt() now validates payloads that are too large
* ResourceGroupTaggingAPI: get_resources() now supports SQS queues
* Route53: list_hosted_zone()/list_hosted_zones_by_name() now return the CallerReference
* S3: copy() now respects the ExtraArgs-parameter when using MultiPart uploads
* S3: list_object_versions() now supports pagination
* S3: put_object_tagging() now validates the number of tags provided
4.2.11
-----
Docker Digest for 4.2.11: _sha256:f2a24d8a3440bf397705e461b33a032bbb6d3511cd9c643e71419dd962b3384e_
New Methods:
* Lambda:
* DeleteFunctionEventInvokeConfig()
* GetFunctionEventInvokeConfig()
* ListFunctionEventInvokeConfigs()
* PutFunctionEventInvokeConfig()
* UpdateFunctionEventInvokeConfig()
* Logs:
* describe_export_tasks()
Miscellaneous:
* DynamoDB: put_item() now returns old item for ConditionalCheckFailed exceptions
* DynamoDB: scan() now returns the correct ScannedCount when passing the Limit-parameter
* DynamoDB: transact_write_items() now validates that Keys in Update-queries are not empty
* IOT: create_thing()/describe_thing() now returns the thingId
* Logs: create_export_task() now actually exports the data to S3
* ResourceGroupsTaggingAPI: get_resources() now supports ACM certificates
4.2.10
-----
Docker Digest for 4.2.10: _sha256:f72acd62b994654d01bdec6f5cc779f4ab30083b441e2fb7eff0c13e0bbfdca7_
New Methods:
* CognitoIdentity: list_identity_pools()
Miscellaneous:
* Autoscaling: describe_tags() now supports the key/value filters
* CloudFormation: AWS::Logs::LogGroup now supports tags
* CloudWatch: get_metric_data() no longer throws an error when supplying >10 queries
* CognitoIdentity: get_credentials_for_identity() now returns Expiration as a number, fixing compatibility with the GoLang SDK
* EFS: describe_access_points() now supports the FileSystemId-parameter
* LakeFormation: list_permissions() now supports the DataLocation-parameter
* LakeFormation: register_resource() now throws an exception when registering an existing resource
* SQS: Ensure all responses are in JSON-format when required, fixing compatibility with the Ruby SDK
4.2.9
-----
Docker Digest for 4.2.9: _sha256:4e9d89322b5ca9196fa7efda78b1269580be7aa6879894950e2728edc946573f_
General:
* Fix compatibility with botocore 1.32.1
Miscellaneous:
* ECS: Tagging is now supported for Tasks
* LakeFormation: deregister_resource() now throws the correct error for unknown resources
* LakeFormation: list_permissions() now supports Parameters
* RDS: create_db_instance() now validates the engine parameter
* Transcribe: TranscriptionJobs now support the Subtitles-parameter
4.2.8
-----
Docker Digest for 4.2.8: _sha256:937315c79dedcc86506fc22a60502fd73d0e6f3a6f3e5fc614dd3164740e1191_
General:
* Support for Python 3.12
* Support for a Simple Lambda backend, that will mock functions without invoking a Docker container.
Use the decorator `mock_lambda_simple` for this feature.
New Methods:
* IdentityStore:
* describe_group()
* Signer:
* list_tags_by_resource()
* tag_resource()
* untag_resource()
Miscellaneous:
* DynamoDB: create_table() now throws an error when supplying an unknown KeyType
* DynamoDB: query() now throws an error when supplying a ExpressionAttributeValue that doesn't start with a ':'
* EC2: describe_hosts() now returns the AllocationTime-attribute
* ECS: register_task_definition() now throws an exception if the ContainerDefinition has missing keys
* ECR: describe_images() now returns the supplied imageDigest-values, instead of random values
* EFS: AccessPoints now have the correct identifier format
* Lambda: Various methods now support the FunctionName in the format 'name:qualifier'
* MQ: create_configuration() is now possible for engine-type 'RABBITMQ'
* RDS: create_db_cluster() now throws an error if the provided engine is not supported
* RDS: create_db_instance() now throws an error if the provided engine does not match the cluster engine
* RDS: delete_db_cluster() now throws an error if any instances are still active
* SageMaker: list_model_packages() and list_model_package_groups() no longer throw an error on pagination
4.2.7
-----
Docker Digest for 4.2.7: _sha256:9149597856f5ce195ef451df1a1b96aa8db0692c4b8ed1f7952fc02952733103_
New Services:
* Inspector2:
* associate_member()
* batch_get_account_status()
* create_filter()
* delete_filter()
* describe_organization_configuration()
* disable()
* disable_delegated_admin_account()
* disassociate_member()
* enable()
* enable_delegated_admin_account()
* get_member()
* list_delegated_admin_accounts()
* list_filters()
* list_findings()
* list_members()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* update_organization_configuration()
New Methods:
* ECR:
* batch_get_repository_scanning_configuration()
* put_registry_scanning_configuration()
Miscellaneous:
* Batch: submit_job() now returns the jobArn-attribute
* DynamoDB: execute_statement() has now support for nested WHERE-clauses with functions
* DynamoDB: update_item() now returns item for ConditionalCheckFailed-exceptions
* EC2: create_key_pair() and describe_key_pair(s)() now support tags
* Route53: get_hosted_zone() now returns the CallerReference
* S3: get_object/put_object() now accepts AccessPoint ARN's
* S3Control: create_access_point() now returns the correct Alias
* SES: list_identities() now supports the IdentityType-parameter
* SNS: create_platform_application has improved error handling
4.2.6
-----
Docker Digest for 4.2.6: _sha256:ad3265531405fd48489ddee7e1fa7301b4d0f46b55daca7ba5039e73eaf70ac1_
New Services:
* IVS:
* batch_get_channel()
* create_channel()
* delete_channel()
* get_channel()
* list_channels()
* update_channel()
New Methods:
* LakeFormation:
* add_lf_tags_to_resource()
* get_resource_lf_tags()
* remove_lf_tags_from_resource()
* update_lf_tag()
* Sagemaker:
* describe_model_package_group()
* update_model_package()
Miscellaneous:
* Batch: submit_job() now behaves correctly when passing the arrayProperties-parameter
* DynamoDB: Improved PartiQL parser, with support for different types (Decimals/Booleans) and queries with quoted table-names
* EC2: TagSpecifications now throw an error if the ResourceType is not provided
* EC2: run_instances()/describe_instances() now always return the same attributes (before, both operations were missing different fields)
* EC2: associate_dhcp_options() now supports DhcpOptionsId=default
* EC2: create_key_pair() now supports the KeyType-parameter
* EC2: run_instances() now returns the Placement.HostId attribute
* ELBv2: modify_target_group_attributes() now has additional validations
* Events: put_events() now throws a warning when Detail field is not a dict
* IOT: update_thing() now behaves correctly with empty attributes
* S3: head_object() now raises a MethodNotAllowed for DeleteMarkers
4.2.5
-----
Docker Digest for 4.2.5: _sha256:076cecca9b8ba35b545d23eb5bf780902fbf23eb3610f332eef7adea1f4d2ef7_
General:
* Introducing: MotoProxy! An alternative to the MotoServer.
See the docs: http://docs.getmoto.org/en/latest/docs/proxy_mode.html
New Methods:
* Sagemaker:
* list_model_package_groups()
Miscellaneous:
* CognitoIDP: update_user_pool() no longer overrides default settings
* CognitoIDP: set_user_mfa_preference() now allows the settings to be cleared
* EC2: Transit Gateway Peering Attachments are now supported across accounts
* EC2: delete_fleets() now sets the correct status
* ECS: The Task-statuses now automatically advance
* Glue: get_databases/get_tables() now return the CatalogId
* IAM: list_groups() now returns the CreateDate-attribute
* Redshift: describe_clusters() now returns the TotalStorageCapacityInMegabytes
* SES: Templates now support if/else constructs
4.2.4
-----
Docker Digest for 4.2.4: _sha256:4cdda5b0245a28ae2ebf5f1d5d93425226fe00ace65819a9fa02c8aa77a7e0b6_
New Methods:
* OpenSearch:
* list_domain_names()
Miscellaneous:
* DynamoDB: Fixed a bug where binary data could not be queried (introduced in 4.2.3)
* EC2: VPC Peering Connections are now supported across accounts
* ECS: register_task_definition() now validates the PidMode has the correct value
* S3: put_bucket_notification_configuration() now supports SNS Topic targets
4.2.3
-----
Docker Digest for 4.2.3: <autopopulateddigest>
New Services:
* RoboMaker:
* create_robot_application()
* delete_robot_application()
* describe_robot_application()
* list_robot_applications()
New Methods:
* ElasticBeanstalk:
* delete_application()
* Events:
* create_partner_event_source()
* delete_partner_event_source()
* describe_event_source()
* describe_partner_event_source()
* put_partner_events()
Miscellaneous:
* Core: The mocked ACCESS_KEY has been changed from `foobar_key` to `FOOBARKEY`, to align with AWS guidelines
* Core: set_initial_no_auth_action_count() now supports SSM actions
* Core: Fixed a memory leak when comparing requests (introduced in 4.1.13)
* Athena: get_query_execution() now returns a StatementType dependent on the provided query
* DynamoDB: query() now throws an exception when the KeyConditionExpression contains a literal value
* EBS: put_snapshot_block() now supports random bytes
* EC2: describe_transit_gateways() now supports filtering by tags
* ELBv2: describe_target_groups() now throws an exception for invalid input parameters
* ELBv2: describe_target_groups() now sorts the result before returning it
* ELBv2: create_target_group() now has improved validation and default values
* ELBv2: create_rule() now creates links between the TargetGroups and LoadBalancers
* Events: put_events() now support HTTP targets
* IAM policy validation now takes the provided Resource-argument into account when validating access to STS-resources
* IAM: get_role() now returns the LastUsed-parameter, provided the role was assumed and used
* KMS: sign/verify now uses the original message when signing, not the base64-version
* Lambda: invoke() now loads any Layers provided in the create_function()
* S3: put_bucket_logging() now supports bucket policies (as well as ACP's)
* S3: Range requests are now more permissive (following AWS' behaviour)
* SFN: list_executions() now returns the StopDate-attribute
4.2.2
------
Docker Digest for 4.2.2: <autopopulateddigest>
See 4.2.1 - no functional changes.
4.2.1
------
Docker Digest for 4.2.1: <autopopulateddigest>
New Services:
* Sagemaker Runtime:
* invoke_endpoint()
New Methods:
* CognitoIDP:
* describe_resource_server()
* list_resource_servers()
* CognitoIDP:
* create_cache_cluster()
* delete_cache_cluster()
* describe_cache_clusters()
* IdentityStore:
* list_users()
* Logs:
* describe_query_results()
* get_query_results()
* list_tags_for_resource()
* tag_resource()
* untag_resource()
* Sagemaker:
* list_notebook_instances()
Miscellaneous:
* EC2: describe_transit_gateways() now returns the ARN
* IAM policies now allow S3 accesspoint arns
* KMS: sign() now supports RSASSA_PSS_SHA_384, RSASSA_PSS_SHA_512 and RSASSA_PKCS1_* algorithms
* Logs: Now supports two subscription filters
* RDS: Clusters now support the ServerlessV2ScalingConfiguration parameter
* ResourceGroupsTaggingAPI: tag_resource() now supports RDS resources
* S3: CrossAccount access can now be disabled, using MOTO_S3_ALLOW_CROSSACCOUNT_ACCESS=false
* SecretsManager: Allow creation/update of secrets without values
* SES: set_identity_mail_from_domain() - the Identity can now also be an email
4.2.0
------
Docker Digest for 4.2.0: _sha256:92e59875783037b2558067d2d3f9dd2502c140881ff5c44c44ddbce6658a89b7_
General:
The Docker image is now based on Python 3.11 (instead of 3.7)
4.1.15
------
Docker Digest for 4.1.15: _sha256:eb63b1e0cbbd757e4596844e6ac1865660cbf8e358203b79e5404d57de94dd69_
New Services:
* APIGateway Management API:
* delete_connection()
* get_connection()
* post_to_connection()
New Methods:
* Autoscaling:
* delete_warm_pool()
* describe_warm_pool()
* put_warm_pool()
* IdentityStore:
* list_groups()
* IOTData:
* list_named_shadows_for_thing()
* MQ:
* list_tags()
* ServiceDiscovery:
* update_private_dns_namespace()
* update_public_dns_namespace()
Miscellaneous:
* ACM-PCA: create_certificate_authority() now supports the KeyStorageSecurityStandard-parameter
* Batch: create_job_definition() now returns more default fields in the containerProperties field
* CloudTrail: get_trail_status now works with MultiRegion trails
* CognitoIDP: UserPools now return the AccountRecoverySetting-field by default
* DynamoDB: query() now throws an exception when providing empty ProjectionExpressions/FilterExpressions
* EC2: describe_vpc_endpoint_services() now returns user-defined ones
* EC2: run_instances() now supports the Monitoring-attribute
* IOT: group names can now contain special characters
* IOTData now supports named shadows
* KMS: create_key() now supports KeySpecs RSA_3072 and RSA_4096
* KMS: create_key() now validates the provided KeySpec
* Lambda: create_function() now fails when creating a function with a name that already exists
* Lambda: put_function_concurrency() now errors on a quota that exceeds the value set by MOTO_LAMBDA_CONCURRENCY_QUOTA
* Lambda: update_function_code() now supports the ImageUri-attribute
* RDS: describe_db_cluster_snapshots() now returns the TagList-property
* ResourceTaggingsAPI: Now supports Glue resources
* S3: Authentication now allows specific resources in the IAM access policy
* S3: select_object_content() now takes RecordDelimiter into account
* Scheduler: create_scheduler() now errors on duplicate names
* TimestreamWrite: create_table() now supports the Schema-attribute
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
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 timeout
gitextract_ov1j6yo8/ ├── .devcontainer/ │ └── devcontainer.json ├── .dockerignore ├── .git-blame-ignore-revs ├── .github/ │ ├── FUNDING.yml │ ├── actions/ │ │ └── run_moto_server/ │ │ └── action.yml │ ├── dependabot.yml │ └── workflows/ │ ├── build.yml │ ├── codeql-analysis.yml │ ├── data-update_config-managed-rules.yml │ ├── data-update_ec2-instance-offerings.yml │ ├── data-update_ec2-instance-types.yml │ ├── data-update_emr_instance_types.yml │ ├── data-update_iam-managed-policies.yml │ ├── data-update_ssm-default-amis.yml │ ├── data-update_ssm-default-parameters.yml │ ├── data-update_ssm-optimized-amis.yml │ ├── dependency_test.yml │ ├── dockertests.yml │ ├── release.yml │ ├── release_dev.yml │ ├── test_cloudwatch.yml │ ├── test_outdated_versions.yml │ ├── test_sqs.yml │ ├── tests_cdk.yml │ ├── tests_cli.yml │ ├── tests_decoratormode.yml │ ├── tests_proxymode.yml │ ├── tests_real_aws.yml │ ├── tests_sdk_cpp.yml │ ├── tests_sdk_dotnet.yml │ ├── tests_sdk_go.yml │ ├── tests_sdk_java.yml │ ├── tests_sdk_js.yml │ ├── tests_sdk_ruby.yml │ ├── tests_sdk_sagemaker.yml │ ├── tests_servermode.yml │ ├── tests_terraform_examples.yml │ └── tests_without_docker.yml ├── .gitignore ├── .gitmodules ├── .readthedocs.yaml ├── AUTHORS.md ├── CHANGELOG.md ├── CLOUDFORMATION_COVERAGE.md ├── CODE_OF_CONDUCT.md ├── CONFIG_README.md ├── CONTRIBUTING.md ├── Dockerfile ├── IMPLEMENTATION_COVERAGE.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README.md ├── codecov.yml ├── docs/ │ ├── Makefile │ ├── conf.py │ ├── docs/ │ │ ├── aws_config.rst │ │ ├── configuration/ │ │ │ ├── environment_variables.rst │ │ │ ├── index.rst │ │ │ ├── recorder/ │ │ │ │ └── index.rst │ │ │ └── state_transition/ │ │ │ ├── index.rst │ │ │ └── models.rst │ │ ├── contributing/ │ │ │ ├── architecture.rst │ │ │ ├── checklist.rst │ │ │ ├── development_tips/ │ │ │ │ ├── index.rst │ │ │ │ ├── new_state_transitions.rst │ │ │ │ ├── tests.rst │ │ │ │ ├── urls.rst │ │ │ │ └── utilities.rst │ │ │ ├── faq.rst │ │ │ ├── index.rst │ │ │ ├── installation.rst │ │ │ └── new_feature.rst │ │ ├── faq.rst │ │ ├── getting_started.rst │ │ ├── iam.rst │ │ ├── multi_account.rst │ │ ├── proxy_mode.rst │ │ ├── releases.rst │ │ ├── server_mode.rst │ │ └── services/ │ │ ├── account.rst │ │ ├── acm-pca.rst │ │ ├── acm.rst │ │ ├── amp.rst │ │ ├── apigateway.rst │ │ ├── apigatewaymanagementapi.rst │ │ ├── apigatewayv2.rst │ │ ├── appconfig.rst │ │ ├── application-autoscaling.rst │ │ ├── appmesh.rst │ │ ├── appsync.rst │ │ ├── athena.rst │ │ ├── autoscaling.rst │ │ ├── backup.rst │ │ ├── batch.rst │ │ ├── bedrock-agent.rst │ │ ├── bedrock.rst │ │ ├── budgets.rst │ │ ├── ce.rst │ │ ├── cf.rst │ │ ├── clouddirectory.rst │ │ ├── cloudformation.rst │ │ ├── cloudfront.rst │ │ ├── cloudhsmv2.rst │ │ ├── cloudtrail.rst │ │ ├── cloudwatch.rst │ │ ├── codebuild.rst │ │ ├── codecommit.rst │ │ ├── codedeploy.rst │ │ ├── codepipeline.rst │ │ ├── cognito-identity.rst │ │ ├── cognito-idp.rst │ │ ├── comprehend.rst │ │ ├── config.rst │ │ ├── connect.rst │ │ ├── connectcampaigns.rst │ │ ├── databrew.rst │ │ ├── datapipeline.rst │ │ ├── datasync.rst │ │ ├── dax.rst │ │ ├── directconnect.rst │ │ ├── dms.rst │ │ ├── ds.rst │ │ ├── dsql.rst │ │ ├── dynamodb.rst │ │ ├── dynamodbstreams.rst │ │ ├── ebs.rst │ │ ├── ec2-instance-connect.rst │ │ ├── ec2.rst │ │ ├── ecr.rst │ │ ├── ecs.rst │ │ ├── efs.rst │ │ ├── eks.rst │ │ ├── elasticache.rst │ │ ├── elasticbeanstalk.rst │ │ ├── elb.rst │ │ ├── elbv2.rst │ │ ├── emr-containers.rst │ │ ├── emr-serverless.rst │ │ ├── emr.rst │ │ ├── es.rst │ │ ├── events.rst │ │ ├── firehose.rst │ │ ├── forecast.rst │ │ ├── fsx.rst │ │ ├── glacier.rst │ │ ├── glue.rst │ │ ├── greengrass.rst │ │ ├── guardduty.rst │ │ ├── iam.rst │ │ ├── identitystore.rst │ │ ├── index.rst │ │ ├── inspector2.rst │ │ ├── iot-data.rst │ │ ├── iot.rst │ │ ├── ivs.rst │ │ ├── kafka.rst │ │ ├── kinesis-video-archived-media.rst │ │ ├── kinesis.rst │ │ ├── kinesisanalyticsv2.rst │ │ ├── kinesisvideo.rst │ │ ├── kms.rst │ │ ├── lakeformation.rst │ │ ├── lambda.rst │ │ ├── lexv2-models.rst │ │ ├── logs.rst │ │ ├── macie2.rst │ │ ├── managedblockchain.rst │ │ ├── mediaconnect.rst │ │ ├── medialive.rst │ │ ├── mediapackage.rst │ │ ├── mediapackagev2.rst │ │ ├── mediastore-data.rst │ │ ├── mediastore.rst │ │ ├── memorydb.rst │ │ ├── meteringmarketplace.rst │ │ ├── mq.rst │ │ ├── neptune.rst │ │ ├── network-firewall.rst │ │ ├── networkmanager.rst │ │ ├── opensearch.rst │ │ ├── opensearchserverless.rst │ │ ├── organizations.rst │ │ ├── osis.rst │ │ ├── panorama.rst │ │ ├── patching_other_services.rst │ │ ├── personalize.rst │ │ ├── pinpoint.rst │ │ ├── pipes.rst │ │ ├── polly.rst │ │ ├── quicksight.rst │ │ ├── ram.rst │ │ ├── rds-data.rst │ │ ├── rds.rst │ │ ├── redshift-data.rst │ │ ├── redshift.rst │ │ ├── rekognition.rst │ │ ├── resiliencehub.rst │ │ ├── resource-groups.rst │ │ ├── resourcegroupstaggingapi.rst │ │ ├── route53.rst │ │ ├── route53domains.rst │ │ ├── route53resolver.rst │ │ ├── s3.rst │ │ ├── s3control.rst │ │ ├── s3tables.rst │ │ ├── s3vectors.rst │ │ ├── sagemaker-metrics.rst │ │ ├── sagemaker-runtime.rst │ │ ├── sagemaker.rst │ │ ├── scheduler.rst │ │ ├── sdb.rst │ │ ├── secretsmanager.rst │ │ ├── securityhub.rst │ │ ├── service-quotas.rst │ │ ├── servicecatalog-appregistry.rst │ │ ├── servicecatalog.rst │ │ ├── servicediscovery.rst │ │ ├── ses.rst │ │ ├── sesv2.rst │ │ ├── shield.rst │ │ ├── signer.rst │ │ ├── sns.rst │ │ ├── sqs.rst │ │ ├── ssm.rst │ │ ├── sso-admin.rst │ │ ├── stepfunctions.rst │ │ ├── sts.rst │ │ ├── support.rst │ │ ├── swf.rst │ │ ├── synthetics.rst │ │ ├── textract.rst │ │ ├── timestream-influxdb.rst │ │ ├── timestream-query.rst │ │ ├── timestream-write.rst │ │ ├── transcribe.rst │ │ ├── transfer.rst │ │ ├── vpc-lattice.rst │ │ ├── wafv2.rst │ │ ├── workspaces-web.rst │ │ └── workspaces.rst │ ├── index.rst │ ├── make.bat │ └── requirements.txt ├── moto/ │ ├── __init__.py │ ├── account/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── acm/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── acmpca/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── amp/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── apigateway/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── integration_parsers/ │ │ │ ├── __init__.py │ │ │ ├── aws_parser.py │ │ │ ├── http_parser.py │ │ │ └── unknown_parser.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── apigatewaymanagementapi/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── apigatewayv2/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── appconfig/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── applicationautoscaling/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── appmesh/ │ │ ├── __init__.py │ │ ├── dataclasses/ │ │ │ ├── mesh.py │ │ │ ├── route.py │ │ │ ├── shared.py │ │ │ ├── virtual_node.py │ │ │ └── virtual_router.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils/ │ │ ├── common.py │ │ └── spec_parsing.py │ ├── appsync/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── athena/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── autoscaling/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── awslambda/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── policy.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── awslambda_simple/ │ │ ├── __init__.py │ │ ├── models.py │ │ └── responses.py │ ├── backend_index.py │ ├── backends.py │ ├── backup/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── batch/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── batch_simple/ │ │ ├── __init__.py │ │ ├── models.py │ │ └── responses.py │ ├── bedrock/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── bedrockagent/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── bedrockruntime/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── budgets/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── ce/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── clouddirectory/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── cloudformation/ │ │ ├── __init__.py │ │ ├── custom_model.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── parsing.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── cloudfront/ │ │ ├── 2020-05-31/ │ │ │ └── service-2.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── cloudhsmv2/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── cloudtrail/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── cloudwatch/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── metric_data_expression_parser.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── codebuild/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── codecommit/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── codedeploy/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── codepipeline/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── cognitoidentity/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── cognitoidp/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── resources/ │ │ │ ├── jwks-private.json │ │ │ └── jwks-public.json │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── comprehend/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── config/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── resources/ │ │ │ └── aws_managed_rules.json │ │ ├── responses.py │ │ └── urls.py │ ├── connect/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── connectcampaigns/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── core/ │ │ ├── __init__.py │ │ ├── _mock_architecture.md │ │ ├── authorization.py │ │ ├── base_backend.py │ │ ├── botocore_stubber.py │ │ ├── common_models.py │ │ ├── common_types.py │ │ ├── config.py │ │ ├── constants.py │ │ ├── custom_responses_mock.py │ │ ├── decorator.py │ │ ├── errors.py │ │ ├── exceptions.py │ │ ├── loaders.py │ │ ├── mime_types.py │ │ ├── model.py │ │ ├── model_instances.py │ │ ├── models.py │ │ ├── parse.py │ │ ├── request.py │ │ ├── responses.py │ │ ├── responses_custom_registry.py │ │ ├── serialize.py │ │ ├── types.py │ │ ├── utils.py │ │ └── versions.py │ ├── databrew/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── datapipeline/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── datasync/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── dax/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── directconnect/ │ │ ├── __init__.py │ │ ├── enums.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── dms/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── ds/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ ├── utils.py │ │ └── validations.py │ ├── dsql/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── dynamodb/ │ │ ├── __init__.py │ │ ├── comparisons.py │ │ ├── exceptions.py │ │ ├── limits.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── dynamo_type.py │ │ │ ├── table.py │ │ │ ├── table_export.py │ │ │ ├── table_import.py │ │ │ └── utilities.py │ │ ├── parsing/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── ast_nodes.py │ │ │ ├── executors.py │ │ │ ├── expressions.py │ │ │ ├── key_condition_expression.py │ │ │ ├── partiql.py │ │ │ ├── reserved_keywords.py │ │ │ ├── reserved_keywords.txt │ │ │ ├── tokens.py │ │ │ └── validators.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── dynamodb_v20111205/ │ │ ├── __init__.py │ │ ├── comparisons.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── dynamodbstreams/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── ebs/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── ec2/ │ │ ├── 2016-11-15/ │ │ │ └── service-2.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── amis.py │ │ │ ├── availability_zones_and_regions.py │ │ │ ├── carrier_gateways.py │ │ │ ├── core.py │ │ │ ├── customer_gateways.py │ │ │ ├── dhcp_options.py │ │ │ ├── elastic_block_store.py │ │ │ ├── elastic_ip_addresses.py │ │ │ ├── elastic_network_interfaces.py │ │ │ ├── fleets.py │ │ │ ├── flow_logs.py │ │ │ ├── hosts.py │ │ │ ├── iam_instance_profile.py │ │ │ ├── instance_types.py │ │ │ ├── instances.py │ │ │ ├── internet_gateways.py │ │ │ ├── key_pairs.py │ │ │ ├── launch_templates.py │ │ │ ├── managed_prefixes.py │ │ │ ├── nat_gateways.py │ │ │ ├── network_acls.py │ │ │ ├── reserved_instances.py │ │ │ ├── route_tables.py │ │ │ ├── security_groups.py │ │ │ ├── spot_requests.py │ │ │ ├── subnets.py │ │ │ ├── tags.py │ │ │ ├── transit_gateway.py │ │ │ ├── transit_gateway_attachments.py │ │ │ ├── transit_gateway_route_tables.py │ │ │ ├── vpc_peering_connections.py │ │ │ ├── vpc_service_configuration.py │ │ │ ├── vpcs.py │ │ │ ├── vpn_connections.py │ │ │ ├── vpn_gateway.py │ │ │ └── windows.py │ │ ├── regions.py │ │ ├── resources/ │ │ │ ├── amis.json │ │ │ ├── ecs/ │ │ │ │ └── optimized_amis/ │ │ │ │ ├── af-south-1.json │ │ │ │ ├── ap-east-1.json │ │ │ │ ├── ap-northeast-1.json │ │ │ │ ├── ap-northeast-2.json │ │ │ │ ├── ap-northeast-3.json │ │ │ │ ├── ap-south-1.json │ │ │ │ ├── ap-south-2.json │ │ │ │ ├── ap-southeast-1.json │ │ │ │ ├── ap-southeast-2.json │ │ │ │ ├── ap-southeast-3.json │ │ │ │ ├── ap-southeast-4.json │ │ │ │ ├── ap-southeast-5.json │ │ │ │ ├── ca-central-1.json │ │ │ │ ├── ca-west-1.json │ │ │ │ ├── eu-central-1.json │ │ │ │ ├── eu-central-2.json │ │ │ │ ├── eu-north-1.json │ │ │ │ ├── eu-south-1.json │ │ │ │ ├── eu-south-2.json │ │ │ │ ├── eu-west-1.json │ │ │ │ ├── eu-west-2.json │ │ │ │ ├── eu-west-3.json │ │ │ │ ├── il-central-1.json │ │ │ │ ├── me-central-1.json │ │ │ │ ├── me-south-1.json │ │ │ │ ├── sa-east-1.json │ │ │ │ ├── us-east-1.json │ │ │ │ ├── us-east-2.json │ │ │ │ ├── us-west-1.json │ │ │ │ └── us-west-2.json │ │ │ ├── instance_type_offerings/ │ │ │ │ ├── availability-zone/ │ │ │ │ │ ├── af-south-1.json │ │ │ │ │ ├── ap-east-1.json │ │ │ │ │ ├── ap-northeast-1.json │ │ │ │ │ ├── ap-northeast-2.json │ │ │ │ │ ├── ap-northeast-3.json │ │ │ │ │ ├── ap-south-1.json │ │ │ │ │ ├── ap-south-2.json │ │ │ │ │ ├── ap-southeast-1.json │ │ │ │ │ ├── ap-southeast-2.json │ │ │ │ │ ├── ap-southeast-3.json │ │ │ │ │ ├── ap-southeast-4.json │ │ │ │ │ ├── ap-southeast-5.json │ │ │ │ │ ├── ca-central-1.json │ │ │ │ │ ├── ca-west-1.json │ │ │ │ │ ├── eu-central-1.json │ │ │ │ │ ├── eu-central-2.json │ │ │ │ │ ├── eu-north-1.json │ │ │ │ │ ├── eu-south-1.json │ │ │ │ │ ├── eu-south-2.json │ │ │ │ │ ├── eu-west-1.json │ │ │ │ │ ├── eu-west-2.json │ │ │ │ │ ├── eu-west-3.json │ │ │ │ │ ├── il-central-1.json │ │ │ │ │ ├── me-central-1.json │ │ │ │ │ ├── me-south-1.json │ │ │ │ │ ├── sa-east-1.json │ │ │ │ │ ├── us-east-1.json │ │ │ │ │ ├── us-east-2.json │ │ │ │ │ ├── us-west-1.json │ │ │ │ │ └── us-west-2.json │ │ │ │ ├── availability-zone-id/ │ │ │ │ │ ├── af-south-1.json │ │ │ │ │ ├── ap-east-1.json │ │ │ │ │ ├── ap-northeast-1.json │ │ │ │ │ ├── ap-northeast-2.json │ │ │ │ │ ├── ap-northeast-3.json │ │ │ │ │ ├── ap-south-1.json │ │ │ │ │ ├── ap-south-2.json │ │ │ │ │ ├── ap-southeast-1.json │ │ │ │ │ ├── ap-southeast-2.json │ │ │ │ │ ├── ap-southeast-3.json │ │ │ │ │ ├── ap-southeast-4.json │ │ │ │ │ ├── ap-southeast-5.json │ │ │ │ │ ├── ca-central-1.json │ │ │ │ │ ├── ca-west-1.json │ │ │ │ │ ├── eu-central-1.json │ │ │ │ │ ├── eu-central-2.json │ │ │ │ │ ├── eu-north-1.json │ │ │ │ │ ├── eu-south-1.json │ │ │ │ │ ├── eu-south-2.json │ │ │ │ │ ├── eu-west-1.json │ │ │ │ │ ├── eu-west-2.json │ │ │ │ │ ├── eu-west-3.json │ │ │ │ │ ├── il-central-1.json │ │ │ │ │ ├── me-central-1.json │ │ │ │ │ ├── me-south-1.json │ │ │ │ │ ├── sa-east-1.json │ │ │ │ │ ├── us-east-1.json │ │ │ │ │ ├── us-east-2.json │ │ │ │ │ ├── us-west-1.json │ │ │ │ │ └── us-west-2.json │ │ │ │ └── region/ │ │ │ │ ├── af-south-1.json │ │ │ │ ├── ap-east-1.json │ │ │ │ ├── ap-northeast-1.json │ │ │ │ ├── ap-northeast-2.json │ │ │ │ ├── ap-northeast-3.json │ │ │ │ ├── ap-south-1.json │ │ │ │ ├── ap-south-2.json │ │ │ │ ├── ap-southeast-1.json │ │ │ │ ├── ap-southeast-2.json │ │ │ │ ├── ap-southeast-3.json │ │ │ │ ├── ap-southeast-4.json │ │ │ │ ├── ap-southeast-5.json │ │ │ │ ├── ca-central-1.json │ │ │ │ ├── ca-west-1.json │ │ │ │ ├── eu-central-1.json │ │ │ │ ├── eu-central-2.json │ │ │ │ ├── eu-north-1.json │ │ │ │ ├── eu-south-1.json │ │ │ │ ├── eu-south-2.json │ │ │ │ ├── eu-west-1.json │ │ │ │ ├── eu-west-2.json │ │ │ │ ├── eu-west-3.json │ │ │ │ ├── il-central-1.json │ │ │ │ ├── me-central-1.json │ │ │ │ ├── me-south-1.json │ │ │ │ ├── sa-east-1.json │ │ │ │ ├── us-east-1.json │ │ │ │ ├── us-east-2.json │ │ │ │ ├── us-west-1.json │ │ │ │ └── us-west-2.json │ │ │ ├── instance_types.json │ │ │ └── latest_amis/ │ │ │ ├── af-south-1.json │ │ │ ├── ap-east-1.json │ │ │ ├── ap-northeast-1.json │ │ │ ├── ap-northeast-2.json │ │ │ ├── ap-northeast-3.json │ │ │ ├── ap-south-1.json │ │ │ ├── ap-south-2.json │ │ │ ├── ap-southeast-1.json │ │ │ ├── ap-southeast-2.json │ │ │ ├── ap-southeast-3.json │ │ │ ├── ap-southeast-4.json │ │ │ ├── ap-southeast-5.json │ │ │ ├── ca-central-1.json │ │ │ ├── ca-west-1.json │ │ │ ├── eu-central-1.json │ │ │ ├── eu-central-2.json │ │ │ ├── eu-north-1.json │ │ │ ├── eu-south-1.json │ │ │ ├── eu-south-2.json │ │ │ ├── eu-west-1.json │ │ │ ├── eu-west-2.json │ │ │ ├── eu-west-3.json │ │ │ ├── il-central-1.json │ │ │ ├── me-central-1.json │ │ │ ├── me-south-1.json │ │ │ ├── sa-east-1.json │ │ │ ├── us-east-1.json │ │ │ ├── us-east-2.json │ │ │ ├── us-west-1.json │ │ │ └── us-west-2.json │ │ ├── responses/ │ │ │ ├── __init__.py │ │ │ ├── _base_response.py │ │ │ ├── account_attributes.py │ │ │ ├── amis.py │ │ │ ├── availability_zones_and_regions.py │ │ │ ├── carrier_gateways.py │ │ │ ├── customer_gateways.py │ │ │ ├── dhcp_options.py │ │ │ ├── egress_only_internet_gateways.py │ │ │ ├── elastic_block_store.py │ │ │ ├── elastic_ip_addresses.py │ │ │ ├── elastic_network_interfaces.py │ │ │ ├── fleets.py │ │ │ ├── flow_logs.py │ │ │ ├── general.py │ │ │ ├── hosts.py │ │ │ ├── iam_instance_profiles.py │ │ │ ├── instances.py │ │ │ ├── internet_gateways.py │ │ │ ├── key_pairs.py │ │ │ ├── launch_templates.py │ │ │ ├── monitoring.py │ │ │ ├── nat_gateways.py │ │ │ ├── network_acls.py │ │ │ ├── reserved_instances.py │ │ │ ├── route_tables.py │ │ │ ├── security_groups.py │ │ │ ├── settings.py │ │ │ ├── spot_fleets.py │ │ │ ├── spot_instances.py │ │ │ ├── subnets.py │ │ │ ├── tags.py │ │ │ ├── transit_gateway_attachments.py │ │ │ ├── transit_gateway_route_tables.py │ │ │ ├── transit_gateways.py │ │ │ ├── virtual_private_gateways.py │ │ │ ├── vpc_peering_connections.py │ │ │ ├── vpc_service_configuration.py │ │ │ ├── vpcs.py │ │ │ ├── vpn_connections.py │ │ │ └── windows.py │ │ ├── urls.py │ │ └── utils.py │ ├── ec2instanceconnect/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── ecr/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── policy_validation.py │ │ ├── responses.py │ │ └── urls.py │ ├── ecs/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── efs/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── eks/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── elasticache/ │ │ ├── 2015-02-02/ │ │ │ └── paginators-1.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── elasticbeanstalk/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── elb/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── policies.py │ │ ├── responses.py │ │ └── urls.py │ ├── elbv2/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── ssl_policies.py │ │ ├── urls.py │ │ └── utils.py │ ├── emr/ │ │ ├── 2009-03-31/ │ │ │ └── paginators-1.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── resources/ │ │ │ ├── README.md │ │ │ ├── instance-types-emr-4.2.0.json │ │ │ ├── instance-types-emr-4.3.0.json │ │ │ ├── instance-types-emr-4.4.0.json │ │ │ ├── instance-types-emr-4.5.0.json │ │ │ ├── instance-types-emr-4.6.0.json │ │ │ ├── instance-types-emr-4.6.1.json │ │ │ ├── instance-types-emr-4.8.2.json │ │ │ ├── instance-types-emr-4.8.3.json │ │ │ ├── instance-types-emr-4.8.4.json │ │ │ ├── instance-types-emr-4.8.5.json │ │ │ ├── instance-types-emr-4.9.1.json │ │ │ ├── instance-types-emr-4.9.2.json │ │ │ ├── instance-types-emr-4.9.3.json │ │ │ ├── instance-types-emr-4.9.4.json │ │ │ ├── instance-types-emr-4.9.5.json │ │ │ ├── instance-types-emr-4.9.6.json │ │ │ ├── instance-types-emr-5.0.0.json │ │ │ ├── instance-types-emr-5.0.1.json │ │ │ ├── instance-types-emr-5.0.2.json │ │ │ ├── instance-types-emr-5.0.3.json │ │ │ ├── instance-types-emr-5.1.0.json │ │ │ ├── instance-types-emr-5.1.1.json │ │ │ ├── instance-types-emr-5.10.0.json │ │ │ ├── instance-types-emr-5.10.1.json │ │ │ ├── instance-types-emr-5.11.0.json │ │ │ ├── instance-types-emr-5.11.1.json │ │ │ ├── instance-types-emr-5.11.2.json │ │ │ ├── instance-types-emr-5.11.3.json │ │ │ ├── instance-types-emr-5.11.4.json │ │ │ ├── instance-types-emr-5.12.0.json │ │ │ ├── instance-types-emr-5.12.1.json │ │ │ ├── instance-types-emr-5.12.2.json │ │ │ ├── instance-types-emr-5.12.3.json │ │ │ ├── instance-types-emr-5.13.0.json │ │ │ ├── instance-types-emr-5.13.1.json │ │ │ ├── instance-types-emr-5.14.0.json │ │ │ ├── instance-types-emr-5.14.1.json │ │ │ ├── instance-types-emr-5.14.2.json │ │ │ ├── instance-types-emr-5.15.0.json │ │ │ ├── instance-types-emr-5.15.1.json │ │ │ ├── instance-types-emr-5.16.0.json │ │ │ ├── instance-types-emr-5.16.1.json │ │ │ ├── instance-types-emr-5.17.0.json │ │ │ ├── instance-types-emr-5.17.1.json │ │ │ ├── instance-types-emr-5.17.2.json │ │ │ ├── instance-types-emr-5.18.0.json │ │ │ ├── instance-types-emr-5.18.1.json │ │ │ ├── instance-types-emr-5.19.0.json │ │ │ ├── instance-types-emr-5.19.1.json │ │ │ ├── instance-types-emr-5.2.0.json │ │ │ ├── instance-types-emr-5.2.1.json │ │ │ ├── instance-types-emr-5.2.2.json │ │ │ ├── instance-types-emr-5.2.3.json │ │ │ ├── instance-types-emr-5.20.0.json │ │ │ ├── instance-types-emr-5.20.1.json │ │ │ ├── instance-types-emr-5.21.0.json │ │ │ ├── instance-types-emr-5.21.1.json │ │ │ ├── instance-types-emr-5.21.2.json │ │ │ ├── instance-types-emr-5.22.0.json │ │ │ ├── instance-types-emr-5.23.0.json │ │ │ ├── instance-types-emr-5.23.1.json │ │ │ ├── instance-types-emr-5.24.0.json │ │ │ ├── instance-types-emr-5.24.1.json │ │ │ ├── instance-types-emr-5.25.0.json │ │ │ ├── instance-types-emr-5.26.0.json │ │ │ ├── instance-types-emr-5.27.0.json │ │ │ ├── instance-types-emr-5.27.1.json │ │ │ ├── instance-types-emr-5.28.0.json │ │ │ ├── instance-types-emr-5.28.1.json │ │ │ ├── instance-types-emr-5.29.0.json │ │ │ ├── instance-types-emr-5.3.0.json │ │ │ ├── instance-types-emr-5.3.1.json │ │ │ ├── instance-types-emr-5.3.2.json │ │ │ ├── instance-types-emr-5.30.0-preview.json │ │ │ ├── instance-types-emr-5.30.0.json │ │ │ ├── instance-types-emr-5.30.1.json │ │ │ ├── instance-types-emr-5.30.2.json │ │ │ ├── instance-types-emr-5.31.0.json │ │ │ ├── instance-types-emr-5.31.1.json │ │ │ ├── instance-types-emr-5.32.0.json │ │ │ ├── instance-types-emr-5.32.1.json │ │ │ ├── instance-types-emr-5.33.0.json │ │ │ ├── instance-types-emr-5.33.1.json │ │ │ ├── instance-types-emr-5.34.0.json │ │ │ ├── instance-types-emr-5.35.0.json │ │ │ ├── instance-types-emr-5.36.0.json │ │ │ ├── instance-types-emr-5.36.1.json │ │ │ ├── instance-types-emr-5.36.2.json │ │ │ ├── instance-types-emr-5.4.0.json │ │ │ ├── instance-types-emr-5.4.1.json │ │ │ ├── instance-types-emr-5.5.0.json │ │ │ ├── instance-types-emr-5.5.1.json │ │ │ ├── instance-types-emr-5.5.2.json │ │ │ ├── instance-types-emr-5.5.3.json │ │ │ ├── instance-types-emr-5.5.4.json │ │ │ ├── instance-types-emr-5.6.0.json │ │ │ ├── instance-types-emr-5.6.1.json │ │ │ ├── instance-types-emr-5.7.0.json │ │ │ ├── instance-types-emr-5.7.1.json │ │ │ ├── instance-types-emr-5.8.0.json │ │ │ ├── instance-types-emr-5.8.1.json │ │ │ ├── instance-types-emr-5.8.2.json │ │ │ ├── instance-types-emr-5.8.3.json │ │ │ ├── instance-types-emr-5.9.0.json │ │ │ ├── instance-types-emr-5.9.1.json │ │ │ ├── instance-types-emr-6.0.0-beta.json │ │ │ ├── instance-types-emr-6.0.0-beta2.json │ │ │ ├── instance-types-emr-6.0.0.json │ │ │ ├── instance-types-emr-6.0.1.json │ │ │ ├── instance-types-emr-6.1.0.json │ │ │ ├── instance-types-emr-6.1.1.json │ │ │ ├── instance-types-emr-6.10.0.json │ │ │ ├── instance-types-emr-6.10.1.json │ │ │ ├── instance-types-emr-6.11.0.json │ │ │ ├── instance-types-emr-6.11.1.json │ │ │ ├── instance-types-emr-6.12.0.json │ │ │ ├── instance-types-emr-6.13.0.json │ │ │ ├── instance-types-emr-6.14.0.json │ │ │ ├── instance-types-emr-6.15.0.json │ │ │ ├── instance-types-emr-6.2.0.json │ │ │ ├── instance-types-emr-6.2.1.json │ │ │ ├── instance-types-emr-6.3.0.json │ │ │ ├── instance-types-emr-6.3.1.json │ │ │ ├── instance-types-emr-6.4.0.json │ │ │ ├── instance-types-emr-6.5.0.json │ │ │ ├── instance-types-emr-6.6.0.json │ │ │ ├── instance-types-emr-6.7.0.json │ │ │ ├── instance-types-emr-6.8.0.json │ │ │ ├── instance-types-emr-6.8.1.json │ │ │ ├── instance-types-emr-6.9.0.json │ │ │ ├── instance-types-emr-6.9.1.json │ │ │ ├── instance-types-emr-7.0.0.json │ │ │ ├── instance-types-emr-7.1.0.json │ │ │ ├── instance-types-emr-7.10.0.json │ │ │ ├── instance-types-emr-7.11.0.json │ │ │ ├── instance-types-emr-7.12.0.json │ │ │ ├── instance-types-emr-7.2.0.json │ │ │ ├── instance-types-emr-7.3.0.json │ │ │ ├── instance-types-emr-7.4.0.json │ │ │ ├── instance-types-emr-7.5.0.json │ │ │ ├── instance-types-emr-7.6.0.json │ │ │ ├── instance-types-emr-7.7.0.json │ │ │ ├── instance-types-emr-7.8.0.json │ │ │ ├── instance-types-emr-7.9.0.json │ │ │ ├── instance_types.json │ │ │ ├── release-labels-af-south-1.json │ │ │ ├── release-labels-ap-east-1.json │ │ │ ├── release-labels-ap-east-2.json │ │ │ ├── release-labels-ap-northeast-1.json │ │ │ ├── release-labels-ap-northeast-2.json │ │ │ ├── release-labels-ap-northeast-3.json │ │ │ ├── release-labels-ap-south-1.json │ │ │ ├── release-labels-ap-south-2.json │ │ │ ├── release-labels-ap-southeast-1.json │ │ │ ├── release-labels-ap-southeast-2.json │ │ │ ├── release-labels-ap-southeast-3.json │ │ │ ├── release-labels-ap-southeast-4.json │ │ │ ├── release-labels-ap-southeast-5.json │ │ │ ├── release-labels-ap-southeast-7.json │ │ │ ├── release-labels-ca-central-1.json │ │ │ ├── release-labels-ca-west-1.json │ │ │ ├── release-labels-eu-central-1.json │ │ │ ├── release-labels-eu-central-2.json │ │ │ ├── release-labels-eu-north-1.json │ │ │ ├── release-labels-eu-south-1.json │ │ │ ├── release-labels-eu-south-2.json │ │ │ ├── release-labels-eu-west-1.json │ │ │ ├── release-labels-eu-west-2.json │ │ │ ├── release-labels-eu-west-3.json │ │ │ ├── release-labels-il-central-1.json │ │ │ ├── release-labels-me-central-1.json │ │ │ ├── release-labels-me-south-1.json │ │ │ ├── release-labels-mx-central-1.json │ │ │ ├── release-labels-sa-east-1.json │ │ │ ├── release-labels-us-east-1.json │ │ │ ├── release-labels-us-east-2.json │ │ │ ├── release-labels-us-west-1.json │ │ │ └── release-labels-us-west-2.json │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── emrcontainers/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── emrserverless/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── es/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ └── urls.py │ ├── events/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── notifications.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── firehose/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── forecast/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── fsx/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── glacier/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── glue/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── glue_schema_registry_constants.py │ │ ├── glue_schema_registry_utils.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── greengrass/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── guardduty/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── iam/ │ │ ├── __init__.py │ │ ├── access_control.py │ │ ├── aws_managed_policies.py │ │ ├── config.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── policy_conditions.py │ │ ├── policy_validation.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── identitystore/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── inspector2/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── instance_metadata/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── iot/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── iotdata/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── ivs/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── kafka/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── kinesis/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── kinesisanalyticsv2/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── kinesisvideo/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── kinesisvideoarchivedmedia/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── kms/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── policy_validator.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── lakeformation/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── lexv2models/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── logs/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── logs_query/ │ │ │ ├── __init__.py │ │ │ └── query_parser.py │ │ ├── metric_filters.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── macie2/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── managedblockchain/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── mediaconnect/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── medialive/ │ │ ├── 2017-10-14/ │ │ │ └── paginators-1.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── mediapackage/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── mediapackagev2/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── mediastore/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── mediastoredata/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── memorydb/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── meteringmarketplace/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── moto_api/ │ │ ├── __init__.py │ │ └── _internal/ │ │ ├── __init__.py │ │ ├── managed_state_model.py │ │ ├── models.py │ │ ├── moto_random.py │ │ ├── recorder/ │ │ │ ├── __init__.py │ │ │ ├── models.py │ │ │ └── responses.py │ │ ├── responses.py │ │ ├── state_manager.py │ │ └── urls.py │ ├── moto_proxy/ │ │ ├── __init__.py │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── cert.key │ │ ├── certificate_creator.py │ │ ├── certs/ │ │ │ ├── __init__.py │ │ │ └── req.conf.tmpl │ │ ├── proxy3.py │ │ ├── setup_https_intercept.sh │ │ └── utils.py │ ├── moto_server/ │ │ ├── templates/ │ │ │ ├── dashboard.html │ │ │ └── lib.js │ │ ├── threaded_moto_server.py │ │ ├── utilities.py │ │ └── werkzeug_app.py │ ├── mq/ │ │ ├── __init__.py │ │ ├── configuration.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── neptune/ │ │ └── README.md │ ├── networkfirewall/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── networkmanager/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── opensearch/ │ │ ├── __init__.py │ │ ├── data.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── opensearchserverless/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── organizations/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── osis/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── packages/ │ │ ├── __init__.py │ │ ├── boto/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ └── ec2/ │ │ │ ├── __init__.py │ │ │ ├── blockdevicemapping.py │ │ │ ├── ec2object.py │ │ │ ├── image.py │ │ │ ├── instance.py │ │ │ ├── instancetype.py │ │ │ └── tag.py │ │ └── cfnresponse/ │ │ ├── __init__.py │ │ └── cfnresponse.py │ ├── panorama/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── personalize/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── pinpoint/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── pipes/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── polly/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── resources.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── proxy.py │ ├── py.typed │ ├── quicksight/ │ │ ├── __init__.py │ │ ├── data_models.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── ram/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── rds/ │ │ ├── 2014-10-31/ │ │ │ └── paginators-1.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── resources/ │ │ │ ├── cluster_options/ │ │ │ │ ├── aurora-postgresql.json │ │ │ │ └── neptune.json │ │ │ └── option_group_options/ │ │ │ ├── db2-ae.json │ │ │ ├── db2-se.json │ │ │ ├── mariadb.json │ │ │ ├── mysql.json │ │ │ ├── oracle-ee-cdb.json │ │ │ ├── oracle-ee.json │ │ │ ├── oracle-se2-cdb.json │ │ │ ├── oracle-se2.json │ │ │ ├── postgres.json │ │ │ ├── sqlserver-ee.json │ │ │ ├── sqlserver-ex.json │ │ │ ├── sqlserver-se.json │ │ │ └── sqlserver-web.json │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── rdsdata/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── redshift/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── redshiftdata/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── rekognition/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── resiliencehub/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── resourcegroups/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── resourcegroupstaggingapi/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── route53/ │ │ ├── 2013-04-01/ │ │ │ └── service-2.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── route53domains/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── validators.py │ ├── route53resolver/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ ├── utils.py │ │ └── validations.py │ ├── s3/ │ │ ├── __init__.py │ │ ├── cloud_formation.py │ │ ├── config.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── notifications.py │ │ ├── responses.py │ │ ├── select_object_content.py │ │ ├── urls.py │ │ └── utils.py │ ├── s3bucket_path/ │ │ ├── __init__.py │ │ └── utils.py │ ├── s3control/ │ │ ├── __init__.py │ │ ├── config.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── s3tables/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── s3vectors/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── sagemaker/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ ├── utils.py │ │ └── validators.py │ ├── sagemakermetrics/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── sagemakerruntime/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── scheduler/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── sdb/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── secretsmanager/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── list_secrets/ │ │ │ ├── __init__.py │ │ │ └── filters.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── securityhub/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── server.py │ ├── servicecatalog/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── servicecatalogappregistry/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── servicediscovery/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── servicequotas/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── resources/ │ │ │ ├── __init__.py │ │ │ └── default_quotas/ │ │ │ ├── __init__.py │ │ │ └── vpc.py │ │ ├── responses.py │ │ └── urls.py │ ├── ses/ │ │ ├── 2010-12-01/ │ │ │ └── paginators-1.moto-extras.json │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── feedback.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── template.py │ │ ├── urls.py │ │ └── utils.py │ ├── sesv2/ │ │ ├── 2019-09-27/ │ │ │ └── service-2.moto-extras.json │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── settings.py │ ├── shield/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── signer/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── sns/ │ │ ├── __init__.py │ │ ├── config.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── sqs/ │ │ ├── 2012-11-05/ │ │ │ └── service-2.moto-extras.json │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── ssm/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── resources/ │ │ │ ├── ami-amazon-linux-latest/ │ │ │ │ ├── af-south-1.json │ │ │ │ ├── ap-east-1.json │ │ │ │ ├── ap-northeast-1.json │ │ │ │ ├── ap-northeast-2.json │ │ │ │ ├── ap-northeast-3.json │ │ │ │ ├── ap-south-1.json │ │ │ │ ├── ap-south-2.json │ │ │ │ ├── ap-southeast-1.json │ │ │ │ ├── ap-southeast-2.json │ │ │ │ ├── ap-southeast-3.json │ │ │ │ ├── ap-southeast-4.json │ │ │ │ ├── ap-southeast-5.json │ │ │ │ ├── ca-central-1.json │ │ │ │ ├── ca-west-1.json │ │ │ │ ├── eu-central-1.json │ │ │ │ ├── eu-central-2.json │ │ │ │ ├── eu-north-1.json │ │ │ │ ├── eu-south-1.json │ │ │ │ ├── eu-south-2.json │ │ │ │ ├── eu-west-1.json │ │ │ │ ├── eu-west-2.json │ │ │ │ ├── eu-west-3.json │ │ │ │ ├── il-central-1.json │ │ │ │ ├── me-central-1.json │ │ │ │ ├── me-south-1.json │ │ │ │ ├── sa-east-1.json │ │ │ │ ├── us-east-1.json │ │ │ │ ├── us-east-2.json │ │ │ │ ├── us-west-1.json │ │ │ │ └── us-west-2.json │ │ │ ├── default_baselines.json │ │ │ ├── ecs/ │ │ │ │ └── optimized_amis/ │ │ │ │ ├── af-south-1.json │ │ │ │ ├── ap-east-1.json │ │ │ │ ├── ap-northeast-1.json │ │ │ │ ├── ap-northeast-2.json │ │ │ │ ├── ap-northeast-3.json │ │ │ │ ├── ap-south-1.json │ │ │ │ ├── ap-south-2.json │ │ │ │ ├── ap-southeast-1.json │ │ │ │ ├── ap-southeast-2.json │ │ │ │ ├── ap-southeast-3.json │ │ │ │ ├── ap-southeast-4.json │ │ │ │ ├── ap-southeast-5.json │ │ │ │ ├── ca-central-1.json │ │ │ │ ├── ca-west-1.json │ │ │ │ ├── eu-central-1.json │ │ │ │ ├── eu-central-2.json │ │ │ │ ├── eu-north-1.json │ │ │ │ ├── eu-south-1.json │ │ │ │ ├── eu-south-2.json │ │ │ │ ├── eu-west-1.json │ │ │ │ ├── eu-west-2.json │ │ │ │ ├── eu-west-3.json │ │ │ │ ├── il-central-1.json │ │ │ │ ├── me-central-1.json │ │ │ │ ├── me-south-1.json │ │ │ │ ├── sa-east-1.json │ │ │ │ ├── us-east-1.json │ │ │ │ ├── us-east-2.json │ │ │ │ ├── us-west-1.json │ │ │ │ └── us-west-2.json │ │ │ ├── regions.json │ │ │ └── services.json │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── ssoadmin/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── stepfunctions/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── parser/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ ├── asl/ │ │ │ │ ├── __init__.py │ │ │ │ ├── antlr/ │ │ │ │ │ ├── ASLIntrinsicLexer.g4 │ │ │ │ │ ├── ASLIntrinsicParser.g4 │ │ │ │ │ ├── ASLLexer.g4 │ │ │ │ │ ├── ASLParser.g4 │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── runtime/ │ │ │ │ │ ├── ASLIntrinsicLexer.py │ │ │ │ │ ├── ASLIntrinsicParser.py │ │ │ │ │ ├── ASLIntrinsicParserListener.py │ │ │ │ │ ├── ASLIntrinsicParserVisitor.py │ │ │ │ │ ├── ASLLexer.py │ │ │ │ │ ├── ASLParser.py │ │ │ │ │ ├── ASLParserListener.py │ │ │ │ │ ├── ASLParserVisitor.py │ │ │ │ │ └── __init__.py │ │ │ │ ├── antlt4utils/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── antlr4utils.py │ │ │ │ ├── component/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── assign/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── assign_decl.py │ │ │ │ │ │ │ ├── assign_decl_binding.py │ │ │ │ │ │ │ ├── assign_template_binding.py │ │ │ │ │ │ │ ├── assign_template_value.py │ │ │ │ │ │ │ ├── assign_template_value_array.py │ │ │ │ │ │ │ ├── assign_template_value_object.py │ │ │ │ │ │ │ └── assign_template_value_terminal.py │ │ │ │ │ │ ├── catch/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── catch_decl.py │ │ │ │ │ │ │ ├── catch_outcome.py │ │ │ │ │ │ │ ├── catcher_decl.py │ │ │ │ │ │ │ ├── catcher_outcome.py │ │ │ │ │ │ │ └── catcher_props.py │ │ │ │ │ │ ├── comment.py │ │ │ │ │ │ ├── error_name/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── custom_error_name.py │ │ │ │ │ │ │ ├── error_equals_decl.py │ │ │ │ │ │ │ ├── error_name.py │ │ │ │ │ │ │ ├── failure_event.py │ │ │ │ │ │ │ ├── states_error_name.py │ │ │ │ │ │ │ └── states_error_name_type.py │ │ │ │ │ │ ├── flow/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── end.py │ │ │ │ │ │ │ ├── next.py │ │ │ │ │ │ │ └── start_at.py │ │ │ │ │ │ ├── jsonata/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── jsonata_template_binding.py │ │ │ │ │ │ │ ├── jsonata_template_value.py │ │ │ │ │ │ │ ├── jsonata_template_value_array.py │ │ │ │ │ │ │ ├── jsonata_template_value_object.py │ │ │ │ │ │ │ └── jsonata_template_value_terminal.py │ │ │ │ │ │ ├── outputdecl.py │ │ │ │ │ │ ├── parargs.py │ │ │ │ │ │ ├── path/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── input_path.py │ │ │ │ │ │ │ ├── items_path.py │ │ │ │ │ │ │ ├── output_path.py │ │ │ │ │ │ │ └── result_path.py │ │ │ │ │ │ ├── payload/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── payloadvalue/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── payload_value.py │ │ │ │ │ │ │ ├── payloadarr/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ └── payload_arr.py │ │ │ │ │ │ │ ├── payloadbinding/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ └── payload_binding.py │ │ │ │ │ │ │ ├── payloadtmpl/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ └── payload_tmpl.py │ │ │ │ │ │ │ └── payloadvaluelit/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── payload_value_bool.py │ │ │ │ │ │ │ ├── payload_value_float.py │ │ │ │ │ │ │ ├── payload_value_int.py │ │ │ │ │ │ │ ├── payload_value_lit.py │ │ │ │ │ │ │ ├── payload_value_null.py │ │ │ │ │ │ │ └── payload_value_str.py │ │ │ │ │ │ ├── query_language.py │ │ │ │ │ │ ├── result_selector.py │ │ │ │ │ │ ├── retry/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── backoff_rate_decl.py │ │ │ │ │ │ │ ├── interval_seconds_decl.py │ │ │ │ │ │ │ ├── jitter_strategy_decl.py │ │ │ │ │ │ │ ├── max_attempts_decl.py │ │ │ │ │ │ │ ├── max_delay_seconds_decl.py │ │ │ │ │ │ │ ├── retrier_decl.py │ │ │ │ │ │ │ ├── retrier_outcome.py │ │ │ │ │ │ │ ├── retrier_props.py │ │ │ │ │ │ │ ├── retry_decl.py │ │ │ │ │ │ │ └── retry_outcome.py │ │ │ │ │ │ ├── string/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── string_expression.py │ │ │ │ │ │ └── timeouts/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── heartbeat.py │ │ │ │ │ │ └── timeout.py │ │ │ │ │ ├── component.py │ │ │ │ │ ├── eval_component.py │ │ │ │ │ ├── intrinsic/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── argument/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── argument.py │ │ │ │ │ │ ├── component.py │ │ │ │ │ │ ├── function/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── function.py │ │ │ │ │ │ │ └── statesfunction/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── array/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── array.py │ │ │ │ │ │ │ │ ├── array_contains.py │ │ │ │ │ │ │ │ ├── array_get_item.py │ │ │ │ │ │ │ │ ├── array_length.py │ │ │ │ │ │ │ │ ├── array_partition.py │ │ │ │ │ │ │ │ ├── array_range.py │ │ │ │ │ │ │ │ └── array_unique.py │ │ │ │ │ │ │ ├── encoding_decoding/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── base_64_decode.py │ │ │ │ │ │ │ │ └── base_64_encode.py │ │ │ │ │ │ │ ├── factory.py │ │ │ │ │ │ │ ├── generic/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ └── string_format.py │ │ │ │ │ │ │ ├── hash_calculations/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── hash_algorithm.py │ │ │ │ │ │ │ │ └── hash_func.py │ │ │ │ │ │ │ ├── json_manipulation/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── json_merge.py │ │ │ │ │ │ │ │ ├── json_to_string.py │ │ │ │ │ │ │ │ └── string_to_json.py │ │ │ │ │ │ │ ├── math_operations/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── math_add.py │ │ │ │ │ │ │ │ └── math_random.py │ │ │ │ │ │ │ ├── states_function.py │ │ │ │ │ │ │ ├── states_function_array.py │ │ │ │ │ │ │ ├── states_function_format.py │ │ │ │ │ │ │ ├── states_function_json_to_string.py │ │ │ │ │ │ │ ├── states_function_string_to_json.py │ │ │ │ │ │ │ ├── states_function_uuid.py │ │ │ │ │ │ │ ├── string_operations/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ └── string_split.py │ │ │ │ │ │ │ └── unique_id_generation/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── uuid.py │ │ │ │ │ │ ├── functionname/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── custom_function_name.py │ │ │ │ │ │ │ ├── function_name.py │ │ │ │ │ │ │ ├── state_function_name_types.py │ │ │ │ │ │ │ └── states_function_name.py │ │ │ │ │ │ ├── jsonata.py │ │ │ │ │ │ ├── member.py │ │ │ │ │ │ ├── member_access.py │ │ │ │ │ │ └── program.py │ │ │ │ │ ├── program/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── program.py │ │ │ │ │ │ ├── states.py │ │ │ │ │ │ └── version.py │ │ │ │ │ ├── state/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── choice/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── choice_rule.py │ │ │ │ │ │ │ ├── choices_decl.py │ │ │ │ │ │ │ ├── comparison/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── comparison.py │ │ │ │ │ │ │ │ ├── comparison_func.py │ │ │ │ │ │ │ │ ├── comparison_operator_type.py │ │ │ │ │ │ │ │ ├── comparison_type.py │ │ │ │ │ │ │ │ ├── comparison_variable.py │ │ │ │ │ │ │ │ ├── operator/ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ ├── factory.py │ │ │ │ │ │ │ │ │ ├── implementations/ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ ├── boolean_equals.py │ │ │ │ │ │ │ │ │ │ ├── is_operator.py │ │ │ │ │ │ │ │ │ │ ├── numeric.py │ │ │ │ │ │ │ │ │ │ ├── string_operators.py │ │ │ │ │ │ │ │ │ │ └── timestamp_operators.py │ │ │ │ │ │ │ │ │ └── operator.py │ │ │ │ │ │ │ │ └── variable.py │ │ │ │ │ │ │ ├── default_decl.py │ │ │ │ │ │ │ └── state_choice.py │ │ │ │ │ │ ├── exec/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── execute_state.py │ │ │ │ │ │ │ ├── state_map/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── execution_type.py │ │ │ │ │ │ │ │ ├── item_reader/ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ ├── eval/ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ ├── resource_eval.py │ │ │ │ │ │ │ │ │ │ ├── resource_eval_factory.py │ │ │ │ │ │ │ │ │ │ ├── resource_eval_s3.py │ │ │ │ │ │ │ │ │ │ └── resource_output_transformer/ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ ├── transformer.py │ │ │ │ │ │ │ │ │ │ ├── transformer_csv.py │ │ │ │ │ │ │ │ │ │ ├── transformer_factory.py │ │ │ │ │ │ │ │ │ │ └── transformer_json.py │ │ │ │ │ │ │ │ │ ├── item_reader_decl.py │ │ │ │ │ │ │ │ │ └── reader_config/ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ ├── csv_header_location.py │ │ │ │ │ │ │ │ │ ├── csv_headers.py │ │ │ │ │ │ │ │ │ ├── input_type.py │ │ │ │ │ │ │ │ │ ├── max_items_decl.py │ │ │ │ │ │ │ │ │ ├── reader_config_decl.py │ │ │ │ │ │ │ │ │ └── reader_config_props.py │ │ │ │ │ │ │ │ ├── item_selector.py │ │ │ │ │ │ │ │ ├── items/ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ └── items.py │ │ │ │ │ │ │ │ ├── iteration/ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ ├── distributed_iteration_component.py │ │ │ │ │ │ │ │ │ ├── inline_iteration_component.py │ │ │ │ │ │ │ │ │ ├── itemprocessor/ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ ├── distributed_item_processor.py │ │ │ │ │ │ │ │ │ │ ├── distributed_item_processor_worker.py │ │ │ │ │ │ │ │ │ │ ├── inline_item_processor.py │ │ │ │ │ │ │ │ │ │ ├── inline_item_processor_worker.py │ │ │ │ │ │ │ │ │ │ ├── item_processor_decl.py │ │ │ │ │ │ │ │ │ │ ├── item_processor_factory.py │ │ │ │ │ │ │ │ │ │ ├── map_run_record.py │ │ │ │ │ │ │ │ │ │ └── processor_config.py │ │ │ │ │ │ │ │ │ ├── iteration_component.py │ │ │ │ │ │ │ │ │ ├── iteration_declaration.py │ │ │ │ │ │ │ │ │ ├── iteration_worker.py │ │ │ │ │ │ │ │ │ ├── iterator/ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ ├── distributed_iterator.py │ │ │ │ │ │ │ │ │ │ ├── distributed_iterator_worker.py │ │ │ │ │ │ │ │ │ │ ├── inline_iterator.py │ │ │ │ │ │ │ │ │ │ ├── inline_iterator_worker.py │ │ │ │ │ │ │ │ │ │ ├── iterator_decl.py │ │ │ │ │ │ │ │ │ │ └── iterator_factory.py │ │ │ │ │ │ │ │ │ └── job.py │ │ │ │ │ │ │ │ ├── label.py │ │ │ │ │ │ │ │ ├── max_concurrency.py │ │ │ │ │ │ │ │ ├── mode.py │ │ │ │ │ │ │ │ ├── result_writer/ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ ├── resource_eval/ │ │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ │ ├── resource_eval.py │ │ │ │ │ │ │ │ │ │ ├── resource_eval_factory.py │ │ │ │ │ │ │ │ │ │ └── resource_eval_s3.py │ │ │ │ │ │ │ │ │ └── result_writer_decl.py │ │ │ │ │ │ │ │ ├── state_map.py │ │ │ │ │ │ │ │ └── tolerated_failure.py │ │ │ │ │ │ │ ├── state_parallel/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── branch_worker.py │ │ │ │ │ │ │ │ ├── branches_decl.py │ │ │ │ │ │ │ │ └── state_parallel.py │ │ │ │ │ │ │ └── state_task/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── credentials.py │ │ │ │ │ │ │ ├── lambda_eval_utils.py │ │ │ │ │ │ │ ├── mock_eval_utils.py │ │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── resource.py │ │ │ │ │ │ │ │ ├── state_task_service.py │ │ │ │ │ │ │ │ ├── state_task_service_api_gateway.py │ │ │ │ │ │ │ │ ├── state_task_service_aws_sdk.py │ │ │ │ │ │ │ │ ├── state_task_service_batch.py │ │ │ │ │ │ │ │ ├── state_task_service_callback.py │ │ │ │ │ │ │ │ ├── state_task_service_dynamodb.py │ │ │ │ │ │ │ │ ├── state_task_service_ecs.py │ │ │ │ │ │ │ │ ├── state_task_service_events.py │ │ │ │ │ │ │ │ ├── state_task_service_factory.py │ │ │ │ │ │ │ │ ├── state_task_service_glue.py │ │ │ │ │ │ │ │ ├── state_task_service_lambda.py │ │ │ │ │ │ │ │ ├── state_task_service_sfn.py │ │ │ │ │ │ │ │ ├── state_task_service_sns.py │ │ │ │ │ │ │ │ ├── state_task_service_sqs.py │ │ │ │ │ │ │ │ └── state_task_service_unsupported.py │ │ │ │ │ │ │ ├── state_task.py │ │ │ │ │ │ │ ├── state_task_activitiy.py │ │ │ │ │ │ │ ├── state_task_factory.py │ │ │ │ │ │ │ └── state_task_lambda.py │ │ │ │ │ │ ├── fail/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── cause_decl.py │ │ │ │ │ │ │ ├── error_decl.py │ │ │ │ │ │ │ └── state_fail.py │ │ │ │ │ │ ├── state.py │ │ │ │ │ │ ├── state_continue_with.py │ │ │ │ │ │ ├── state_pass/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── result.py │ │ │ │ │ │ │ └── state_pass.py │ │ │ │ │ │ ├── state_props.py │ │ │ │ │ │ ├── state_succeed/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── state_succeed.py │ │ │ │ │ │ ├── state_type.py │ │ │ │ │ │ └── wait/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── state_wait.py │ │ │ │ │ │ └── wait_function/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── seconds.py │ │ │ │ │ │ ├── seconds_path.py │ │ │ │ │ │ ├── timestamp.py │ │ │ │ │ │ └── wait_function.py │ │ │ │ │ └── test_state/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── program/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_state_program.py │ │ │ │ │ └── state/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_state_state_props.py │ │ │ │ ├── eval/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── callback/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── callback.py │ │ │ │ │ ├── contex_object.py │ │ │ │ │ ├── count_down_latch.py │ │ │ │ │ ├── environment.py │ │ │ │ │ ├── evaluation_details.py │ │ │ │ │ ├── event/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── event_detail.py │ │ │ │ │ │ ├── event_manager.py │ │ │ │ │ │ └── logging.py │ │ │ │ │ ├── program_state.py │ │ │ │ │ ├── states.py │ │ │ │ │ ├── test_state/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── environment.py │ │ │ │ │ │ └── program_state.py │ │ │ │ │ └── variable_store.py │ │ │ │ ├── jsonata/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── jsonata.py │ │ │ │ │ └── validations.py │ │ │ │ ├── parse/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── asl_parser.py │ │ │ │ │ ├── intrinsic/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── intrinsic_parser.py │ │ │ │ │ │ └── preprocessor.py │ │ │ │ │ ├── preprocessor.py │ │ │ │ │ ├── test_state/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── asl_parser.py │ │ │ │ │ │ └── preprocessor.py │ │ │ │ │ └── typed_props.py │ │ │ │ ├── static_analyser/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── express_static_analyser.py │ │ │ │ │ ├── intrinsic/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── intrinsic_static_analyser.py │ │ │ │ │ │ └── variable_names_intrinsic_static_analyser.py │ │ │ │ │ ├── static_analyser.py │ │ │ │ │ ├── test_state/ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ └── test_state_analyser.py │ │ │ │ │ ├── usage_metrics_static_analyser.py │ │ │ │ │ └── variable_references_static_analyser.py │ │ │ │ └── utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── boto_client.py │ │ │ │ ├── encoding.py │ │ │ │ └── json_path.py │ │ │ ├── backend/ │ │ │ │ ├── __init__.py │ │ │ │ ├── activity.py │ │ │ │ ├── alias.py │ │ │ │ ├── execution.py │ │ │ │ ├── execution_worker.py │ │ │ │ ├── execution_worker_comm.py │ │ │ │ ├── state_machine.py │ │ │ │ ├── store.py │ │ │ │ └── test_state/ │ │ │ │ ├── __init__.py │ │ │ │ ├── execution.py │ │ │ │ └── execution_worker.py │ │ │ ├── mocking/ │ │ │ │ ├── __init__.py │ │ │ │ └── mock_config.py │ │ │ ├── models.py │ │ │ ├── packages.py │ │ │ ├── plugins.py │ │ │ ├── provider.py │ │ │ ├── quotas.py │ │ │ ├── resource_providers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── aws_stepfunctions_activity.py │ │ │ │ ├── aws_stepfunctions_activity.schema.json │ │ │ │ ├── aws_stepfunctions_activity_plugin.py │ │ │ │ ├── aws_stepfunctions_statemachine.py │ │ │ │ ├── aws_stepfunctions_statemachine.schema.json │ │ │ │ └── aws_stepfunctions_statemachine_plugin.py │ │ │ ├── stepfunctions_utils.py │ │ │ └── utils.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── sts/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── support/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── resources/ │ │ │ └── describe_trusted_advisor_checks.json │ │ ├── responses.py │ │ └── urls.py │ ├── swf/ │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── exceptions.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── activity_task.py │ │ │ ├── activity_type.py │ │ │ ├── decision_task.py │ │ │ ├── domain.py │ │ │ ├── generic_type.py │ │ │ ├── history_event.py │ │ │ ├── timeout.py │ │ │ ├── timer.py │ │ │ ├── workflow_execution.py │ │ │ └── workflow_type.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── synthetics/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── textract/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── timestreaminfluxdb/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── timestreamquery/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ └── urls.py │ ├── timestreamwrite/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── transcribe/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── transfer/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── types.py │ │ └── urls.py │ ├── utilities/ │ │ ├── __init__.py │ │ ├── arns.py │ │ ├── aws_headers.py │ │ ├── collections.py │ │ ├── constants.py │ │ ├── distutils_version.py │ │ ├── docker_utilities.py │ │ ├── id_generator.py │ │ ├── paginator.py │ │ ├── tagging_service.py │ │ ├── tokenizer.py │ │ └── utils.py │ ├── vpclattice/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── wafv2/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ ├── urls.py │ │ └── utils.py │ ├── workspaces/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ ├── workspacesweb/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ ├── responses.py │ │ └── urls.py │ └── xray/ │ ├── __init__.py │ ├── exceptions.py │ ├── mock_client.py │ ├── models.py │ ├── responses.py │ └── urls.py ├── other_langs/ │ ├── sqsSample.java │ ├── sqsSample.scala │ ├── terraform/ │ │ ├── account/ │ │ │ ├── contact.tf │ │ │ └── provider.tf │ │ ├── acm/ │ │ │ ├── acm.tf │ │ │ └── providers.tf │ │ ├── apigw2/ │ │ │ ├── apigateway.tf │ │ │ ├── data.tf │ │ │ └── provider.tf │ │ ├── autoscaling/ │ │ │ ├── data.tf │ │ │ ├── main.tf │ │ │ ├── provider.tf │ │ │ ├── security_groups.tf │ │ │ └── variables.tf │ │ ├── awslambda/ │ │ │ ├── event_invoke_config.tf │ │ │ ├── event_source_mapping.tf │ │ │ ├── event_source_mapping_common.tf │ │ │ ├── event_source_mapping_sqs.tf │ │ │ ├── event_source_mapping_sqs_fifo.tf │ │ │ ├── lambda.js │ │ │ └── provider.tf │ │ ├── backup/ │ │ │ ├── provider.tf │ │ │ └── resources.tf │ │ ├── cloudfront/ │ │ │ ├── cloudfront.tf │ │ │ └── providers.tf │ │ ├── codebuild/ │ │ │ ├── project.tf │ │ │ └── provider.tf │ │ ├── ds/ │ │ │ ├── provider.tf │ │ │ └── simple_ad.tf │ │ ├── dsql/ │ │ │ ├── cluster.tf │ │ │ └── provider.tf │ │ ├── ec2/ │ │ │ ├── ami.tf │ │ │ ├── instances.tf │ │ │ ├── provider.tf │ │ │ └── vpc.tf │ │ ├── ecr/ │ │ │ ├── provider.tf │ │ │ └── repository.tf │ │ ├── elb/ │ │ │ ├── listener.tf │ │ │ ├── load_balancer.tf │ │ │ └── provider.tf │ │ ├── firehose/ │ │ │ ├── main.tf │ │ │ └── provider.tf │ │ ├── iam/ │ │ │ ├── data.tf │ │ │ ├── iam.tf │ │ │ ├── output.tf │ │ │ ├── providers.tf │ │ │ └── sample-metadata.xml │ │ ├── mq/ │ │ │ ├── broker.tf │ │ │ └── provider.tf │ │ ├── pipes/ │ │ │ ├── pipe.tf │ │ │ └── provider.tf │ │ ├── rds/ │ │ │ ├── providers.tf │ │ │ ├── proxy.tf │ │ │ └── rds.tf │ │ ├── route53/ │ │ │ ├── providers.tf │ │ │ └── route53.tf │ │ ├── s3/ │ │ │ ├── bucket.tf │ │ │ ├── bucket_with_lifecycle_policy.tf │ │ │ ├── minimal_lifecycle_configuration.tf │ │ │ ├── provider.tf │ │ │ └── public_access_block.tf │ │ ├── sqs/ │ │ │ ├── provider.tf │ │ │ └── queue.tf │ │ └── wafv2/ │ │ ├── cognito.tf │ │ └── provider.tf │ ├── test.js │ ├── test.rb │ ├── tests_cdk/ │ │ └── s3_eventbridge/ │ │ ├── app.py │ │ ├── cdk.json │ │ └── requirements.txt │ ├── tests_cli/ │ │ └── test_cognity_identity.bats │ ├── tests_cpp/ │ │ ├── CMakeLists.txt │ │ ├── Makefile │ │ └── hello_s3.cpp │ ├── tests_dotnet/ │ │ ├── ebs/ │ │ │ ├── ElasticBlockStore.csproj │ │ │ ├── UnitTest.cs │ │ │ └── Usings.cs │ │ ├── s3/ │ │ │ ├── UnitTest.cs │ │ │ ├── Usings.cs │ │ │ └── s3.csproj │ │ └── sqs/ │ │ ├── UnitTest.cs │ │ ├── Usings.cs │ │ └── sqs.csproj │ ├── tests_go/ │ │ ├── dynamodbstreams_test.go │ │ ├── eks_test.go │ │ └── go.mod │ ├── tests_java/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── moto/ │ │ │ └── tests/ │ │ │ ├── DependencyFactory.java │ │ │ └── DynamoLogic.java │ │ └── test/ │ │ └── java/ │ │ └── moto/ │ │ └── tests/ │ │ ├── CognitoIDPTest.java │ │ ├── DynamoTest.java │ │ ├── S3Test.java │ │ └── SESTest.java │ ├── tests_js/ │ │ ├── ec2.test.js │ │ ├── lambda.test.js │ │ ├── package.json │ │ ├── rds.test.js │ │ ├── s3.test.js │ │ └── sqs.test.js │ ├── tests_ruby/ │ │ ├── Gemfile │ │ └── test/ │ │ └── aws_sqs_test.rb │ └── tests_sagemaker_client/ │ ├── __init__.py │ ├── custom_script.py │ ├── test_model_training.py │ └── test_pipeline_session.py ├── pyproject.toml ├── requirements-dev.txt ├── requirements-tests.txt ├── requirements.txt ├── scripts/ │ ├── bump_version │ ├── ci_moto_server.sh │ ├── ci_wait_for_server.py │ ├── cloudformation_coverage.py │ ├── dependency_test.sh │ ├── ec2_get_instance_type_offerings.py │ ├── emr_get_releases.py │ ├── get_amis.py │ ├── get_instance_info.py │ ├── implementation_coverage.py │ ├── import_sfn_parser.sh │ ├── pull_down_aws_managed_rules.py │ ├── rds_describe_option_group_options.py │ ├── rds_get_orderable_db_cluster_options.py │ ├── scaffold.py │ ├── ssm_get_default_amis.py │ ├── ssm_get_default_params.py │ ├── ssm_get_default_patch_baselines.py │ ├── ssm_get_optimized_amis.py │ ├── template/ │ │ ├── lib/ │ │ │ ├── __init__.py.j2 │ │ │ ├── exceptions.py.j2 │ │ │ ├── models.py.j2 │ │ │ ├── responses.py.j2 │ │ │ └── urls.py.j2 │ │ └── test/ │ │ ├── __init__.py.j2 │ │ ├── test_server.py.j2 │ │ └── test_service.py.j2 │ ├── update_backend_index.py │ ├── update_managed_policies.py │ └── update_ssl_policies.py ├── setup.cfg ├── setup.py ├── tests/ │ ├── __init__.py │ ├── conftest.py │ ├── markers.py │ ├── test_account/ │ │ ├── __init__.py │ │ └── test_account_alternate_contacts.py │ ├── test_acm/ │ │ ├── __init__.py │ │ ├── resources/ │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── ca.key │ │ │ ├── ca.pem │ │ │ ├── ca.srl │ │ │ ├── star_moto_com-bad.pem │ │ │ ├── star_moto_com.csr │ │ │ ├── star_moto_com.key │ │ │ ├── star_moto_com.pem │ │ │ ├── star_moto_com_ec_prime256v1.key │ │ │ ├── star_moto_com_ec_prime256v1.pem │ │ │ ├── star_moto_com_ec_secp384r1.key │ │ │ ├── star_moto_com_ec_secp384r1.pem │ │ │ ├── star_moto_com_ec_secp521r1.key │ │ │ ├── star_moto_com_ec_secp521r1.pem │ │ │ ├── star_moto_com_rsa_1024.key │ │ │ ├── star_moto_com_rsa_1024.pem │ │ │ ├── star_moto_com_rsa_3072.key │ │ │ ├── star_moto_com_rsa_3072.pem │ │ │ ├── star_moto_com_rsa_4096.key │ │ │ └── star_moto_com_rsa_4096.pem │ │ └── test_acm.py │ ├── test_acmpca/ │ │ ├── __init__.py │ │ └── test_acmpca.py │ ├── test_amp/ │ │ ├── __init__.py │ │ ├── test_amp_logging_config.py │ │ ├── test_amp_rulegroupnamespaces.py │ │ └── test_amp_workspaces.py │ ├── test_apigateway/ │ │ ├── __init__.py │ │ ├── resources/ │ │ │ ├── petstore-swagger-v3.yaml │ │ │ ├── test_api.json │ │ │ ├── test_api.yaml │ │ │ ├── test_api_integration.yaml │ │ │ ├── test_api_invalid.json │ │ │ ├── test_api_invalid_version.json │ │ │ └── test_deep_api.yaml │ │ ├── test_apigateway.py │ │ ├── test_apigateway_cloudformation.py │ │ ├── test_apigateway_custom_ids.py │ │ ├── test_apigateway_deployments.py │ │ ├── test_apigateway_export.py │ │ ├── test_apigateway_gatewayresponses.py │ │ ├── test_apigateway_importrestapi.py │ │ ├── test_apigateway_integration.py │ │ ├── test_apigateway_putrestapi.py │ │ ├── test_apigateway_stage.py │ │ ├── test_apigateway_validators.py │ │ ├── test_apigateway_vpclink.py │ │ └── test_server.py │ ├── test_apigatewaymanagementapi/ │ │ ├── __init__.py │ │ └── test_apigatewaymanagementapi.py │ ├── test_apigatewayv2/ │ │ ├── __init__.py │ │ ├── test_apigatewayv2.py │ │ ├── test_apigatewayv2_authorizers.py │ │ ├── test_apigatewayv2_domains.py │ │ ├── test_apigatewayv2_integrationresponses.py │ │ ├── test_apigatewayv2_integrations.py │ │ ├── test_apigatewayv2_mappings.py │ │ ├── test_apigatewayv2_models.py │ │ ├── test_apigatewayv2_reimport.py │ │ ├── test_apigatewayv2_routes.py │ │ ├── test_apigatewayv2_stages.py │ │ ├── test_apigatewayv2_tags.py │ │ ├── test_apigatewayv2_vpclinks.py │ │ └── test_server.py │ ├── test_appconfig/ │ │ ├── __init__.py │ │ ├── test_appconfig_applications.py │ │ ├── test_appconfig_config_profiles.py │ │ └── test_appconfig_hosted_config_versions.py │ ├── test_applicationautoscaling/ │ │ ├── __init__.py │ │ ├── test_applicationautoscaling.py │ │ ├── test_applicationautoscaling_policies.py │ │ └── test_validation.py │ ├── test_appmesh/ │ │ ├── __init__.py │ │ ├── data.py │ │ └── test_appmesh.py │ ├── test_appsync/ │ │ ├── __init__.py │ │ ├── test_appsync.py │ │ ├── test_appsync_apikeys.py │ │ ├── test_appsync_integration.py │ │ ├── test_appsync_schema.py │ │ ├── test_appsync_tags.py │ │ └── test_server.py │ ├── test_athena/ │ │ ├── __init__.py │ │ ├── test_athena.py │ │ ├── test_athena_capacity_reservations.py │ │ ├── test_athena_execution_state.py │ │ ├── test_athena_integration.py │ │ ├── test_athena_resourcegroupstagging_integration.py │ │ └── test_athena_server_api.py │ ├── test_autoscaling/ │ │ ├── __init__.py │ │ ├── test_autoscaling.py │ │ ├── test_autoscaling_cloudformation.py │ │ ├── test_autoscaling_group_filters.py │ │ ├── test_autoscaling_groups.py │ │ ├── test_autoscaling_metrics.py │ │ ├── test_autoscaling_scheduledactions.py │ │ ├── test_autoscaling_tags.py │ │ ├── test_autoscaling_warm_pools.py │ │ ├── test_elb.py │ │ ├── test_elbv2.py │ │ ├── test_launch_configurations.py │ │ ├── test_policies.py │ │ ├── test_server.py │ │ └── utils.py │ ├── test_awslambda/ │ │ ├── __init__.py │ │ ├── test_awslambda_cloudformation.py │ │ ├── test_lambda.py │ │ ├── test_lambda_alias.py │ │ ├── test_lambda_concurrency.py │ │ ├── test_lambda_eventsourcemapping.py │ │ ├── test_lambda_function_urls.py │ │ ├── test_lambda_invoke.py │ │ ├── test_lambda_layers.py │ │ ├── test_lambda_layers_invoked.py │ │ ├── test_lambda_policy.py │ │ ├── test_lambda_tags.py │ │ ├── test_policy.py │ │ └── utilities.py │ ├── test_awslambda_simple/ │ │ ├── __init__.py │ │ └── test_lambda_simple.py │ ├── test_backup/ │ │ ├── __init__.py │ │ ├── test_backup.py │ │ └── test_backup_report_plans.py │ ├── test_batch/ │ │ ├── __init__.py │ │ ├── test_batch.py │ │ ├── test_batch_cloudformation.py │ │ ├── test_batch_compute_envs.py │ │ ├── test_batch_eks.py │ │ ├── test_batch_job_queue.py │ │ ├── test_batch_jobs.py │ │ ├── test_batch_scheduling_policy.py │ │ ├── test_batch_tags_job.py │ │ ├── test_batch_tags_job_definition.py │ │ ├── test_batch_tags_job_queue.py │ │ ├── test_batch_tags_scheduling_policy.py │ │ ├── test_batch_task_definition.py │ │ ├── test_server.py │ │ └── test_utils.py │ ├── test_batch_simple/ │ │ ├── __init__.py │ │ ├── test_batch_cloudformation.py │ │ ├── test_batch_compute_envs.py │ │ └── test_batch_jobs.py │ ├── test_bedrock/ │ │ ├── __init__.py │ │ └── test_bedrock.py │ ├── test_bedrockagent/ │ │ ├── __init__.py │ │ └── test_bedrockagent.py │ ├── test_bedrockruntime/ │ │ ├── __init__.py │ │ ├── test_bedrockruntime.py │ │ └── test_server.py │ ├── test_budgets/ │ │ ├── __init__.py │ │ ├── test_budgets.py │ │ ├── test_notifications.py │ │ └── test_server.py │ ├── test_ce/ │ │ ├── __init__.py │ │ ├── test_ce.py │ │ ├── test_ce_cost_and_usage.py │ │ └── test_ce_tags.py │ ├── test_clouddirectory/ │ │ ├── __init__.py │ │ ├── test_clouddirectory.py │ │ └── test_clouddirectory_integration.py │ ├── test_cloudformation/ │ │ ├── __init__.py │ │ ├── fixtures/ │ │ │ ├── __init__.py │ │ │ ├── custom_lambda.py │ │ │ ├── ec2_classic_eip.py │ │ │ ├── fn_join.py │ │ │ ├── kms_key.py │ │ │ ├── rds_mysql_with_db_parameter_group.py │ │ │ ├── rds_mysql_with_read_replica.py │ │ │ ├── redshift.py │ │ │ ├── route53_ec2_instance_with_public_ip.py │ │ │ ├── route53_health_check.py │ │ │ ├── route53_roundrobin.py │ │ │ ├── single_instance_with_ebs_volume.py │ │ │ ├── vpc_eip.py │ │ │ ├── vpc_eni.py │ │ │ └── vpc_single_instance_in_subnet.py │ │ ├── test_cloudformation_custom_resources.py │ │ ├── test_cloudformation_depends_on.py │ │ ├── test_cloudformation_multi_accounts.py │ │ ├── test_cloudformation_nested_stacks.py │ │ ├── test_cloudformation_stack_crud.py │ │ ├── test_cloudformation_stack_integration.py │ │ ├── test_cloudformation_stack_policies.py │ │ ├── test_conditions.py │ │ ├── test_import_value.py │ │ ├── test_server.py │ │ ├── test_stack_parsing.py │ │ ├── test_utilities.py │ │ └── test_validate.py │ ├── test_cloudfront/ │ │ ├── __init__.py │ │ ├── cloudfront_test_scaffolding.py │ │ ├── test_cloudfront.py │ │ ├── test_cloudfront_dist_tags.py │ │ ├── test_cloudfront_distributions.py │ │ ├── test_cloudfront_integration.py │ │ ├── test_cloudfront_invalidation.py │ │ ├── test_cloudfront_keys.py │ │ ├── test_cloudfront_oac.py │ │ └── test_server.py │ ├── test_cloudhsmv2/ │ │ ├── __init__.py │ │ └── test_cloudhsmv2.py │ ├── test_cloudtrail/ │ │ ├── __init__.py │ │ ├── test_cloudtrail.py │ │ ├── test_cloudtrail_eventselectors.py │ │ ├── test_cloudtrail_tags.py │ │ └── test_server.py │ ├── test_cloudwatch/ │ │ ├── __init__.py │ │ ├── test_cloudwatch.py │ │ ├── test_cloudwatch_alarms.py │ │ ├── test_cloudwatch_cloudformation.py │ │ ├── test_cloudwatch_dashboards.py │ │ ├── test_cloudwatch_expression_parser.py │ │ ├── test_cloudwatch_expressions.py │ │ ├── test_cloudwatch_insight_rules.py │ │ └── test_cloudwatch_tags.py │ ├── test_codebuild/ │ │ └── test_codebuild.py │ ├── test_codecommit/ │ │ └── test_codecommit.py │ ├── test_codedeploy/ │ │ ├── __init__.py │ │ └── test_codedeploy.py │ ├── test_codepipeline/ │ │ ├── __init__.py │ │ └── test_codepipeline.py │ ├── test_cognitoidentity/ │ │ ├── __init__.py │ │ ├── test_cognitoidentity.py │ │ └── test_server.py │ ├── test_cognitoidp/ │ │ ├── __init__.py │ │ ├── test_cognitoidp.py │ │ ├── test_cognitoidp_exceptions.py │ │ ├── test_cognitoidp_replay.py │ │ ├── test_cognitoidp_utils.py │ │ └── test_server.py │ ├── test_comprehend/ │ │ ├── __init__.py │ │ ├── test_comprehend.py │ │ ├── test_comprehend_integration.py │ │ └── test_comprehend_jobs.py │ ├── test_config/ │ │ ├── __init__.py │ │ ├── test_config.py │ │ ├── test_config_rules.py │ │ ├── test_config_rules_integration.py │ │ └── test_config_tags.py │ ├── test_connect/ │ │ ├── __init__.py │ │ └── test_connect.py │ ├── test_connectcampaigns/ │ │ ├── __init__.py │ │ └── test_connectcampaigns.py │ ├── test_core/ │ │ ├── __init__.py │ │ ├── protocols/ │ │ │ ├── input/ │ │ │ │ ├── ec2.json │ │ │ │ ├── json.json │ │ │ │ ├── query.json │ │ │ │ ├── rest-json.json │ │ │ │ └── rest-xml.json │ │ │ └── output/ │ │ │ ├── ec2.json │ │ │ ├── json.json │ │ │ ├── query-json.json │ │ │ ├── query.json │ │ │ ├── rest-json.json │ │ │ └── rest-xml.json │ │ ├── test_account_id_resolution.py │ │ ├── test_auth.py │ │ ├── test_auth_context_manager.py │ │ ├── test_backenddict.py │ │ ├── test_backends.py │ │ ├── test_botocore_stubber.py │ │ ├── test_config.py │ │ ├── test_decorator_calls.py │ │ ├── test_docker.py │ │ ├── test_ec2_vpc_endpoint_services.py │ │ ├── test_environ_patching.py │ │ ├── test_errors.py │ │ ├── test_exceptions.py │ │ ├── test_importorder.py │ │ ├── test_instance_metadata.py │ │ ├── test_mock_regions.py │ │ ├── test_moto_api.py │ │ ├── test_mypy.py │ │ ├── test_nested.py │ │ ├── test_protocols.py │ │ ├── test_proxy.py │ │ ├── test_request_mocking.py │ │ ├── test_request_passthrough.py │ │ ├── test_response_serialization.py │ │ ├── test_responses.py │ │ ├── test_responses_module.py │ │ ├── test_serialize.py │ │ ├── test_server.py │ │ ├── test_settings.py │ │ ├── test_url_base_regex.py │ │ ├── test_url_mapping.py │ │ ├── test_utils.py │ │ └── utilities.py │ ├── test_databrew/ │ │ ├── __init__.py │ │ ├── test_databrew_datasets.py │ │ ├── test_databrew_jobs.py │ │ ├── test_databrew_recipes.py │ │ └── test_databrew_rulesets.py │ ├── test_datapipeline/ │ │ ├── __init__.py │ │ ├── test_datapipeline.py │ │ ├── test_datapipeline_cloudformation.py │ │ └── test_server.py │ ├── test_datasync/ │ │ ├── __init__.py │ │ └── test_datasync.py │ ├── test_dax/ │ │ ├── __init__.py │ │ ├── test_dax.py │ │ └── test_server.py │ ├── test_directconnect/ │ │ ├── __init__.py │ │ ├── test_directconnect.py │ │ └── test_directconnect_integration.py │ ├── test_dms/ │ │ ├── __init__.py │ │ ├── test_dms.py │ │ ├── test_dms_connection_state.py │ │ ├── test_dms_integration.py │ │ └── test_dms_replication_instance_state.py │ ├── test_ds/ │ │ ├── __init__.py │ │ ├── test_ds.py │ │ ├── test_ds_ad_connect.py │ │ ├── test_ds_microsoft_ad.py │ │ ├── test_ds_simple_ad_directory.py │ │ └── test_ds_tags.py │ ├── test_dsql/ │ │ ├── __init__.py │ │ └── test_dsql.py │ ├── test_dynamodb/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── exceptions/ │ │ │ ├── __init__.py │ │ │ ├── test_dynamodb_exceptions.py │ │ │ ├── test_dynamodb_transactions.py │ │ │ └── test_key_length_exceptions.py │ │ ├── models/ │ │ │ ├── test_item.py │ │ │ ├── test_key_condition_expression_parser.py │ │ │ └── test_utilities.py │ │ ├── test_dynamodb.py │ │ ├── test_dynamodb_account_mode.py │ │ ├── test_dynamodb_batch_get_item.py │ │ ├── test_dynamodb_batch_write.py │ │ ├── test_dynamodb_cloudformation.py │ │ ├── test_dynamodb_condition_expressions.py │ │ ├── test_dynamodb_consumedcapacity.py │ │ ├── test_dynamodb_create_table.py │ │ ├── test_dynamodb_executor.py │ │ ├── test_dynamodb_export_table.py │ │ ├── test_dynamodb_expression_tokenizer.py │ │ ├── test_dynamodb_expressions.py │ │ ├── test_dynamodb_iam_permission.py │ │ ├── test_dynamodb_import_table.py │ │ ├── test_dynamodb_multi_attribute_gsi.py │ │ ├── test_dynamodb_query.py │ │ ├── test_dynamodb_resource_policy.py │ │ ├── test_dynamodb_scan.py │ │ ├── test_dynamodb_statements.py │ │ ├── test_dynamodb_table_with_range_key.py │ │ ├── test_dynamodb_table_without_range_key.py │ │ ├── test_dynamodb_transact.py │ │ ├── test_dynamodb_update_expressions.py │ │ ├── test_dynamodb_update_table.py │ │ ├── test_dynamodb_utils.py │ │ ├── test_dynamodb_validation.py │ │ └── test_server.py │ ├── test_dynamodb_v20111205/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ └── test_servermode.py │ ├── test_dynamodbstreams/ │ │ ├── __init__.py │ │ └── test_dynamodbstreams.py │ ├── test_ebs/ │ │ ├── __init__.py │ │ └── test_ebs.py │ ├── test_ec2/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── helpers.py │ │ ├── test_account_attributes.py │ │ ├── test_amis.py │ │ ├── test_availability_zones_and_regions.py │ │ ├── test_carrier_gateways.py │ │ ├── test_customer_gateways.py │ │ ├── test_dhcp_options.py │ │ ├── test_ec2_cloudformation.py │ │ ├── test_ec2_integration.py │ │ ├── test_egress_only_igw.py │ │ ├── test_elastic_block_store.py │ │ ├── test_elastic_ip_addresses.py │ │ ├── test_elastic_network_interfaces.py │ │ ├── test_fleets.py │ │ ├── test_flow_logs.py │ │ ├── test_flow_logs_cloudformation.py │ │ ├── test_general.py │ │ ├── test_hosts.py │ │ ├── test_iam_integration.py │ │ ├── test_instance_type_offerings.py │ │ ├── test_instance_types.py │ │ ├── test_instances.py │ │ ├── test_internet_gateways.py │ │ ├── test_key_pairs.py │ │ ├── test_launch_templates.py │ │ ├── test_launch_templates_cloudformation.py │ │ ├── test_nat_gateway.py │ │ ├── test_network_acls.py │ │ ├── test_prefix_lists.py │ │ ├── test_regions.py │ │ ├── test_reserved_instances_offerings.py │ │ ├── test_route_tables.py │ │ ├── test_security_groups.py │ │ ├── test_security_groups_cloudformation.py │ │ ├── test_server.py │ │ ├── test_settings.py │ │ ├── test_spot_fleet.py │ │ ├── test_spot_instances.py │ │ ├── test_subnets.py │ │ ├── test_tags.py │ │ ├── test_transit_gateway.py │ │ ├── test_transit_gateway_cloudformation.py │ │ ├── test_transit_gateway_peering_attachments.py │ │ ├── test_utils.py │ │ ├── test_virtual_private_gateways.py │ │ ├── test_vpc_endpoint_services_integration.py │ │ ├── test_vpc_peering.py │ │ ├── test_vpc_service_configuration_integration.py │ │ ├── test_vpcs.py │ │ ├── test_vpn_connections.py │ │ └── test_windows.py │ ├── test_ec2instanceconnect/ │ │ └── test_ec2instanceconnect.py │ ├── test_ecr/ │ │ ├── __init__.py │ │ ├── test_ecr.py │ │ ├── test_ecr_cloudformation.py │ │ ├── test_ecr_helpers.py │ │ ├── test_ecr_policy_validation.py │ │ ├── test_ecr_scan_results.py │ │ └── test_ecr_scanning_config.py │ ├── test_ecs/ │ │ ├── __init__.py │ │ ├── test_ecs.py │ │ ├── test_ecs_account_settings.py │ │ ├── test_ecs_capacity_provider.py │ │ ├── test_ecs_cloudformation.py │ │ ├── test_ecs_efs.py │ │ ├── test_ecs_task_def_tags.py │ │ ├── test_ecs_task_definitions.py │ │ ├── test_ecs_task_tags.py │ │ └── test_ecs_tasksets.py │ ├── test_efs/ │ │ ├── __init__.py │ │ ├── junk_drawer.py │ │ ├── test_access_point_tagging.py │ │ ├── test_access_points.py │ │ ├── test_efs_cloudformation.py │ │ ├── test_file_system.py │ │ ├── test_filesystem_policy.py │ │ ├── test_filesystem_tagging.py │ │ ├── test_lifecycle_config.py │ │ ├── test_mount_target.py │ │ ├── test_mount_target_security_groups.py │ │ └── test_server.py │ ├── test_eks/ │ │ ├── __init__.py │ │ ├── test_eks.py │ │ ├── test_eks_constants.py │ │ ├── test_eks_ec2.py │ │ ├── test_eks_utils.py │ │ └── test_server.py │ ├── test_elasticache/ │ │ ├── __init__.py │ │ ├── test_elasticache.py │ │ └── test_server.py │ ├── test_elasticbeanstalk/ │ │ ├── __init__.py │ │ ├── test_elasticbeanstalk.py │ │ └── test_server.py │ ├── test_elb/ │ │ ├── __init__.py │ │ ├── test_elb.py │ │ ├── test_elb_availabilityzones.py │ │ ├── test_elb_cloudformation.py │ │ ├── test_elb_policies.py │ │ ├── test_elb_subnets.py │ │ └── test_server.py │ ├── test_elbv2/ │ │ ├── __init__.py │ │ ├── test_elbv2.py │ │ ├── test_elbv2_cloudformation.py │ │ ├── test_elbv2_integration.py │ │ ├── test_elbv2_listener_attributes.py │ │ ├── test_elbv2_listener_rule_tags.py │ │ ├── test_elbv2_listener_rules.py │ │ ├── test_elbv2_listener_tags.py │ │ ├── test_elbv2_set_subnets.py │ │ ├── test_elbv2_target_groups.py │ │ ├── test_elbv2_target_health.py │ │ └── test_server.py │ ├── test_emr/ │ │ ├── __init__.py │ │ ├── test_emr.py │ │ ├── test_emr_boto3.py │ │ ├── test_emr_cloudformation.py │ │ ├── test_emr_instance_types.py │ │ ├── test_emr_integration.py │ │ ├── test_server.py │ │ └── test_utils.py │ ├── test_emrcontainers/ │ │ ├── __init__.py │ │ ├── test_emrcontainers.py │ │ └── test_server.py │ ├── test_emrserverless/ │ │ ├── __init__.py │ │ ├── test_emrserverless.py │ │ └── test_server.py │ ├── test_es/ │ │ ├── __init__.py │ │ ├── test_domain_tags.py │ │ ├── test_es.py │ │ └── test_server.py │ ├── test_events/ │ │ ├── __init__.py │ │ ├── test_event_pattern.py │ │ ├── test_events.py │ │ ├── test_events_cloudformation.py │ │ ├── test_events_http_integration.py │ │ ├── test_events_integration.py │ │ ├── test_events_lambdatriggers_integration.py │ │ ├── test_events_partners_integration.py │ │ └── test_events_sfn_integration.py │ ├── test_firehose/ │ │ ├── __init__.py │ │ ├── test_firehose.py │ │ ├── test_firehose_destination_types.py │ │ ├── test_firehose_encryption.py │ │ ├── test_firehose_put.py │ │ ├── test_firehose_tags.py │ │ └── test_http_destinations.py │ ├── test_forecast/ │ │ ├── __init__.py │ │ └── test_forecast.py │ ├── test_fsx/ │ │ ├── __init__.py │ │ ├── test_fsx.py │ │ └── test_fsx_integration.py │ ├── test_glacier/ │ │ ├── __init__.py │ │ ├── test_glacier_archives.py │ │ ├── test_glacier_jobs.py │ │ ├── test_glacier_vaults.py │ │ └── test_server.py │ ├── test_glue/ │ │ ├── __init__.py │ │ ├── fixtures/ │ │ │ ├── __init__.py │ │ │ ├── datacatalog.py │ │ │ └── schema_registry.py │ │ ├── helpers.py │ │ ├── test_datacatalog.py │ │ ├── test_glue.py │ │ ├── test_glue_job_runs.py │ │ ├── test_partition_filter.py │ │ ├── test_schema_registry.py │ │ └── test_workflows.py │ ├── test_greengrass/ │ │ ├── __init__.py │ │ ├── test_greengrass_core.py │ │ ├── test_greengrass_deployment.py │ │ ├── test_greengrass_device.py │ │ ├── test_greengrass_functions.py │ │ ├── test_greengrass_groups.py │ │ ├── test_greengrass_resource.py │ │ └── test_greengrass_subscriptions.py │ ├── test_guardduty/ │ │ ├── __init__.py │ │ ├── test_guardduty.py │ │ ├── test_guardduty_filters.py │ │ ├── test_guardduty_organization.py │ │ └── test_server.py │ ├── test_iam/ │ │ ├── __init__.py │ │ ├── test_iam.py │ │ ├── test_iam_access_integration.py │ │ ├── test_iam_account_aliases.py │ │ ├── test_iam_cloudformation.py │ │ ├── test_iam_groups.py │ │ ├── test_iam_oidc.py │ │ ├── test_iam_password_last_used.py │ │ ├── test_iam_policies.py │ │ ├── test_iam_resets.py │ │ ├── test_iam_response_attributes.py │ │ ├── test_iam_server_certificates.py │ │ ├── test_iam_signing_certificates.py │ │ └── test_server.py │ ├── test_identitystore/ │ │ ├── __init__.py │ │ └── test_identitystore.py │ ├── test_inspector2/ │ │ ├── __init__.py │ │ ├── test_inspector2.py │ │ ├── test_inspector2_admin_accounts.py │ │ ├── test_inspector2_enable.py │ │ ├── test_inspector2_findings.py │ │ ├── test_inspector2_members.py │ │ ├── test_inspector2_organization.py │ │ └── test_inspector2_tags.py │ ├── test_iot/ │ │ ├── __init__.py │ │ ├── test_iot.py │ │ ├── test_iot_billing_groups.py │ │ ├── test_iot_ca_certificates.py │ │ ├── test_iot_certificates.py │ │ ├── test_iot_cloudformation.py │ │ ├── test_iot_deprecate_thing_type.py │ │ ├── test_iot_domain_configuration.py │ │ ├── test_iot_indexing_configuration.py │ │ ├── test_iot_integration.py │ │ ├── test_iot_job_executions.py │ │ ├── test_iot_job_templates.py │ │ ├── test_iot_jobs.py │ │ ├── test_iot_policies.py │ │ ├── test_iot_rolealias.py │ │ ├── test_iot_search.py │ │ ├── test_iot_thing_groups.py │ │ ├── test_iot_thing_types.py │ │ ├── test_iot_things.py │ │ ├── test_iot_topic_rules.py │ │ └── test_server.py │ ├── test_iotdata/ │ │ ├── __init__.py │ │ ├── test_iotdata.py │ │ └── test_server.py │ ├── test_ivs/ │ │ ├── __init__.py │ │ └── test_ivs.py │ ├── test_kafka/ │ │ ├── __init__.py │ │ └── test_kafka.py │ ├── test_kinesis/ │ │ ├── __init__.py │ │ ├── test_kinesis.py │ │ ├── test_kinesis_boto3.py │ │ ├── test_kinesis_cloudformation.py │ │ ├── test_kinesis_encryption.py │ │ ├── test_kinesis_monitoring.py │ │ ├── test_kinesis_resource_policy.py │ │ ├── test_kinesis_stream_consumers.py │ │ ├── test_kinesis_stream_limits.py │ │ └── test_server.py │ ├── test_kinesisanalyticsv2/ │ │ ├── __init__.py │ │ ├── test_kinesisanalyticsv2.py │ │ └── test_kinesisanalyticsv2_integration.py │ ├── test_kinesisvideo/ │ │ ├── __init__.py │ │ ├── test_kinesisvideo.py │ │ └── test_server.py │ ├── test_kinesisvideoarchivedmedia/ │ │ ├── __init__.py │ │ ├── test_kinesisvideoarchivedmedia.py │ │ └── test_server.py │ ├── test_kms/ │ │ ├── __init__.py │ │ ├── test_kms.py │ │ ├── test_kms_cloudformation.py │ │ ├── test_kms_encrypt.py │ │ ├── test_kms_grants.py │ │ ├── test_kms_key_rotation.py │ │ ├── test_kms_mac.py │ │ ├── test_kms_policy_enforcement.py │ │ ├── test_model.py │ │ ├── test_server.py │ │ └── test_utils.py │ ├── test_lakeformation/ │ │ ├── __init__.py │ │ ├── test_lakeformation.py │ │ ├── test_permission.py │ │ └── test_resource_tags_integration.py │ ├── test_lexv2models/ │ │ ├── __init__.py │ │ └── test_lexv2models.py │ ├── test_logs/ │ │ ├── __init__.py │ │ ├── test_export_tasks.py │ │ ├── test_integration.py │ │ ├── test_logs.py │ │ ├── test_logs_cloudformation.py │ │ ├── test_logs_filter_log_events.py │ │ ├── test_logs_metric_filters.py │ │ ├── test_logs_query/ │ │ │ ├── test_boto3.py │ │ │ ├── test_query.py │ │ │ └── test_query_parser.py │ │ ├── test_logs_tags.py │ │ └── test_models.py │ ├── test_macie/ │ │ ├── __init__.py │ │ └── test_macie.py │ ├── test_managedblockchain/ │ │ ├── __init__.py │ │ ├── helpers.py │ │ ├── test_managedblockchain_invitations.py │ │ ├── test_managedblockchain_members.py │ │ ├── test_managedblockchain_networks.py │ │ ├── test_managedblockchain_nodes.py │ │ ├── test_managedblockchain_proposals.py │ │ └── test_managedblockchain_proposalvotes.py │ ├── test_mediaconnect/ │ │ ├── __init__.py │ │ ├── test_mediaconnect.py │ │ └── test_server.py │ ├── test_medialive/ │ │ ├── __init__.py │ │ ├── test_medialive.py │ │ └── test_server.py │ ├── test_mediapackage/ │ │ ├── __init__.py │ │ ├── test_mediapackage.py │ │ └── test_server.py │ ├── test_mediapackagev2/ │ │ ├── __init__.py │ │ ├── test_interaction_mediapackage_v1_and_v2.py │ │ └── test_mediapackagev2.py │ ├── test_mediastore/ │ │ ├── __init__.py │ │ ├── test_mediastore.py │ │ └── test_server.py │ ├── test_mediastoredata/ │ │ ├── __init__.py │ │ ├── test_mediastoredata.py │ │ └── test_server.py │ ├── test_memorydb/ │ │ ├── __init__.py │ │ └── test_memorydb.py │ ├── test_meteringmarketplace/ │ │ └── test_meteringmarketplace.py │ ├── test_moto_api/ │ │ ├── __init__.py │ │ ├── mock_random/ │ │ │ └── test_mock_random.py │ │ ├── recorder/ │ │ │ ├── __init__.py │ │ │ └── test_recorder.py │ │ ├── seeder/ │ │ │ ├── __init__.py │ │ │ └── test_seeder.py │ │ └── state_manager/ │ │ ├── __init__.py │ │ ├── servermode/ │ │ │ ├── test_inmemory_server.py │ │ │ └── test_state_manager.py │ │ ├── test_batch_integration.py │ │ ├── test_managed_state_model.py │ │ └── test_state_manager.py │ ├── test_mq/ │ │ ├── __init__.py │ │ ├── test_mq.py │ │ ├── test_mq_configuration.py │ │ ├── test_mq_tags.py │ │ ├── test_mq_users.py │ │ └── test_server.py │ ├── test_neptune/ │ │ ├── __init__.py │ │ ├── test_cluster_options.py │ │ ├── test_cluster_tags.py │ │ ├── test_clusters.py │ │ └── test_global_clusters.py │ ├── test_networkfirewall/ │ │ ├── __init__.py │ │ └── test_networkfirewall.py │ ├── test_networkmanager/ │ │ ├── __init__.py │ │ ├── test_networkmanager.py │ │ └── test_server.py │ ├── test_opensearch/ │ │ ├── __init__.py │ │ ├── test_domain_tags.py │ │ └── test_opensearch.py │ ├── test_opensearchserverless/ │ │ ├── __init__.py │ │ └── test_opensearchserverless.py │ ├── test_organizations/ │ │ ├── __init__.py │ │ ├── organizations_test_utils.py │ │ └── test_organizations.py │ ├── test_osis/ │ │ ├── __init__.py │ │ ├── test_osis.py │ │ └── test_server.py │ ├── test_panorama/ │ │ ├── __init__.py │ │ ├── test_application_instance.py │ │ ├── test_nodes.py │ │ ├── test_panorama_device.py │ │ └── test_server.py │ ├── test_personalize/ │ │ ├── __init__.py │ │ └── test_personalize_schema.py │ ├── test_pinpoint/ │ │ ├── __init__.py │ │ ├── test_pinpoint.py │ │ ├── test_pinpoint_application_tags.py │ │ └── test_pinpoint_event_stream.py │ ├── test_pipes/ │ │ ├── __init__.py │ │ └── test_pipes.py │ ├── test_polly/ │ │ ├── __init__.py │ │ ├── test_polly.py │ │ └── test_server.py │ ├── test_quicksight/ │ │ ├── __init__.py │ │ ├── test_quicksight.py │ │ ├── test_quicksight_dashboard.py │ │ ├── test_quicksight_data_source.py │ │ ├── test_quicksight_datasets.py │ │ ├── test_quicksight_groups.py │ │ ├── test_quicksight_tagging.py │ │ └── test_quicksight_users.py │ ├── test_ram/ │ │ ├── test_ram.py │ │ └── test_ram_utils.py │ ├── test_rds/ │ │ ├── __init__.py │ │ ├── test_db_cluster_param_group.py │ │ ├── test_db_cluster_params.py │ │ ├── test_db_shard_group.py │ │ ├── test_filters.py │ │ ├── test_global_clusters.py │ │ ├── test_integrations.py │ │ ├── test_rds.py │ │ ├── test_rds_blue_green_deployment.py │ │ ├── test_rds_cloudformation.py │ │ ├── test_rds_clusters.py │ │ ├── test_rds_clusters_with_instances.py │ │ ├── test_rds_event_subscriptions.py │ │ ├── test_rds_export_tasks.py │ │ ├── test_rds_proxy.py │ │ ├── test_rds_proxy_target_groups.py │ │ ├── test_server.py │ │ └── test_utils.py │ ├── test_rdsdata/ │ │ ├── __init__.py │ │ └── test_rdsdata.py │ ├── test_redshift/ │ │ ├── __init__.py │ │ ├── test_redshift.py │ │ ├── test_redshift_cloudformation.py │ │ └── test_server.py │ ├── test_redshiftdata/ │ │ ├── __init__.py │ │ ├── test_redshiftdata.py │ │ ├── test_redshiftdata_constants.py │ │ └── test_server.py │ ├── test_rekognition/ │ │ ├── __init__.py │ │ └── test_rekognition.py │ ├── test_resiliencehub/ │ │ ├── __init__.py │ │ ├── test_resiliencehub.py │ │ ├── test_resiliencyhub_resources.py │ │ └── test_resiliencyhub_tagging.py │ ├── test_resourcegroups/ │ │ ├── __init__.py │ │ └── test_resourcegroups.py │ ├── test_resourcegroupstaggingapi/ │ │ ├── __init__.py │ │ ├── test_resourcegroupstagging_dynamodb.py │ │ ├── test_resourcegroupstagging_firehose.py │ │ ├── test_resourcegroupstagging_glue.py │ │ ├── test_resourcegroupstagging_logs.py │ │ ├── test_resourcegroupstagging_rds.py │ │ ├── test_resourcegroupstaggingapi.py │ │ ├── test_resourcegroupstaggingapi_kms.py │ │ ├── test_resourcegroupstaggingapi_workspaces.py │ │ ├── test_resourcegroupstaggingapi_workspacesweb.py │ │ └── test_server.py │ ├── test_route53/ │ │ ├── __init__.py │ │ ├── test_change_set_model.py │ │ ├── test_route53.py │ │ ├── test_route53_cloudformation.py │ │ ├── test_route53_delegationsets.py │ │ ├── test_route53_healthchecks.py │ │ ├── test_route53_hosted_zone_ids.py │ │ ├── test_route53_query_logging_config.py │ │ ├── test_route53_vpcs.py │ │ └── test_server.py │ ├── test_route53domains/ │ │ ├── __init__.py │ │ └── test_route53domains_domain.py │ ├── test_route53resolver/ │ │ ├── __init__.py │ │ ├── test_route53resolver.py │ │ ├── test_route53resolver_dnssec_config.py │ │ ├── test_route53resolver_endpoint.py │ │ ├── test_route53resolver_rule.py │ │ ├── test_route53resolver_rule_associations.py │ │ └── test_route53resolver_tags.py │ ├── test_s3/ │ │ ├── __init__.py │ │ ├── test_multiple_accounts_server.py │ │ ├── test_s3.py │ │ ├── test_s3_acl.py │ │ ├── test_s3_auth.py │ │ ├── test_s3_bucket_policy.py │ │ ├── test_s3_classdecorator.py │ │ ├── test_s3_cloudformation.py │ │ ├── test_s3_conditionals.py │ │ ├── test_s3_config.py │ │ ├── test_s3_content_encoding.py │ │ ├── test_s3_copyobject.py │ │ ├── test_s3_cross_account.py │ │ ├── test_s3_custom_endpoint.py │ │ ├── test_s3_encryption.py │ │ ├── test_s3_eventbridge_integration.py │ │ ├── test_s3_file_handles.py │ │ ├── test_s3_lambda_integration.py │ │ ├── test_s3_lifecycle.py │ │ ├── test_s3_list_object_versions.py │ │ ├── test_s3_list_objects.py │ │ ├── test_s3_locales.py │ │ ├── test_s3_lock.py │ │ ├── test_s3_logging.py │ │ ├── test_s3_metadata.py │ │ ├── test_s3_multipart.py │ │ ├── test_s3_notifications.py │ │ ├── test_s3_object_attributes.py │ │ ├── test_s3_ownership.py │ │ ├── test_s3_replication.py │ │ ├── test_s3_response_headers.py │ │ ├── test_s3_select.py │ │ ├── test_s3_storageclass.py │ │ ├── test_s3_tagging.py │ │ ├── test_s3_utils.py │ │ └── test_server.py │ ├── test_s3bucket_path/ │ │ ├── __init__.py │ │ ├── test_s3bucket_path_utils.py │ │ └── test_server.py │ ├── test_s3control/ │ │ ├── __init__.py │ │ ├── test_multi_region_access_points.py │ │ ├── test_s3control.py │ │ ├── test_s3control_access_points.py │ │ ├── test_s3control_accesspoint_policy.py │ │ ├── test_s3control_config_integration.py │ │ ├── test_s3control_s3.py │ │ └── test_s3control_tagging.py │ ├── test_s3tables/ │ │ ├── __init__.py │ │ ├── test_s3tables.py │ │ └── test_server.py │ ├── test_s3vectors/ │ │ ├── __init__.py │ │ ├── test_s3vector_buckets.py │ │ ├── test_s3vector_indexes.py │ │ ├── test_s3vector_policies.py │ │ └── test_s3vector_vectors.py │ ├── test_sagemaker/ │ │ ├── __init__.py │ │ ├── cloudformation_test_configs.py │ │ ├── test_sagemaker_automljobs.py │ │ ├── test_sagemaker_cloudformation.py │ │ ├── test_sagemaker_cluster.py │ │ ├── test_sagemaker_compilation_jobs.py │ │ ├── test_sagemaker_data_quality_jobs_definitions.py │ │ ├── test_sagemaker_domains.py │ │ ├── test_sagemaker_endpoint.py │ │ ├── test_sagemaker_experiment.py │ │ ├── test_sagemaker_feature_groups.py │ │ ├── test_sagemaker_hyper_parameter_tuning_job.py │ │ ├── test_sagemaker_model_bias_job_definitions.py │ │ ├── test_sagemaker_model_cards.py │ │ ├── test_sagemaker_model_expainability.py │ │ ├── test_sagemaker_model_package_groups.py │ │ ├── test_sagemaker_model_packages.py │ │ ├── test_sagemaker_model_quality.py │ │ ├── test_sagemaker_models.py │ │ ├── test_sagemaker_notebooks.py │ │ ├── test_sagemaker_pipeline.py │ │ ├── test_sagemaker_processing.py │ │ ├── test_sagemaker_search.py │ │ ├── test_sagemaker_training.py │ │ ├── test_sagemaker_transform.py │ │ ├── test_sagemaker_trial.py │ │ └── test_sagemaker_trial_component.py │ ├── test_sagemakermetrics/ │ │ ├── __init__.py │ │ ├── test_sagemakermetrics.py │ │ └── test_server.py │ ├── test_sagemakerruntime/ │ │ ├── __init__.py │ │ └── test_sagemakerruntime.py │ ├── test_scheduler/ │ │ ├── __init__.py │ │ ├── test_schedule_groups.py │ │ ├── test_scheduler.py │ │ ├── test_scheduler_tags.py │ │ └── test_server.py │ ├── test_sdb/ │ │ ├── __init__.py │ │ ├── test_sdb_attributes.py │ │ ├── test_sdb_domains.py │ │ └── test_server.py │ ├── test_secretsmanager/ │ │ ├── __init__.py │ │ ├── test_list_secrets.py │ │ ├── test_policy.py │ │ ├── test_rotate_simple_lambda.py │ │ ├── test_secrets_duplication.py │ │ ├── test_secretsmanager.py │ │ └── test_server.py │ ├── test_securityhub/ │ │ ├── __init__.py │ │ └── test_securityhub.py │ ├── test_servicecatalog/ │ │ ├── __init__.py │ │ ├── test_servicecatalog.py │ │ └── test_servicecatalog_integration.py │ ├── test_servicecatalogappregistry/ │ │ ├── __init__.py │ │ ├── test_servicecatalogappregistry.py │ │ └── test_servicecatalogappregistry_cloudformation.py │ ├── test_servicediscovery/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ ├── test_servicediscovery_httpnamespaces.py │ │ ├── test_servicediscovery_instance.py │ │ ├── test_servicediscovery_operations.py │ │ ├── test_servicediscovery_service.py │ │ └── test_servicediscovery_tags.py │ ├── test_servicequotas/ │ │ ├── __init__.py │ │ └── test_servicequotas.py │ ├── test_ses/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ ├── test_ses.py │ │ ├── test_ses_sns.py │ │ ├── test_ses_utils.py │ │ └── test_templating.py │ ├── test_sesv2/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ └── test_sesv2.py │ ├── test_shield/ │ │ ├── __init__.py │ │ └── test_shield.py │ ├── test_signer/ │ │ ├── __init__.py │ │ ├── test_signing_platforms.py │ │ └── test_signing_profiles.py │ ├── test_sns/ │ │ ├── __init__.py │ │ ├── test_application.py │ │ ├── test_http_message_verification.py │ │ ├── test_publish_batch.py │ │ ├── test_publishing.py │ │ ├── test_server.py │ │ ├── test_sns_cloudformation.py │ │ ├── test_subscriptions.py │ │ ├── test_topics.py │ │ └── test_utils.py │ ├── test_special_cases/ │ │ └── test_custom_amis.py │ ├── test_sqs/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ ├── test_sqs.py │ │ ├── test_sqs_authentication.py │ │ ├── test_sqs_cloudformation.py │ │ ├── test_sqs_integration.py │ │ ├── test_sqs_message_attributes.py │ │ └── test_sqs_multiaccount.py │ ├── test_ssm/ │ │ ├── __init__.py │ │ ├── test_ssm.py │ │ ├── test_ssm_cloudformation.py │ │ ├── test_ssm_default_amis.py │ │ ├── test_ssm_defaults.py │ │ ├── test_ssm_doc_permissions.py │ │ ├── test_ssm_docs.py │ │ ├── test_ssm_ec2_integration.py │ │ ├── test_ssm_ecs_images.py │ │ ├── test_ssm_maintenance_windows.py │ │ ├── test_ssm_parameterstore.py │ │ ├── test_ssm_parameterstore_cloudformation.py │ │ ├── test_ssm_patch_baseline.py │ │ ├── test_ssm_patch_group.py │ │ ├── test_ssm_secretsmanager.py │ │ ├── test_ssm_utils.py │ │ └── test_templates/ │ │ └── good.yaml │ ├── test_ssoadmin/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ ├── test_ssoadmin.py │ │ ├── test_ssoadmin_instances.py │ │ ├── test_ssoadmin_permission_sets.py │ │ └── test_ssoadmin_policies.py │ ├── test_stepfunctions/ │ │ ├── __init__.py │ │ ├── parser/ │ │ │ ├── __init__.py │ │ │ ├── templates/ │ │ │ │ ├── __init__.py │ │ │ │ ├── choice_state_singleton.json │ │ │ │ ├── comments/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── comments_as_per_docs.py │ │ │ │ │ └── comments_in_parameters.json │ │ │ │ ├── credentials.json │ │ │ │ ├── failure.json │ │ │ │ ├── json_regex.json │ │ │ │ ├── map_item_reader.json │ │ │ │ ├── map_item_reader_with_header.json │ │ │ │ ├── parallel_fail.json │ │ │ │ ├── parallel_states.json │ │ │ │ ├── parallel_states_catch.json │ │ │ │ ├── parallel_states_order.json │ │ │ │ ├── retry.py │ │ │ │ ├── retry_jitter_none.py │ │ │ │ ├── services/ │ │ │ │ │ ├── dynamodb_invalid_task_token.json │ │ │ │ │ ├── dynamodb_put_delete_item.json │ │ │ │ │ ├── dynamodb_put_item.json │ │ │ │ │ ├── dynamodb_task_token.json │ │ │ │ │ ├── dynamodb_zero_retry.json │ │ │ │ │ ├── sns_publish.json │ │ │ │ │ └── sqs_heartbeat.json │ │ │ │ ├── state_with_role.json │ │ │ │ ├── templates.py │ │ │ │ ├── wait_1.json │ │ │ │ └── wait_15.json │ │ │ ├── test_choice_state.py │ │ │ ├── test_comments.py │ │ │ ├── test_map_item.py │ │ │ ├── test_parallel_states.py │ │ │ ├── test_stepfunctions.py │ │ │ ├── test_stepfunctions_dynamodb_integration.py │ │ │ ├── test_stepfunctions_idempotency.py │ │ │ ├── test_stepfunctions_lambda_integration.py │ │ │ ├── test_stepfunctions_lambda_retry_integration.py │ │ │ ├── test_stepfunctions_sns_integration.py │ │ │ └── test_stepfunctions_sqs_integration.py │ │ ├── test_stepfunctions.py │ │ ├── test_stepfunctions_cloudformation.py │ │ ├── test_stepfunctions_idempotency.py │ │ └── test_stepfunctions_versions.py │ ├── test_sts/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ ├── test_sts.py │ │ └── test_sts_integration.py │ ├── test_support/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ └── test_support.py │ ├── test_swf/ │ │ ├── __init__.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── test_activity_task.py │ │ │ ├── test_decision_task.py │ │ │ ├── test_domain.py │ │ │ ├── test_generic_type.py │ │ │ ├── test_history_event.py │ │ │ ├── test_timeout.py │ │ │ ├── test_timer.py │ │ │ └── test_workflow_execution.py │ │ ├── responses/ │ │ │ ├── __init__.py │ │ │ ├── test_activity_tasks.py │ │ │ ├── test_activity_types.py │ │ │ ├── test_decision_tasks.py │ │ │ ├── test_domains.py │ │ │ ├── test_timeouts.py │ │ │ ├── test_workflow_executions.py │ │ │ └── test_workflow_types.py │ │ ├── test_exceptions.py │ │ ├── test_utils.py │ │ └── utils.py │ ├── test_synthetics/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ └── test_synthetics.py │ ├── test_textract/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ └── test_textract.py │ ├── test_timestreaminfluxdb/ │ │ ├── __init__.py │ │ ├── test_timestreaminfluxdb.py │ │ └── test_timestreaminfluxdb_tagging.py │ ├── test_timestreamquery/ │ │ ├── __init__.py │ │ └── test_timestreamquery.py │ ├── test_timestreamwrite/ │ │ ├── __init__.py │ │ ├── test_server.py │ │ ├── test_timestreamwrite_database.py │ │ ├── test_timestreamwrite_table.py │ │ └── test_timestreamwrite_tagging.py │ ├── test_transcribe/ │ │ ├── __init__.py │ │ └── test_transcribe.py │ ├── test_transfer/ │ │ ├── __init__.py │ │ └── test_transfer.py │ ├── test_utilities/ │ │ ├── test_docker_utilities.py │ │ ├── test_id_generator.py │ │ ├── test_paginator.py │ │ ├── test_tagging_service.py │ │ ├── test_threaded_server.py │ │ └── test_utils.py │ ├── test_vpclattice/ │ │ ├── __init__.py │ │ ├── test_vpclattice.py │ │ └── test_vpclattice_integration.py │ ├── test_wafv2/ │ │ ├── __init__.py │ │ ├── test_helper_functions.py │ │ ├── test_regex_pattern_sets.py │ │ ├── test_server.py │ │ ├── test_utils.py │ │ ├── test_wafv2.py │ │ ├── test_wafv2_integration.py │ │ ├── test_wafv2_logging_configuration.py │ │ ├── test_wafv2_rules.py │ │ └── test_wafv2_tags.py │ ├── test_workspaces/ │ │ ├── __init__.py │ │ └── test_workspaces.py │ ├── test_workspacesweb/ │ │ ├── __init__.py │ │ └── test_workspacesweb.py │ └── test_xray/ │ ├── __init__.py │ ├── test_xray.py │ └── test_xray_client.py └── update_version_from_git.py
Showing preview only (2,214K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (25067 symbols across 1254 files)
FILE: moto/account/exceptions.py
class UnknownContactType (line 6) | class UnknownContactType(JsonRESTError):
method __init__ (line 7) | def __init__(self, user_arn: str, action: str):
class UnspecifiedContactType (line 12) | class UnspecifiedContactType(JsonRESTError):
method __init__ (line 13) | def __init__(self) -> None:
FILE: moto/account/models.py
class AlternateContact (line 15) | class AlternateContact(BaseModel):
class AccountBackend (line 23) | class AccountBackend(BaseBackend):
method __init__ (line 24) | def __init__(self, region_name: str, account_id: str):
method put_alternate_contact (line 28) | def put_alternate_contact(
method get_alternate_contact (line 44) | def get_alternate_contact(self, alternate_contact_type: str) -> Altern...
method delete_alternate_contact (line 49) | def delete_alternate_contact(self, alternate_contact_type: str) -> None:
FILE: moto/account/responses.py
class AccountResponse (line 9) | class AccountResponse(BaseResponse):
method __init__ (line 10) | def __init__(self) -> None:
method put_alternate_contact (line 13) | def put_alternate_contact(self) -> ActionResult:
method get_alternate_contact (line 32) | def get_alternate_contact(self) -> ActionResult:
method delete_alternate_contact (line 43) | def delete_alternate_contact(self) -> EmptyResult:
method _get_account_id (line 52) | def _get_account_id(self) -> str:
method _get_contact_type (line 55) | def _get_contact_type(self, account_id: str) -> str:
FILE: moto/acm/exceptions.py
class AWSValidationException (line 4) | class AWSValidationException(AWSError):
class AWSResourceNotFoundException (line 8) | class AWSResourceNotFoundException(AWSError):
class CertificateNotFound (line 12) | class CertificateNotFound(AWSResourceNotFoundException):
method __init__ (line 13) | def __init__(self, arn: str, account_id: str):
class AWSTooManyTagsException (line 19) | class AWSTooManyTagsException(AWSError):
FILE: moto/acm/models.py
function datetime_to_epoch (line 62) | def datetime_to_epoch(date: datetime.datetime) -> float:
class TagHolder (line 67) | class TagHolder(dict[str, Optional[str]]):
method _validate_kv (line 72) | def _validate_kv(self, key: str, value: Optional[str], index: int) -> ...
method add (line 86) | def add(self, tags: list[dict[str, str]]) -> None:
method remove (line 104) | def remove(self, tags: list[dict[str, str]]) -> None:
method equals (line 119) | def equals(self, tags: list[dict[str, str]]) -> bool:
class CertBundle (line 124) | class CertBundle(BaseModel):
method __init__ (line 125) | def __init__(
method generate_cert (line 171) | def generate_cert(
method validate_pk (line 249) | def validate_pk(self) -> Any:
method validate_certificate (line 261) | def validate_certificate(self) -> cryptography.x509.base.Certificate:
method _not_valid_after (line 286) | def _not_valid_after(
method _not_valid_before (line 294) | def _not_valid_before(
method validate_chain (line 302) | def validate_chain(self) -> None:
method check (line 330) | def check(self) -> None:
method describe (line 348) | def describe(self) -> dict[str, Any]:
method serialize_pk (line 437) | def serialize_pk(self, passphrase_bytes: bytes) -> str:
method __str__ (line 447) | def __str__(self) -> str:
method __repr__ (line 450) | def __repr__(self) -> str:
class AccountConfiguration (line 454) | class AccountConfiguration:
method __init__ (line 455) | def __init__(self, days_before_expiry: int = 45):
method to_dict (line 458) | def to_dict(self): # type: ignore
class AWSCertificateManagerBackend (line 462) | class AWSCertificateManagerBackend(BaseBackend):
method __init__ (line 465) | def __init__(self, region_name: str, account_id: str):
method set_certificate_in_use_by (line 471) | def set_certificate_in_use_by(self, arn: str, load_balancer_name: str)...
method _get_arn_from_idempotency_token (line 478) | def _get_arn_from_idempotency_token(self, token: str) -> Optional[str]:
method _set_idempotency_token_arn (line 501) | def _set_idempotency_token_arn(self, token: str, arn: str) -> None:
method import_certificate (line 507) | def import_certificate(
method list_certificates (line 545) | def list_certificates(
method get_certificate (line 572) | def get_certificate(self, arn: str) -> CertBundle:
method describe_certificate (line 580) | def describe_certificate(self, arn: str) -> CertBundle:
method delete_certificate (line 583) | def delete_certificate(self, arn: str) -> None:
method request_certificate (line 589) | def request_certificate(
method add_tags_to_certificate (line 625) | def add_tags_to_certificate(self, arn: str, tags: list[dict[str, str]]...
method remove_tags_from_certificate (line 630) | def remove_tags_from_certificate(
method export_certificate (line 637) | def export_certificate(
method get_account_configuration (line 658) | def get_account_configuration(self) -> dict[str, Any]:
method put_account_configuration (line 661) | def put_account_configuration(
FILE: moto/acm/responses.py
class AWSCertificateManagerResponse (line 13) | class AWSCertificateManagerResponse(BaseResponse):
method __init__ (line 14) | def __init__(self) -> None:
method acm_backend (line 18) | def acm_backend(self) -> AWSCertificateManagerBackend:
method add_tags_to_certificate (line 21) | def add_tags_to_certificate(self) -> GENERIC_RESPONSE_TYPE:
method delete_certificate (line 36) | def delete_certificate(self) -> GENERIC_RESPONSE_TYPE:
method describe_certificate (line 50) | def describe_certificate(self) -> GENERIC_RESPONSE_TYPE:
method get_certificate (line 64) | def get_certificate(self) -> GENERIC_RESPONSE_TYPE:
method import_certificate (line 82) | def import_certificate(self) -> str:
method list_certificates (line 129) | def list_certificates(self) -> str:
method list_tags_for_certificate (line 143) | def list_tags_for_certificate(self) -> GENERIC_RESPONSE_TYPE:
method remove_tags_from_certificate (line 164) | def remove_tags_from_certificate(self) -> GENERIC_RESPONSE_TYPE:
method request_certificate (line 179) | def request_certificate(self) -> GENERIC_RESPONSE_TYPE:
method resend_validation_email (line 208) | def resend_validation_email(self) -> GENERIC_RESPONSE_TYPE:
method export_certificate (line 233) | def export_certificate(self) -> GENERIC_RESPONSE_TYPE:
method get_account_configuration (line 259) | def get_account_configuration(self) -> str:
method put_account_configuration (line 263) | def put_account_configuration(self) -> str:
FILE: moto/acm/utils.py
function make_arn_for_certificate (line 5) | def make_arn_for_certificate(account_id: str, region_name: str) -> str:
FILE: moto/acmpca/exceptions.py
class ResourceNotFoundException (line 6) | class ResourceNotFoundException(JsonRESTError):
method __init__ (line 7) | def __init__(self, arn: str):
class InvalidS3ObjectAclInCrlConfiguration (line 11) | class InvalidS3ObjectAclInCrlConfiguration(JsonRESTError):
method __init__ (line 14) | def __init__(self, value: str):
class InvalidStateException (line 21) | class InvalidStateException(JsonRESTError):
method __init__ (line 24) | def __init__(self, arn: str):
class MalformedCertificateAuthorityException (line 31) | class MalformedCertificateAuthorityException(JsonRESTError):
method __init__ (line 34) | def __init__(self) -> None:
class InvalidPolicyException (line 41) | class InvalidPolicyException(JsonRESTError):
method __init__ (line 42) | def __init__(self) -> None:
class LockoutPreventedException (line 49) | class LockoutPreventedException(JsonRESTError):
method __init__ (line 50) | def __init__(self) -> None:
class ConcurrentModificationException (line 57) | class ConcurrentModificationException(JsonRESTError):
method __init__ (line 58) | def __init__(self) -> None:
class RequestInProgressException (line 65) | class RequestInProgressException(JsonRESTError):
method __init__ (line 66) | def __init__(self, message: str):
FILE: moto/acmpca/models.py
class CertificateAuthority (line 30) | class CertificateAuthority(BaseModel):
method __init__ (line 31) | def __init__(
method generate_cert (line 74) | def generate_cert(
method key (line 98) | def key(self) -> rsa.RSAPrivateKey:
method certificate (line 106) | def certificate(self) -> Optional[x509.Certificate]:
method issuer (line 112) | def issuer(self) -> x509.Name:
method csr (line 144) | def csr(self) -> bytes:
method issue_certificate (line 156) | def issue_certificate(self, csr_bytes: bytes, template_arn: Optional[s...
method _x509_extensions (line 179) | def _x509_extensions(
method get_certificate (line 278) | def get_certificate(self, certificate_arn: str) -> tuple[bytes, bytes]:
method set_revocation_configuration (line 285) | def set_revocation_configuration(
method not_valid_after (line 303) | def not_valid_after(self) -> Optional[float]:
method not_valid_before (line 312) | def not_valid_before(self) -> Optional[float]:
method import_certificate_authority_certificate (line 320) | def import_certificate_authority_certificate(
method to_json (line 333) | def to_json(self) -> dict[str, Any]:
class ACMPCABackend (line 357) | class ACMPCABackend(BaseBackend):
method __init__ (line 369) | def __init__(self, region_name: str, account_id: str):
method create_certificate_authority (line 374) | def create_certificate_authority(
method describe_certificate_authority (line 398) | def describe_certificate_authority(
method get_certificate_authority_certificate (line 405) | def get_certificate_authority_certificate(
method get_certificate_authority_csr (line 413) | def get_certificate_authority_csr(self, certificate_authority_arn: str...
method list_tags (line 417) | def list_tags(
method update_certificate_authority (line 425) | def update_certificate_authority(
method delete_certificate_authority (line 437) | def delete_certificate_authority(self, certificate_authority_arn: str)...
method issue_certificate (line 441) | def issue_certificate(
method get_certificate (line 452) | def get_certificate(
method import_certificate_authority_certificate (line 470) | def import_certificate_authority_certificate(
method revoke_certificate (line 479) | def revoke_certificate(
method tag_certificate_authority (line 497) | def tag_certificate_authority(
method untag_certificate_authority (line 502) | def untag_certificate_authority(
method put_policy (line 507) | def put_policy(self, resource_arn: str, policy: str) -> None:
method get_policy (line 516) | def get_policy(self, resource_arn: str) -> str:
method delete_policy (line 525) | def delete_policy(self, resource_arn: str) -> None:
method list_certificate_authorities (line 533) | def list_certificate_authorities(
FILE: moto/acmpca/responses.py
class ACMPCAResponse (line 12) | class ACMPCAResponse(BaseResponse):
method __init__ (line 15) | def __init__(self) -> None:
method acmpca_backend (line 19) | def acmpca_backend(self) -> ACMPCABackend:
method create_certificate_authority (line 23) | def create_certificate_authority(self) -> str:
method describe_certificate_authority (line 41) | def describe_certificate_authority(self) -> str:
method get_certificate_authority_certificate (line 49) | def get_certificate_authority_certificate(self) -> str:
method get_certificate_authority_csr (line 71) | def get_certificate_authority_csr(self) -> str:
method list_tags (line 79) | def list_tags(self) -> str:
method update_certificate_authority (line 87) | def update_certificate_authority(self) -> str:
method delete_certificate_authority (line 99) | def delete_certificate_authority(self) -> str:
method issue_certificate (line 107) | def issue_certificate(self) -> str:
method get_certificate (line 119) | def get_certificate(self) -> str:
method import_certificate_authority_certificate (line 136) | def import_certificate_authority_certificate(self) -> str:
method revoke_certificate (line 149) | def revoke_certificate(self) -> str:
method tag_certificate_authority (line 161) | def tag_certificate_authority(self) -> str:
method untag_certificate_authority (line 171) | def untag_certificate_authority(self) -> str:
method put_policy (line 181) | def put_policy(self) -> str:
method get_policy (line 188) | def get_policy(self) -> str:
method delete_policy (line 194) | def delete_policy(self) -> str:
method list_certificate_authorities (line 200) | def list_certificate_authorities(self) -> str:
FILE: moto/amp/exceptions.py
class AmpException (line 6) | class AmpException(JsonRESTError):
class ResourceNotFoundException (line 10) | class ResourceNotFoundException(AmpException):
method __init__ (line 11) | def __init__(self, message: str, resource_id: str, resource_type: str):
class WorkspaceNotFound (line 22) | class WorkspaceNotFound(ResourceNotFoundException):
method __init__ (line 25) | def __init__(self, workspace_id: str):
class RuleGroupNamespaceNotFound (line 33) | class RuleGroupNamespaceNotFound(ResourceNotFoundException):
method __init__ (line 36) | def __init__(self, name: str):
FILE: moto/amp/models.py
class RuleGroupNamespace (line 18) | class RuleGroupNamespace(BaseModel):
method __init__ (line 19) | def __init__(
method update (line 35) | def update(self, new_data: str) -> None:
method to_dict (line 39) | def to_dict(self) -> dict[str, Any]:
class Workspace (line 51) | class Workspace(BaseModel):
method __init__ (line 52) | def __init__(
method to_dict (line 69) | def to_dict(self) -> dict[str, Any]:
class PrometheusServiceBackend (line 81) | class PrometheusServiceBackend(BaseBackend):
method __init__ (line 84) | def __init__(self, region_name: str, account_id: str):
method create_workspace (line 89) | def create_workspace(self, alias: str, tags: dict[str, str]) -> Worksp...
method describe_workspace (line 103) | def describe_workspace(self, workspace_id: str) -> Workspace:
method list_tags_for_resource (line 108) | def list_tags_for_resource(self, resource_arn: str) -> dict[str, str]:
method update_workspace_alias (line 111) | def update_workspace_alias(self, alias: str, workspace_id: str) -> None:
method delete_workspace (line 117) | def delete_workspace(self, workspace_id: str) -> None:
method list_workspaces (line 124) | def list_workspaces(self, alias: str) -> list[Workspace]:
method tag_resource (line 129) | def tag_resource(self, resource_arn: str, tags: dict[str, str]) -> None:
method untag_resource (line 133) | def untag_resource(self, resource_arn: str, tag_keys: list[str]) -> None:
method create_rule_groups_namespace (line 136) | def create_rule_groups_namespace(
method delete_rule_groups_namespace (line 155) | def delete_rule_groups_namespace(self, name: str, workspace_id: str) -...
method describe_rule_groups_namespace (line 162) | def describe_rule_groups_namespace(
method put_rule_groups_namespace (line 170) | def put_rule_groups_namespace(
method list_rule_groups_namespaces (line 181) | def list_rule_groups_namespaces(
method create_logging_configuration (line 193) | def create_logging_configuration(
method describe_logging_configuration (line 205) | def describe_logging_configuration(self, workspace_id: str) -> dict[st...
method delete_logging_configuration (line 211) | def delete_logging_configuration(self, workspace_id: str) -> None:
method update_logging_configuration (line 215) | def update_logging_configuration(
FILE: moto/amp/responses.py
class PrometheusServiceResponse (line 12) | class PrometheusServiceResponse(BaseResponse):
method tags (line 15) | def tags(self, request: Any, full_url: str, headers: Any) -> str: # t...
method __init__ (line 24) | def __init__(self) -> None:
method amp_backend (line 28) | def amp_backend(self) -> PrometheusServiceBackend:
method create_workspace (line 32) | def create_workspace(self) -> str:
method describe_workspace (line 39) | def describe_workspace(self) -> str:
method list_tags_for_resource (line 44) | def list_tags_for_resource(self) -> str:
method update_workspace_alias (line 49) | def update_workspace_alias(self) -> str:
method delete_workspace (line 56) | def delete_workspace(self) -> str:
method list_workspaces (line 61) | def list_workspaces(self) -> str:
method tag_resource (line 72) | def tag_resource(self) -> str:
method untag_resource (line 79) | def untag_resource(self) -> str:
method create_rule_groups_namespace (line 85) | def create_rule_groups_namespace(self) -> str:
method delete_rule_groups_namespace (line 99) | def delete_rule_groups_namespace(self) -> str:
method describe_rule_groups_namespace (line 108) | def describe_rule_groups_namespace(self) -> str:
method put_rule_groups_namespace (line 116) | def put_rule_groups_namespace(self) -> str:
method list_rule_groups_namespaces (line 128) | def list_rule_groups_namespaces(self) -> str:
method create_logging_configuration (line 146) | def create_logging_configuration(self) -> str:
method describe_logging_configuration (line 155) | def describe_logging_configuration(self) -> str:
method update_logging_configuration (line 162) | def update_logging_configuration(self) -> str:
method delete_logging_configuration (line 170) | def delete_logging_configuration(self) -> str:
FILE: moto/apigateway/exceptions.py
class ApiGatewayException (line 6) | class ApiGatewayException(JsonRESTError):
class BadRequestException (line 10) | class BadRequestException(ApiGatewayException):
method __init__ (line 11) | def __init__(self, message: str):
class NotFoundException (line 15) | class NotFoundException(ApiGatewayException):
method __init__ (line 16) | def __init__(self, message: str):
class AccessDeniedException (line 20) | class AccessDeniedException(ApiGatewayException):
class ConflictException (line 24) | class ConflictException(ApiGatewayException):
method __init__ (line 27) | def __init__(self, message: str):
class AwsProxyNotAllowed (line 31) | class AwsProxyNotAllowed(BadRequestException):
method __init__ (line 32) | def __init__(self) -> None:
class CrossAccountNotAllowed (line 38) | class CrossAccountNotAllowed(AccessDeniedException):
method __init__ (line 39) | def __init__(self) -> None:
class RoleNotSpecified (line 45) | class RoleNotSpecified(BadRequestException):
method __init__ (line 46) | def __init__(self) -> None:
class IntegrationMethodNotDefined (line 50) | class IntegrationMethodNotDefined(BadRequestException):
method __init__ (line 51) | def __init__(self) -> None:
class InvalidOpenAPIDocumentException (line 55) | class InvalidOpenAPIDocumentException(BadRequestException):
method __init__ (line 56) | def __init__(self, cause: Any):
class InvalidOpenApiDocVersionException (line 62) | class InvalidOpenApiDocVersionException(BadRequestException):
method __init__ (line 63) | def __init__(self) -> None:
class InvalidOpenApiModeException (line 67) | class InvalidOpenApiModeException(BadRequestException):
method __init__ (line 68) | def __init__(self) -> None:
class InvalidResourcePathException (line 74) | class InvalidResourcePathException(BadRequestException):
method __init__ (line 75) | def __init__(self) -> None:
class InvalidHttpEndpoint (line 81) | class InvalidHttpEndpoint(BadRequestException):
method __init__ (line 82) | def __init__(self) -> None:
class InvalidArn (line 86) | class InvalidArn(BadRequestException):
method __init__ (line 87) | def __init__(self) -> None:
class InvalidIntegrationArn (line 91) | class InvalidIntegrationArn(BadRequestException):
method __init__ (line 92) | def __init__(self) -> None:
class InvalidRequestInput (line 96) | class InvalidRequestInput(BadRequestException):
method __init__ (line 97) | def __init__(self) -> None:
class NoIntegrationDefined (line 101) | class NoIntegrationDefined(NotFoundException):
method __init__ (line 102) | def __init__(self) -> None:
class NoIntegrationResponseDefined (line 106) | class NoIntegrationResponseDefined(NotFoundException):
method __init__ (line 109) | def __init__(self) -> None:
class NoMethodDefined (line 113) | class NoMethodDefined(BadRequestException):
method __init__ (line 114) | def __init__(self) -> None:
class AuthorizerNotFoundException (line 118) | class AuthorizerNotFoundException(NotFoundException):
method __init__ (line 121) | def __init__(self) -> None:
class StageNotFoundException (line 125) | class StageNotFoundException(NotFoundException):
method __init__ (line 128) | def __init__(self) -> None:
class ApiKeyNotFoundException (line 132) | class ApiKeyNotFoundException(NotFoundException):
method __init__ (line 135) | def __init__(self) -> None:
class UsagePlanNotFoundException (line 139) | class UsagePlanNotFoundException(NotFoundException):
method __init__ (line 142) | def __init__(self) -> None:
class ApiKeyAlreadyExists (line 146) | class ApiKeyAlreadyExists(ApiGatewayException):
method __init__ (line 149) | def __init__(self) -> None:
class InvalidDomainName (line 153) | class InvalidDomainName(BadRequestException):
method __init__ (line 156) | def __init__(self) -> None:
class DomainNameNotFound (line 160) | class DomainNameNotFound(NotFoundException):
method __init__ (line 163) | def __init__(self) -> None:
class InvalidRestApiId (line 167) | class InvalidRestApiId(BadRequestException):
method __init__ (line 170) | def __init__(self) -> None:
class InvalidModelName (line 174) | class InvalidModelName(BadRequestException):
method __init__ (line 177) | def __init__(self) -> None:
class RestAPINotFound (line 181) | class RestAPINotFound(NotFoundException):
method __init__ (line 184) | def __init__(self) -> None:
class RequestValidatorNotFound (line 188) | class RequestValidatorNotFound(BadRequestException):
method __init__ (line 191) | def __init__(self) -> None:
class ModelNotFound (line 195) | class ModelNotFound(NotFoundException):
method __init__ (line 198) | def __init__(self) -> None:
class ApiKeyValueMinLength (line 202) | class ApiKeyValueMinLength(BadRequestException):
method __init__ (line 205) | def __init__(self) -> None:
class MethodNotFoundException (line 209) | class MethodNotFoundException(NotFoundException):
method __init__ (line 212) | def __init__(self) -> None:
class InvalidBasePathException (line 216) | class InvalidBasePathException(BadRequestException):
method __init__ (line 219) | def __init__(self) -> None:
class DeploymentNotFoundException (line 226) | class DeploymentNotFoundException(NotFoundException):
method __init__ (line 227) | def __init__(self) -> None:
class InvalidRestApiIdForBasePathMappingException (line 231) | class InvalidRestApiIdForBasePathMappingException(BadRequestException):
method __init__ (line 234) | def __init__(self) -> None:
class InvalidStageException (line 238) | class InvalidStageException(BadRequestException):
method __init__ (line 241) | def __init__(self) -> None:
class BasePathConflictException (line 245) | class BasePathConflictException(ConflictException):
method __init__ (line 246) | def __init__(self) -> None:
class BasePathNotFoundException (line 250) | class BasePathNotFoundException(NotFoundException):
method __init__ (line 253) | def __init__(self) -> None:
class ResourceIdNotFoundException (line 257) | class ResourceIdNotFoundException(NotFoundException):
method __init__ (line 260) | def __init__(self) -> None:
class VpcLinkNotFound (line 264) | class VpcLinkNotFound(NotFoundException):
method __init__ (line 267) | def __init__(self) -> None:
class ValidationException (line 271) | class ValidationException(ApiGatewayException):
method __init__ (line 274) | def __init__(self, message: str):
class StageStillActive (line 278) | class StageStillActive(BadRequestException):
method __init__ (line 279) | def __init__(self) -> None:
class GatewayResponseNotFound (line 285) | class GatewayResponseNotFound(NotFoundException):
method __init__ (line 286) | def __init__(self) -> None:
FILE: moto/apigateway/integration_parsers/__init__.py
class IntegrationParser (line 9) | class IntegrationParser:
method invoke (line 11) | def invoke(
FILE: moto/apigateway/integration_parsers/aws_parser.py
class TypeAwsParser (line 9) | class TypeAwsParser(IntegrationParser):
method invoke (line 10) | def invoke(
FILE: moto/apigateway/integration_parsers/http_parser.py
class TypeHttpParser (line 9) | class TypeHttpParser(IntegrationParser):
method invoke (line 14) | def invoke(
FILE: moto/apigateway/integration_parsers/unknown_parser.py
class TypeUnknownParser (line 9) | class TypeUnknownParser(IntegrationParser):
method invoke (line 14) | def invoke(
FILE: moto/apigateway/models.py
class Deployment (line 90) | class Deployment(CloudFormationModel):
method __init__ (line 91) | def __init__(self, deployment_id: str, name: str, description: str = ""):
method to_json (line 97) | def to_json(self) -> dict[str, Any]:
method cloudformation_name_type (line 106) | def cloudformation_name_type() -> str:
method cloudformation_type (line 110) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 114) | def create_from_cloudformation_json( # type: ignore[misc]
class IntegrationResponse (line 132) | class IntegrationResponse(BaseModel):
method __init__ (line 133) | def __init__(
method to_json (line 154) | def to_json(self) -> dict[str, Any]:
class Integration (line 168) | class Integration(BaseModel):
method __init__ (line 169) | def __init__(
method to_json (line 200) | def to_json(self) -> dict[str, Any]:
method create_integration_response (line 223) | def create_integration_response(
method get_integration_response (line 243) | def get_integration_response(self, status_code: str) -> IntegrationRes...
method delete_integration_response (line 249) | def delete_integration_response(self, status_code: str) -> Integration...
class MethodResponse (line 253) | class MethodResponse(BaseModel):
method __init__ (line 254) | def __init__(
method to_json (line 264) | def to_json(self) -> dict[str, Any]:
class Method (line 272) | class Method(CloudFormationModel):
method __init__ (line 273) | def __init__(
method to_json (line 288) | def to_json(self) -> dict[str, Any]:
method cloudformation_name_type (line 308) | def cloudformation_name_type() -> str:
method cloudformation_type (line 312) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 316) | def create_from_cloudformation_json( # type: ignore[misc]
method create_response (line 351) | def create_response(
method get_response (line 363) | def get_response(self, response_code: str) -> Optional[MethodResponse]:
method delete_response (line 366) | def delete_response(self, response_code: str) -> Optional[MethodRespon...
class Resource (line 370) | class Resource(CloudFormationModel):
method __init__ (line 371) | def __init__(
method to_dict (line 398) | def to_dict(self) -> dict[str, Any]:
method physical_resource_id (line 413) | def physical_resource_id(self) -> str:
method cloudformation_name_type (line 417) | def cloudformation_name_type() -> str:
method cloudformation_type (line 421) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 425) | def create_from_cloudformation_json( # type: ignore[misc]
method get_path (line 450) | def get_path(self) -> str:
method get_parent_path (line 453) | def get_parent_path(self) -> str:
method get_response (line 464) | def get_response(
method add_method (line 477) | def add_method(
method get_method (line 505) | def get_method(self, method_type: str) -> Method:
method delete_method (line 511) | def delete_method(self, method_type: str) -> None:
method add_integration (line 514) | def add_integration(
method get_integration (line 548) | def get_integration(self, method_type: str) -> Optional[Integration]:
method delete_integration (line 552) | def delete_integration(self, method_type: str) -> Integration:
class Authorizer (line 558) | class Authorizer(BaseModel):
method __init__ (line 559) | def __init__(
method to_json (line 579) | def to_json(self) -> dict[str, Any]:
method apply_operations (line 600) | def apply_operations(self, patch_operations: list[dict[str, Any]]) -> ...
class Stage (line 628) | class Stage(BaseModel):
method __init__ (line 629) | def __init__(
method to_json (line 655) | def to_json(self) -> dict[str, Any]:
method apply_operations (line 680) | def apply_operations(self, patch_operations: list[dict[str, Any]]) -> ...
method _patch_method_setting (line 719) | def _patch_method_setting(
method _get_default_method_settings (line 732) | def _get_default_method_settings(self) -> dict[str, Any]:
method _method_settings_translations (line 745) | def _method_settings_translations(self, key: str) -> Optional[str]:
method _str2bool (line 761) | def _str2bool(self, v: str) -> bool:
method _convert_to_type (line 764) | def _convert_to_type(self, key: str, val: str) -> Union[str, int, float]:
method _apply_operation_to_variables (line 792) | def _apply_operation_to_variables(self, op: dict[str, Any]) -> None:
class ApiKey (line 802) | class ApiKey(BaseModel):
method __init__ (line 803) | def __init__(
method to_json (line 827) | def to_json(self) -> dict[str, Any]:
method update_operations (line 841) | def update_operations(self, patch_operations: list[dict[str, Any]]) ->...
method _str2bool (line 856) | def _str2bool(self, v: str) -> bool:
class UsagePlan (line 860) | class UsagePlan(BaseModel):
method __init__ (line 861) | def __init__(
method to_json (line 881) | def to_json(self) -> dict[str, Any]:
method apply_patch_operations (line 896) | def apply_patch_operations(self, patch_operations: list[dict[str, Any]...
class RequestValidator (line 939) | class RequestValidator(BaseModel):
method __init__ (line 951) | def __init__(
method apply_patch_operations (line 963) | def apply_patch_operations(self, operations: list[dict[str, Any]]) -> ...
method to_dict (line 975) | def to_dict(self) -> dict[str, Any]:
class UsagePlanKey (line 984) | class UsagePlanKey(BaseModel):
method __init__ (line 985) | def __init__(self, plan_id: str, plan_type: str, name: Optional[str], ...
method to_json (line 991) | def to_json(self) -> dict[str, Any]:
class VpcLink (line 1000) | class VpcLink(BaseModel):
method __init__ (line 1001) | def __init__(
method to_json (line 1016) | def to_json(self) -> dict[str, Any]:
class RestAPI (line 1027) | class RestAPI(CloudFormationModel):
method __init__ (line 1050) | def __init__(
method __repr__ (line 1087) | def __repr__(self) -> str:
method to_dict (line 1090) | def to_dict(self) -> dict[str, Any]:
method apply_patch_operations (line 1107) | def apply_patch_operations(self, patch_operations: list[dict[str, Any]...
method has_cfn_attr (line 1141) | def has_cfn_attr(cls, attr: str) -> bool:
method get_cfn_attribute (line 1144) | def get_cfn_attribute(self, attribute_name: str) -> Any:
method physical_resource_id (line 1155) | def physical_resource_id(self) -> str:
method cloudformation_name_type (line 1159) | def cloudformation_name_type() -> str:
method cloudformation_type (line 1163) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 1167) | def create_from_cloudformation_json( # type: ignore[misc]
method add_child (line 1184) | def add_child(self, path: str, parent_id: Optional[str] = None) -> Res...
method add_model (line 1199) | def add_model(
method get_resource_for_path (line 1220) | def get_resource_for_path(self, path_after_stage_name: str) -> Resourc...
method resource_callback (line 1226) | def resource_callback(
method update_integration_mocks (line 1236) | def update_integration_mocks(self, stage_name: str) -> None:
method create_authorizer (line 1258) | def create_authorizer(
method create_stage (line 1286) | def create_stage(
method create_deployment (line 1315) | def create_deployment(
method get_deployment (line 1335) | def get_deployment(self, deployment_id: str) -> Deployment:
method get_authorizers (line 1338) | def get_authorizers(self) -> list[Authorizer]:
method get_stages (line 1341) | def get_stages(self) -> list[Stage]:
method get_deployments (line 1344) | def get_deployments(self) -> list[Deployment]:
method delete_deployment (line 1347) | def delete_deployment(self, deployment_id: str) -> Deployment:
method create_request_validator (line 1357) | def create_request_validator(
method get_request_validators (line 1375) | def get_request_validators(self) -> list[RequestValidator]:
method get_request_validator (line 1378) | def get_request_validator(self, validator_id: str) -> RequestValidator:
method delete_request_validator (line 1384) | def delete_request_validator(self, validator_id: str) -> RequestValida...
method update_request_validator (line 1387) | def update_request_validator(
method put_gateway_response (line 1393) | def put_gateway_response(
method get_gateway_response (line 1409) | def get_gateway_response(self, response_type: str) -> "GatewayResponse":
method get_gateway_responses (line 1414) | def get_gateway_responses(self) -> list["GatewayResponse"]:
method delete_gateway_response (line 1417) | def delete_gateway_response(self, response_type: str) -> None:
class DomainName (line 1421) | class DomainName(BaseModel):
method __init__ (line 1422) | def __init__(self, domain_name: str, **kwargs: Any):
method to_json (line 1445) | def to_json(self) -> dict[str, Any]:
class Model (line 1479) | class Model(BaseModel):
method __init__ (line 1480) | def __init__(self, model_id: str, name: str, **kwargs: Any):
method to_json (line 1487) | def to_json(self) -> dict[str, Any]:
class BasePathMapping (line 1501) | class BasePathMapping(BaseModel):
method __init__ (line 1508) | def __init__(self, domain_name: str, rest_api_id: str, **kwargs: Any):
method to_json (line 1514) | def to_json(self) -> dict[str, Any]:
method apply_patch_operations (line 1524) | def apply_patch_operations(self, patch_operations: list[dict[str, Any]...
class GatewayResponse (line 1538) | class GatewayResponse(BaseModel):
method __init__ (line 1539) | def __init__(
method to_json (line 1552) | def to_json(self) -> dict[str, Any]:
class Account (line 1566) | class Account(BaseModel):
method __init__ (line 1567) | def __init__(self) -> None:
method apply_patch_operations (line 1576) | def apply_patch_operations(
method to_json (line 1605) | def to_json(self) -> dict[str, Any]:
class APIGatewayBackend (line 1614) | class APIGatewayBackend(BaseBackend):
method __init__ (line 1641) | def __init__(self, region_name: str, account_id: str):
method create_rest_api (line 1653) | def create_rest_api(
method import_rest_api (line 1683) | def import_rest_api(
method export_api (line 1700) | def export_api(self, rest_api_id: str, export_type: str) -> dict[str, ...
method get_rest_api (line 1736) | def get_rest_api(self, function_id: str) -> RestAPI:
method put_rest_api (line 1742) | def put_rest_api(
method update_rest_api (line 1843) | def update_rest_api(
method list_apis (line 1852) | def list_apis(self) -> list[RestAPI]:
method delete_rest_api (line 1855) | def delete_rest_api(self, function_id: str) -> RestAPI:
method get_resources (line 1859) | def get_resources(self, function_id: str) -> list[Resource]:
method get_resource (line 1863) | def get_resource(self, function_id: str, resource_id: str) -> Resource:
method create_resource (line 1869) | def create_resource(
method delete_resource (line 1880) | def delete_resource(self, function_id: str, resource_id: str) -> Resou...
method get_method (line 1884) | def get_method(
method put_method (line 1890) | def put_method(
method delete_method (line 1918) | def delete_method(
method get_authorizer (line 1924) | def get_authorizer(self, restapi_id: str, authorizer_id: str) -> Autho...
method get_authorizers (line 1932) | def get_authorizers(self, restapi_id: str) -> list[Authorizer]:
method create_authorizer (line 1936) | def create_authorizer(
method update_authorizer (line 1956) | def update_authorizer(
method delete_authorizer (line 1962) | def delete_authorizer(self, restapi_id: str, authorizer_id: str) -> None:
method get_stage (line 1966) | def get_stage(self, function_id: str, stage_name: str) -> Stage:
method get_stages (line 1973) | def get_stages(self, function_id: str) -> list[Stage]:
method create_stage (line 1977) | def create_stage(
method update_stage (line 2003) | def update_stage(
method delete_stage (line 2012) | def delete_stage(self, function_id: str, stage_name: str) -> None:
method get_method_response (line 2018) | def get_method_response(
method put_method_response (line 2024) | def put_method_response(
method delete_method_response (line 2038) | def delete_method_response(
method put_integration (line 2044) | def put_integration(
method get_integration (line 2114) | def get_integration(
method delete_integration (line 2120) | def delete_integration(
method put_integration_response (line 2126) | def put_integration_response(
method get_integration_response (line 2148) | def get_integration_response(
method delete_integration_response (line 2155) | def delete_integration_response(
method create_deployment (line 2162) | def create_deployment(
method get_deployment (line 2187) | def get_deployment(self, function_id: str, deployment_id: str) -> Depl...
method get_deployments (line 2191) | def get_deployments(self, function_id: str) -> list[Deployment]:
method delete_deployment (line 2195) | def delete_deployment(self, function_id: str, deployment_id: str) -> D...
method create_api_key (line 2199) | def create_api_key(self, payload: dict[str, Any]) -> ApiKey:
method get_api_keys (line 2216) | def get_api_keys(self, name: Optional[str] = None) -> list[ApiKey]:
method get_api_key (line 2223) | def get_api_key(self, api_key_id: str) -> ApiKey:
method update_api_key (line 2228) | def update_api_key(self, api_key_id: str, patch_operations: Any) -> Ap...
method delete_api_key (line 2234) | def delete_api_key(self, api_key_id: str) -> None:
method create_usage_plan (line 2239) | def create_usage_plan(self, payload: Any) -> UsagePlan:
method get_usage_plans (line 2247) | def get_usage_plans(self, api_key_id: Optional[str] = None) -> list[Us...
method get_usage_plan (line 2257) | def get_usage_plan(self, usage_plan_id: str) -> UsagePlan:
method update_usage_plan (line 2262) | def update_usage_plan(self, usage_plan_id: str, patch_operations: Any)...
method delete_usage_plan (line 2275) | def delete_usage_plan(self, usage_plan_id: str) -> None:
method create_usage_plan_key (line 2278) | def create_usage_plan_key(
method get_usage_plan_keys (line 2299) | def get_usage_plan_keys(
method get_usage_plan_key (line 2314) | def get_usage_plan_key(self, usage_plan_id: str, key_id: str) -> Usage...
method delete_usage_plan_key (line 2328) | def delete_usage_plan_key(self, usage_plan_id: str, key_id: str) -> None:
method _uri_validator (line 2331) | def _uri_validator(self, uri: str) -> bool:
method create_domain_name (line 2338) | def create_domain_name(
method get_domain_names (line 2373) | def get_domain_names(self) -> list[DomainName]:
method get_domain_name (line 2376) | def get_domain_name(self, domain_name: str) -> DomainName:
method delete_domain_name (line 2383) | def delete_domain_name(self, domain_name: str) -> None:
method create_model (line 2388) | def create_model(
method get_models (line 2411) | def get_models(self, rest_api_id: str) -> list[Model]:
method get_model (line 2418) | def get_model(self, rest_api_id: str, model_name: str) -> Model:
method delete_model (line 2428) | def delete_model(self, rest_api_id: str, model_name: str) -> None:
method get_request_validators (line 2434) | def get_request_validators(self, restapi_id: str) -> list[RequestValid...
method create_request_validator (line 2438) | def create_request_validator(
method get_request_validator (line 2446) | def get_request_validator(
method delete_request_validator (line 2452) | def delete_request_validator(self, restapi_id: str, validator_id: str)...
method update_request_validator (line 2456) | def update_request_validator(
method create_base_path_mapping (line 2462) | def create_base_path_mapping(
method get_base_path_mappings (line 2496) | def get_base_path_mappings(self, domain_name: str) -> list[BasePathMap...
method get_base_path_mapping (line 2502) | def get_base_path_mapping(
method delete_base_path_mapping (line 2513) | def delete_base_path_mapping(self, domain_name: str, base_path: str) -...
method update_base_path_mapping (line 2522) | def update_base_path_mapping(
method create_vpc_link (line 2569) | def create_vpc_link(
method delete_vpc_link (line 2589) | def delete_vpc_link(self, vpc_link_id: str) -> None:
method get_vpc_link (line 2592) | def get_vpc_link(self, vpc_link_id: str) -> VpcLink:
method get_vpc_links (line 2597) | def get_vpc_links(self) -> list[VpcLink]:
method put_gateway_response (line 2603) | def put_gateway_response(
method get_gateway_response (line 2620) | def get_gateway_response(
method get_gateway_responses (line 2626) | def get_gateway_responses(self, rest_api_id: str) -> list[GatewayRespo...
method delete_gateway_response (line 2633) | def delete_gateway_response(self, rest_api_id: str, response_type: str...
method update_account (line 2637) | def update_account(self, patch_operations: list[dict[str, Any]]) -> Ac...
method get_account (line 2641) | def get_account(self) -> Account:
method _build_integration_args (line 2644) | def _build_integration_args(
method _build_integration_responses_args (line 2662) | def _build_integration_responses_args(
FILE: moto/apigateway/responses.py
class APIGatewayResponse (line 17) | class APIGatewayResponse(BaseResponse):
method __init__ (line 18) | def __init__(self) -> None:
method error (line 21) | def error(self, type_: str, message: str, status: int = 400) -> TYPE_R...
method backend (line 28) | def backend(self) -> APIGatewayBackend:
method __validate_api_key_source (line 31) | def __validate_api_key_source(self, api_key_source: str) -> Optional[T...
method __validate_endpoint_configuration (line 44) | def __validate_endpoint_configuration(
method create_rest_api (line 63) | def create_rest_api(self) -> TYPE_RESPONSE:
method get_rest_apis (line 103) | def get_rest_apis(self) -> str:
method __validte_rest_patch_operations (line 107) | def __validte_rest_patch_operations(
method delete_rest_api (line 117) | def delete_rest_api(self) -> TYPE_RESPONSE:
method get_rest_api (line 122) | def get_rest_api(self) -> TYPE_RESPONSE:
method get_rest_api_without_id (line 128) | def get_rest_api_without_id(*args: Any) -> TYPE_RESPONSE: # type: ign...
method put_rest_api (line 136) | def put_rest_api(self) -> TYPE_RESPONSE:
method update_rest_api (line 147) | def update_rest_api(self) -> TYPE_RESPONSE:
method get_resources (line 157) | def get_resources(self) -> str:
method create_resource (line 162) | def create_resource(self) -> TYPE_RESPONSE:
method delete_resource (line 169) | def delete_resource(self) -> TYPE_RESPONSE:
method get_resource (line 175) | def get_resource(self) -> str:
method delete_method (line 181) | def delete_method(self) -> TYPE_RESPONSE:
method get_method (line 189) | def get_method(self) -> str:
method put_method (line 197) | def put_method(self) -> TYPE_RESPONSE:
method delete_method_response (line 225) | def delete_method_response(self) -> TYPE_RESPONSE:
method get_method_response (line 236) | def get_method_response(self) -> str:
method put_method_response (line 248) | def put_method_response(self) -> TYPE_RESPONSE:
method create_authorizer (line 266) | def create_authorizer(self) -> TYPE_RESPONSE:
method delete_authorizer (line 307) | def delete_authorizer(self) -> TYPE_RESPONSE:
method get_authorizer (line 314) | def get_authorizer(self) -> str:
method get_authorizers (line 321) | def get_authorizers(self) -> str:
method update_authorizer (line 326) | def update_authorizer(self) -> str:
method create_request_validator (line 336) | def create_request_validator(self) -> TYPE_RESPONSE:
method delete_request_validator (line 346) | def delete_request_validator(self) -> TYPE_RESPONSE:
method get_request_validator (line 353) | def get_request_validator(self) -> str:
method get_request_validators (line 360) | def get_request_validators(self) -> str:
method update_request_validator (line 365) | def update_request_validator(self) -> str:
method create_stage (line 375) | def create_stage(self) -> TYPE_RESPONSE:
method delete_stage (line 399) | def delete_stage(self) -> TYPE_RESPONSE:
method get_stage (line 406) | def get_stage(self) -> str:
method get_stages (line 413) | def get_stages(self) -> str:
method update_stage (line 418) | def update_stage(self) -> str:
method tag_resource (line 428) | def tag_resource(self) -> str:
method untag_resource (line 438) | def untag_resource(self) -> str:
method get_export (line 448) | def get_export(self) -> TYPE_RESPONSE:
method delete_integration (line 463) | def delete_integration(self) -> TYPE_RESPONSE:
method get_integration (line 473) | def get_integration(self) -> str:
method put_integration (line 485) | def put_integration(self) -> TYPE_RESPONSE:
method delete_integration_response (line 524) | def delete_integration_response(self) -> TYPE_RESPONSE:
method get_integration_response (line 535) | def get_integration_response(self) -> str:
method put_integration_response (line 546) | def put_integration_response(self) -> TYPE_RESPONSE:
method create_deployment (line 571) | def create_deployment(self) -> TYPE_RESPONSE:
method delete_deployment (line 581) | def delete_deployment(self) -> TYPE_RESPONSE:
method get_deployment (line 588) | def get_deployment(self) -> str:
method get_deployments (line 595) | def get_deployments(self) -> str:
method create_api_key (line 600) | def create_api_key(self) -> TYPE_RESPONSE:
method delete_api_key (line 604) | def delete_api_key(self) -> TYPE_RESPONSE:
method get_api_key (line 609) | def get_api_key(self) -> str:
method get_api_keys (line 617) | def get_api_keys(self) -> str:
method update_api_key (line 627) | def update_api_key(self) -> str:
method create_usage_plan (line 633) | def create_usage_plan(self) -> TYPE_RESPONSE:
method delete_usage_plan (line 637) | def delete_usage_plan(self) -> TYPE_RESPONSE:
method get_usage_plan (line 642) | def get_usage_plan(self) -> str:
method get_usage_plans (line 648) | def get_usage_plans(self) -> str:
method update_usage_plan (line 653) | def update_usage_plan(self) -> str:
method create_usage_plan_key (line 661) | def create_usage_plan_key(self) -> TYPE_RESPONSE:
method delete_usage_plan_key (line 668) | def delete_usage_plan_key(self) -> TYPE_RESPONSE:
method get_usage_plan_key (line 675) | def get_usage_plan_key(self) -> str:
method get_usage_plan_keys (line 682) | def get_usage_plan_keys(self) -> str:
method create_domain_name (line 688) | def create_domain_name(self) -> TYPE_RESPONSE:
method delete_domain_name (line 715) | def delete_domain_name(self) -> TYPE_RESPONSE:
method get_domain_name (line 720) | def get_domain_name(self) -> str:
method get_domain_names (line 725) | def get_domain_names(self) -> str:
method create_model (line 729) | def create_model(self) -> TYPE_RESPONSE:
method get_models (line 744) | def get_models(self) -> str:
method get_model (line 749) | def get_model(self) -> str:
method delete_model (line 756) | def delete_model(self) -> TYPE_RESPONSE:
method create_base_path_mapping (line 763) | def create_base_path_mapping(self) -> TYPE_RESPONSE:
method delete_base_path_mapping (line 774) | def delete_base_path_mapping(self) -> TYPE_RESPONSE:
method get_base_path_mapping (line 781) | def get_base_path_mapping(self) -> str:
method get_base_path_mappings (line 788) | def get_base_path_mappings(self) -> str:
method update_base_path_mapping (line 793) | def update_base_path_mapping(self) -> str:
method create_vpc_link (line 803) | def create_vpc_link(self) -> TYPE_RESPONSE:
method delete_vpc_link (line 813) | def delete_vpc_link(self) -> TYPE_RESPONSE:
method get_vpc_link (line 818) | def get_vpc_link(self) -> str:
method get_vpc_links (line 823) | def get_vpc_links(self) -> str:
method put_gateway_response (line 827) | def put_gateway_response(self) -> TYPE_RESPONSE:
method get_gateway_response (line 843) | def get_gateway_response(self) -> TYPE_RESPONSE:
method get_gateway_responses (line 851) | def get_gateway_responses(self) -> TYPE_RESPONSE:
method delete_gateway_response (line 856) | def delete_gateway_response(self) -> TYPE_RESPONSE:
method update_account (line 864) | def update_account(self) -> str:
method get_account (line 869) | def get_account(self) -> str:
FILE: moto/apigateway/utils.py
class ApigwIdentifier (line 11) | class ApigwIdentifier(ResourceIdentifier):
method __init__ (line 14) | def __init__(self, account_id: str, region: str, name: str):
method generate (line 17) | def generate(
class ApigwApiKeyIdentifier (line 30) | class ApigwApiKeyIdentifier(ApigwIdentifier):
method __init__ (line 33) | def __init__(self, account_id: str, region: str, value: str):
class ApigwAuthorizerIdentifier (line 37) | class ApigwAuthorizerIdentifier(ApigwIdentifier):
class ApigwDeploymentIdentifier (line 41) | class ApigwDeploymentIdentifier(ApigwIdentifier):
method __init__ (line 44) | def __init__(self, account_id: str, region: str, stage_name: str):
class ApigwModelIdentifier (line 48) | class ApigwModelIdentifier(ApigwIdentifier):
class ApigwRequestValidatorIdentifier (line 52) | class ApigwRequestValidatorIdentifier(ApigwIdentifier):
class ApigwResourceIdentifier (line 56) | class ApigwResourceIdentifier(ApigwIdentifier):
method __init__ (line 59) | def __init__(
class ApigwRestApiIdentifier (line 69) | class ApigwRestApiIdentifier(ApigwIdentifier):
class ApigwUsagePlanIdentifier (line 73) | class ApigwUsagePlanIdentifier(ApigwIdentifier):
class ApigwVpcLinkIdentifier (line 77) | class ApigwVpcLinkIdentifier(ApigwIdentifier):
function create_id (line 81) | def create_id() -> str:
function deserialize_body (line 87) | def deserialize_body(body: str) -> dict[str, Any]:
function to_path (line 99) | def to_path(prop: str) -> str:
FILE: moto/apigatewaymanagementapi/models.py
class Connection (line 10) | class Connection:
method __init__ (line 11) | def __init__(self) -> None:
method to_dict (line 17) | def to_dict(self) -> dict[str, Any]:
class ApiGatewayManagementApiBackend (line 28) | class ApiGatewayManagementApiBackend(BaseBackend):
method __init__ (line 33) | def __init__(self, region_name: str, account_id: str):
method delete_connection (line 37) | def delete_connection(self, connection_id: str) -> None:
method get_connection (line 40) | def get_connection(self, connection_id: str) -> Connection:
method post_to_connection (line 43) | def post_to_connection(self, data: bytes, connection_id: str) -> None:
FILE: moto/apigatewaymanagementapi/responses.py
class ApiGatewayManagementApiResponse (line 11) | class ApiGatewayManagementApiResponse(BaseResponse):
method __init__ (line 14) | def __init__(self) -> None:
method setup_class (line 17) | def setup_class(
method apigatewaymanagementapi_backend (line 23) | def apigatewaymanagementapi_backend(self) -> ApiGatewayManagementApiBa...
method delete_connection (line 27) | def delete_connection(self) -> str:
method get_connection (line 34) | def get_connection(self) -> str:
method post_to_connection (line 41) | def post_to_connection(self) -> str:
method connect_to_apigateway (line 51) | def connect_to_apigateway( # type: ignore[misc]
FILE: moto/apigatewayv2/exceptions.py
class APIGatewayV2Error (line 4) | class APIGatewayV2Error(JsonRESTError):
class ApiNotFound (line 8) | class ApiNotFound(APIGatewayV2Error):
method __init__ (line 11) | def __init__(self, api_id: str):
class AuthorizerNotFound (line 17) | class AuthorizerNotFound(APIGatewayV2Error):
method __init__ (line 20) | def __init__(self, authorizer_id: str):
class ModelNotFound (line 27) | class ModelNotFound(APIGatewayV2Error):
method __init__ (line 30) | def __init__(self, model_id: str):
class RouteResponseNotFound (line 36) | class RouteResponseNotFound(APIGatewayV2Error):
method __init__ (line 39) | def __init__(self, rr_id: str):
class BadRequestException (line 45) | class BadRequestException(APIGatewayV2Error):
method __init__ (line 48) | def __init__(self, message: str):
class IntegrationNotFound (line 52) | class IntegrationNotFound(APIGatewayV2Error):
method __init__ (line 55) | def __init__(self, integration_id: str):
class IntegrationResponseNotFound (line 62) | class IntegrationResponseNotFound(APIGatewayV2Error):
method __init__ (line 65) | def __init__(self, int_res_id: str):
class RouteNotFound (line 72) | class RouteNotFound(APIGatewayV2Error):
method __init__ (line 75) | def __init__(self, route_id: str):
class VpcLinkNotFound (line 81) | class VpcLinkNotFound(APIGatewayV2Error):
method __init__ (line 84) | def __init__(self, vpc_link_id: str):
class UnknownProtocol (line 90) | class UnknownProtocol(APIGatewayV2Error):
method __init__ (line 91) | def __init__(self) -> None:
class DomainNameNotFound (line 98) | class DomainNameNotFound(APIGatewayV2Error):
method __init__ (line 101) | def __init__(self) -> None:
class DomainNameAlreadyExists (line 108) | class DomainNameAlreadyExists(APIGatewayV2Error):
method __init__ (line 111) | def __init__(self) -> None:
class ApiMappingNotFound (line 118) | class ApiMappingNotFound(APIGatewayV2Error):
method __init__ (line 121) | def __init__(self) -> None:
class StageNotFound (line 128) | class StageNotFound(APIGatewayV2Error):
method __init__ (line 131) | def __init__(self) -> None:
FILE: moto/apigatewayv2/models.py
class Stage (line 34) | class Stage(BaseModel):
method __init__ (line 35) | def __init__(self, api: "Api", config: dict[str, Any]):
method to_json (line 60) | def to_json(self) -> dict[str, Any]:
class Authorizer (line 81) | class Authorizer(BaseModel):
method __init__ (line 82) | def __init__(
method update (line 107) | def update(
method to_json (line 141) | def to_json(self) -> dict[str, Any]:
class Integration (line 157) | class Integration(BaseModel):
method __init__ (line 158) | def __init__(
method create_response (line 220) | def create_response(
method delete_response (line 238) | def delete_response(self, integration_response_id: str) -> None:
method get_response (line 241) | def get_response(self, integration_response_id: str) -> "IntegrationRe...
method get_responses (line 246) | def get_responses(self) -> list["IntegrationResponse"]:
method update_response (line 249) | def update_response(
method update (line 268) | def update(
method to_json (line 327) | def to_json(self) -> dict[str, Any]:
class IntegrationResponse (line 351) | class IntegrationResponse(BaseModel):
method __init__ (line 352) | def __init__(
method update (line 367) | def update(
method to_json (line 386) | def to_json(self) -> dict[str, str]:
class Model (line 397) | class Model(BaseModel):
method __init__ (line 398) | def __init__(self, content_type: str, description: str, name: str, sch...
method update (line 405) | def update(
method to_json (line 417) | def to_json(self) -> dict[str, str]:
class RouteResponse (line 427) | class RouteResponse(BaseModel):
method __init__ (line 428) | def __init__(
method to_json (line 439) | def to_json(self) -> dict[str, str]:
class Route (line 448) | class Route(BaseModel):
method __init__ (line 449) | def __init__(
method create_route_response (line 478) | def create_route_response(
method get_route_response (line 492) | def get_route_response(self, route_response_id: str) -> RouteResponse:
method delete_route_response (line 497) | def delete_route_response(self, route_response_id: str) -> None:
method delete_route_request_parameter (line 500) | def delete_route_request_parameter(self, request_param: str) -> None:
method update (line 503) | def update(
method to_json (line 542) | def to_json(self) -> dict[str, Any]:
class Api (line 559) | class Api(BaseModel):
method __init__ (line 560) | def __init__(
method clear (line 604) | def clear(self) -> None:
method delete_cors_configuration (line 611) | def delete_cors_configuration(self) -> None:
method create_authorizer (line 614) | def create_authorizer(
method delete_authorizer (line 642) | def delete_authorizer(self, authorizer_id: str) -> None:
method get_authorizer (line 645) | def get_authorizer(self, authorizer_id: str) -> Authorizer:
method update_authorizer (line 650) | def update_authorizer(
method create_model (line 679) | def create_model(
method delete_model (line 686) | def delete_model(self, model_id: str) -> None:
method get_model (line 689) | def get_model(self, model_id: str) -> Model:
method update_model (line 694) | def update_model(
method import_api (line 701) | def import_api(self, body_str: str, fail_on_warnings: bool) -> None:
method update (line 742) | def update(
method create_integration (line 770) | def create_integration(
method delete_integration (line 812) | def delete_integration(self, integration_id: str) -> None:
method get_integration (line 815) | def get_integration(self, integration_id: str) -> Integration:
method get_integrations (line 820) | def get_integrations(self) -> list[Integration]:
method update_integration (line 823) | def update_integration(
method create_integration_response (line 866) | def create_integration_response(
method delete_integration_response (line 884) | def delete_integration_response(
method get_integration_response (line 890) | def get_integration_response(
method get_integration_responses (line 896) | def get_integration_responses(
method update_integration_response (line 902) | def update_integration_response(
method create_route (line 922) | def create_route(
method delete_route (line 952) | def delete_route(self, route_id: str) -> None:
method delete_route_request_parameter (line 955) | def delete_route_request_parameter(self, route_id: str, request_param:...
method get_route (line 959) | def get_route(self, route_id: str) -> Route:
method get_routes (line 964) | def get_routes(self) -> list[Route]:
method update_route (line 967) | def update_route(
method create_route_response (line 998) | def create_route_response(
method delete_route_response (line 1012) | def delete_route_response(self, route_id: str, route_response_id: str)...
method get_route_response (line 1016) | def get_route_response(
method create_stage (line 1022) | def create_stage(self, config: dict[str, Any]) -> Stage:
method get_stage (line 1027) | def get_stage(self, stage_name: str) -> Stage:
method delete_stage (line 1032) | def delete_stage(self, stage_name: str) -> None:
method to_json (line 1035) | def to_json(self) -> dict[str, Any]:
class VpcLink (line 1053) | class VpcLink(BaseModel):
method __init__ (line 1054) | def __init__(
method update (line 1072) | def update(self, name: str) -> None:
method to_json (line 1075) | def to_json(self) -> dict[str, Any]:
class DomainName (line 1088) | class DomainName(BaseModel):
method __init__ (line 1089) | def __init__(
method to_json (line 1104) | def to_json(self) -> dict[str, Any]:
class ApiMapping (line 1115) | class ApiMapping(BaseModel):
method __init__ (line 1116) | def __init__(
method to_json (line 1130) | def to_json(self) -> dict[str, Any]:
class ApiGatewayV2Backend (line 1140) | class ApiGatewayV2Backend(BaseBackend):
method __init__ (line 1143) | def __init__(self, region_name: str, account_id: str):
method create_api (line 1151) | def create_api(
method delete_api (line 1185) | def delete_api(self, api_id: str) -> None:
method get_api (line 1188) | def get_api(self, api_id: str) -> Api:
method get_apis (line 1193) | def get_apis(self) -> list[Api]:
method update_api (line 1199) | def update_api(
method reimport_api (line 1227) | def reimport_api(self, api_id: str, body: str, fail_on_warnings: bool)...
method delete_cors_configuration (line 1235) | def delete_cors_configuration(self, api_id: str) -> None:
method create_authorizer (line 1239) | def create_authorizer(
method delete_authorizer (line 1278) | def delete_authorizer(self, api_id: str, authorizer_id: str) -> None:
method get_authorizer (line 1282) | def get_authorizer(self, api_id: str, authorizer_id: str) -> Authorizer:
method update_authorizer (line 1287) | def update_authorizer(
method create_model (line 1318) | def create_model(
method delete_model (line 1327) | def delete_model(self, api_id: str, model_id: str) -> None:
method get_model (line 1331) | def get_model(self, api_id: str, model_id: str) -> Model:
method update_model (line 1335) | def update_model(
method get_tags (line 1347) | def get_tags(self, resource_id: str) -> dict[str, str]:
method tag_resource (line 1350) | def tag_resource(self, resource_arn: str, tags: dict[str, str]) -> None:
method untag_resource (line 1354) | def untag_resource(self, resource_arn: str, tag_keys: list[str]) -> None:
method create_route (line 1357) | def create_route(
method delete_route (line 1388) | def delete_route(self, api_id: str, route_id: str) -> None:
method delete_route_request_parameter (line 1392) | def delete_route_request_parameter(
method get_route (line 1398) | def get_route(self, api_id: str, route_id: str) -> Route:
method get_routes (line 1402) | def get_routes(self, api_id: str) -> list[Route]:
method update_route (line 1409) | def update_route(
method create_route_response (line 1442) | def create_route_response(
method delete_route_response (line 1461) | def delete_route_response(
method get_route_response (line 1467) | def get_route_response(
method create_integration (line 1473) | def create_integration(
method get_integration (line 1516) | def get_integration(self, api_id: str, integration_id: str) -> Integra...
method get_integrations (line 1521) | def get_integrations(self, api_id: str) -> list[Integration]:
method delete_integration (line 1528) | def delete_integration(self, api_id: str, integration_id: str) -> None:
method update_integration (line 1532) | def update_integration(
method create_integration_response (line 1577) | def create_integration_response(
method delete_integration_response (line 1598) | def delete_integration_response(
method get_integration_response (line 1606) | def get_integration_response(
method get_integration_responses (line 1614) | def get_integration_responses(
method update_integration_response (line 1620) | def update_integration_response(
method create_vpc_link (line 1643) | def create_vpc_link(
method get_vpc_link (line 1652) | def get_vpc_link(self, vpc_link_id: str) -> VpcLink:
method delete_vpc_link (line 1657) | def delete_vpc_link(self, vpc_link_id: str) -> None:
method get_vpc_links (line 1660) | def get_vpc_links(self) -> list[VpcLink]:
method update_vpc_link (line 1663) | def update_vpc_link(self, vpc_link_id: str, name: str) -> VpcLink:
method create_domain_name (line 1668) | def create_domain_name(
method get_domain_name (line 1688) | def get_domain_name(self, domain_name: Union[str, None]) -> DomainName:
method get_domain_names (line 1693) | def get_domain_names(self) -> list[DomainName]:
method delete_domain_name (line 1699) | def delete_domain_name(self, domain_name: str) -> None:
method _generate_api_maping_id (line 1709) | def _generate_api_maping_id(
method create_api_mapping (line 1718) | def create_api_mapping(
method get_api_mapping (line 1750) | def get_api_mapping(self, api_mapping_id: str, domain_name: str) -> Ap...
method get_api_mappings (line 1759) | def get_api_mappings(self, domain_name: str) -> list[ApiMapping]:
method delete_api_mapping (line 1766) | def delete_api_mapping(self, api_mapping_id: str, domain_name: str) ->...
method create_stage (line 1777) | def create_stage(self, api_id: str, config: dict[str, Any]) -> Stage:
method get_stage (line 1781) | def get_stage(self, api_id: str, stage_name: str) -> Stage:
method delete_stage (line 1785) | def delete_stage(self, api_id: str, stage_name: str) -> None:
method get_stages (line 1789) | def get_stages(self, api_id: str) -> list[Stage]:
FILE: moto/apigatewayv2/responses.py
class ApiGatewayV2Response (line 13) | class ApiGatewayV2Response(BaseResponse):
method __init__ (line 16) | def __init__(self) -> None:
method apigatewayv2_backend (line 20) | def apigatewayv2_backend(self) -> ApiGatewayV2Backend:
method create_api (line 24) | def create_api(self) -> TYPE_RESPONSE:
method delete_api (line 55) | def delete_api(self) -> TYPE_RESPONSE:
method get_api (line 60) | def get_api(self) -> TYPE_RESPONSE:
method get_api_without_id (line 66) | def get_api_without_id(*args: Any) -> TYPE_RESPONSE: # type: ignore[m...
method get_apis (line 74) | def get_apis(self) -> TYPE_RESPONSE:
method update_api (line 78) | def update_api(self) -> TYPE_RESPONSE:
method reimport_api (line 102) | def reimport_api(self) -> TYPE_RESPONSE:
method create_authorizer (line 113) | def create_authorizer(self) -> TYPE_RESPONSE:
method delete_authorizer (line 142) | def delete_authorizer(self) -> TYPE_RESPONSE:
method get_authorizer (line 149) | def get_authorizer(self) -> TYPE_RESPONSE:
method update_authorizer (line 156) | def update_authorizer(self) -> TYPE_RESPONSE:
method delete_cors_configuration (line 187) | def delete_cors_configuration(self) -> TYPE_RESPONSE:
method create_model (line 192) | def create_model(self) -> TYPE_RESPONSE:
method delete_model (line 205) | def delete_model(self) -> TYPE_RESPONSE:
method get_model (line 212) | def get_model(self) -> TYPE_RESPONSE:
method update_model (line 219) | def update_model(self) -> TYPE_RESPONSE:
method get_tags (line 239) | def get_tags(self) -> TYPE_RESPONSE:
method tag_resource (line 244) | def tag_resource(self) -> TYPE_RESPONSE:
method untag_resource (line 250) | def untag_resource(self) -> TYPE_RESPONSE:
method create_route (line 256) | def create_route(self) -> TYPE_RESPONSE:
method delete_route (line 288) | def delete_route(self) -> TYPE_RESPONSE:
method delete_route_request_parameter (line 294) | def delete_route_request_parameter(self) -> TYPE_RESPONSE:
method get_route (line 303) | def get_route(self) -> TYPE_RESPONSE:
method get_routes (line 309) | def get_routes(self) -> TYPE_RESPONSE:
method update_route (line 314) | def update_route(self) -> TYPE_RESPONSE:
method create_route_response (line 349) | def create_route_response(self) -> TYPE_RESPONSE:
method delete_route_response (line 366) | def delete_route_response(self) -> TYPE_RESPONSE:
method get_route_response (line 376) | def get_route_response(self) -> TYPE_RESPONSE:
method create_integration (line 386) | def create_integration(self) -> TYPE_RESPONSE:
method get_integration (line 429) | def get_integration(self) -> TYPE_RESPONSE:
method get_integrations (line 438) | def get_integrations(self) -> TYPE_RESPONSE:
method delete_integration (line 444) | def delete_integration(self) -> TYPE_RESPONSE:
method update_integration (line 453) | def update_integration(self) -> TYPE_RESPONSE:
method create_integration_response (line 498) | def create_integration_response(self) -> TYPE_RESPONSE:
method delete_integration_response (line 519) | def delete_integration_response(self) -> TYPE_RESPONSE:
method get_integration_response (line 529) | def get_integration_response(self) -> TYPE_RESPONSE:
method get_integration_responses (line 539) | def get_integration_responses(self) -> TYPE_RESPONSE:
method update_integration_response (line 548) | def update_integration_response(self) -> TYPE_RESPONSE:
method create_vpc_link (line 571) | def create_vpc_link(self) -> TYPE_RESPONSE:
method delete_vpc_link (line 583) | def delete_vpc_link(self) -> TYPE_RESPONSE:
method get_vpc_link (line 588) | def get_vpc_link(self) -> TYPE_RESPONSE:
method get_vpc_links (line 593) | def get_vpc_links(self) -> TYPE_RESPONSE:
method update_vpc_link (line 597) | def update_vpc_link(self) -> TYPE_RESPONSE:
method create_domain_name (line 605) | def create_domain_name(self) -> TYPE_RESPONSE:
method get_domain_name (line 619) | def get_domain_name(self) -> TYPE_RESPONSE:
method get_domain_names (line 626) | def get_domain_names(self) -> TYPE_RESPONSE:
method create_api_mapping (line 631) | def create_api_mapping(self) -> TYPE_RESPONSE:
method get_api_mapping (line 645) | def get_api_mapping(self) -> TYPE_RESPONSE:
method get_api_mappings (line 654) | def get_api_mappings(self) -> TYPE_RESPONSE:
method delete_domain_name (line 660) | def delete_domain_name(self) -> TYPE_RESPONSE:
method delete_api_mapping (line 667) | def delete_api_mapping(self) -> TYPE_RESPONSE:
method create_stage (line 676) | def create_stage(self) -> TYPE_RESPONSE:
method get_stage (line 682) | def get_stage(self) -> TYPE_RESPONSE:
method delete_stage (line 688) | def delete_stage(self) -> TYPE_RESPONSE:
method get_stages (line 694) | def get_stages(self) -> TYPE_RESPONSE:
FILE: moto/appconfig/exceptions.py
class AppNotFoundException (line 6) | class AppNotFoundException(JsonRESTError):
method __init__ (line 7) | def __init__(self) -> None:
class ConfigurationProfileNotFound (line 11) | class ConfigurationProfileNotFound(JsonRESTError):
method __init__ (line 12) | def __init__(self) -> None:
class ConfigurationVersionNotFound (line 16) | class ConfigurationVersionNotFound(JsonRESTError):
method __init__ (line 17) | def __init__(self) -> None:
FILE: moto/appconfig/models.py
class HostedConfigurationVersion (line 17) | class HostedConfigurationVersion(BaseModel):
method __init__ (line 18) | def __init__(
method get_headers (line 36) | def get_headers(self) -> dict[str, Any]:
class ConfigurationProfile (line 47) | class ConfigurationProfile(BaseModel):
method __init__ (line 48) | def __init__(
method create_version (line 71) | def create_version(
method get_version (line 95) | def get_version(self, version: int) -> HostedConfigurationVersion:
method delete_version (line 100) | def delete_version(self, version: int) -> None:
method to_json (line 103) | def to_json(self) -> dict[str, Any]:
class Application (line 116) | class Application(BaseModel):
method __init__ (line 117) | def __init__(
method to_json (line 127) | def to_json(self) -> dict[str, Any]:
class AppConfigBackend (line 135) | class AppConfigBackend(BaseBackend):
method __init__ (line 138) | def __init__(self, region_name: str, account_id: str):
method create_application (line 143) | def create_application(
method delete_application (line 153) | def delete_application(self, app_id: str) -> None:
method get_application (line 156) | def get_application(self, app_id: str) -> Application:
method update_application (line 161) | def update_application(
method create_configuration_profile (line 171) | def create_configuration_profile(
method delete_configuration_profile (line 199) | def delete_configuration_profile(self, app_id: str, config_profile_id:...
method get_configuration_profile (line 202) | def get_configuration_profile(
method update_configuration_profile (line 210) | def update_configuration_profile(
method list_configuration_profiles (line 232) | def list_configuration_profiles(
method create_hosted_configuration_version (line 238) | def create_hosted_configuration_version(
method get_hosted_configuration_version (line 260) | def get_hosted_configuration_version(
method delete_hosted_configuration_version (line 268) | def delete_hosted_configuration_version(
method list_tags_for_resource (line 276) | def list_tags_for_resource(self, arn: str) -> dict[str, str]:
method tag_resource (line 279) | def tag_resource(self, arn: str, tags: dict[str, str]) -> None:
method untag_resource (line 282) | def untag_resource(self, arn: str, tag_keys: list[str]) -> None:
FILE: moto/appconfig/responses.py
class AppConfigResponse (line 10) | class AppConfigResponse(BaseResponse):
method __init__ (line 11) | def __init__(self) -> None:
method appconfig_backend (line 15) | def appconfig_backend(self) -> AppConfigBackend:
method create_application (line 18) | def create_application(self) -> str:
method delete_application (line 29) | def delete_application(self) -> str:
method get_application (line 34) | def get_application(self) -> str:
method update_application (line 39) | def update_application(self) -> str:
method create_configuration_profile (line 50) | def create_configuration_profile(self) -> str:
method delete_configuration_profile (line 71) | def delete_configuration_profile(self) -> str:
method get_configuration_profile (line 77) | def get_configuration_profile(self) -> str:
method update_configuration_profile (line 85) | def update_configuration_profile(self) -> str:
method list_configuration_profiles (line 102) | def list_configuration_profiles(self) -> str:
method list_tags_for_resource (line 107) | def list_tags_for_resource(self) -> str:
method tag_resource (line 112) | def tag_resource(self) -> str:
method untag_resource (line 118) | def untag_resource(self) -> str:
method create_hosted_configuration_version (line 124) | def create_hosted_configuration_version(self) -> tuple[str, dict[str, ...
method get_hosted_configuration_version (line 141) | def get_hosted_configuration_version(self) -> tuple[str, dict[str, Any]]:
method delete_hosted_configuration_version (line 152) | def delete_hosted_configuration_version(self) -> str:
FILE: moto/applicationautoscaling/exceptions.py
class AWSValidationException (line 4) | class AWSValidationException(JsonRESTError):
method __init__ (line 5) | def __init__(self, message: str) -> None:
FILE: moto/applicationautoscaling/models.py
class ResourceTypeExceptionValueSet (line 20) | class ResourceTypeExceptionValueSet(Enum):
class ServiceNamespaceValueSet (line 27) | class ServiceNamespaceValueSet(Enum):
class ScalableDimensionValueSet (line 43) | class ScalableDimensionValueSet(Enum):
class ApplicationAutoscalingBackend (line 73) | class ApplicationAutoscalingBackend(BaseBackend):
method __init__ (line 74) | def __init__(self, region_name: str, account_id: str) -> None:
method describe_scalable_targets (line 81) | def describe_scalable_targets(
method _flatten_scalable_targets (line 93) | def _flatten_scalable_targets(self, namespace: str) -> list["FakeScala...
method register_scalable_target (line 102) | def register_scalable_target(
method _scalable_target_exists (line 132) | def _scalable_target_exists(self, r_id: str, dimension: str) -> bool:
method _ecs_service_exists_for_target (line 135) | def _ecs_service_exists_for_target(self, r_id: str) -> bool:
method _add_scalable_target (line 145) | def _add_scalable_target(
method deregister_scalable_target (line 154) | def deregister_scalable_target(
method put_scaling_policy (line 164) | def put_scaling_policy(
method describe_scaling_policies (line 202) | def describe_scaling_policies(
method delete_scaling_policy (line 232) | def delete_scaling_policy(
method delete_scheduled_action (line 251) | def delete_scheduled_action(
method describe_scheduled_actions (line 269) | def describe_scheduled_actions(
method put_scheduled_action (line 294) | def put_scheduled_action(
function _target_params_are_valid (line 343) | def _target_params_are_valid(namespace: str, r_id: str, dimension: str) ...
function _get_resource_type_from_resource_id (line 373) | def _get_resource_type_from_resource_id(resource_id: str) -> str:
class FakeScalableTarget (line 400) | class FakeScalableTarget(BaseModel):
method __init__ (line 401) | def __init__(
method update (line 423) | def update(
class FakeApplicationAutoscalingPolicy (line 437) | class FakeApplicationAutoscalingPolicy(BaseModel):
method __init__ (line 438) | def __init__(
method create_alarms (line 479) | def create_alarms(self) -> None:
method _generate_dynamodb_alarms (line 486) | def _generate_dynamodb_alarms(self) -> list["Alarm"]:
method _generate_ecs_alarms (line 557) | def _generate_ecs_alarms(self) -> list["Alarm"]:
method delete_alarms (line 612) | def delete_alarms(self, account_id: str, region_name: str) -> None:
method formulate_key (line 619) | def formulate_key(
class FakeScheduledAction (line 630) | class FakeScheduledAction(BaseModel):
method __init__ (line 631) | def __init__(
method update (line 657) | def update(
FILE: moto/applicationautoscaling/responses.py
class ApplicationAutoScalingResponse (line 18) | class ApplicationAutoScalingResponse(BaseResponse):
method __init__ (line 19) | def __init__(self) -> None:
method applicationautoscaling_backend (line 23) | def applicationautoscaling_backend(self) -> ApplicationAutoscalingBack...
method describe_scalable_targets (line 26) | def describe_scalable_targets(self) -> str:
method register_scalable_target (line 46) | def register_scalable_target(self) -> str:
method deregister_scalable_target (line 60) | def deregister_scalable_target(self) -> str:
method put_scaling_policy (line 70) | def put_scaling_policy(self) -> str:
method describe_scaling_policies (line 86) | def describe_scaling_policies(self) -> str:
method delete_scaling_policy (line 103) | def delete_scaling_policy(self) -> str:
method _validate_params (line 112) | def _validate_params(self) -> None:
method delete_scheduled_action (line 139) | def delete_scheduled_action(self) -> str:
method put_scheduled_action (line 153) | def put_scheduled_action(self) -> str:
method describe_scheduled_actions (line 177) | def describe_scheduled_actions(self) -> str:
function _build_target (line 197) | def _build_target(t: FakeScalableTarget) -> dict[str, Any]:
function _build_alarms (line 211) | def _build_alarms(policy: FakeApplicationAutoscalingPolicy) -> list[dict...
function _build_policy (line 215) | def _build_policy(p: FakeApplicationAutoscalingPolicy) -> dict[str, Any]:
function _build_scheduled_action (line 235) | def _build_scheduled_action(a: FakeScheduledAction) -> dict[str, Any]:
FILE: moto/applicationautoscaling/utils.py
function region_from_applicationautoscaling_url (line 4) | def region_from_applicationautoscaling_url(url: str) -> str:
FILE: moto/appmesh/dataclasses/mesh.py
class MeshSpec (line 10) | class MeshSpec:
class Mesh (line 16) | class Mesh:
method to_dict (line 25) | def to_dict(self) -> dict[str, Any]: # type ignore[misc]
FILE: moto/appmesh/dataclasses/route.py
class RouteActionWeightedTarget (line 15) | class RouteActionWeightedTarget:
method to_dict (line 20) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class RouteAction (line 27) | class RouteAction:
method to_dict (line 30) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Range (line 37) | class Range:
class Match (line 44) | class Match:
method to_dict (line 51) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class GrpcMetadatum (line 64) | class GrpcMetadatum:
method to_dict (line 69) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class RouteMatchPath (line 84) | class RouteMatchPath:
class QueryParameterMatch (line 91) | class QueryParameterMatch:
class RouteMatchQueryParameter (line 97) | class RouteMatchQueryParameter:
method to_dict (line 101) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class HttpRouteMatch (line 108) | class HttpRouteMatch:
method to_dict (line 117) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class HttpRouteRetryPolicy (line 134) | class HttpRouteRetryPolicy:
method to_dict (line 140) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class GrpcRouteMatch (line 152) | class GrpcRouteMatch:
method to_dict (line 158) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class GrcpRouteRetryPolicy (line 170) | class GrcpRouteRetryPolicy:
method to_dict (line 177) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class GrpcRoute (line 190) | class GrpcRoute:
method to_dict (line 196) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class HttpRoute (line 208) | class HttpRoute:
method to_dict (line 214) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class TCPRouteMatch (line 226) | class TCPRouteMatch:
class TCPRoute (line 232) | class TCPRoute:
method to_dict (line 237) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class RouteSpec (line 248) | class RouteSpec:
method to_dict (line 255) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class RouteMetadata (line 267) | class RouteMetadata(Metadata):
method __post_init__ (line 272) | def __post_init__(self) -> None:
method formatted_for_list_api (line 282) | def formatted_for_list_api(self) -> dict[str, Any]: # type: ignore
method formatted_for_crud_apis (line 295) | def formatted_for_crud_apis(self) -> dict[str, Any]: # type: ignore
class Route (line 308) | class Route:
method to_dict (line 318) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
FILE: moto/appmesh/dataclasses/shared.py
class Metadata (line 12) | class Metadata:
method update_timestamp (line 21) | def update_timestamp(self) -> None:
class Duration (line 26) | class Duration:
class MissingField (line 32) | class MissingField:
method to_dict (line 33) | def to_dict(self) -> None:
class Timeout (line 38) | class Timeout:
method to_dict (line 42) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
FILE: moto/appmesh/dataclasses/virtual_node.py
class CertificateFile (line 15) | class CertificateFile:
method to_dict (line 18) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class CertificateFileWithPrivateKey (line 23) | class CertificateFileWithPrivateKey(CertificateFile):
method to_dict (line 26) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class SDS (line 34) | class SDS:
method to_dict (line 37) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Certificate (line 42) | class Certificate:
method to_dict (line 46) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class ListenerCertificateACM (line 56) | class ListenerCertificateACM:
method to_dict (line 59) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class TLSListenerCertificate (line 64) | class TLSListenerCertificate(Certificate):
method to_dict (line 67) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Match (line 78) | class Match:
class SubjectAlternativeNames (line 85) | class SubjectAlternativeNames:
method to_dict (line 88) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class ACM (line 93) | class ACM:
method to_dict (line 96) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Trust (line 101) | class Trust:
method to_dict (line 105) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class BackendTrust (line 115) | class BackendTrust(Trust):
method to_dict (line 118) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Validation (line 129) | class Validation:
method to_dict (line 132) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class TLSBackendValidation (line 143) | class TLSBackendValidation(Validation):
method to_dict (line 146) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class TLSListenerValidation (line 158) | class TLSListenerValidation(Validation):
method to_dict (line 161) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class TLSClientPolicy (line 173) | class TLSClientPolicy:
method to_dict (line 179) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class ClientPolicy (line 191) | class ClientPolicy:
method to_dict (line 194) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class BackendDefaults (line 199) | class BackendDefaults:
method to_dict (line 202) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class VirtualService (line 209) | class VirtualService:
method to_dict (line 213) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Backend (line 223) | class Backend:
method to_dict (line 226) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class HTTPConnection (line 233) | class HTTPConnection:
method to_dict (line 237) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class GRPCOrHTTP2Connection (line 247) | class GRPCOrHTTP2Connection:
method to_dict (line 250) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class TCPConnection (line 255) | class TCPConnection:
method to_dict (line 258) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class ConnectionPool (line 263) | class ConnectionPool:
method to_dict (line 269) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class HealthCheck (line 281) | class HealthCheck:
method to_dict (line 290) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class OutlierDetection (line 305) | class OutlierDetection:
method to_dict (line 311) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class PortMapping (line 321) | class PortMapping:
class TCPTimeout (line 328) | class TCPTimeout:
method to_dict (line 331) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class ProtocolTimeouts (line 336) | class ProtocolTimeouts:
method to_dict (line 342) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class ListenerTLS (line 354) | class ListenerTLS:
method to_dict (line 359) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Listener (line 370) | class Listener:
method to_dict (line 378) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class KeyValue (line 394) | class KeyValue:
class LoggingFormat (line 401) | class LoggingFormat:
method to_dict (line 405) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class AccessLogFile (line 412) | class AccessLogFile:
method to_dict (line 416) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class AccessLog (line 423) | class AccessLog:
method to_dict (line 426) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class Logging (line 431) | class Logging:
method to_dict (line 434) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class AWSCloudMap (line 439) | class AWSCloudMap:
method to_dict (line 445) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class DNS (line 459) | class DNS:
method to_dict (line 464) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class ServiceDiscovery (line 475) | class ServiceDiscovery:
method to_dict (line 479) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class VirtualNodeSpec (line 489) | class VirtualNodeSpec:
method to_dict (line 496) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
class VirtualNodeMetadata (line 511) | class VirtualNodeMetadata(Metadata):
method __post_init__ (line 515) | def __post_init__(self) -> None:
method formatted_for_list_api (line 523) | def formatted_for_list_api(self) -> dict[str, Any]: # type: ignore
method formatted_for_crud_apis (line 535) | def formatted_for_crud_apis(self) -> dict[str, Any]: # type: ignore
class VirtualNode (line 548) | class VirtualNode:
method to_dict (line 557) | def to_dict(self) -> dict[str, Any]: # type: ignore[misc]
FILE: moto/appmesh/dataclasses/virtual_router.py
class PortMapping (line 9) | class PortMapping:
class VirtualRouterSpec (line 15) | class VirtualRouterSpec:
class VirtualRouter (line 20) | class VirtualRouter:
method to_dict (line 29) | def to_dict(self) -> dict[str, Any]: # type ignore[misc]
FILE: moto/appmesh/exceptions.py
class MeshError (line 6) | class MeshError(JsonRESTError):
class MeshNotFoundError (line 10) | class MeshNotFoundError(MeshError):
method __init__ (line 11) | def __init__(self, mesh_name: str) -> None:
class ResourceNotFoundError (line 18) | class ResourceNotFoundError(MeshError):
method __init__ (line 19) | def __init__(self, resource_arn: str) -> None:
class MeshOwnerDoesNotMatchError (line 26) | class MeshOwnerDoesNotMatchError(MeshError):
method __init__ (line 27) | def __init__(self, mesh_name: str, mesh_owner: str) -> None:
class VirtualRouterNameAlreadyTakenError (line 34) | class VirtualRouterNameAlreadyTakenError(MeshError):
method __init__ (line 35) | def __init__(self, mesh_name: str, virtual_router_name: str) -> None:
class VirtualRouterNotFoundError (line 42) | class VirtualRouterNotFoundError(MeshError):
method __init__ (line 43) | def __init__(self, mesh_name: str, virtual_router_name: str) -> None:
class RouteNotFoundError (line 50) | class RouteNotFoundError(MeshError):
method __init__ (line 51) | def __init__(
class RouteNameAlreadyTakenError (line 60) | class RouteNameAlreadyTakenError(MeshError):
method __init__ (line 61) | def __init__(
class MissingRequiredFieldError (line 70) | class MissingRequiredFieldError(MeshError):
method __init__ (line 71) | def __init__(self, field_name: str) -> None:
class VirtualNodeNotFoundError (line 78) | class VirtualNodeNotFoundError(MeshError):
method __init__ (line 79) | def __init__(self, mesh_name: str, virtual_node_name: str) -> None:
class VirtualNodeNameAlreadyTakenError (line 86) | class VirtualNodeNameAlreadyTakenError(MeshError):
method __init__ (line 87) | def __init__(self, mesh_name: str, virtual_node_name: str) -> None:
FILE: moto/appmesh/models.py
class AppMeshBackend (line 69) | class AppMeshBackend(BaseBackend):
method __init__ (line 72) | def __init__(self, region_name: str, account_id: str) -> None:
method _validate_mesh (line 76) | def _validate_mesh(self, mesh_name: str, mesh_owner: Optional[str]) ->...
method _check_virtual_node_validity (line 85) | def _check_virtual_node_validity(
method _check_virtual_node_availability (line 96) | def _check_virtual_node_availability(
method _check_router_availability (line 109) | def _check_router_availability(
method _check_router_validity (line 122) | def _check_router_validity(
method _check_route_validity (line 135) | def _check_route_validity(
method _check_route_availability (line 158) | def _check_route_availability(
method create_mesh (line 181) | def create_mesh(
method update_mesh (line 215) | def update_mesh(
method describe_mesh (line 240) | def describe_mesh(self, mesh_name: str, mesh_owner: Optional[str]) -> ...
method delete_mesh (line 244) | def delete_mesh(self, mesh_name: str) -> Mesh:
method list_meshes (line 253) | def list_meshes(self) -> list[dict[str, Union[str, int]]]:
method _get_resource_with_arn (line 269) | def _get_resource_with_arn(
method list_tags_for_resource (line 287) | def list_tags_for_resource(self, resource_arn: str) -> list[dict[str, ...
method tag_resource (line 290) | def tag_resource(self, resource_arn: str, tags: list[dict[str, str]]) ...
method describe_virtual_router (line 296) | def describe_virtual_router(
method create_virtual_router (line 306) | def create_virtual_router(
method update_virtual_router (line 341) | def update_virtual_router(
method delete_virtual_router (line 364) | def delete_virtual_router(
method list_virtual_routers (line 379) | def list_virtual_routers(
method create_route (line 401) | def create_route(
method describe_route (line 440) | def describe_route(
method update_route (line 459) | def update_route(
method delete_route (line 484) | def delete_route(
method list_routes (line 511) | def list_routes(
method describe_virtual_node (line 525) | def describe_virtual_node(
method create_virtual_node (line 535) | def create_virtual_node(
method update_virtual_node (line 568) | def update_virtual_node(
method delete_virtual_node (line 587) | def delete_virtual_node(
method list_virtual_nodes (line 601) | def list_virtual_nodes(
FILE: moto/appmesh/responses.py
class AppMeshResponse (line 15) | class AppMeshResponse(BaseResponse):
method __init__ (line 18) | def __init__(self) -> None:
method appmesh_backend (line 22) | def appmesh_backend(self) -> AppMeshBackend:
method create_mesh (line 26) | def create_mesh(self) -> str:
method update_mesh (line 43) | def update_mesh(self) -> str:
method describe_mesh (line 58) | def describe_mesh(self) -> str:
method delete_mesh (line 67) | def delete_mesh(self) -> str:
method list_meshes (line 72) | def list_meshes(self) -> str:
method list_tags_for_resource (line 82) | def list_tags_for_resource(self) -> str:
method tag_resource (line 94) | def tag_resource(self) -> str:
method describe_virtual_router (line 104) | def describe_virtual_router(self) -> str:
method create_virtual_router (line 115) | def create_virtual_router(self) -> str:
method update_virtual_router (line 133) | def update_virtual_router(self) -> str:
method delete_virtual_router (line 149) | def delete_virtual_router(self) -> str:
method list_virtual_routers (line 160) | def list_virtual_routers(self) -> str:
method create_route (line 173) | def create_route(self) -> str:
method describe_route (line 193) | def describe_route(self) -> str:
method update_route (line 206) | def update_route(self) -> str:
method delete_route (line 224) | def delete_route(self) -> str:
method list_routes (line 237) | def list_routes(self) -> str:
method describe_virtual_node (line 257) | def describe_virtual_node(self) -> str:
method create_virtual_node (line 268) | def create_virtual_node(self) -> str:
method update_virtual_node (line 286) | def update_virtual_node(self) -> str:
method delete_virtual_node (line 302) | def delete_virtual_node(self) -> str:
method list_virtual_nodes (line 313) | def list_virtual_nodes(self) -> str:
FILE: moto/appmesh/utils/common.py
function clean_dict (line 4) | def clean_dict(obj: dict[str, Any]) -> dict[str, Any]: # type: ignore[m...
FILE: moto/appmesh/utils/spec_parsing.py
function port_mappings_from_router_spec (line 71) | def port_mappings_from_router_spec(spec: Any) -> list[RouterPortMapping]...
function get_action_from_route (line 81) | def get_action_from_route(route: Any) -> RouteAction: # type: ignore[misc]
function get_route_match_metadata (line 93) | def get_route_match_metadata(metadata: list[Any]) -> list[GrpcMetadatum]...
function get_grpc_route_match (line 120) | def get_grpc_route_match(route: Any) -> GrpcRouteMatch: # type: ignore[...
function get_http_match_from_route (line 133) | def get_http_match_from_route(route: Any) -> HttpRouteMatch: # type: ig...
function get_http_retry_policy_from_route (line 163) | def get_http_retry_policy_from_route(route: Any) -> Optional[HttpRouteRe...
function get_timeout_from_route (line 180) | def get_timeout_from_route(route: Any) -> Optional[Timeout]: # type: ig...
function get_tls_for_client_policy (line 198) | def get_tls_for_client_policy(tls: Any) -> TLSClientPolicy: # type: ign...
function build_route_spec (line 254) | def build_route_spec(spec: dict[str, Any]) -> RouteSpec: # type: ignore...
function build_virtual_node_spec (line 335) | def build_virtual_node_spec(spec: dict[str, Any]) -> VirtualNodeSpec: #...
FILE: moto/appsync/exceptions.py
class AppSyncExceptions (line 6) | class AppSyncExceptions(JsonRESTError):
class AWSValidationException (line 10) | class AWSValidationException(AppSyncExceptions):
method __init__ (line 13) | def __init__(self, message: str):
class ApiKeyValidityOutOfBoundsException (line 18) | class ApiKeyValidityOutOfBoundsException(AppSyncExceptions):
method __init__ (line 21) | def __init__(self, message: str):
class GraphqlAPINotFound (line 26) | class GraphqlAPINotFound(AppSyncExceptions):
method __init__ (line 29) | def __init__(self, api_id: str):
class GraphQLSchemaException (line 34) | class GraphQLSchemaException(AppSyncExceptions):
method __init__ (line 37) | def __init__(self, message: str):
class GraphqlAPICacheNotFound (line 42) | class GraphqlAPICacheNotFound(AppSyncExceptions):
method __init__ (line 45) | def __init__(self, op: str):
class EventsAPINotFound (line 53) | class EventsAPINotFound(AppSyncExceptions):
method __init__ (line 56) | def __init__(self, api_id: str):
class BadRequestException (line 61) | class BadRequestException(AppSyncExceptions):
method __init__ (line 62) | def __init__(self, message: str):
FILE: moto/appsync/models.py
class APICache (line 51) | class APICache(BaseModel):
method __init__ (line 52) | def __init__(
method update (line 69) | def update(
method to_json (line 82) | def to_json(self) -> dict[str, Any]:
class GraphqlSchema (line 98) | class GraphqlSchema(BaseModel):
method __init__ (line 99) | def __init__(self, definition: Any, region_name: str):
method get_type (line 109) | def get_type(self, name: str) -> Optional[dict[str, Any]]: # type: ig...
method get_status (line 121) | def get_status(self) -> tuple[str, Optional[str]]:
method _parse_graphql_definition (line 124) | def _parse_graphql_definition(self) -> None:
method get_introspection_schema (line 139) | def get_introspection_schema(self, format_: str, include_directives: b...
class GraphqlAPIKey (line 161) | class GraphqlAPIKey(BaseModel):
method __init__ (line 162) | def __init__(self, description: str, expires: Optional[int]):
method update (line 175) | def update(self, description: Optional[str], expires: Optional[int]) -...
method to_json (line 181) | def to_json(self) -> dict[str, Any]:
class GraphqlAPI (line 190) | class GraphqlAPI(BaseModel):
method __init__ (line 191) | def __init__(
method update (line 226) | def update(
method create_api_key (line 256) | def create_api_key(self, description: str, expires: Optional[int]) -> ...
method list_api_keys (line 261) | def list_api_keys(self) -> Iterable[GraphqlAPIKey]:
method delete_api_key (line 264) | def delete_api_key(self, api_key_id: str) -> None:
method update_api_key (line 267) | def update_api_key(
method start_schema_creation (line 274) | def start_schema_creation(self, definition: str) -> None:
method get_schema_status (line 279) | def get_schema_status(self) -> Any:
method get_type (line 282) | def get_type(self, type_name: str, type_format: str) -> Any:
method create_api_cache (line 287) | def create_api_cache(
method update_api_cache (line 306) | def update_api_cache(
method delete_api_cache (line 316) | def delete_api_cache(self) -> None:
method to_json (line 319) | def to_json(self) -> dict[str, Any]:
class EventsAPIKey (line 341) | class EventsAPIKey(BaseModel):
method __init__ (line 342) | def __init__(self, description: str, expires: Optional[int]):
method update (line 355) | def update(self, description: Optional[str], expires: Optional[int]) -...
method to_json (line 361) | def to_json(self) -> dict[str, Any]:
class ChannelNamespace (line 370) | class ChannelNamespace(BaseModel):
method __init__ (line 371) | def __init__(
method to_json (line 398) | def to_json(self) -> dict[str, Any]:
class EventsAPI (line 421) | class EventsAPI(BaseModel):
method __init__ (line 422) | def __init__(
method to_json (line 452) | def to_json(self) -> dict[str, Any]:
method create_api_key (line 468) | def create_api_key(self, description: str, expires: Optional[int]) -> ...
method list_api_keys (line 473) | def list_api_keys(self) -> Iterable[EventsAPIKey]:
method delete_api_key (line 476) | def delete_api_key(self, api_key_id: str) -> None:
method update_api_key (line 479) | def update_api_key(
class AppSyncBackend (line 491) | class AppSyncBackend(BaseBackend):
method __init__ (line 494) | def __init__(self, region_name: str, account_id: str) -> None:
method create_graphql_api (line 500) | def create_graphql_api(
method update_graphql_api (line 533) | def update_graphql_api(
method get_graphql_api (line 558) | def get_graphql_api(self, api_id: str) -> GraphqlAPI:
method get_graphql_schema (line 563) | def get_graphql_schema(self, api_id: str) -> GraphqlSchema:
method delete_graphql_api (line 572) | def delete_graphql_api(self, api_id: str) -> None:
method list_graphql_apis (line 575) | def list_graphql_apis(self) -> Iterable[GraphqlAPI]:
method create_api_key (line 581) | def create_api_key(
method delete_api_key (line 589) | def delete_api_key(self, api_id: str, api_key_id: str) -> None:
method list_api_keys (line 595) | def list_api_keys(
method update_api_key (line 608) | def update_api_key(
method start_schema_creation (line 624) | def start_schema_creation(self, api_id: str, definition: str) -> str:
method get_schema_creation_status (line 628) | def get_schema_creation_status(self, api_id: str) -> Any:
method tag_resource (line 631) | def tag_resource(self, resource_arn: str, tags: dict[str, str]) -> None:
method untag_resource (line 636) | def untag_resource(self, resource_arn: str, tag_keys: list[str]) -> None:
method list_tags_for_resource (line 639) | def list_tags_for_resource(self, resource_arn: str) -> dict[str, str]:
method get_type (line 642) | def get_type(self, api_id: str, type_name: str, type_format: str) -> Any:
method get_api_cache (line 645) | def get_api_cache(self, api_id: str) -> APICache:
method delete_api_cache (line 653) | def delete_api_cache(self, api_id: str) -> None:
method create_api_cache (line 661) | def create_api_cache(
method update_api_cache (line 686) | def update_api_cache(
method flush_api_cache (line 704) | def flush_api_cache(self, api_id: str) -> None:
method create_api (line 711) | def create_api(
method list_apis (line 735) | def list_apis(self) -> Iterable[EventsAPI]:
method delete_api (line 741) | def delete_api(self, api_id: str) -> None:
method create_channel_namespace (line 744) | def create_channel_namespace(
method list_channel_namespaces (line 782) | def list_channel_namespaces(self, api_id: str) -> Iterable[ChannelName...
method delete_channel_namespace (line 787) | def delete_channel_namespace(self, api_id: str, name: str) -> None:
method get_api (line 795) | def get_api(self, api_id: str) -> EventsAPI:
FILE: moto/appsync/responses.py
class AppSyncResponse (line 17) | class AppSyncResponse(BaseResponse):
method __init__ (line 20) | def __init__(self) -> None:
method dns_event_response (line 24) | def dns_event_response(request: Any, url: str, headers: Any) -> TYPE_R...
method appsync_backend (line 34) | def appsync_backend(self) -> AppSyncBackend:
method create_graphql_api (line 38) | def create_graphql_api(self) -> str:
method get_graphql_api (line 68) | def get_graphql_api(self) -> str:
method delete_graphql_api (line 76) | def delete_graphql_api(self) -> str:
method update_graphql_api (line 81) | def update_graphql_api(self) -> str:
method list_graphql_apis (line 109) | def list_graphql_apis(self) -> str:
method create_api_key (line 113) | def create_api_key(self) -> str:
method delete_api_key (line 133) | def delete_api_key(self) -> str:
method list_api_keys (line 139) | def list_api_keys(self) -> str:
method update_api_key (line 145) | def update_api_key(self) -> str:
method start_schema_creation (line 169) | def start_schema_creation(self) -> str:
method get_schema_creation_status (line 178) | def get_schema_creation_status(self) -> str:
method tag_resource (line 183) | def tag_resource(self) -> str:
method untag_resource (line 190) | def untag_resource(self) -> str:
method list_tags_for_resource (line 198) | def list_tags_for_resource(self) -> str:
method _extract_arn_from_path (line 203) | def _extract_arn_from_path(self) -> str:
method get_type (line 208) | def get_type(self) -> str:
method get_introspection_schema (line 217) | def get_introspection_schema(self) -> str:
method get_api_cache (line 233) | def get_api_cache(self) -> str:
method delete_api_cache (line 240) | def delete_api_cache(self) -> str:
method create_api_cache (line 247) | def create_api_cache(self) -> str:
method update_api_cache (line 267) | def update_api_cache(self) -> str:
method flush_api_cache (line 283) | def flush_api_cache(self) -> str:
method create_api (line 290) | def create_api(self) -> str:
method list_apis (line 318) | def list_apis(self) -> str:
method delete_api (line 322) | def delete_api(self) -> str:
method create_channel_namespace (line 327) | def create_channel_namespace(self) -> str:
method list_channel_namespaces (line 360) | def list_channel_namespaces(self) -> str:
method delete_channel_namespace (line 372) | def delete_channel_namespace(self) -> str:
method get_api (line 383) | def get_api(self) -> str:
FILE: moto/athena/exceptions.py
class AthenaClientError (line 7) | class AthenaClientError(JsonRESTError):
method __init__ (line 8) | def __init__(self, code: str, message: str):
class InvalidArgumentException (line 22) | class InvalidArgumentException(JsonRESTError):
method __init__ (line 27) | def __init__(self, message: str):
class QueryStillRunning (line 31) | class QueryStillRunning(JsonRESTError):
method __init__ (line 32) | def __init__(self, current_status: Optional[str]):
FILE: moto/athena/models.py
class TaggableResourceMixin (line 17) | class TaggableResourceMixin:
method __init__ (line 21) | def __init__(
method create_tags (line 33) | def create_tags(self, tags: list[dict[str, str]]) -> list[dict[str, st...
method delete_tags (line 39) | def delete_tags(self, tag_keys: list[str]) -> list[dict[str, str]]:
class WorkGroup (line 44) | class WorkGroup(TaggableResourceMixin, BaseModel):
method __init__ (line 48) | def __init__(
class DataCatalog (line 83) | class DataCatalog(TaggableResourceMixin, BaseModel):
method __init__ (line 84) | def __init__(
class Execution (line 107) | class Execution(ManagedState):
method __init__ (line 108) | def __init__(
class QueryResults (line 136) | class QueryResults(BaseModel):
method __init__ (line 137) | def __init__(self, rows: list[dict[str, Any]], column_info: list[dict[...
method to_dict (line 141) | def to_dict(self) -> dict[str, Any]:
class CapacityReservation (line 150) | class CapacityReservation(TaggableResourceMixin, BaseModel):
method __init__ (line 151) | def __init__(
class NamedQuery (line 172) | class NamedQuery(BaseModel):
method __init__ (line 173) | def __init__(
class PreparedStatement (line 189) | class PreparedStatement(BaseModel):
method __init__ (line 190) | def __init__(
class AthenaBackend (line 204) | class AthenaBackend(BaseBackend):
method __init__ (line 214) | def __init__(self, region_name: str, account_id: str):
method create_work_group (line 237) | def create_work_group(
method list_work_groups (line 251) | def list_work_groups(self) -> list[dict[str, Any]]:
method get_work_group (line 262) | def get_work_group(self, name: str) -> Optional[dict[str, Any]]:
method delete_work_group (line 274) | def delete_work_group(self, name: str) -> None:
method start_query_execution (line 277) | def start_query_execution(
method _store_predefined_query_results (line 298) | def _store_predefined_query_results(self, exec_id: str) -> None:
method get_query_execution (line 304) | def get_query_execution(self, exec_id: str) -> Execution:
method list_query_executions (line 309) | def list_query_executions(self, workgroup: Optional[str]) -> dict[str,...
method get_query_results (line 321) | def get_query_results(self, exec_id: str) -> QueryResults:
method _store_query_result_in_s3 (line 381) | def _store_query_result_in_s3(self, exec_id: str) -> None:
method stop_query_execution (line 406) | def stop_query_execution(self, exec_id: str) -> None:
method create_capacity_reservation (line 410) | def create_capacity_reservation(
method get_capacity_reservation (line 421) | def get_capacity_reservation(self, name: str) -> Optional[CapacityRese...
method list_capacity_reservations (line 424) | def list_capacity_reservations(self) -> list[dict[str, Any]]:
method update_capacity_reservation (line 430) | def update_capacity_reservation(self, name: str, target_dpus: int) -> ...
method create_named_query (line 436) | def create_named_query(
method get_named_query (line 454) | def get_named_query(self, query_id: str) -> Optional[NamedQuery]:
method list_data_catalogs (line 457) | def list_data_catalogs(self) -> list[dict[str, str]]:
method get_data_catalog (line 463) | def get_data_catalog(self, name: str) -> Optional[dict[str, str]]:
method create_data_catalog (line 474) | def create_data_catalog(
method list_named_queries (line 492) | def list_named_queries(self, work_group: str) -> list[str]:
method create_prepared_statement (line 498) | def create_prepared_statement(
method get_prepared_statement (line 514) | def get_prepared_statement(
method get_query_runtime_statistics (line 523) | def get_query_runtime_statistics(
method list_tags_for_resource (line 530) | def list_tags_for_resource(self, resource_arn: str) -> Optional[dict[s...
method tag_resource (line 535) | def tag_resource(
method untag_resource (line 541) | def untag_resource(self, resource_arn: str, tag_keys: list[str]) -> di...
FILE: moto/athena/responses.py
class AthenaResponse (line 9) | class AthenaResponse(BaseResponse):
method __init__ (line 10) | def __init__(self) -> None:
method athena_backend (line 14) | def athena_backend(self) -> AthenaBackend:
method create_work_group (line 17) | def create_work_group(self) -> Union[tuple[str, dict[str, int]], str]:
method list_work_groups (line 37) | def list_work_groups(self) -> str:
method get_work_group (line 40) | def get_work_group(self) -> str:
method delete_work_group (line 44) | def delete_work_group(self) -> str:
method start_query_execution (line 49) | def start_query_execution(self) -> Union[tuple[str, dict[str, int]], s...
method get_query_execution (line 66) | def get_query_execution(self) -> str:
method create_capacity_reservation (line 107) | def create_capacity_reservation(self) -> Union[tuple[str, dict[str, in...
method get_capacity_reservation (line 114) | def get_capacity_reservation(self) -> Union[str, tuple[str, dict[str, ...
method list_capacity_reservations (line 129) | def list_capacity_reservations(self) -> str:
method update_capacity_reservation (line 133) | def update_capacity_reservation(self) -> str:
method get_query_results (line 139) | def get_query_results(self) -> str:
method list_query_executions (line 144) | def list_query_executions(self) -> str:
method stop_query_execution (line 149) | def stop_query_execution(self) -> str:
method error (line 154) | def error(self, msg: str, status: int) -> tuple[str, dict[str, int]]:
method create_named_query (line 160) | def create_named_query(self) -> Union[tuple[str, dict[str, int]], str]:
method get_named_query (line 173) | def get_named_query(self) -> str:
method list_data_catalogs (line 189) | def list_data_catalogs(self) -> str:
method list_tags_for_resource (line 194) | def list_tags_for_resource(self) -> Union[tuple[str, dict[str, int]], ...
method tag_resource (line 201) | def tag_resource(self) -> str:
method untag_resource (line 208) | def untag_resource(self) -> str:
method get_data_catalog (line 215) | def get_data_catalog(self) -> str:
method create_data_catalog (line 219) | def create_data_catalog(self) -> Union[tuple[str, dict[str, int]], str]:
method list_named_queries (line 240) | def list_named_queries(self) -> str:
method create_prepared_statement (line 249) | def create_prepared_statement(self) -> Union[str, tuple[str, dict[str,...
method get_prepared_statement (line 264) | def get_prepared_statement(self) -> str:
method get_query_runtime_statistics (line 283) | def get_query_runtime_statistics(self) -> Union[str, tuple[str, dict[s...
FILE: moto/autoscaling/exceptions.py
class AutoscalingClientError (line 4) | class AutoscalingClientError(ServiceException):
class ResourceContentionError (line 8) | class ResourceContentionError(AutoscalingClientError):
class ValidationError (line 13) | class ValidationError(AutoscalingClientError):
class InvalidInstanceError (line 17) | class InvalidInstanceError(ValidationError):
method __init__ (line 18) | def __init__(self, instance_id: str):
FILE: moto/autoscaling/models.py
function make_int (line 41) | def make_int(value: Union[None, str, int]) -> Optional[int]:
class Activity (line 45) | class Activity:
method __init__ (line 46) | def __init__(
method auto_scaling_group_name (line 66) | def auto_scaling_group_name(self) -> str:
class TerminateInstanceActivity (line 70) | class TerminateInstanceActivity(Activity):
method __init__ (line 71) | def __init__(self, instance: Instance, original_capacity: int):
class EnterStandbyActivity (line 85) | class EnterStandbyActivity(Activity):
method __init__ (line 86) | def __init__(self, instance: Instance, original_capacity: Optional[int...
class ExitStandbyActivity (line 101) | class ExitStandbyActivity(Activity):
method __init__ (line 102) | def __init__(self, instance: Instance, original_capacity: Optional[int...
class DetachInstanceActivity (line 113) | class DetachInstanceActivity(Activity):
method __init__ (line 114) | def __init__(self, instance: Instance):
class InstanceState (line 123) | class InstanceState:
method __init__ (line 124) | def __init__(
method launch_template (line 145) | def launch_template(self) -> Optional[dict[str, Any]]:
method launch_configuration_name (line 159) | def launch_configuration_name(self) -> Optional[str]:
class LifecycleHook (line 167) | class LifecycleHook(BaseModel):
method __init__ (line 168) | def __init__(
class TargetTrackingConfiguration (line 187) | class TargetTrackingConfiguration:
method __init__ (line 188) | def __init__(self, data: Optional[dict[str, Any]]) -> None:
class FakeScalingPolicy (line 200) | class FakeScalingPolicy(BaseModel):
method __init__ (line 201) | def __init__(
method arn (line 239) | def arn(self) -> str:
method execute (line 244) | def execute(self) -> None:
class FakeLaunchConfiguration (line 259) | class FakeLaunchConfiguration(CloudFormationModel):
method __init__ (line 260) | def __init__(
method create_from_instance (line 303) | def create_from_instance(
method cloudformation_name_type (line 327) | def cloudformation_name_type() -> str:
method cloudformation_type (line 331) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 336) | def create_from_cloudformation_json( # type: ignore[misc]
method update_from_cloudformation_json (line 368) | def update_from_cloudformation_json( # type: ignore[misc]
method delete_from_cloudformation_json (line 384) | def delete_from_cloudformation_json( # type: ignore[misc]
method delete (line 397) | def delete(self, account_id: str, region_name: str) -> None:
method physical_resource_id (line 402) | def physical_resource_id(self) -> str:
method block_device_mappings (line 406) | def block_device_mappings(self) -> list[dict[str, Any]]:
method instance_monitoring (line 430) | def instance_monitoring(self) -> dict[str, bool]:
method _parse_block_device_mappings (line 433) | def _parse_block_device_mappings(self) -> BlockDeviceMapping:
class FakeScheduledAction (line 455) | class FakeScheduledAction(CloudFormationModel):
method __init__ (line 456) | def __init__(
method cloudformation_name_type (line 479) | def cloudformation_name_type() -> str:
method cloudformation_type (line 483) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 488) | def create_from_cloudformation_json( # type: ignore[misc]
class FailedScheduledUpdateGroupActionRequest (line 520) | class FailedScheduledUpdateGroupActionRequest:
method __init__ (line 521) | def __init__(
class FakeWarmPool (line 533) | class FakeWarmPool(CloudFormationModel):
method __init__ (line 534) | def __init__(
class FakeAutoScalingGroup (line 547) | class FakeAutoScalingGroup(CloudFormationModel):
method __init__ (line 548) | def __init__(
method launch_template (line 633) | def launch_template(self) -> Optional[dict[str, Any]]:
method enabled_metrics (line 644) | def enabled_metrics(self) -> list[dict[str, str]]:
method suspended_processes (line 648) | def suspended_processes(self) -> list[dict[str, str]]:
method suspended_processes (line 655) | def suspended_processes(self, processes: list[str]) -> None:
method tags (line 659) | def tags(self) -> list[dict[str, str]]:
method tags (line 663) | def tags(self, tags: list[dict[str, Any]]) -> None:
method arn (line 674) | def arn(self) -> str:
method active_instances (line 677) | def active_instances(self) -> list[InstanceState]:
method _set_azs_and_vpcs (line 680) | def _set_azs_and_vpcs(
method _set_launch_configuration (line 716) | def _set_launch_configuration(
method cloudformation_name_type (line 789) | def cloudformation_name_type() -> str:
method cloudformation_type (line 793) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 798) | def create_from_cloudformation_json( # type: ignore[misc]
method update_from_cloudformation_json (line 842) | def update_from_cloudformation_json( # type: ignore[misc]
method delete_from_cloudformation_json (line 858) | def delete_from_cloudformation_json( # type: ignore[misc]
method delete (line 871) | def delete(self, account_id: str, region_name: str) -> None:
method physical_resource_id (line 876) | def physical_resource_id(self) -> str:
method image_id (line 880) | def image_id(self) -> str:
method instance_type (line 888) | def instance_type(self) -> str:
method user_data (line 896) | def user_data(self) -> Optional[Base64EncodedString]:
method security_groups (line 904) | def security_groups(self) -> list[str]:
method instance_tags (line 912) | def instance_tags(self) -> dict[str, str]:
method instances (line 919) | def instances(self) -> list[InstanceState]:
method warm_pool_configuration (line 923) | def warm_pool_configuration(self) -> Optional[FakeWarmPool]:
method update (line 926) | def update(
method set_desired_capacity (line 972) | def set_desired_capacity(self, new_capacity: Optional[int]) -> None:
method get_propagated_tags (line 1067) | def get_propagated_tags(self) -> dict[str, str]:
method replace_autoscaling_group_instances (line 1074) | def replace_autoscaling_group_instances(
method append_target_groups (line 1120) | def append_target_groups(self, target_group_arns: list[str]) -> None:
method enable_metrics_collection (line 1124) | def enable_metrics_collection(self, metrics: list[str]) -> None:
method put_warm_pool (line 1127) | def put_warm_pool(
method get_warm_pool (line 1141) | def get_warm_pool(self) -> Optional[FakeWarmPool]:
class AutoScalingBackend (line 1145) | class AutoScalingBackend(BaseBackend):
method __init__ (line 1146) | def __init__(self, region_name: str, account_id: str):
method create_launch_configuration (line 1157) | def create_launch_configuration(
method describe_launch_configurations (line 1213) | def describe_launch_configurations(
method delete_launch_configuration (line 1226) | def delete_launch_configuration(self, launch_configuration_name: str) ...
method put_scheduled_update_group_action (line 1229) | def put_scheduled_update_group_action(
method batch_put_scheduled_update_group_action (line 1260) | def batch_put_scheduled_update_group_action(
method describe_scheduled_actions (line 1287) | def describe_scheduled_actions(
method delete_scheduled_action (line 1306) | def delete_scheduled_action(
method batch_delete_scheduled_action (line 1317) | def batch_delete_scheduled_action(
method create_auto_scaling_group (line 1336) | def create_auto_scaling_group(
method update_auto_scaling_group (line 1418) | def update_auto_scaling_group(
method describe_auto_scaling_groups (line 1461) | def describe_auto_scaling_groups(
method delete_auto_scaling_group (line 1496) | def delete_auto_scaling_group(self, group_name: str) -> None:
method describe_auto_scaling_instances (line 1500) | def describe_auto_scaling_instances(
method attach_instances (line 1514) | def attach_instances(self, group_name: str, instance_ids: list[str]) -...
method set_instance_health (line 1538) | def set_instance_health(self, instance_id: str, health_status: str) ->...
method detach_instances (line 1551) | def detach_instances(
method set_desired_capacity (line 1577) | def set_desired_capacity(
method change_capacity (line 1584) | def change_capacity(
method change_capacity_percent (line 1591) | def change_capacity_percent(
method create_lifecycle_hook (line 1609) | def create_lifecycle_hook(
method describe_lifecycle_hooks (line 1622) | def describe_lifecycle_hooks(
method delete_lifecycle_hook (line 1634) | def delete_lifecycle_hook(self, as_name: str, name: str) -> None:
method put_scaling_policy (line 1637) | def put_scaling_policy(
method describe_policies (line 1671) | def describe_policies(
method delete_policy (line 1688) | def delete_policy(self, group_name: str) -> None:
method execute_policy (line 1691) | def execute_policy(self, group_name: str) -> None:
method update_attached_elbs (line 1695) | def update_attached_elbs(self, group_name: str) -> None:
method update_attached_target_groups (line 1720) | def update_attached_target_groups(self, group_name: str) -> None:
method create_or_update_tags (line 1740) | def create_or_update_tags(self, tags: list[dict[str, str]]) -> None:
method delete_tags (line 1760) | def delete_tags(self, tags: list[dict[str, str]]) -> None:
method attach_load_balancers (line 1768) | def attach_load_balancers(
method describe_load_balancers (line 1777) | def describe_load_balancers(self, group_name: str) -> list[str]:
method detach_load_balancers (line 1780) | def detach_load_balancers(
method attach_load_balancer_target_groups (line 1794) | def attach_load_balancer_target_groups(
method describe_load_balancer_target_groups (line 1801) | def describe_load_balancer_target_groups(self, group_name: str) -> lis...
method detach_load_balancer_target_groups (line 1804) | def detach_load_balancer_target_groups(
method suspend_processes (line 1815) | def suspend_processes(self, group_name: str, scaling_processes: list[s...
method resume_processes (line 1832) | def resume_processes(self, group_name: str, scaling_processes: list[st...
method set_instance_protection (line 1842) | def set_instance_protection(
method notify_terminate_instances (line 1855) | def notify_terminate_instances(self, instance_ids: list[str]) -> None:
method enter_standby_instances (line 1876) | def enter_standby_instances(
method exit_standby_instances (line 1893) | def exit_standby_instances(
method terminate_instance (line 1909) | def terminate_instance(
method describe_tags (line 1925) | def describe_tags(self, filters: list[dict[str, str]]) -> list[dict[st...
method enable_metrics_collection (line 1945) | def enable_metrics_collection(self, group_name: str, metrics: list[str...
method put_warm_pool (line 1949) | def put_warm_pool(
method describe_warm_pool (line 1965) | def describe_warm_pool(self, group_name: str) -> Optional[FakeWarmPool]:
method delete_warm_pool (line 1972) | def delete_warm_pool(self, group_name: str) -> None:
FILE: moto/autoscaling/responses.py
class AutoScalingResponse (line 9) | class AutoScalingResponse(BaseResponse):
method __init__ (line 10) | def __init__(self) -> None:
method autoscaling_backend (line 15) | def autoscaling_backend(self) -> AutoScalingBackend:
method call_action (line 19) | def call_action(self) -> TYPE_RESPONSE:
method create_launch_configuration (line 22) | def create_launch_configuration(self) -> ActionResult:
method describe_launch_configurations (line 49) | def describe_launch_configurations(self) -> ActionResult:
method delete_launch_configuration (line 75) | def delete_launch_configuration(self) -> ActionResult:
method create_auto_scaling_group (line 80) | def create_auto_scaling_group(self) -> ActionResult:
method put_scheduled_update_group_action (line 108) | def put_scheduled_update_group_action(self) -> ActionResult:
method batch_put_scheduled_update_group_action (line 122) | def batch_put_scheduled_update_group_action(self) -> ActionResult:
method describe_scheduled_actions (line 132) | def describe_scheduled_actions(self) -> ActionResult:
method delete_scheduled_action (line 140) | def delete_scheduled_action(self) -> ActionResult:
method batch_delete_scheduled_action (line 149) | def batch_delete_scheduled_action(self) -> ActionResult:
method describe_scaling_activities (line 159) | def describe_scaling_activities(self) -> ActionResult:
method attach_instances (line 163) | def attach_instances(self) -> ActionResult:
method set_instance_health (line 169) | def set_instance_health(self) -> ActionResult:
method detach_instances (line 177) | def detach_instances(self) -> ActionResult:
method attach_load_balancer_target_groups (line 187) | def attach_load_balancer_target_groups(self) -> ActionResult:
method describe_load_balancer_target_groups (line 196) | def describe_load_balancer_target_groups(self) -> ActionResult:
method detach_load_balancer_target_groups (line 209) | def detach_load_balancer_target_groups(self) -> ActionResult:
method describe_auto_scaling_groups (line 218) | def describe_auto_scaling_groups(self) -> ActionResult:
method update_auto_scaling_group (line 240) | def update_auto_scaling_group(self) -> ActionResult:
method delete_auto_scaling_group (line 259) | def delete_auto_scaling_group(self) -> ActionResult:
method set_desired_capacity (line 264) | def set_desired_capacity(self) -> ActionResult:
method create_or_update_tags (line 270) | def create_or_update_tags(self) -> ActionResult:
method delete_tags (line 274) | def delete_tags(self) -> ActionResult:
method describe_auto_scaling_instances (line 278) | def describe_auto_scaling_instances(self) -> ActionResult:
method put_lifecycle_hook (line 285) | def put_lifecycle_hook(self) -> ActionResult:
method describe_lifecycle_hooks (line 295) | def describe_lifecycle_hooks(self) -> ActionResult:
method delete_lifecycle_hook (line 303) | def delete_lifecycle_hook(self) -> ActionResult:
method put_scaling_policy (line 309) | def put_scaling_policy(self) -> ActionResult:
method describe_policies (line 329) | def describe_policies(self) -> ActionResult:
method delete_policy (line 338) | def delete_policy(self) -> ActionResult:
method execute_policy (line 343) | def execute_policy(self) -> ActionResult:
method attach_load_balancers (line 348) | def attach_load_balancers(self) -> ActionResult:
method describe_load_balancers (line 354) | def describe_load_balancers(self) -> ActionResult:
method detach_load_balancers (line 364) | def detach_load_balancers(self) -> ActionResult:
method enter_standby (line 370) | def enter_standby(self) -> ActionResult:
method exit_standby (line 380) | def exit_standby(self) -> ActionResult:
method suspend_processes (line 389) | def suspend_processes(self) -> ActionResult:
method resume_processes (line 397) | def resume_processes(self) -> ActionResult:
method set_instance_protection (line 405) | def set_instance_protection(self) -> ActionResult:
method terminate_instance_in_auto_scaling_group (line 414) | def terminate_instance_in_auto_scaling_group(self) -> ActionResult:
method describe_tags (line 423) | def describe_tags(self) -> ActionResult:
method enable_metrics_collection (line 429) | def enable_metrics_collection(self) -> ActionResult:
method put_warm_pool (line 435) | def put_warm_pool(self) -> ActionResult:
method describe_warm_pool (line 451) | def describe_warm_pool(self) -> ActionResult:
method delete_warm_pool (line 457) | def delete_warm_pool(self) -> ActionResult:
FILE: moto/awslambda/exceptions.py
class LambdaClientError (line 6) | class LambdaClientError(JsonRESTError):
method __init__ (line 7) | def __init__(self, error: str, message: str):
class CrossAccountNotAllowed (line 11) | class CrossAccountNotAllowed(LambdaClientError):
method __init__ (line 12) | def __init__(self) -> None:
class FunctionAlreadyExists (line 18) | class FunctionAlreadyExists(LambdaClientError):
method __init__ (line 21) | def __init__(self, function_name: str) -> None:
class InvalidParameterValueException (line 26) | class InvalidParameterValueException(LambdaClientError):
method __init__ (line 27) | def __init__(self, message: str):
class InvalidRoleFormat (line 31) | class InvalidRoleFormat(LambdaClientError):
method __init__ (line 34) | def __init__(self, role: str):
class PreconditionFailedException (line 39) | class PreconditionFailedException(JsonRESTError):
method __init__ (line 42) | def __init__(self, message: str):
class ConflictException (line 46) | class ConflictException(LambdaClientError):
method __init__ (line 49) | def __init__(self, message: str):
class UnknownAliasException (line 53) | class UnknownAliasException(LambdaClientError):
method __init__ (line 56) | def __init__(self, arn: str):
class UnknownFunctionException (line 60) | class UnknownFunctionException(LambdaClientError):
method __init__ (line 63) | def __init__(self, arn: str):
class GenericResourcNotFound (line 67) | class GenericResourcNotFound(LambdaClientError):
method __init__ (line 70) | def __init__(self) -> None:
class UnknownLayerException (line 76) | class UnknownLayerException(LambdaClientError):
method __init__ (line 79) | def __init__(self) -> None:
class UnknownLayerVersionException (line 83) | class UnknownLayerVersionException(LambdaClientError):
method __init__ (line 86) | def __init__(self, arns: Any) -> None:
class UnknownPolicyException (line 93) | class UnknownPolicyException(LambdaClientError):
method __init__ (line 96) | def __init__(self) -> None:
class UnknownEventConfig (line 103) | class UnknownEventConfig(LambdaClientError):
method __init__ (line 106) | def __init__(self, arn: str) -> None:
class ValidationException (line 113) | class ValidationException(LambdaClientError):
method __init__ (line 114) | def __init__(self, value: str, property_name: str, specific_message: s...
FILE: moto/awslambda/models.py
class LayerDataType (line 78) | class LayerDataType(TypedDict):
function zip2tar (line 83) | def zip2tar(zip_bytes: bytes) -> io.BytesIO:
function file2tar (line 102) | def file2tar(file_content: bytes, file_name: str) -> io.BytesIO:
class _VolumeRefCount (line 113) | class _VolumeRefCount:
method __init__ (line 116) | def __init__(self, refcount: int, volume: Any):
class _DockerDataVolumeContext (line 121) | class _DockerDataVolumeContext:
method __init__ (line 128) | def __init__(self, lambda_func: LambdaFunction):
method name (line 133) | def name(self) -> str:
method __enter__ (line 136) | def __enter__(self) -> _DockerDataVolumeContext:
method __exit__ (line 172) | def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
class _DockerDataVolumeLayerContext (line 187) | class _DockerDataVolumeLayerContext:
method __init__ (line 193) | def __init__(self, lambda_func: LambdaFunction):
method name (line 199) | def name(self) -> str:
method hash (line 203) | def hash(self) -> str:
method __enter__ (line 211) | def __enter__(self) -> _DockerDataVolumeLayerContext:
method __exit__ (line 259) | def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
function _zipfile_content (line 274) | def _zipfile_content(zipfile_content: Union[str, bytes]) -> tuple[bytes,...
function _s3_content (line 286) | def _s3_content(key: Any) -> tuple[bytes, int, str, str]:
function _validate_s3_bucket_and_key (line 293) | def _validate_s3_bucket_and_key(
class EventInvokeConfig (line 316) | class EventInvokeConfig:
method __init__ (line 317) | def __init__(self, arn: str, last_modified: str, config: dict[str, Any...
method validate_max (line 324) | def validate_max(self) -> None:
method validate (line 346) | def validate(self) -> None:
method response (line 375) | def response(self) -> dict[str, Any]:
class ImageConfig (line 381) | class ImageConfig:
method __init__ (line 382) | def __init__(self, config: dict[str, Any]) -> None:
method response (line 387) | def response(self) -> dict[str, Any]:
class Permission (line 397) | class Permission(CloudFormationModel):
method __init__ (line 398) | def __init__(self, region: str):
method cloudformation_name_type (line 402) | def cloudformation_name_type() -> str:
method cloudformation_type (line 406) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 410) | def create_from_cloudformation_json( # type: ignore[misc]
class LayerVersion (line 425) | class LayerVersion(CloudFormationModel):
method __init__ (line 426) | def __init__(self, spec: dict[str, Any], account_id: str, region: str):
method arn (line 475) | def arn(self) -> str:
method attach (line 482) | def attach(self, layer: Layer, version: int) -> None:
method get_layer_version (line 487) | def get_layer_version(self) -> dict[str, Any]:
method cloudformation_name_type (line 509) | def cloudformation_name_type() -> str:
method cloudformation_type (line 513) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 517) | def create_from_cloudformation_json( # type: ignore[misc]
class LambdaAlias (line 542) | class LambdaAlias(BaseModel):
method __init__ (line 543) | def __init__(
method update (line 560) | def update(
method to_json (line 573) | def to_json(self) -> dict[str, Any]:
class Layer (line 584) | class Layer:
method __init__ (line 585) | def __init__(self, layer_version: LayerVersion):
method attach_version (line 595) | def attach_version(self, layer_version: LayerVersion) -> None:
method delete_version (line 600) | def delete_version(self, layer_version: str) -> None:
method to_dict (line 603) | def to_dict(self) -> dict[str, Any]:
class LambdaFunction (line 617) | class LambdaFunction(CloudFormationModel, DockerModel):
method __init__ (line 618) | def __init__(
method __getstate__ (line 684) | def __getstate__(self) -> dict[str, Any]:
method set_version (line 691) | def set_version(self, version: int) -> None:
method architectures (line 699) | def architectures(self) -> list[str]:
method architectures (line 703) | def architectures(self, architectures: list[str]) -> None:
method ephemeral_storage (line 718) | def ephemeral_storage(self) -> int:
method ephemeral_storage (line 722) | def ephemeral_storage(self, ephemeral_storage: int) -> None:
method vpc_config (line 734) | def vpc_config(self) -> Optional[dict[str, Any]]: # type: ignore[misc]
method physical_resource_id (line 743) | def physical_resource_id(self) -> str:
method __repr__ (line 746) | def __repr__(self) -> str:
method _get_layers_data (line 749) | def _get_layers_data(self, layers_versions_arns: list[str]) -> list[La...
method get_function_code_signing_config (line 763) | def get_function_code_signing_config(self) -> dict[str, Any]:
method get_configuration (line 769) | def get_configuration(self, on_create: bool = False) -> dict[str, Any]:
method get_code (line 808) | def get_code(self) -> dict[str, Any]:
method update_configuration (line 835) | def update_configuration(self, config_updates: dict[str, Any]) -> dict...
method _set_function_code (line 860) | def _set_function_code(self, updated_spec: dict[str, Any]) -> None:
method update_function_code (line 954) | def update_function_code(self, updated_spec: dict[str, Any]) -> dict[s...
method convert (line 960) | def convert(s: Any) -> str: # type: ignore[misc]
method _invoke_lambda (line 966) | def _invoke_lambda(self, event: Optional[str] = None) -> tuple[str, bo...
method save_logs (line 1103) | def save_logs(self, output: str) -> None:
method invoke (line 1119) | def invoke(
method cloudformation_name_type (line 1141) | def cloudformation_name_type() -> str:
method cloudformation_type (line 1145) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 1150) | def create_from_cloudformation_json( # type: ignore[misc]
method has_cfn_attr (line 1197) | def has_cfn_attr(cls, attr: str) -> bool:
method get_cfn_attribute (line 1200) | def get_cfn_attribute(self, attribute_name: str) -> str:
method update_from_cloudformation_json (line 1208) | def update_from_cloudformation_json( # type: ignore[misc]
method _create_zipfile_from_plaintext_code (line 1222) | def _create_zipfile_from_plaintext_code(code: str) -> bytes:
method delete (line 1235) | def delete(self, account_id: str, region: str) -> None:
method create_url_config (line 1238) | def create_url_config(self, config: dict[str, Any]) -> FunctionUrlConfig:
method delete_url_config (line 1242) | def delete_url_config(self) -> None:
method get_url_config (line 1245) | def get_url_config(self) -> FunctionUrlConfig:
method update_url_config (line 1250) | def update_url_config(self, config: dict[str, Any]) -> FunctionUrlConfig:
class FunctionUrlConfig (line 1255) | class FunctionUrlConfig:
method __init__ (line 1256) | def __init__(self, function: LambdaFunction, config: dict[str, Any]):
method to_dict (line 1263) | def to_dict(self) -> dict[str, Any]:
method update (line 1274) | def update(self, new_config: dict[str, Any]) -> None:
class EventSourceMapping (line 1282) | class EventSourceMapping(CloudFormationModel):
method __init__ (line 1283) | def __init__(self, spec: dict[str, Any]):
method _get_service_source_from_arn (line 1331) | def _get_service_source_from_arn(
method event_source_arn (line 1341) | def event_source_arn(self) -> str:
method event_source_arn (line 1345) | def event_source_arn(self, event_source_arn: str) -> None:
method batch_size (line 1354) | def batch_size(self) -> int:
method batch_size (line 1358) | def batch_size(self, new_batch_size: Optional[int]) -> None:
method get_configuration (line 1377) | def get_configuration(self) -> dict[str, Any]:
method delete (line 1414) | def delete(self, account_id: str, region_name: str) -> None:
method cloudformation_type (line 1419) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 1424) | def create_from_cloudformation_json( # type: ignore[misc]
method update_from_cloudformation_json (line 1437) | def update_from_cloudformation_json( # type: ignore[misc]
method delete_from_cloudformation_json (line 1451) | def delete_from_cloudformation_json( # type: ignore[misc]
method physical_resource_id (line 1470) | def physical_resource_id(self) -> str:
class LambdaVersion (line 1474) | class LambdaVersion(CloudFormationModel):
method __init__ (line 1475) | def __init__(self, spec: dict[str, Any]):
method __repr__ (line 1478) | def __repr__(self) -> str:
method cloudformation_type (line 1482) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 1487) | def create_from_cloudformation_json( # type: ignore[misc]
class LambdaStorage (line 1502) | class LambdaStorage:
method __init__ (line 1503) | def __init__(self, region_name: str, account_id: str):
method _get_latest (line 1516) | def _get_latest(self, name: str) -> LambdaFunction:
method _get_version (line 1519) | def _get_version(self, name: str, version: str) -> Optional[LambdaFunc...
method _get_function_aliases (line 1526) | def _get_function_aliases(self, function_name: str) -> dict[str, Lambd...
method delete_alias (line 1532) | def delete_alias(self, name: str, function_name: str) -> None:
method get_alias (line 1536) | def get_alias(self, name: str, function_name: str) -> LambdaAlias:
method put_alias (line 1544) | def put_alias(
method update_alias (line 1572) | def update_alias(
method get_function_by_name_forbid_qualifier (line 1588) | def get_function_by_name_forbid_qualifier(self, name: str) -> LambdaFu...
method get_function_by_name_with_qualifier (line 1603) | def get_function_by_name_with_qualifier(
method list_versions_by_function (line 1649) | def list_versions_by_function(self, name: str) -> Iterable[LambdaFunct...
method list_aliases (line 1657) | def list_aliases(self, function_name: str) -> Iterable[LambdaAlias]:
method get_arn (line 1661) | def get_arn(self, arn: str) -> Optional[LambdaFunction]:
method split_function_arn (line 1665) | def split_function_arn(self, arn: str) -> tuple[str, str, Optional[str]]:
method get_function_by_name_or_arn_forbid_qualifier (line 1682) | def get_function_by_name_or_arn_forbid_qualifier(
method get_function_by_name_or_arn_with_qualifier (line 1702) | def get_function_by_name_or_arn_with_qualifier(
method construct_unknown_function_exception (line 1718) | def construct_unknown_function_exception(
method put_function (line 1731) | def put_function(self, fn: LambdaFunction) -> None:
method publish_version (line 1752) | def publish_version(
method del_function (line 1781) | def del_function(self, name_or_arn: str, qualifier: Optional[str] = No...
method all (line 1821) | def all(self) -> Iterable[LambdaFunction]:
method latest (line 1833) | def latest(self) -> Iterable[LambdaFunction]:
class LayerStorage (line 1846) | class LayerStorage:
method __init__ (line 1847) | def __init__(self) -> None:
method _find_layer_by_name_or_arn (line 1853) | def _find_layer_by_name_or_arn(self, name_or_arn: str) -> Layer:
method put_layer_version (line 1861) | def put_layer_version(self, layer_version: LayerVersion) -> None:
method list_layers (line 1869) | def list_layers(self) -> Iterable[dict[str, Any]]:
method delete_layer_version (line 1874) | def delete_layer_version(self, layer_name: str, layer_version: str) ->...
method get_layer_version (line 1878) | def get_layer_version(self, layer_name: str, layer_version: str) -> La...
method get_layer_versions (line 1885) | def get_layer_versions(self, layer_name: str) -> list[LayerVersion]:
method get_layer_version_by_arn (line 1890) | def get_layer_version_by_arn(
class LambdaBackend (line 1901) | class LambdaBackend(BaseBackend):
method __init__ (line 1979) | def __init__(self, region_name: str, account_id: str):
method create_alias (line 1985) | def create_alias(
method delete_alias (line 1997) | def delete_alias(self, name: str, function_name: str) -> None:
method get_alias (line 2000) | def get_alias(self, name: str, function_name: str) -> LambdaAlias:
method update_alias (line 2003) | def update_alias(
method create_function (line 2018) | def create_function(self, spec: dict[str, Any]) -> LambdaFunction:
method create_function_url_config (line 2043) | def create_function_url_config(
method delete_function_url_config (line 2055) | def delete_function_url_config(self, name_or_arn: str) -> None:
method get_function_url_config (line 2064) | def get_function_url_config(self, name_or_arn: str) -> FunctionUrlConfig:
method update_function_url_config (line 2075) | def update_function_url_config(
method create_event_source_mapping (line 2086) | def create_event_source_mapping(self, spec: dict[str, Any]) -> EventSo...
method publish_layer_version (line 2142) | def publish_layer_version(self, spec: dict[str, Any]) -> LayerVersion:
method list_layers (line 2153) | def list_layers(self) -> Iterable[dict[str, Any]]:
method delete_layer_version (line 2156) | def delete_layer_version(self, layer_name: str, layer_version: str) ->...
method get_layer_version (line 2159) | def get_layer_version(self, layer_name: str, layer_version: str) -> La...
method list_layer_versions (line 2162) | def list_layer_versions(self, layer_name: str) -> Iterable[LayerVersion]:
method layers_versions_by_arn (line 2165) | def layers_versions_by_arn(self, layer_version_arn: str) -> Optional[L...
method publish_version (line 2168) | def publish_version(
method get_function (line 2173) | def get_function(
method list_versions_by_function (line 2180) | def list_versions_by_function(self, function_name: str) -> Iterable[La...
method list_aliases (line 2183) | def list_aliases(self, function_name: str) -> Iterable[LambdaAlias]:
method get_event_source_mapping (line 2186) | def get_event_source_mapping(self, uuid: str) -> Optional[EventSourceM...
method delete_event_source_mapping (line 2189) | def delete_event_source_mapping(self, uuid: str) -> Optional[EventSour...
method update_event_source_mapping (line 2192) | def update_event_source_mapping(
method list_event_source_mappings (line 2243) | def list_event_source_mappings(
method get_function_by_arn (line 2253) | def get_function_by_arn(self, function_arn: str) -> Optional[LambdaFun...
method delete_function (line 2256) | def delete_function(
method list_functions (line 2261) | def list_functions(
method send_sqs_batch (line 2268) | def send_sqs_batch(self, function_arn: str, messages: Any, queue_arn: ...
method _send_sqs_message (line 2276) | def _send_sqs_message(
method send_kinesis_message (line 2319) | def send_kinesis_message(
method send_sns_message (line 2353) | def send_sns_message(
method send_dynamodb_items (line 2390) | def send_dynamodb_items(
method send_log_event (line 2420) | def send_log_event(
method _get_resource_by_arn (line 2447) | def _get_resource_by_arn(self, arn: str) -> EventSourceMapping | Lambd...
method list_tags (line 2461) | def list_tags(self, resource_arn: str) -> dict[str, str]:
method tag_resource (line 2465) | def tag_resource(self, resource_arn: str, tags: dict[str, str]) -> None:
method untag_resource (line 2469) | def untag_resource(self, resource_arn: str, tagKeys: list[str]) -> None:
method add_permission (line 2474) | def add_permission(
method remove_permission (line 2481) | def remove_permission(
method get_function_code_signing_config (line 2487) | def get_function_code_signing_config(self, function_name: str) -> dict...
method get_policy (line 2491) | def get_policy(self, function_name: str, qualifier: Optional[str] = No...
method update_function_code (line 2497) | def update_function_code(
method update_function_configuration (line 2508) | def update_function_configuration(
method invoke (line 2515) | def invoke(
method put_function_concurrency (line 2551) | def put_function_concurrency(
method delete_function_concurrency (line 2583) | def delete_function_concurrency(self, function_name: str) -> Optional[...
method get_function_concurrency (line 2588) | def get_function_concurrency(self, function_name: str) -> Optional[str]:
method put_function_event_invoke_config (line 2592) | def put_function_event_invoke_config(
method update_function_event_invoke_config (line 2600) | def update_function_event_invoke_config(
method get_function_event_invoke_config (line 2607) | def get_function_event_invoke_config(self, function_name: str) -> dict...
method delete_function_event_invoke_config (line 2615) | def delete_function_event_invoke_config(self, function_name: str) -> N...
method list_function_event_invoke_configs (line 2620) | def list_function_event_invoke_configs(self, function_name: str) -> di...
method add_layer_version_permission (line 2630) | def add_layer_version_permission(
method get_layer_version_policy (line 2636) | def get_layer_version_policy(self, layer_name: str, version_number: in...
method remove_layer_version_permission (line 2640) | def remove_layer_version_permission(
function do_validate_s3 (line 2647) | def do_validate_s3() -> bool:
FILE: moto/awslambda/policy.py
class Policy (line 24) | class Policy:
method __init__ (line 25) | def __init__(self, parent: Union["LambdaFunction", "LayerVersion"]):
method wire_format (line 30) | def wire_format(self) -> str:
method get_policy (line 35) | def get_policy(self) -> dict[str, Any]:
method add_statement (line 48) | def add_statement(
method del_statement (line 70) | def del_statement(self, sid: str, revision: str = "") -> None:
method decode_policy (line 86) | def decode_policy(self, obj: dict[str, Any]) -> "Policy":
method nop_formatter (line 128) | def nop_formatter(self, obj: TYPE_IDENTITY) -> TYPE_IDENTITY:
method ensure_set (line 131) | def ensure_set(self, obj: dict[str, Any], key: str, value: Any) -> None:
method principal_formatter (line 135) | def principal_formatter(self, obj: dict[str, Any]) -> dict[str, Any]:
method source_account_formatter (line 143) | def source_account_formatter(
method source_arn_formatter (line 148) | def source_arn_formatter(
method principal_org_id_formatter (line 153) | def principal_org_id_formatter(
method transform_property (line 158) | def transform_property(
method remove_if_set (line 170) | def remove_if_set(self, obj: dict[str, Any], keys: list[str]) -> None:
method condition_merge (line 175) | def condition_merge(self, obj: dict[str, Any]) -> None:
FILE: moto/awslambda/responses.py
class LambdaResponse (line 16) | class LambdaResponse(BaseResponse):
method __init__ (line 17) | def __init__(self) -> None:
method json_body (line 21) | def json_body(self) -> dict[str, Any]: # type: ignore[misc]
method backend (line 25) | def backend(self) -> LambdaBackend:
method add_permission (line 28) | def add_permission(self) -> str:
method get_policy (line 35) | def get_policy(self) -> str:
method remove_permission (line 40) | def remove_permission(self) -> TYPE_RESPONSE:
method invoke (line 51) | def invoke(self) -> tuple[int, dict[str, str], Union[str, bytes]]:
method invoke_async (line 91) | def invoke_async(self) -> tuple[int, dict[str, str], Union[str, bytes]]:
method list_functions (line 103) | def list_functions(self) -> str:
method list_versions_by_function (line 114) | def list_versions_by_function(self) -> str:
method list_aliases (line 125) | def list_aliases(self) -> TYPE_RESPONSE:
method create_function (line 137) | def create_function(self) -> TYPE_RESPONSE:
method create_function_url_config (line 147) | def create_function_url_config(self) -> TYPE_RESPONSE:
method delete_function_url_config (line 152) | def delete_function_url_config(self) -> TYPE_RESPONSE:
method get_function_url_config (line 157) | def get_function_url_config(self) -> TYPE_RESPONSE:
method update_function_url_config (line 162) | def update_function_url_config(self) -> str:
method create_event_source_mapping (line 167) | def create_event_source_mapping(self) -> TYPE_RESPONSE:
method list_event_source_mappings (line 172) | def list_event_source_mappings(self) -> str:
method get_event_source_mapping (line 179) | def get_event_source_mapping(self) -> TYPE_RESPONSE:
method update_event_source_mapping (line 192) | def update_event_source_mapping(self) -> TYPE_RESPONSE:
method delete_event_source_mapping (line 200) | def delete_event_source_mapping(self) -> TYPE_RESPONSE:
method publish_version (line 210) | def publish_version(self) -> TYPE_RESPONSE:
method delete_function (line 218) | def delete_function(self) -> TYPE_RESPONSE:
method _set_configuration_qualifier (line 226) | def _set_configuration_qualifier( # type: ignore[misc]
method get_function (line 245) | def get_function(self) -> str:
method get_function_configuration (line 257) | def get_function_configuration(self) -> str:
method _get_aws_region (line 268) | def _get_aws_region(self, full_url: str) -> str:
method list_tags (line 275) | def list_tags(self) -> str:
method tag_resource (line 281) | def tag_resource(self) -> str:
method untag_resource (line 287) | def untag_resource(self) -> TYPE_RESPONSE:
method update_function_configuration (line 294) | def update_function_configuration(self) -> TYPE_RESPONSE:
method update_function_code (line 306) | def update_function_code(self) -> TYPE_RESPONSE:
method get_function_code_signing_config (line 318) | def get_function_code_signing_config(self) -> str:
method get_function_concurrency (line 323) | def get_function_concurrency(self) -> TYPE_RESPONSE:
method delete_function_concurrency (line 330) | def delete_function_concurrency(self) -> TYPE_RESPONSE:
method put_function_concurrency (line 338) | def put_function_concurrency(self) -> TYPE_RESPONSE:
method list_layers (line 347) | def list_layers(self) -> str:
method delete_layer_version (line 351) | def delete_layer_version(self) -> str:
method get_layer_version (line 357) | def get_layer_version(self) -> str:
method list_layer_versions (line 363) | def list_layer_versions(self) -> str:
method publish_layer_version (line 371) | def publish_layer_version(self) -> TYPE_RESPONSE:
method create_alias (line 379) | def create_alias(self) -> TYPE_RESPONSE:
method delete_alias (line 395) | def delete_alias(self) -> TYPE_RESPONSE:
method get_alias (line 401) | def get_alias(self) -> TYPE_RESPONSE:
method update_alias (line 407) | def update_alias(self) -> TYPE_RESPONSE:
method put_function_event_invoke_config (line 423) | def put_function_event_invoke_config(self) -> ActionResult:
method get_function_event_invoke_config (line 430) | def get_function_event_invoke_config(self) -> ActionResult:
method delete_function_event_invoke_config (line 435) | def delete_function_event_invoke_config(self) -> TYPE_RESPONSE:
method update_function_event_invoke_config (line 440) | def update_function_event_invoke_config(self) -> str:
method list_function_event_invoke_configs (line 447) | def list_function_event_invoke_configs(self) -> str:
method add_layer_version_permission (line 453) | def add_layer_version_permission(self) -> str:
method get_layer_version_policy (line 466) | def get_layer_version_policy(self) -> str:
method remove_layer_version_permission (line 473) | def remove_layer_version_permission(self) -> TYPE_RESPONSE:
FILE: moto/awslambda/utils.py
function make_arn (line 14) | def make_arn(resource_type: str, region: str, account: str, name: str) -...
function make_ver_arn (line 25) | def make_ver_arn(
function split_arn (line 36) | def split_arn(arn_type: Union[type[ARN], type[LAYER_ARN]], arn: str) -> ...
function get_backend (line 49) | def get_backend(account_id: str, region: str) -> "LambdaBackend":
FILE: moto/awslambda_simple/models.py
class LambdaSimpleBackend (line 7) | class LambdaSimpleBackend(LambdaBackend):
method __init__ (line 13) | def __init__(self, region_name: str, account_id: str):
method invoke (line 17) | def invoke(
FILE: moto/awslambda_simple/responses.py
class LambdaSimpleResponse (line 5) | class LambdaSimpleResponse(LambdaResponse):
method backend (line 7) | def backend(self) -> LambdaBackend:
FILE: moto/backends.py
function list_of_moto_modules (line 185) | def list_of_moto_modules() -> Iterable[str]:
function get_service_from_url (line 194) | def get_service_from_url(url: str) -> Optional[str]:
function _import_backend (line 365) | def _import_backend(
function get_backend (line 374) | def get_backend(
function get_backend (line 378) | def get_backend(name: "Literal['acm-pca']") -> "BackendDict[ACMPCABacken...
function get_backend (line 380) | def get_backend(name: "Literal['amp']") -> "BackendDict[PrometheusServic...
function get_backend (line 382) | def get_backend(name: "Literal['apigateway']") -> "BackendDict[APIGatewa...
function get_backend (line 384) | def get_backend(
function get_backend (line 388) | def get_backend(
function get_backend (line 392) | def get_backend(name: "Literal['appconfig']") -> "BackendDict[AppConfigB...
function get_backend (line 394) | def get_backend(
function get_backend (line 398) | def get_backend(name: "Literal['appmesh']") -> "BackendDict[AppMeshBacke...
function get_backend (line 400) | def get_backend(name: "Literal['appsync']") -> "BackendDict[AppSyncBacke...
function get_backend (line 402) | def get_backend(name: "Literal['athena']") -> "BackendDict[AthenaBackend...
function get_backend (line 404) | def get_backend(
function get_backend (line 408) | def get_backend(name: "Literal['batch']") -> "BackendDict[BatchBackend]"...
function get_backend (line 410) | def get_backend(name: "Literal['bedrock']") -> "BackendDict[BedrockBacke...
function get_backend (line 412) | def get_backend(
function get_backend (line 416) | def get_backend(
function get_backend (line 421) | def get_backend(name: "Literal['budgets']") -> "BackendDict[BudgetsBacke...
function get_backend (line 423) | def get_backend(name: "Literal['ce']") -> "BackendDict[CostExplorerBacke...
function get_backend (line 425) | def get_backend(
function get_backend (line 429) | def get_backend(
function get_backend (line 433) | def get_backend(name: "Literal['cloudfront']") -> "BackendDict[CloudFron...
function get_backend (line 435) | def get_backend(name: "Literal['cloudtrail']") -> "BackendDict[CloudTrai...
function get_backend (line 437) | def get_backend(name: "Literal['cloudwatch']") -> "BackendDict[CloudWatc...
function get_backend (line 439) | def get_backend(name: "Literal['codebuild']") -> "BackendDict[CodeBuildB...
function get_backend (line 441) | def get_backend(name: "Literal['codecommit']") -> "BackendDict[CodeCommi...
function get_backend (line 443) | def get_backend(
function get_backend (line 447) | def get_backend(name: "Literal['codedeploy']") -> "BackendDict[CodeDeplo...
function get_backend (line 449) | def get_backend(
function get_backend (line 453) | def get_backend(name: "Literal['cognito-idp']") -> "BackendDict[CognitoI...
function get_backend (line 455) | def get_backend(name: "Literal['comprehend']") -> "BackendDict[Comprehen...
function get_backend (line 457) | def get_backend(name: "Literal['config']") -> "BackendDict[ConfigBackend...
function get_backend (line 459) | def get_backend(name: "Literal['connect']") -> "BackendDict[ConnectBacke...
function get_backend (line 461) | def get_backend(
function get_backend (line 465) | def get_backend(name: "Literal['databrew']") -> "BackendDict[DataBrewBac...
function get_backend (line 467) | def get_backend(
function get_backend (line 471) | def get_backend(name: "Literal['datasync']") -> "BackendDict[DataSyncBac...
function get_backend (line 473) | def get_backend(name: "Literal['dax']") -> "BackendDict[DAXBackend]": ...
function get_backend (line 475) | def get_backend(
function get_backend (line 479) | def get_backend(
function get_backend (line 483) | def get_backend(name: "Literal['ds']") -> "BackendDict[DirectoryServiceB...
function get_backend (line 485) | def get_backend(name: "Literal['dsql']") -> "BackendDict[AuroraDSQLBacke...
function get_backend (line 487) | def get_backend(name: "Literal['dynamodb']") -> "BackendDict[DynamoDBBac...
function get_backend (line 489) | def get_backend(
function get_backend (line 493) | def get_backend(
function get_backend (line 497) | def get_backend(name: "Literal['ebs']") -> "BackendDict[EBSBackend]": ...
function get_backend (line 499) | def get_backend(name: "Literal['ec2']") -> "BackendDict[EC2Backend]": ...
function get_backend (line 501) | def get_backend(
function get_backend (line 505) | def get_backend(name: "Literal['ecr']") -> "BackendDict[ECRBackend]": ...
function get_backend (line 507) | def get_backend(
function get_backend (line 511) | def get_backend(name: "Literal['efs']") -> "BackendDict[EFSBackend]": ...
function get_backend (line 513) | def get_backend(name: "Literal['eks']") -> "BackendDict[EKSBackend]": ...
function get_backend (line 515) | def get_backend(
function get_backend (line 519) | def get_backend(name: "Literal['elasticbeanstalk']") -> "BackendDict[EBB...
function get_backend (line 521) | def get_backend(name: "Literal['elb']") -> "BackendDict[ELBBackend]": ...
function get_backend (line 523) | def get_backend(name: "Literal['elbv2']") -> "BackendDict[ELBv2Backend]"...
function get_backend (line 525) | def get_backend(name: "Literal['emr']") -> "BackendDict[ElasticMapReduce...
function get_backend (line 527) | def get_backend(
function get_backend (line 531) | def get_backend(
function get_backend (line 535) | def get_backend(
function get_backend (line 539) | def get_backend(name: "Literal['events']") -> "BackendDict[EventsBackend...
function get_backend (line 541) | def get_backend(name: "Literal['firehose']") -> "BackendDict[FirehoseBac...
function get_backend (line 543) | def get_backend(name: "Literal['forecast']") -> "BackendDict[ForecastBac...
function get_backend (line 545) | def get_backend(name: "Literal['fsx']") -> "BackendDict[FSxBackend]": ...
function get_backend (line 547) | def get_backend(name: "Literal['glacier']") -> "BackendDict[GlacierBacke...
function get_backend (line 549) | def get_backend(name: "Literal['glue']") -> "BackendDict[GlueBackend]": ...
function get_backend (line 551) | def get_backend(name: "Literal['greengrass']") -> "BackendDict[Greengras...
function get_backend (line 553) | def get_backend(name: "Literal['guardduty']") -> "BackendDict[GuardDutyB...
function get_backend (line 555) | def get_backend(name: "Literal['iam']") -> "BackendDict[IAMBackend]": ...
function get_backend (line 557) | def get_backend(
function get_backend (line 561) | def get_backend(name: "Literal['inspector2']") -> "BackendDict[Inspector...
function get_backend (line 563) | def get_backend(
function get_backend (line 567) | def get_backend(name: "Literal['iot']") -> "BackendDict[IoTBackend]": ...
function get_backend (line 569) | def get_backend(name: "Literal['iot-data']") -> "BackendDict[IoTDataPlan...
function get_backend (line 571) | def get_backend(name: "Literal['ivs']") -> "BackendDict[IVSBackend]": ...
function get_backend (line 573) | def get_backend(name: "Literal['kafka']") -> "BackendDict[KafkaBackend]"...
function get_backend (line 575) | def get_backend(name: "Literal['kinesis']") -> "BackendDict[KinesisBacke...
function get_backend (line 577) | def get_backend(
function get_backend (line 581) | def get_backend(
function get_backend (line 585) | def get_backend(
function get_backend (line 589) | def get_backend(name: "Literal['kms']") -> "BackendDict[KmsBackend]": ...
function get_backend (line 591) | def get_backend(
function get_backend (line 595) | def get_backend(name: "Literal['lambda']") -> "BackendDict[LambdaBackend...
function get_backend (line 597) | def get_backend(
function get_backend (line 601) | def get_backend(name: "Literal['logs']") -> "BackendDict[LogsBackend]": ...
function get_backend (line 603) | def get_backend(name: "Literal['macie2']") -> "BackendDict[MacieBackend]...
function get_backend (line 605) | def get_backend(
function get_backend (line 609) | def get_backend(
function get_backend (line 613) | def get_backend(name: "Literal['medialive']") -> "BackendDict[MediaLiveB...
function get_backend (line 615) | def get_backend(
function get_backend (line 619) | def get_backend(name: "Literal['mediastore']") -> "BackendDict[MediaStor...
function get_backend (line 621) | def get_backend(
function get_backend (line 625) | def get_backend(name: "Literal['memorydb']") -> "BackendDict[MemoryDBBac...
function get_backend (line 627) | def get_backend(
function get_backend (line 631) | def get_backend(name: "Literal['moto_api']") -> "BackendDict[MotoAPIBack...
function get_backend (line 633) | def get_backend(name: "Literal['mq']") -> "BackendDict[MQBackend]": ...
function get_backend (line 635) | def get_backend(name: "Literal['neptune']") -> "BackendDict[RDSBackend]"...
function get_backend (line 637) | def get_backend(
function get_backend (line 641) | def get_backend(
function get_backend (line 645) | def get_backend(
function get_backend (line 649) | def get_backend(
function get_backend (line 653) | def get_backend(
function get_backend (line 657) | def get_backend(
function get_backend (line 661) | def get_backend(
function get_backend (line 665) | def get_backend(name: "Literal['pinpoint']") -> "BackendDict[PinpointBac...
function get_backend (line 667) | def get_backend(name: "Literal['polly']") -> "BackendDict[PollyBackend]"...
function get_backend (line 669) | def get_backend(name: "Literal['quicksight']") -> "BackendDict[QuickSigh...
function get_backend (line 671) | def get_backend(
function get_backend (line 675) | def get_backend(name: "Literal['rds']") -> "BackendDict[RDSBackend]": ...
function get_backend (line 677) | def get_backend(
function get_backend (line 681) | def get_backend(name: "Literal['redshift']") -> "BackendDict[RedshiftBac...
function get_backend (line 683) | def get_backend(
function get_backend (line 687) | def get_backend(
function get_backend (line 691) | def get_backend(
function get_backend (line 695) | def get_backend(
function get_backend (line 699) | def get_backend(
function get_backend (line 703) | def get_backend(name: "Literal['route53']") -> "BackendDict[Route53Backe...
function get_backend (line 705) | def get_backend(
function get_backend (line 709) | def get_backend(
function get_backend (line 713) | def get_backend(name: "Literal['s3']") -> "BackendDict[S3Backend]": ...
function get_backend (line 715) | def get_backend(name: "Literal['s3bucket_path']") -> "BackendDict[S3Back...
function get_backend (line 717) | def get_backend(name: "Literal['s3control']") -> "BackendDict[S3ControlB...
function get_backend (line 719) | def get_backend(name: "Literal['s3vectors']") -> "BackendDict[S3VectorsB...
function get_backend (line 721) | def get_backend(
function get_backend (line 725) | def get_backend(
function get_backend (line 729) | def get_backend(
function get_backend (line 733) | def get_backend(
function get_backend (line 737) | def get_backend(name: "Literal['sdb']") -> "BackendDict[SimpleDBBackend]...
function get_backend (line 739) | def get_backend(
function get_backend (line 743) | def get_backend(
function get_backend (line 747) | def get_backend(
function get_backend (line 751) | def get_backend(
function get_backend (line 755) | def get_backend(name: "Literal['ses']") -> "BackendDict[SESBackend]": ...
function get_backend (line 757) | def get_backend(name: "Literal['sesv2']") -> "BackendDict[SESV2Backend]"...
function get_backend (line 759) | def get_backend(name: "Literal['shield']") -> "BackendDict[ShieldBackend...
function get_backend (line 761) | def get_backend(name: "Literal['signer']") -> "BackendDict[SignerBackend...
function get_backend (line 763) | def get_backend(name: "Literal['sns']") -> "BackendDict[SNSBackend]": ...
function get_backend (line 765) | def get_backend(name: "Literal['sqs']") -> "BackendDict[SQSBackend]": ...
function get_backend (line 767) | def get_backend(
function get_backend (line 771) | def get_backend(name: "Literal['sso-admin']") -> "BackendDict[SSOAdminBa...
function get_backend (line 773) | def get_backend(
function get_backend (line 777) | def get_backend(name: "Literal['sts']") -> "BackendDict[STSBackend]": ...
function get_backend (line 779) | def get_backend(name: "Literal['support']") -> "BackendDict[SupportBacke...
function get_backend (line 781) | def get_backend(name: "Literal['synthetics']") -> "BackendDict[Synthetic...
function get_backend (line 783) | def get_backend(name: "Literal['swf']") -> "BackendDict[SWFBackend]": ...
function get_backend (line 785) | def get_backend(name: "Literal['textract']") -> "BackendDict[TextractBac...
function get_backend (line 787) | def get_backend(
function get_backend (line 791) | def get_backend(
function get_backend (line 795) | def get_backend(
function get_backend (line 799) | def get_backend(name: "Literal['transcribe']") -> "BackendDict[Transcrib...
function get_backend (line 801) | def get_backend(name: "Literal['transfer']") -> "BackendDict[TransferBac...
function get_backend (line 803) | def get_backend(
function get_backend (line 807) | def get_backend(name: "Literal['wafv2']") -> "BackendDict[WAFV2Backend]"...
function get_backend (line 809) | def get_backend(name: "Literal['workspaces']") -> "BackendDict[WorkSpace...
function get_backend (line 811) | def get_backend(
function get_backend (line 815) | def get_backend(name: "Literal['xray']") -> "BackendDict[XRayBackend]": ...
function get_backend (line 817) | def get_backend(name: "Literal['s3tables']") -> "BackendDict[S3TablesBac...
function get_backend (line 820) | def get_backend(name: SERVICE_NAMES) -> "BackendDict[SERVICE_BACKEND]":
FILE: moto/backup/exceptions.py
class BackupClientError (line 6) | class BackupClientError(JsonRESTError):
class AlreadyExistsException (line 10) | class AlreadyExistsException(BackupClientError):
method __init__ (line 11) | def __init__(self, msg: str):
class ResourceNotFoundException (line 15) | class ResourceNotFoundException(JsonRESTError):
method __init__ (line 16) | def __init__(self, msg: str):
class InvalidParameterValueException (line 20) | class InvalidParameterValueException(BackupClientError):
method __init__ (line 21) | def __init__(self, msg: str):
class InvalidRequestException (line 25) | class InvalidRequestException(BackupClientError):
method __init__ (line 26) | def __init__(self, msg: str):
FILE: moto/backup/models.py
class ReportPlan (line 19) | class ReportPlan(BaseModel):
method __init__ (line 20) | def __init__(
class Plan (line 37) | class Plan(BaseModel):
method __init__ (line 38) | def __init__(
method to_dict (line 72) | def to_dict(self) -> dict[str, Any]:
method to_get_dict (line 82) | def to_get_dict(self) -> dict[str, Any]:
method to_list_dict (line 95) | def to_list_dict(self) -> dict[str, Any]:
class Vault (line 102) | class Vault(BaseModel):
method __init__ (line 103) | def __init__(
method to_dict (line 122) | def to_dict(self) -> dict[str, Any]:
method to_list_dict (line 130) | def to_list_dict(self) -> dict[str, Any]:
class BackupBackend (line 147) | class BackupBackend(BaseBackend):
method __init__ (line 150) | def __init__(self, region_name: str, account_id: str):
method create_backup_plan (line 158) | def create_backup_plan(
method get_backup_plan (line 180) | def get_backup_plan(self, backup_plan_id: str, version_id: Optional[An...
method delete_backup_plan (line 192) | def delete_backup_plan(self, backup_plan_id: str) -> tuple[str, str, f...
method list_backup_plans (line 202) | def list_backup_plans(self, include_deleted: Any) -> list[Plan]:
method create_backup_vault (line 216) | def create_backup_vault(
method describe_backup_vault (line 238) | def describe_backup_vault(self, backup_vault_name: str) -> Vault:
method delete_backup_vault (line 243) | def delete_backup_vault(self, backup_vault_name: str) -> None:
method put_backup_vault_lock_configuration (line 246) | def put_backup_vault_lock_configuration(
method delete_backup_vault_lock_configuration (line 297) | def delete_backup_vault_lock_configuration(
method list_backup_vaults (line 319) | def list_backup_vaults(self) -> list[Vault]:
method list_tags (line 325) | def list_tags(self, resource_arn: str) -> dict[str, str]:
method tag_resource (line 331) | def tag_resource(self, resource_arn: str, tags: dict[str, str]) -> None:
method untag_resource (line 335) | def untag_resource(self, resource_arn: str, tag_key_list: list[str]) -...
method create_report_plan (line 338) | def create_report_plan(
method describe_report_plan (line 358) | def describe_report_plan(self, report_plan_name: str) -> ReportPlan:
method delete_report_plan (line 365) | def delete_report_plan(self, report_plan_name: str) -> None:
method list_report_plans (line 368) | def list_report_plans(self) -> list[ReportPlan]:
FILE: moto/backup/responses.py
class BackupResponse (line 11) | class BackupResponse(BaseResponse):
method __init__ (line 14) | def __init__(self) -> None:
method backup_backend (line 18) | def backup_backend(self) -> BackupBackend:
method create_backup_plan (line 22) | def create_backup_plan(self) -> str:
method get_backup_plan (line 34) | def get_backup_plan(self) -> str:
method delete_backup_plan (line 44) | def delete_backup_plan(self) -> str:
method list_backup_plans (line 63) | def list_backup_plans(self) -> str:
method create_backup_vault (line 73) | def create_backup_vault(self) -> str:
method delete_backup_vault (line 87) | def delete_backup_vault(self) -> EmptyResult:
method describe_backup_vault (line 92) | def describe_backup_vault(self) -> ActionResult:
method list_backup_vaults (line 97) | def list_backup_vaults(self) -> str:
method list_tags (line 103) | def list_tags(self) -> str:
method tag_resource (line 110) | def tag_resource(self) -> str:
method untag_resource (line 120) | def untag_resource(self) -> str:
method put_backup_vault_lock_configuration (line 130) | def put_backup_vault_lock_configuration(self) -> str:
method delete_backup_vault_lock_configuration (line 146) | def delete_backup_vault_lock_configuration(self) -> str:
method list_report_plans (line 155) | def list_report_plans(self) -> ActionResult:
method create_report_plan (line 159) | def create_report_plan(self) -> ActionResult:
method describe_report_plan (line 172) | def describe_report_plan(self) -> ActionResult:
method delete_report_plan (line 179) | def delete_report_plan(self) -> EmptyResult:
FILE: moto/batch/exceptions.py
class InvalidRequestException (line 4) | class InvalidRequestException(AWSError):
class InvalidParameterValueException (line 8) | class InvalidParameterValueException(AWSError):
class ValidationError (line 12) | class ValidationError(AWSError):
class InternalFailure (line 16) | class InternalFailure(AWSError):
class ClientException (line 21) | class ClientException(AWSError):
FILE: moto/batch/models.py
function datetime2int_milliseconds (line 49) | def datetime2int_milliseconds(date: datetime.datetime) -> int:
function datetime2int (line 58) | def datetime2int(date: datetime.datetime) -> int:
class ComputeEnvironment (line 62) | class ComputeEnvironment(CloudFormationModel):
method __init__ (line 63) | def __init__(
method add_instance (line 86) | def add_instance(self, instance: Instance) -> None:
method set_ecs (line 89) | def set_ecs(self, arn: str, name: str) -> None:
method physical_resource_id (line 94) | def physical_resource_id(self) -> str:
method cloudformation_name_type (line 98) | def cloudformation_name_type() -> str:
method cloudformation_type (line 102) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 107) | def create_from_cloudformation_json( # type: ignore[misc]
class JobQueue (line 127) | class JobQueue(CloudFormationModel):
method __init__ (line 128) | def __init__(
method describe (line 166) | def describe(self) -> dict[str, Any]:
method physical_resource_id (line 179) | def physical_resource_id(self) -> str:
method cloudformation_name_type (line 183) | def cloudformation_name_type() -> str:
method cloudformation_type (line 187) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 192) | def create_from_cloudformation_json( # type: ignore[misc]
class JobDefinition (line 219) | class JobDefinition(CloudFormationModel):
method __init__ (line 220) | def __init__(
method _format_tags (line 304) | def _format_tags(self, tags: dict[str, str]) -> list[dict[str, str]]:
method _get_resource_requirement (line 307) | def _get_resource_requirement(self, req_type: str, default: Any = None...
method _validate (line 349) | def _validate(self) -> None:
method _validate_container_properties (line 369) | def _validate_container_properties(self) -> None:
method _validate_eks_properties (line 386) | def _validate_eks_properties(self) -> None:
method deregister (line 400) | def deregister(self) -> None:
method update (line 403) | def update(
method describe (line 446) | def describe(self) -> dict[str, Any]:
method physical_resource_id (line 469) | def physical_resource_id(self) -> str:
method cloudformation_name_type (line 473) | def cloudformation_name_type() -> str:
method cloudformation_type (line 477) | def cloudformation_type() -> str:
method create_from_cloudformation_json (line 482) | def create_from_cloudformation_json( # type: ignore[misc]
class Job (line 519) | class Job(threading.Thread, BaseModel, DockerModel, ManagedState):
method __init__ (line 520) | def __init__(
method describe_short (line 592) | def describe_short(self) -> dict[str, Any]:
method describe (line 612) | def describe(self) -> dict[str, Any]:
method _container_details (line 655) | def _container_details(self) -> dict[str, Any]:
method _get_container_property (line 671) | def _get_container_property(self, p: str, default: Any) -> Any:
method _eks_properties_details (line 699) | def _eks_properties_details(self) -> dict[str, Any]:
method _merge_eks_env (line 739) | def _merge_eks_env(
method _get_attempt_duration (line 755) | def _get_attempt_duration(self) -> Optional[int]:
method _add_parameters_to_command (line 762) | def _add_parameters_to_command(self, command: Union[str, list[str]]) -...
method run (line 781) | def run(self) -> None:
method _mark_stopped (line 1073) | def _mark_stopped(self, success: bool = True) -> None:
method _start_attempt (line 1083) | def _start_attempt(self) -> None:
method _stop_attempt (line 1097) | def _stop_attempt(self) -> None:
method terminate (line 1104) | def terminate(self, reason: str) -> None:
method _wait_for_dependencies (line 1109) | def _wait_for_dependencies(self) -> bool:
class SchedulingPolicy (line 1136) | class SchedulingPolicy(BaseModel):
method __init__ (line 1137) | def __init__(
method to_dict (line 1157) | def to_dict(self, create: bool = False) -> dict[str, Any]:
class BatchBackend (line 1165) | class BatchBackend(BaseBackend):
method __init__ (line 1174) | def __init__(self, region_name: str, account_id: str):
method iam_backend (line 1185) | def iam_backend(self) -> IAMBackend:
method ec2_backend (line 1193) | def ec2_backend(self) -> EC2Backend:
method ecs_backend (line 1201) | def ecs_backend(self) -> EC2ContainerServiceBackend:
method logs_backend (line 1209) | def logs_backend(self) -> LogsBackend:
method reset (line 1216) | def reset(self) -> None:
method get_compute_environment_by_arn (line 1226) | def get_compute_environment_by_arn(self, arn: str) -> Optional[Compute...
method get_compute_environment_by_name (line 1229) | def get_compute_environment_by_name(
method get_compute_environment (line 1237) | def get_compute_environment(self, identifier: str) -> Optional[Compute...
method get_job_queue_by_arn (line 1250) | def get_job_queue_by_arn(self, arn: str) -> Optional[JobQueue]:
method get_job_queue_by_name (line 1253) | def get_job_queue_by_name(self, name: str) -> Optional[JobQueue]:
method get_job_queue (line 1259) | def get_job_queue(self, identifier: str) -> Optional[JobQueue]:
method get_job_definition_by_arn (line 1272) | def get_job_definition_by_arn(self, arn: str) -> Optional[JobDefinition]:
method get_job_definition_by_name (line 1275) | def get_job_definition_by_name(self, name: str) -> Optional[JobDefinit...
method get_job_definition_by_name_revision (line 1284) | def get_job_definition_by_name_revision(
method get_job_definition (line 1292) | def get_job_definition(self, identifier: str) -> Optional[JobDefinition]:
method get_job_definitions (line 1311) | def get_job_definitions(self, identifier: str) -> list[JobDefinition]:
method get_job_by_id (line 1331) | def get_job_by_id(self, identifier: str) -> Optional[Job]:
method describe_compute_environments (line 1337) | def describe_compute_environments(
method create_compute_environment (line 1371) | def create_compute_environment(
method _validate_compute_resources (line 1475) | def _validate_compute_resources(self, cr: dict[str, Any]) -> None:
method find_min_instances_to_meet_vcpus (line 1554) | def find_min_instances_to_meet_vcpus(
method delete_compute_environment (line 1611) | def delete_compute_environment(self, compute_environment_name: str) ->...
method update_compute_environment (line 1630) | def update_compute_environment(
method create_job_queue (line 1668) | def create_job_queue(
method describe_job_queues (line 1726) | def describe_job_queues(
method update_job_queue (line 1746) | def update_job_queue(
method delete_job_queue (line 1800) | def delete_job_queue(self, queue_name: str) -> None:
method register_job_definition (line 1806) | def register_job_definition(
method deregister_job_definition (line 1862) | def deregister_job_definition(self, def_name: str) -> None:
method describe_job_definitions (line 1871) | def describe_job_definitions(
method submit_job (line 1902) | def submit_job(
method describe_jobs (line 1979) | def describe_jobs(self, jobs: Optional[list[str]]) -> list[dict[str, A...
method list_jobs (line 1997) | def list_jobs(
method cancel_job (line 2065) | def cancel_job(self, job_id: str, reason: str) -> None:
method terminate_job (line 2083) | def terminate_job(self, job_id: str, reason: str) -> None:
method tag_resource (line 2097) | def tag_resource(self, resource_arn: str, tags: dict[str, str]) -> None:
method list_tags_for_resource (line 2101) | def list_tags_for_resource(self, resource_arn: str) -> dict[str, str]:
method untag_resource (line 2104) | def untag_resource(self, resource_arn: str, tag_keys: list[str]) -> None:
method create_scheduling_policy (line 2107) | def create_scheduling_policy(
method describe_scheduling_policies (line 2116) | def describe_scheduling_policies(self, arns: list[str]) -> list[Schedu...
method list_scheduling_policies (line 2119) | def list_scheduling_policies(self) -> list[str]:
method delete_scheduling_policy (line 2125) | def delete_scheduling_policy(self, arn: str) -> None:
method update_scheduling_policy (line 2128) | def update_scheduling_policy(
FILE: moto/batch/responses.py
class BatchResponse (line 10) | class BatchResponse(BaseResponse):
method __init__ (line 11) | def __init__(self) -> None:
method batch_backend (line 15) | def batch_backend(self) -> BatchBackend:
method _get_action (line 23) | def _get_action(self) -> str:
method createcomputeenvironment (line 27) | def createcomputeenvironment(self) -> str:
method describecomputeenvironments (line 48) | def describecomputeenvironments(self) -> str:
method deletecomputeenvironment (line 56) | def deletecomputeenvironment(self) -> str:
method updatecomputeenvironment (line 63) | def updatecomputeenvironment(self) -> str:
method createjobqueue (line 80) | def createjobqueue(self) -> str:
method describejobqueues (line 101) | def describejobqueues(self) -> str:
method updatejobqueue (line 109) | def updatejobqueue(self) -> str:
method deletejobqueue (line 128) | def deletejobqueue(self) -> str:
method registerjobdefinition (line 135) | def registerjobdefinition(self) -> str:
method deregisterjobdefinition (line 169) | def deregisterjobdefinition(self) -> str:
method describejobdefinitions (line 176) | def describejobdefinitions(self) -> str:
method submitjob (line 188) | def submitjob(self) -> str:
method describejobs (line 217) | def describejobs(self) -> str:
method listjobs (line 222) | def listjobs(self) -> str:
method terminatejob (line 238) | def terminatejob(self) -> str:
method canceljob (line 246) | def canceljob(self) -> str:
method tags (line 253) | def tags(self) -> str:
method createschedulingpolicy (line 266) | def createschedulingpolicy(self) -> str:
method describeschedulingpolicies (line 276) | def describeschedulingpolicies(self) -> str:
method listschedulingpolicies (line 282) | def listschedulingpolicies(self) -> str:
method deleteschedulingpolicy (line 286) | def deleteschedulingpolicy(self) -> str:
method updateschedulingpolicy (line 292) | def updateschedulingpolicy(self) -> str:
FILE: moto/batch/utils.py
function make_arn_for_compute_env (line 9) | def make_arn_for_compute_env(account_id: str, name: str, region_name: st...
function make_arn_for_job_queue (line 13) | def make_arn_for_job_queue(account_id: str, name: str, region_name: str)...
function make_arn_for_job (line 17) | def make_arn_for_job(account_id: str, job_id: str, region_name: str) -> ...
function make_arn_for_task_def (line 21) | def make_arn_for_task_def(
function lowercase_first_key (line 27) | def lowercase_first_key(some_dict: dict[str, Any]) -> dict[str, Any]:
function validate_job_status (line 44) | def validate_job_status(target_job_status: str, valid_job_statuses: list...
class JobStatus (line 52) | class JobStatus(str, Enum):
method job_statuses (line 62) | def job_statuses(self) -> list[str]:
method is_job_already_started (line 66) | def is_job_already_started(self, current_status: str) -> bool:
method is_job_before_starting (line 76) | def is_job_before_starting(self, current_status: str) -> bool:
method status_transitions (line 85) | def status_transitions(self) -> list[tuple[Optional[str], str]]:
FILE: moto/batch_simple/models.py
class BatchSimpleBackend (line 11) | class BatchSimpleBackend(BatchBackend):
method backend (line 21) | def backend(self) -> BatchBackend:
method __getattribute__ (line 24) | def __getattribute__(self, name: str) -> Any:
method submit_job (line 50) | def submit_job(
method _mark_job_as_finished (line 116) | def _mark_job_as_finished(self, include_start_attempt: bool, job: Job)...
FILE: moto/batch_simple/responses.py
class BatchSimpleResponse (line 5) | class BatchSimpleResponse(BatchResponse):
method batch_backend (line 7) | def batch_backend(self) -> BatchBackend:
FILE: moto/bedrock/exceptions.py
class BedrockClientError (line 8) | class BedrockClientError(JsonRESTError):
class ResourceNotFoundException (line 12) | class ResourceNotFoundException(BedrockClientError):
method __init__ (line 13) | def __init__(self, msg: str):
class ResourceInUseException (line 17) | class ResourceInUseException(BedrockClientError):
method __init__ (line 18) | def __init__(self, msg: str):
class ValidationException (line 22) | class ValidationException(BedrockClientError):
method __init__ (line 23) | def __init__(self, msg: str):
class TooManyTagsException (line 31) | class TooManyTagsException(BedrockClientError):
method __init__ (line 32) | def __init__(self, msg: str):
FILE: moto/bedrock/models.py
class ModelCustomizationJob (line 20) | class ModelCustomizationJob(BaseModel):
method __init__ (line 21) | def __init__(
method to_dict (line 97) | def to_dict(self) -> dict[str, Any]:
class CustomModel (line 124) | class CustomModel(BaseModel):
method __init__ (line 125) | def __init__(
method to_dict (line 161) | def to_dict(self) -> dict[str, Any]:
class model_invocation_logging_configuration (line 181) | class model_invocation_logging_configuration(BaseModel):
method __init__ (line 182) | def __init__(self, logging_config: dict[str, Any]) -> None:
class BedrockBackend (line 186) | class BedrockBackend(BaseBackend):
method __init__ (line 204) | def __init__(self, region_name: str, account_id: str) -> None:
method _list_arns (line 213) | def _list_arns(self) -> list[str]:
method create_model_customization_job (line 218) | def create_model_customization_job(
method get_model_customization_job (line 287) | def get_model_customization_job(self, job_identifier: str) -> ModelCus...
method stop_model_customization_job (line 295) | def stop_model_customization_job(self, job_identifier: str) -> None:
method list_model_customization_jobs (line 305) | def list_model_customization_jobs(
method get_model_invocation_logging_configuration (line 366) | def get_model_invocation_logging_configuration(self) -> Optional[dict[...
method put_model_invocation_logging_configuration (line 372) | def put_model_invocation_logging_configuration(
method get_custom_model (line 379) | def get_custom_model(self, model_identifier: str) -> CustomModel:
method delete_custom_model (line 394) | def delete_custom_model(self, model_identifier: str) -> None:
method list_custom_models (line 404) | def list_custom_models(
method tag_resource (line 468) | def tag_resource(self, resource_arn: str, tags: list[dict[str, str]]) ...
method untag_resource (line 481) | def untag_resource(self, resource_arn: str, tag_keys: list[str]) -> None:
method list_tags_for_resource (line 487) | def list_tags_for_resource(self, resource_arn: str) -> list[dict[str, ...
method delete_model_invocation_logging_configuration (line 496) | def delete_model_invocation_logging_configuration(self) -> None:
FILE: moto/bedrock/responses.py
class BedrockResponse (line 11) | class BedrockResponse(BaseResponse):
method __init__ (line 14) | def __init__(self) -> None:
method bedrock_backend (line 18) | def bedrock_backend(self) -> BedrockBackend:
method create_model_customization_job (line 22) | def create_model_customization_job(self) -> str:
method get_model_customization_job (line 56) | def get_model_customization_job(self) -> str:
method get_model_invocation_logging_configuration (line 63) | def get_model_invocation_logging_configuration(self) -> str:
method put_model_invocation_logging_configuration (line 69) | def put_model_invocation_logging_configuration(self) -> None:
method tag_resource (line 77) | def tag_resource(self) -> None:
method untag_resource (line 87) | def untag_resource(self) -> str:
method list_tags_for_resource (line 97) | def list_tags_for_resource(self) -> str:
method get_custom_model (line 105) | def get_custom_model(self) -> str:
method list_custom_models (line 112) | def list_custom_models(self) -> str:
method list_model_customization_jobs (line 150) | def list_model_customization_jobs(self) -> str:
method delete_custom_model (line 193) | def delete_custom_model(self) -> str:
method stop_model_customization_job (line 200) | def stop_model_customization_job(self) -> str:
method delete_model_invocation_logging_configuration (line 207) | def delete_model_invocation_logging_configuration(self) -> str:
FILE: moto/bedrockagent/exceptions.py
class AgentsforBedrockClientError (line 6) | class AgentsforBedrockClientError(JsonRESTError):
class ResourceNotFoundException (line 10) | class ResourceNotFoundException(AgentsforBedrockClientError):
method __init__ (line 11) | def __init__(self, msg: str):
class ConflictException (line 15) | class ConflictException(AgentsforBedrockClientError):
method __init__ (line 16) | def __init__(self, msg: str):
class ValidationException (line 20) | class ValidationException(AgentsforBedrockClientError):
method __init__ (line 21) | def __init__(self, msg: str):
FILE: moto/bedrockagent/models.py
class Agent (line 19) | class Agent(BaseModel):
method __init__ (line 20) | def __init__(
method to_dict (line 55) | def to_dict(self) -> dict[str, Any]:
method dict_summary (line 78) | def dict_summary(self) -> dict[str, Any]:
class KnowledgeBase (line 90) | class KnowledgeBase(BaseModel):
method __init__ (line 91) | def __init__(
method to_dict (line 134) | def to_dict(self) -> dict[str, Any]:
method dict_summary (line 150) | def dict_summary(self) -> dict[str, Any]:
class AgentsforBedrockBackend (line 161) | class AgentsforBedrockBackend(BaseBackend):
method __init__ (line 179) | def __init__(self, region_name: str, account_id: str):
method _list_arns (line 185) | def _list_arns(self) -> list[str]:
method create_agent (line 191) | def create_agent(
method get_agent (line 222) | def get_agent(self, agent_id: str) -> Agent:
method list_agents (line 228) | def list_agents(self) -> list[Agent]:
method delete_agent (line 231) | def delete_agent(
method create_knowledge_base (line 248) | def create_knowledge_base(
method list_knowledge_bases (line 274) | def list_knowledge_bases(self) -> list[KnowledgeBase]:
method delete_knowledge_base (line 277) | def delete_knowledge_base(self, knowledge_base_id: str) -> tuple[str, ...
method get_knowledge_base (line 288) | def get_knowledge_base(self, knowledge_base_id: str) -> KnowledgeBase:
method tag_resource (line 295) | def tag_resource(self, resource_arn: str, tags: dict[str, str]) -> None:
method untag_resource (line 302) | def untag_resource(self, resource_arn: str, tag_keys: list[str]) -> None:
method list_tags_for_resource (line 308) | def list_tags_for_resource(self, resource_arn: str) -> dict[str, str]:
FILE: moto/bedrockagent/responses.py
class AgentsforBedrockResponse (line 11) | class AgentsforBedrockResponse(BaseResponse):
method __init__ (line 14) | def __init__(self) -> None:
method bedrockagent_backend (line 18) | def bedrockagent_backend(self) -> AgentsforBedrockBackend:
method create_agent (line 22) | def create_agent(self) -> str:
method get_agent (line 48) | def get_agent(self) -> str:
method list_agents (line 53) | def list_agents(self) -> str:
method delete_agent (line 69) | def delete_agent(self) -> str:
method create_knowledge_base (line 78) | def create_knowledge_base(self) -> str:
method list_knowledge_bases (line 98) | def list_knowledge_bases(self) -> str:
method delete_knowledge_base (line 114) | def delete_knowledge_base(self) -> str:
method get_knowledge_base (line 126) | def get_knowledge_base(self) -> str:
method tag_resource (line 133) | def tag_resource(self) -> str:
method untag_resource (line 140) | def untag_resource(self) -> str:
method list_tags_for_resource (line 148) | def list_tags_for_resource(self) -> str:
FILE: moto/bedrockruntime/exceptions.py
class BedrockRuntimeError (line 6) | class BedrockRuntimeError(ServiceException):
FILE: moto/bedrockruntime/models.py
class BedrockRuntimeBackend (line 8) | class BedrockRuntimeBackend(BaseBackend):
method __init__ (line 11) | def __init__(self, region_name: str, account_id: str) -> None:
method invoke_model (line 14) | def invoke_model(
FILE: moto/bedrockruntime/responses.py
class BedrockRuntimeResponse (line 12) | class BedrockRuntimeResponse(BaseResponse):
method __init__ (line 15) | def __init__(self) -> None:
method bedrockruntime_backend (line 20) | def bedrockruntime_backend(self) -> BedrockRuntimeBackend:
method invoke_model (line 24) | def invoke_model(self) -> ActionResult:
FILE: moto/budgets/exceptions.py
class DuplicateRecordException (line 6) | class DuplicateRecordException(JsonRESTError):
method __init__ (line 9) | def __init__(self, record_type: str, record_name: str):
class NotFoundException (line 16) | class NotFoundException(JsonRESTError):
method __init__ (line 19) | def __init__(self, message: str):
class BudgetMissingLimit (line 23) | class BudgetMissingLimit(JsonRESTError):
method
Copy disabled (too large)
Download .json
Condensed preview — 3372 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (115,240K chars).
[
{
"path": ".devcontainer/devcontainer.json",
"chars": 3725,
"preview": "{\n \"name\": \"moto\",\n \"image\": \"mcr.microsoft.com/devcontainers/python:3.11\",\n \"features\": {\n \"ghcr.io/devcontainers"
},
{
"path": ".dockerignore",
"chars": 73,
"preview": "# Ignore everything by default\n*\n\n!README.md\n!moto/\n!setup.cfg\n!setup.py\n"
},
{
"path": ".git-blame-ignore-revs",
"chars": 410,
"preview": "# You can configure git to automatically use this file with the following config:\n# git config --global blame.ignoreRevs"
},
{
"path": ".github/FUNDING.yml",
"chars": 85,
"preview": "# These are supported funding model platforms\n\ngithub: getmoto\nopen_collective: moto\n"
},
{
"path": ".github/actions/run_moto_server/action.yml",
"chars": 735,
"preview": "name: run_moto_server\nauthor: bblommers\ndescription: run_moto_server\nruns:\n using: \"composite\"\n steps:\n - name: Dow"
},
{
"path": ".github/dependabot.yml",
"chars": 1035,
"preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
},
{
"path": ".github/workflows/build.yml",
"chars": 4713,
"preview": "name: TestNDeploy\n\non: [push, pull_request]\n\njobs:\n cache:\n name: Caching\n runs-on: ubuntu-latest\n strategy:\n "
},
{
"path": ".github/workflows/codeql-analysis.yml",
"chars": 2299,
"preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
},
{
"path": ".github/workflows/data-update_config-managed-rules.yml",
"chars": 1155,
"preview": "# Data Update:\n# Config Managed Rules\n#\n# This Github Action:\n# - executes the script that updates the Config Manage"
},
{
"path": ".github/workflows/data-update_ec2-instance-offerings.yml",
"chars": 1326,
"preview": "# Data Update:\n# EC2 Instance Offerings\n#\n# This Github Action:\n# - executes the script that updates the EC2 instanc"
},
{
"path": ".github/workflows/data-update_ec2-instance-types.yml",
"chars": 1284,
"preview": "# Data Update:\n# EC2 Instance Types\n#\n# This Github Action:\n# - executes the script that updates the EC2 instance ty"
},
{
"path": ".github/workflows/data-update_emr_instance_types.yml",
"chars": 1301,
"preview": "# Data Update:\n# EMR Instance Types\n#\n# This GitHub Action:\n# - executes the script that updates the EMR instance ty"
},
{
"path": ".github/workflows/data-update_iam-managed-policies.yml",
"chars": 1324,
"preview": "# Data Update:\n# IAM Managed Policies\n#\n# This Github Action:\n# - executes the script that updates the IAM Managed P"
},
{
"path": ".github/workflows/data-update_ssm-default-amis.yml",
"chars": 1314,
"preview": "# Data Update:\n# SSM default AMIs\n#\n# This Github Action:\n# - executes the script that updates the SSM default AMI's"
},
{
"path": ".github/workflows/data-update_ssm-default-parameters.yml",
"chars": 1356,
"preview": "# Data Update:\n# SSM default parameters\n#\n# This Github Action:\n# - executes the script that updates the SSM default"
},
{
"path": ".github/workflows/data-update_ssm-optimized-amis.yml",
"chars": 1327,
"preview": "# Data Update:\n# SSM Optmized AMIs\n#\n# This Github Action:\n# - executes the script that updates the SSM Optimized AM"
},
{
"path": ".github/workflows/dependency_test.yml",
"chars": 1229,
"preview": "name: \"Service-specific Dependencies Test\"\n\non:\n workflow_dispatch:\n schedule:\n - cron: '0 0 * * *' # every day at"
},
{
"path": ".github/workflows/dockertests.yml",
"chars": 6975,
"preview": "name: DockerTests\n\non: [push, pull_request]\n\njobs:\n cache:\n name: Caching\n runs-on: ubuntu-latest\n strategy:\n "
},
{
"path": ".github/workflows/release.yml",
"chars": 4389,
"preview": "name: Release\n\non:\n workflow_dispatch:\n inputs:\n version:\n description: 'Version'\n required: true"
},
{
"path": ".github/workflows/release_dev.yml",
"chars": 1738,
"preview": "name: Release Dev\n\non: [workflow_dispatch]\n\njobs:\n\n release:\n name: Dev Release\n runs-on: ubuntu-latest\n permi"
},
{
"path": ".github/workflows/test_cloudwatch.yml",
"chars": 2555,
"preview": "name: \"CloudWatch Wire Protocol Tests\"\non:\n pull_request:\n paths:\n - \".github/workflows/test_cloudwatch.yml\"\n "
},
{
"path": ".github/workflows/test_outdated_versions.yml",
"chars": 2741,
"preview": "# Run separate test cases to verify Moto works with older versions of dependencies\n#\nname: \"Outdated Dependency Tests\"\n\n"
},
{
"path": ".github/workflows/test_sqs.yml",
"chars": 2527,
"preview": "name: \"SQS Wire Protocol Tests\"\non:\n pull_request:\n paths:\n - \".github/workflows/test_sqs.yml\"\n - \"moto/co"
},
{
"path": ".github/workflows/tests_cdk.yml",
"chars": 2596,
"preview": "name: Unit tests in Server Mode\non: [workflow_call]\n\njobs:\n cdk_start:\n runs-on: ubuntu-latest\n strategy:\n f"
},
{
"path": ".github/workflows/tests_cli.yml",
"chars": 629,
"preview": "name: AWS CLI test\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkou"
},
{
"path": ".github/workflows/tests_decoratormode.yml",
"chars": 1662,
"preview": "name: Unit test\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n strategy:\n fail-fast: false\n "
},
{
"path": ".github/workflows/tests_proxymode.yml",
"chars": 2682,
"preview": "name: Unit tests in Proxy Mode\non: [workflow_call]\n\njobs:\n test:\n strategy:\n fail-fast: false\n matrix:\n "
},
{
"path": ".github/workflows/tests_real_aws.yml",
"chars": 1954,
"preview": "name: Execute tests against AWS\non:\n schedule:\n - cron: '00 6 * * 0'\n workflow_dispatch:\n inputs:\n ref:\n "
},
{
"path": ".github/workflows/tests_sdk_cpp.yml",
"chars": 831,
"preview": "name: C++ SDK test\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkou"
},
{
"path": ".github/workflows/tests_sdk_dotnet.yml",
"chars": 1026,
"preview": "name: .NET SDK test\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checko"
},
{
"path": ".github/workflows/tests_sdk_go.yml",
"chars": 666,
"preview": "name: Go SDK test\non:\n workflow_call:\n workflow_dispatch:\n\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - u"
},
{
"path": ".github/workflows/tests_sdk_java.yml",
"chars": 710,
"preview": "name: Java SDK test\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checko"
},
{
"path": ".github/workflows/tests_sdk_js.yml",
"chars": 562,
"preview": "name: JS SDK test\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout"
},
{
"path": ".github/workflows/tests_sdk_ruby.yml",
"chars": 972,
"preview": "name: Ruby SDK test\non: [workflow_call]\n\njobs:\n test:\n\n runs-on: ubuntu-latest\n\n strategy:\n matrix:\n "
},
{
"path": ".github/workflows/tests_sdk_sagemaker.yml",
"chars": 798,
"preview": "name: SageMaker SDK test\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/c"
},
{
"path": ".github/workflows/tests_servermode.yml",
"chars": 2541,
"preview": "name: Unit tests in Server Mode\non: [workflow_call]\n\njobs:\n test:\n runs-on: ubuntu-latest\n strategy:\n fail-f"
},
{
"path": ".github/workflows/tests_terraform_examples.yml",
"chars": 1943,
"preview": "# Small, self contained Terraform examples\n# Scripts should be placed in:\n# other_langs/terraform/service\n\nname: Terr"
},
{
"path": ".github/workflows/tests_without_docker.yml",
"chars": 1253,
"preview": "# Verify that the `TESTS_SKIP_REQUIRES_DOCKER` environment variable works\n# Or in other words:\n# Verify that all tests t"
},
{
"path": ".gitignore",
"chars": 796,
"preview": "moto*.egg-info/*\ndist/*\n.cache\n.tox\n.coverage\ncoverage.xml\ncover/\n*.pyc\n*~\n.noseids\nbuild/\n.idea/\n*.swp\n.DS_Store\npython"
},
{
"path": ".gitmodules",
"chars": 0,
"preview": ""
},
{
"path": ".readthedocs.yaml",
"chars": 362,
"preview": "# .readthedocs.yaml\n# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html f"
},
{
"path": "AUTHORS.md",
"chars": 3127,
"preview": "## Moto Contributors\n\nMoto is written by Steve Pulec with contributions from:\n\n* [Zach Smith](https://github.com/zmsmith"
},
{
"path": "CHANGELOG.md",
"chars": 268212,
"preview": "Moto Changelog\n==============\n\n5.1.22\n-----\nDocker Digest for 5.1.22: _sha256:1e3802c95726373544967b428201c548f0247c15b0"
},
{
"path": "CLOUDFORMATION_COVERAGE.md",
"chars": 10673,
"preview": "## Supported CloudFormation resources\n\nA list of all resources that can be created via CloudFormation. \nPlease let us kn"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3229,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONFIG_README.md",
"chars": 6760,
"preview": "# AWS Config Querying Support in Moto\n\nAn experimental feature for AWS Config has been developed to provide AWS Config c"
},
{
"path": "CONTRIBUTING.md",
"chars": 1600,
"preview": "# Table of Contents\n\n- [Contributing code](#contributing-code)\n- [Development Guide](#development-guide)\n * [TLDR](#tld"
},
{
"path": "Dockerfile",
"chars": 314,
"preview": "FROM python:3.13-alpine\n\nADD . /moto/\nENV PYTHONUNBUFFERED=1\n\nWORKDIR /moto/\nRUN pip3 --no-cache-dir install --upgrade "
},
{
"path": "IMPLEMENTATION_COVERAGE.md",
"chars": 325228,
"preview": "\n## account\n<details>\n<summary>20% implemented</summary>\n\n- [ ] accept_primary_email_update\n- [X] delete_alternate_conta"
},
{
"path": "ISSUE_TEMPLATE.md",
"chars": 1615,
"preview": "## Reporting Bugs\n\nPlease be aware of the following things when filing bug reports:\n\n1. Avoid raising duplicate issues. "
},
{
"path": "LICENSE",
"chars": 10834,
"preview": "\n Apache License\n Version 2.0, January 2004\n htt"
},
{
"path": "MANIFEST.in",
"chars": 1312,
"preview": "include README.md LICENSE AUTHORS.md\ninclude requirements.txt requirements-dev.txt\ninclude moto/py.typed\ninclude moto/cl"
},
{
"path": "Makefile",
"chars": 2369,
"preview": "SHELL := /bin/bash\n\nSERVICE_NAME = \"default\"\nTEST_NAMES = \"*\"\n\nifeq ($(TEST_SERVER_MODE), true)\n\t# Exclude parallel test"
},
{
"path": "README.md",
"chars": 3212,
"preview": "# Moto - Mock AWS Services\n\n[\n :format: html\n\n=======================\nEnvironment Variables\n==="
},
{
"path": "docs/docs/configuration/index.rst",
"chars": 4591,
"preview": ".. _configuration:\n\n======================\nConfiguration Options\n======================\n\nMoto has a variety of ways to c"
},
{
"path": "docs/docs/configuration/recorder/index.rst",
"chars": 3972,
"preview": ".. _recorder_page:\n\n.. role:: raw-html(raw)\n :format: html\n\n=============================\nRecorder\n=================="
},
{
"path": "docs/docs/configuration/state_transition/index.rst",
"chars": 6594,
"preview": ".. _state transition:\n\n.. role:: raw-html(raw)\n :format: html\n\n=============================\nState Transitions\n======"
},
{
"path": "docs/docs/configuration/state_transition/models.rst",
"chars": 6213,
"preview": ".. _state transition_models:\n\n.. role:: raw-html(raw)\n :format: html\n\n============================================\nSu"
},
{
"path": "docs/docs/contributing/architecture.rst",
"chars": 4854,
"preview": ".. _contributing architecture:\n\n=============================\nArchitecture\n=============================\n\nIf you're inte"
},
{
"path": "docs/docs/contributing/checklist.rst",
"chars": 908,
"preview": ".. _contributing checklist:\n\n.. role:: raw-html(raw)\n :format: html\n\n================================\nPR Checklist\n=="
},
{
"path": "docs/docs/contributing/development_tips/index.rst",
"chars": 1275,
"preview": ".. _contributing tips:\n\n\n.. role:: raw-html(raw)\n :format: html\n\n\n=============================\nDevelopment Tips\n===="
},
{
"path": "docs/docs/contributing/development_tips/new_state_transitions.rst",
"chars": 4054,
"preview": ".. _new state transitions:\n\n===============================\nState Transition Management\n===============================\n"
},
{
"path": "docs/docs/contributing/development_tips/tests.rst",
"chars": 1435,
"preview": ".. _contributing tests:\n\n\n****************\nWriting tests\n****************\n\nOne test should only verify a single feature/"
},
{
"path": "docs/docs/contributing/development_tips/urls.rst",
"chars": 1479,
"preview": ".. _contributing urls:\n\n.. role:: raw-html(raw)\n :format: html\n\n***********************\nIntercepting URLs\n***********"
},
{
"path": "docs/docs/contributing/development_tips/utilities.rst",
"chars": 4429,
"preview": ".. _contributing utilities:\n\n=============================\nUtilities\n=============================\n\nTagging Service\n****"
},
{
"path": "docs/docs/contributing/faq.rst",
"chars": 4146,
"preview": ".. _contributing developer faq:\n\n.. role:: bash(code)\n :language: bash\n\n.. role:: python(code)\n :language: python\n\n="
},
{
"path": "docs/docs/contributing/index.rst",
"chars": 885,
"preview": ".. _contributing main:\n\n=============================\nContributing\n=============================\n\nWant to contribute to "
},
{
"path": "docs/docs/contributing/installation.rst",
"chars": 2393,
"preview": ".. _contributing installation:\n\n=============================\nDevelopment Installation\n=============================\n\nTh"
},
{
"path": "docs/docs/contributing/new_feature.rst",
"chars": 2183,
"preview": ".. _contributing feature:\n\n=============================\nNew Features\n=============================\n\nMoto has a script t"
},
{
"path": "docs/docs/faq.rst",
"chars": 3968,
"preview": ".. _contributing faq:\n\n.. role:: raw-html(raw)\n :format: html\n\n\n======\nFAQ\n======\n\nWhy is my test data disappearing?\n"
},
{
"path": "docs/docs/getting_started.rst",
"chars": 12129,
"preview": ".. _getting_started:\n\n\n.. role:: raw-html(raw)\n :format: html\n\n\n=========================\nGetting Started with Moto\n="
},
{
"path": "docs/docs/iam.rst",
"chars": 2340,
"preview": ".. _iam access control:\n\n=======================\nIAM-like Access Control\n=======================\n\nMoto also has the abil"
},
{
"path": "docs/docs/multi_account.rst",
"chars": 5363,
"preview": ".. _multi_account:\n\n=====================\nMulti-Account support\n=====================\n\n\nBy default, Moto processes all r"
},
{
"path": "docs/docs/proxy_mode.rst",
"chars": 4405,
"preview": ".. _proxy_mode:\n\n.. role:: bash(code)\n :language: bash\n\n.. role:: raw-html(raw)\n :format: html\n\n==================="
},
{
"path": "docs/docs/releases.rst",
"chars": 2855,
"preview": ".. _releases:\n\n.. role:: bash(code)\n :language: bash\n\n.. role:: raw-html(raw)\n :format: html\n\n====================="
},
{
"path": "docs/docs/server_mode.rst",
"chars": 8258,
"preview": ".. _server_mode:\n\n.. role:: bash(code)\n :language: bash\n\n.. role:: raw-html(raw)\n :format: html\n\n=================="
},
{
"path": "docs/docs/services/account.rst",
"chars": 608,
"preview": ".. _implementedservice_account:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\naccount\n"
},
{
"path": "docs/docs/services/acm-pca.rst",
"chars": 1750,
"preview": ".. _implementedservice_acm-pca:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nacm-pca\n"
},
{
"path": "docs/docs/services/acm.rst",
"chars": 708,
"preview": ".. _implementedservice_acm:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nacm\n===\n\n|start-"
},
{
"path": "docs/docs/services/amp.rst",
"chars": 2060,
"preview": ".. _implementedservice_amp:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\namp\n===\n\n.. auto"
},
{
"path": "docs/docs/services/apigateway.rst",
"chars": 4020,
"preview": ".. _implementedservice_apigateway:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nap"
},
{
"path": "docs/docs/services/apigatewaymanagementapi.rst",
"chars": 406,
"preview": ".. _implementedservice_apigatewaymanagementapi:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n"
},
{
"path": "docs/docs/services/apigatewayv2.rst",
"chars": 3463,
"preview": ".. _implementedservice_apigatewayv2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========="
},
{
"path": "docs/docs/services/appconfig.rst",
"chars": 1619,
"preview": ".. _implementedservice_appconfig:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========\nappc"
},
{
"path": "docs/docs/services/application-autoscaling.rst",
"chars": 720,
"preview": ".. _implementedservice_application-autoscaling:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n"
},
{
"path": "docs/docs/services/appmesh.rst",
"chars": 1197,
"preview": ".. _implementedservice_appmesh:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nappmesh\n"
},
{
"path": "docs/docs/services/appsync.rst",
"chars": 2384,
"preview": ".. _implementedservice_appsync:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nappsync\n"
},
{
"path": "docs/docs/services/athena.rst",
"chars": 4450,
"preview": ".. _implementedservice_athena:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======\nathena\n==="
},
{
"path": "docs/docs/services/autoscaling.rst",
"chars": 2627,
"preview": ".. _implementedservice_autoscaling:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===========\n"
},
{
"path": "docs/docs/services/backup.rst",
"chars": 3936,
"preview": ".. _implementedservice_backup:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======\nbackup\n==="
},
{
"path": "docs/docs/services/batch.rst",
"chars": 1928,
"preview": ".. _implementedservice_batch:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=====\nbatch\n=====\n"
},
{
"path": "docs/docs/services/bedrock-agent.rst",
"chars": 2135,
"preview": ".. _implementedservice_bedrock-agent:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========="
},
{
"path": "docs/docs/services/bedrock.rst",
"chars": 3942,
"preview": ".. _implementedservice_bedrock:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nbedrock\n"
},
{
"path": "docs/docs/services/budgets.rst",
"chars": 1114,
"preview": ".. _implementedservice_budgets:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nbudgets\n"
},
{
"path": "docs/docs/services/ce.rst",
"chars": 4081,
"preview": ".. _implementedservice_ce:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==\nce\n==\n\n.. autoclas"
},
{
"path": "docs/docs/services/cf.rst",
"chars": 55087,
"preview": ".. _cloudformation_resources:\n\n==================================\nSupported CloudFormation resources\n==================="
},
{
"path": "docs/docs/services/clouddirectory.rst",
"chars": 1955,
"preview": ".. _implementedservice_clouddirectory:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========="
},
{
"path": "docs/docs/services/cloudformation.rst",
"chars": 3742,
"preview": ".. _implementedservice_cloudformation:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========="
},
{
"path": "docs/docs/services/cloudfront.rst",
"chars": 6779,
"preview": ".. _implementedservice_cloudfront:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\ncl"
},
{
"path": "docs/docs/services/cloudhsmv2.rst",
"chars": 719,
"preview": ".. _implementedservice_cloudhsmv2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\ncl"
},
{
"path": "docs/docs/services/cloudtrail.rst",
"chars": 1771,
"preview": ".. _implementedservice_cloudtrail:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\ncl"
},
{
"path": "docs/docs/services/cloudwatch.rst",
"chars": 1323,
"preview": ".. _implementedservice_cloudwatch:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\ncl"
},
{
"path": "docs/docs/services/codebuild.rst",
"chars": 1713,
"preview": ".. _implementedservice_codebuild:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========\ncode"
},
{
"path": "docs/docs/services/codecommit.rst",
"chars": 2751,
"preview": ".. _implementedservice_codecommit:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nco"
},
{
"path": "docs/docs/services/codedeploy.rst",
"chars": 1718,
"preview": ".. _implementedservice_codedeploy:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nco"
},
{
"path": "docs/docs/services/codepipeline.rst",
"chars": 1424,
"preview": ".. _implementedservice_codepipeline:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========="
},
{
"path": "docs/docs/services/cognito-identity.rst",
"chars": 1101,
"preview": ".. _implementedservice_cognito-identity:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======="
},
{
"path": "docs/docs/services/cognito-idp.rst",
"chars": 4429,
"preview": ".. _implementedservice_cognito-idp:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===========\n"
},
{
"path": "docs/docs/services/comprehend.rst",
"chars": 3841,
"preview": ".. _implementedservice_comprehend:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nco"
},
{
"path": "docs/docs/services/config.rst",
"chars": 6889,
"preview": ".. _implementedservice_config:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======\nconfig\n==="
},
{
"path": "docs/docs/services/connect.rst",
"chars": 11856,
"preview": ".. _implementedservice_connect:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nconnect\n"
},
{
"path": "docs/docs/services/connectcampaigns.rst",
"chars": 843,
"preview": ".. _implementedservice_connectcampaigns:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======="
},
{
"path": "docs/docs/services/databrew.rst",
"chars": 1176,
"preview": ".. _implementedservice_databrew:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\ndatabr"
},
{
"path": "docs/docs/services/datapipeline.rst",
"chars": 667,
"preview": ".. _implementedservice_datapipeline:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========="
},
{
"path": "docs/docs/services/datasync.rst",
"chars": 1656,
"preview": ".. _implementedservice_datasync:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\ndatasy"
},
{
"path": "docs/docs/services/dax.rst",
"chars": 1116,
"preview": ".. _implementedservice_dax:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\ndax\n===\n\n|start-"
},
{
"path": "docs/docs/services/directconnect.rst",
"chars": 2438,
"preview": ".. _implementedservice_directconnect:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========="
},
{
"path": "docs/docs/services/dms.rst",
"chars": 4727,
"preview": ".. _implementedservice_dms:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\ndms\n===\n\n|start-"
},
{
"path": "docs/docs/services/ds.rst",
"chars": 3063,
"preview": ".. _implementedservice_ds:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==\nds\n==\n\n.. autoclas"
},
{
"path": "docs/docs/services/dsql.rst",
"chars": 512,
"preview": ".. _implementedservice_dsql:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n====\ndsql\n====\n\n.. "
},
{
"path": "docs/docs/services/dynamodb.rst",
"chars": 2460,
"preview": ".. _implementedservice_dynamodb:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\ndynamo"
},
{
"path": "docs/docs/services/dynamodbstreams.rst",
"chars": 305,
"preview": ".. _implementedservice_dynamodbstreams:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========"
},
{
"path": "docs/docs/services/ebs.rst",
"chars": 1140,
"preview": ".. _implementedservice_ebs:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nebs\n===\n\n.. auto"
},
{
"path": "docs/docs/services/ec2-instance-connect.rst",
"chars": 308,
"preview": ".. _implementedservice_ec2-instance-connect:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==="
},
{
"path": "docs/docs/services/ec2.rst",
"chars": 29787,
"preview": ".. _implementedservice_ec2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nec2\n===\n\n.. auto"
},
{
"path": "docs/docs/services/ecr.rst",
"chars": 4235,
"preview": ".. _implementedservice_ecr:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\necr\n===\n\n|start-"
},
{
"path": "docs/docs/services/ecs.rst",
"chars": 2571,
"preview": ".. _implementedservice_ecs:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\necs\n===\n\n.. auto"
},
{
"path": "docs/docs/services/efs.rst",
"chars": 2363,
"preview": ".. _implementedservice_efs:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nefs\n===\n\n.. auto"
},
{
"path": "docs/docs/services/eks.rst",
"chars": 2389,
"preview": ".. _implementedservice_eks:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\neks\n===\n\n|start-"
},
{
"path": "docs/docs/services/elasticache.rst",
"chars": 2838,
"preview": ".. _implementedservice_elasticache:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===========\n"
},
{
"path": "docs/docs/services/elasticbeanstalk.rst",
"chars": 1763,
"preview": ".. _implementedservice_elasticbeanstalk:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======="
},
{
"path": "docs/docs/services/elb.rst",
"chars": 1243,
"preview": ".. _implementedservice_elb:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nelb\n===\n\n|start-"
},
{
"path": "docs/docs/services/elbv2.rst",
"chars": 1649,
"preview": ".. _implementedservice_elbv2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=====\nelbv2\n=====\n"
},
{
"path": "docs/docs/services/emr-containers.rst",
"chars": 932,
"preview": ".. _implementedservice_emr-containers:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========="
},
{
"path": "docs/docs/services/emr-serverless.rst",
"chars": 656,
"preview": ".. _implementedservice_emr-serverless:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========="
},
{
"path": "docs/docs/services/emr.rst",
"chars": 2085,
"preview": ".. _implementedservice_emr:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nemr\n===\n\n|start-"
},
{
"path": "docs/docs/services/es.rst",
"chars": 2008,
"preview": ".. _implementedservice_es:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==\nes\n==\n\n|start-h3| "
},
{
"path": "docs/docs/services/events.rst",
"chars": 1975,
"preview": ".. _implementedservice_events:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======\nevents\n==="
},
{
"path": "docs/docs/services/firehose.rst",
"chars": 1310,
"preview": ".. _implementedservice_firehose:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\nfireho"
},
{
"path": "docs/docs/services/forecast.rst",
"chars": 2015,
"preview": ".. _implementedservice_forecast:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\nforeca"
},
{
"path": "docs/docs/services/fsx.rst",
"chars": 1753,
"preview": ".. _implementedservice_fsx:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nfsx\n===\n\n.. auto"
},
{
"path": "docs/docs/services/glacier.rst",
"chars": 1043,
"preview": ".. _implementedservice_glacier:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nglacier\n"
},
{
"path": "docs/docs/services/glue.rst",
"chars": 8663,
"preview": ".. _implementedservice_glue:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n====\nglue\n====\n\n|st"
},
{
"path": "docs/docs/services/greengrass.rst",
"chars": 3222,
"preview": ".. _implementedservice_greengrass:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\ngr"
},
{
"path": "docs/docs/services/guardduty.rst",
"chars": 2840,
"preview": ".. _implementedservice_guardduty:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========\nguar"
},
{
"path": "docs/docs/services/iam.rst",
"chars": 5831,
"preview": ".. _implementedservice_iam:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\niam\n===\n\n|start-"
},
{
"path": "docs/docs/services/identitystore.rst",
"chars": 877,
"preview": ".. _implementedservice_identitystore:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========="
},
{
"path": "docs/docs/services/index.rst",
"chars": 282,
"preview": ".. _implemented_services:\n\n\n====================\nImplemented Services\n====================\n\nPlease see a list of all cur"
},
{
"path": "docs/docs/services/inspector2.rst",
"chars": 4197,
"preview": ".. _implementedservice_inspector2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nin"
},
{
"path": "docs/docs/services/iot-data.rst",
"chars": 556,
"preview": ".. _implementedservice_iot-data:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\niot-da"
},
{
"path": "docs/docs/services/iot.rst",
"chars": 9484,
"preview": ".. _implementedservice_iot:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\niot\n===\n\n|start-"
},
{
"path": "docs/docs/services/ivs.rst",
"chars": 1202,
"preview": ".. _implementedservice_ivs:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nivs\n===\n\n.. auto"
},
{
"path": "docs/docs/services/kafka.rst",
"chars": 1803,
"preview": ".. _implementedservice_kafka:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=====\nkafka\n=====\n"
},
{
"path": "docs/docs/services/kinesis-video-archived-media.rst",
"chars": 433,
"preview": ".. _implementedservice_kinesis-video-archived-media:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </"
},
{
"path": "docs/docs/services/kinesis.rst",
"chars": 1538,
"preview": ".. _implementedservice_kinesis:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nkinesis\n"
},
{
"path": "docs/docs/services/kinesisanalyticsv2.rst",
"chars": 1441,
"preview": ".. _implementedservice_kinesisanalyticsv2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n====="
},
{
"path": "docs/docs/services/kinesisvideo.rst",
"chars": 1382,
"preview": ".. _implementedservice_kinesisvideo:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========="
},
{
"path": "docs/docs/services/kms.rst",
"chars": 2199,
"preview": ".. _implementedservice_kms:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nkms\n===\n\n|start-"
},
{
"path": "docs/docs/services/lakeformation.rst",
"chars": 2264,
"preview": ".. _implementedservice_lakeformation:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========="
},
{
"path": "docs/docs/services/lambda.rst",
"chars": 5254,
"preview": ".. _implementedservice_lambda:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======\nlambda\n==="
},
{
"path": "docs/docs/services/lexv2-models.rst",
"chars": 3008,
"preview": ".. _implementedservice_lexv2-models:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========="
},
{
"path": "docs/docs/services/logs.rst",
"chars": 4111,
"preview": ".. _implementedservice_logs:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n====\nlogs\n====\n\n|st"
},
{
"path": "docs/docs/services/macie2.rst",
"chars": 2743,
"preview": ".. _implementedservice_macie2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======\nmacie2\n==="
},
{
"path": "docs/docs/services/managedblockchain.rst",
"chars": 781,
"preview": ".. _implementedservice_managedblockchain:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======"
},
{
"path": "docs/docs/services/mediaconnect.rst",
"chars": 2442,
"preview": ".. _implementedservice_mediaconnect:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========="
},
{
"path": "docs/docs/services/medialive.rst",
"chars": 3854,
"preview": ".. _implementedservice_medialive:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========\nmedi"
},
{
"path": "docs/docs/services/mediapackage.rst",
"chars": 701,
"preview": ".. _implementedservice_mediapackage:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========="
},
{
"path": "docs/docs/services/mediapackagev2.rst",
"chars": 995,
"preview": ".. _implementedservice_mediapackagev2:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========="
},
{
"path": "docs/docs/services/mediastore-data.rst",
"chars": 574,
"preview": ".. _implementedservice_mediastore-data:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========"
},
{
"path": "docs/docs/services/mediastore.rst",
"chars": 783,
"preview": ".. _implementedservice_mediastore:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nme"
},
{
"path": "docs/docs/services/memorydb.rst",
"chars": 1453,
"preview": ".. _implementedservice_memorydb:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\nmemory"
},
{
"path": "docs/docs/services/meteringmarketplace.rst",
"chars": 323,
"preview": ".. _implementedservice_meteringmarketplace:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===="
},
{
"path": "docs/docs/services/mq.rst",
"chars": 1034,
"preview": ".. _implementedservice_mq:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==\nmq\n==\n\n.. autoclas"
},
{
"path": "docs/docs/services/neptune.rst",
"chars": 2609,
"preview": ".. _implementedservice_neptune:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=======\nneptune\n"
},
{
"path": "docs/docs/services/network-firewall.rst",
"chars": 2851,
"preview": ".. _implementedservice_network-firewall:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n======="
},
{
"path": "docs/docs/services/networkmanager.rst",
"chars": 3242,
"preview": ".. _implementedservice_networkmanager:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========="
},
{
"path": "docs/docs/services/opensearch.rst",
"chars": 2595,
"preview": ".. _implementedservice_opensearch:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nop"
},
{
"path": "docs/docs/services/opensearchserverless.rst",
"chars": 1676,
"preview": ".. _implementedservice_opensearchserverless:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==="
},
{
"path": "docs/docs/services/organizations.rst",
"chars": 2121,
"preview": ".. _implementedservice_organizations:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========="
},
{
"path": "docs/docs/services/osis.rst",
"chars": 829,
"preview": ".. _implementedservice_osis:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n====\nosis\n====\n\n.. "
},
{
"path": "docs/docs/services/panorama.rst",
"chars": 1199,
"preview": ".. _implementedservice_panorama:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\npanora"
},
{
"path": "docs/docs/services/patching_other_services.rst",
"chars": 2028,
"preview": ".. _patching_other_services:\n\n\n=======================\nPatching other Services\n=======================\n\nSince ``moto`` d"
},
{
"path": "docs/docs/services/personalize.rst",
"chars": 2209,
"preview": ".. _implementedservice_personalize:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===========\n"
},
{
"path": "docs/docs/services/pinpoint.rst",
"chars": 3527,
"preview": ".. _implementedservice_pinpoint:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\npinpoi"
},
{
"path": "docs/docs/services/pipes.rst",
"chars": 486,
"preview": ".. _implementedservice_pipes:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=====\npipes\n=====\n"
},
{
"path": "docs/docs/services/polly.rst",
"chars": 514,
"preview": ".. _implementedservice_polly:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=====\npolly\n=====\n"
},
{
"path": "docs/docs/services/quicksight.rst",
"chars": 7395,
"preview": ".. _implementedservice_quicksight:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n==========\nqu"
},
{
"path": "docs/docs/services/ram.rst",
"chars": 1316,
"preview": ".. _implementedservice_ram:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nram\n===\n\n|start-"
},
{
"path": "docs/docs/services/rds-data.rst",
"chars": 2169,
"preview": ".. _implementedservice_rds-data:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\nrds-da"
},
{
"path": "docs/docs/services/rds.rst",
"chars": 5659,
"preview": ".. _implementedservice_rds:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===\nrds\n===\n\n|start-"
},
{
"path": "docs/docs/services/redshift-data.rst",
"chars": 809,
"preview": ".. _implementedservice_redshift-data:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========="
},
{
"path": "docs/docs/services/redshift.rst",
"chars": 4708,
"preview": ".. _implementedservice_redshift:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========\nredshi"
},
{
"path": "docs/docs/services/rekognition.rst",
"chars": 2419,
"preview": ".. _implementedservice_rekognition:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n===========\n"
},
{
"path": "docs/docs/services/resiliencehub.rst",
"chars": 4316,
"preview": ".. _implementedservice_resiliencehub:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n=========="
},
{
"path": "docs/docs/services/resource-groups.rst",
"chars": 821,
"preview": ".. _implementedservice_resource-groups:\n\n.. |start-h3| raw:: html\n\n <h3>\n\n.. |end-h3| raw:: html\n\n </h3>\n\n========"
}
]
// ... and 3172 more files (download for full content)
About this extraction
This page contains the full source code of the getmoto/moto GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3372 files (107.9 MB), approximately 26.4M tokens, and a symbol index with 25067 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.