116 Commits

Author SHA1 Message Date
Akira Noda
90bdd72555
Admin: Using ruff format instead of black (#7502) 2024-03-21 19:17:29 -01:00
Bert Blommers
0455ebb953
SecretsManager: Ensure AWSPREVIOUS is only ever tied to one version (#7439) 2024-03-07 20:22:13 -01:00
Bert Blommers
4b898740e8
SecretsManager: rotate_secret() now supports the RotateImmediately-parameter (#7347) 2024-02-16 21:19:46 -01:00
Bert Blommers
fd5d7c18c1
SecretsManager: Replica Secrets are now supported (#7270) 2024-01-29 19:44:06 -01:00
Bert Blommers
dea4a98b64 Techdebt: Remove old/deprecated code (#7220) 2024-01-27 19:38:09 +00:00
Bert Blommers
a7f3b367b4 Introduce mock_aws() (#7194) 2024-01-27 19:38:09 +00:00
Bert Blommers
d77acd4456
Techdebt: Replace deprecated utcfromtimestamp-methods (#7146) 2023-12-20 21:36:19 -01:00
tungol
55c589072f
Admin: sorting imports with ruff (#7075) 2023-11-30 14:55:51 -01:00
Bert Blommers
60fd1a5cf2
Techdebt: Improve date handling across Moto (#6803) 2023-09-11 22:23:44 +00:00
JoshuaLicense
49f5a48f71
fix(secretsmanager): fix update of no-value initial secret (#6771) 2023-09-05 21:04:44 +00:00
Bert Blommers
3cf4f6315b
SecretsManager: Allow creation/update of secrets without values (#6720) 2023-08-24 13:48:53 +00:00
Bert Blommers
2d608ecd22
SecretsManager: delete_secret should throw an error for 0 day Recovery (#6469) 2023-07-01 11:35:22 +00:00
Bert Blommers
37cb6cee94
SecretsManager - update_secret() now supports the Description-parameter (#6352) 2023-05-31 23:09:08 +00:00
rafcio19
8516771d15
Secrets: add NextRotationDate and LastRotatedDate to secrets (#6313) 2023-05-12 10:10:52 +00:00
Bert Blommers
f54f4a666f
Techdebt: MyPy SecretsManager (#6244) 2023-04-22 15:39:48 +00:00
Bert Blommers
638171a9e1
SecretsManager - deal with partial ARNs (#6127) 2023-03-25 11:00:17 -01:00
Bert Blommers
d022b404d3
SecretsManager - put/delete_resource_policy (#6049) 2023-03-10 22:45:21 -01:00
Abdullah Ahmed
031f89dee0
Implement secretsmanager CancelRotateSecret (#5809) 2023-01-03 18:22:38 -01:00
Bert Blommers
ba4104c38e
Techdebt: Replace string-format with f-strings (for s* dirs) (#5692) 2022-11-21 18:21:34 -01:00
Pepe Fagoaga
dfd45d80ab
Secretsmanager: fix(add-secret): SecretString can be None (#5672) 2022-11-18 20:18:47 -01:00
Bert Blommers
ea8718d402
TechDebt: Move BackendDict to base_backend (#5645) 2022-11-10 08:43:20 -01:00
Bert Blommers
4f84e2f154
TechDebt - enable pylint rule redefined-outer-scope (#5518) 2022-10-04 16:28:30 +00:00
Bert Blommers
aa7d68a688
Feature: Ability to seed Moto, and make random ID's deterministic (#5492) 2022-09-28 09:35:12 +00:00
Bert Blommers
3d913f8f15
MultiAccount support (#5192) 2022-08-13 09:49:43 +00:00
Bryan Schrock
836a2e6538
Update get_secret_value to properly check versions and stages match (#5238) 2022-06-18 11:20:14 +00:00
Matthew Davis
0bf7057866
change secret ARNs to 6 random chars at end (#5200) 2022-06-08 19:54:51 +00:00
Bert Blommers
79a2a9d423
Preparation for MultiAccount support (#5157) 2022-06-04 11:30:16 +00:00
Bert Blommers
cecd1035ce
Prep release 3.1.10 (#5158) 2022-05-23 12:51:03 +00:00
Bert Blommers
749b543b7c
SSM - Integrate with SecretsManager (#5117) 2022-05-10 22:32:49 +00:00
Thomas Rausch
e911341e6a
add indirection to access account id (#5098) 2022-05-08 22:25:40 +00:00
Bert Blommers
de990b07f9
AWSLambda - Policy improvements (#4949) 2022-03-19 12:00:39 -01:00
Bert Blommers
eed32a5f72
Pylint - Enable more rules on source and tests-directory (#4929) 2022-03-11 20:28:45 -01:00
Daniel Roschka
d324a77445
Fix deleting secrets by ARN (#4918) 2022-03-08 09:17:28 -01:00
stromp
0e3fef9b42
Fix issue #4906 by removing version stages from old versions (#4907) 2022-03-03 12:02:23 -01:00
stromp
7e88a901d9
fix for duplicate tag keys in secretsmanager (#4900) 2022-03-01 21:50:42 -01:00
MEP
7194456d0d
[LocalStack] Fixes to secretsmanager's PutSecretValue, CreateSecret, DeleteSecret (#4851) 2022-02-11 11:49:14 -01:00
Daniel Fangl
3f534119f4
Add CreatedDate and LastChangedDate in secretsmanager responses (#4770) 2022-01-25 09:24:26 -01:00
Bert Blommers
d118d592ca
Pylint remaining source code (#4760) 2022-01-14 18:51:49 -01:00
Bert Blommers
cf87e75d6e
Feature: Mock region (#4699) 2021-12-24 20:02:45 -01:00
George Lungley
29406ed74e
Resolves #4644 - Add negative filter support in secretsmanager (#4645) 2021-12-01 14:33:52 -01:00
Bert Blommers
14a69c7524
Techdebt: Enable pylint rules (#4432) 2021-10-18 19:44:29 +00:00
MarkBrook
663cd7a523
ISSUE-4340: SecretsManager cannot find specified secret using ARN in some operations (#4353) 2021-09-27 19:59:13 +00:00
kbalk
3a203d35c9
Implement EC2 describe_vpc_endpoint_services() (#4322) 2021-09-24 16:01:09 +00:00
Miguel Gagliardo
c65d4ddc3b
Fix: Adding ClientRequestToken for SecretsManager update_secret method (#4314) 2021-09-21 16:43:31 +00:00
Bert Blommers
07bb843214
Fix regex URLs so that a dot is actually interpreted as a dot (#4110) 2021-08-28 13:42:45 +01:00
George Lungley
0ec99fae8b
#4118 Add KmsKeyId Support to secretsmanager (#4119) 2021-08-03 15:46:23 +01:00
Waldemar Hummer
f4f8527955
Merge LocalStack changes into upstream moto (#4082)
* fix OPTIONS requests on non-existing API GW integrations

* add cloudformation models for API Gateway deployments

* bump version

* add backdoor to return CloudWatch metrics

* Updating implementation coverage

* Updating implementation coverage

* add cloudformation models for API Gateway deployments

* Updating implementation coverage

* Updating implementation coverage

* Implemented get-caller-identity returning real data depending on the access key used.

* bump version

* minor fixes

* fix Number data_type for SQS message attribute

* fix handling of encoding errors

* bump version

* make CF stack queryable before starting to initialize its resources

* bump version

* fix integration_method for API GW method integrations

* fix undefined status in CF FakeStack

* Fix apigateway issues with terraform v0.12.21
* resource_methods -> add handle for "DELETE" method
* integrations -> fix issue that "httpMethod" wasn't included in body request (this value was set as the value from refer method resource)

* bump version

* Fix setting http method for API gateway integrations (#6)

* bump version

* remove duplicate methods

* add storage class to S3 Key when completing multipart upload (#7)

* fix SQS performance issues; bump version

* add pagination to SecretsManager list-secrets (#9)

* fix default parameter groups in RDS

* fix adding S3 metadata headers with names containing dots (#13)

* Updating implementation coverage

* Updating implementation coverage

* add cloudformation models for API Gateway deployments

* Updating implementation coverage

* Updating implementation coverage

* Implemented get-caller-identity returning real data depending on the access key used.

* make CF stack queryable before starting to initialize its resources

* bump version

* remove duplicate methods

* fix adding S3 metadata headers with names containing dots (#13)

* Update amis.json to support EKS AMI mocks (#15)

* fix PascalCase for boolean value in ListMultipartUploads response (#17); fix _get_multi_param to parse nested list/dict query params

* determine non-zero container exit code in Batch API

* support filtering by dimensions in CW get_metric_statistics

* fix storing attributes for ELBv2 Route entities; API GW refactorings for TF tests

* add missing fields for API GW resources

* fix error messages for Route53 (TF-compat)

* various fixes for IAM resources (tf-compat)

* minor fixes for API GW models (tf-compat)

* minor fixes for API GW responses (tf-compat)

* add s3 exception for bucket notification filter rule validation

* change the way RESTErrors generate the response body and content-type header

* fix lint errors and disable "black" syntax enforcement

* remove return type hint in RESTError.get_body

* add RESTError XML template for IAM exceptions

* add support for API GW minimumCompressionSize

* fix casing getting PrivateDnsEnabled API GW attribute

* minor fixes for error responses

* fix escaping special chars for IAM role descriptions (tf-compat)

* minor fixes and tagging support for API GW and ELB v2 (tf-compat)

* Merge branch 'master' into localstack

* add "AlarmRule" attribute to enable support for composite CloudWatch metrics

* fix recursive parsing of complex/nested query params

* bump version

* add API to delete S3 website configurations (#18)

* use dict copy to allow parallelism and avoid concurrent modification exceptions in S3

* fix precondition check for etags in S3 (#19)

* minor fix for user filtering in Cognito

* fix API Gateway error response; avoid returning empty response templates (tf-compat)

* support tags and tracingEnabled attribute for API GW stages

* fix boolean value in S3 encryption response (#20)

* fix connection arn structure

* fix api destination arn structure

* black format

* release 2.0.3.37

* fix s3 exception tests

see botocore/parsers.py:1002 where RequestId is removed from parsed

* remove python 2 from build action

* add test failure annotations in build action

* fix events test arn comparisons

* fix s3 encryption response test

* return default value "0" if EC2 availableIpAddressCount is empty

* fix extracting SecurityGroupIds for EC2 VPC endpoints

* support deleting/updating API Gateway DomainNames

* fix(events): Return empty string instead of null when no pattern is specified in EventPattern (tf-compat) (#22)

* fix logic and revert CF changes to get tests running again (#21)

* add support for EC2 customer gateway API (#25)

* add support for EC2 Transit Gateway APIs (#24)

* feat(logs): add `kmsKeyId` into `LogGroup` entity (#23)

* minor change in ELBv2 logic to fix tests

* feat(events): add APIs to describe and delete CloudWatch Events connections (#26)

* add support for EC2 transit gateway route tables (#27)

* pass transit gateway route table ID in Describe API, minor refactoring (#29)

* add support for EC2 Transit Gateway Routes (#28)

* fix region on ACM certificate import (#31)

* add support for EC2 transit gateway attachments (#30)

* add support for EC2 Transit Gateway VPN attachments (#32)

* fix account ID for logs API

* add support for DeleteOrganization API

* feat(events): store raw filter representation for CloudWatch events patterns (tf-compat) (#36)

* feat(events): add support to describe/update/delete CloudWatch API destinations (#35)

* add Cognito UpdateIdentityPool, CW Logs PutResourcePolicy

* feat(events): add support for tags in EventBus API (#38)

* fix parameter validation for Batch compute environments (tf-compat)

* revert merge conflicts in IMPLEMENTATION_COVERAGE.md

* format code using black

* restore original README; re-enable and fix CloudFormation tests

* restore tests and old logic for CF stack parameters from SSM

* parameterize RequestId/RequestID in response messages and revert related test changes

* undo LocalStack-specific adaptations

* minor fix

* Update CodeCov config to reflect removal of Py2

* undo change related to CW metric filtering; add additional test for CW metric statistics with dimensions

* Terraform - Extend whitelist of running tests

Co-authored-by: acsbendi <acsbendi28@gmail.com>
Co-authored-by: Phan Duong <duongpv@outlook.com>
Co-authored-by: Thomas Rausch <thomas@thrau.at>
Co-authored-by: Macwan Nevil <macnev2013@gmail.com>
Co-authored-by: Dominik Schubert <dominik.schubert91@gmail.com>
Co-authored-by: Gonzalo Saad <saad.gonzalo.ale@gmail.com>
Co-authored-by: Mohit Alonja <monty16597@users.noreply.github.com>
Co-authored-by: Miguel Gagliardo <migag9@gmail.com>
Co-authored-by: Bert Blommers <info@bertblommers.nl>
2021-07-26 15:21:17 +01:00
Bert Blommers
7693d77333
Remove Py2 support (#3915) 2021-07-26 07:40:39 +01:00
Bert Blommers
5e4bccc22d
Use centralized ACCOUNT_ID (#4029) 2021-06-23 18:03:11 +01:00
Daniel Samuels
a4b1498665
Support rotating secrets using Lambda [#3905] (#3912)
* Support rotating secrets using Lambda

The Secrets manager rotation process uses an AWS Lambda function
to perform the rotation of a secret. [1]

In fact, it's not possible to trigger rotation of a Secret
without specifying a Lambda function at some point in the life
of the secret:

```
$ aws secretsmanager rotate-secret --secret-id /rotationTest

An error occurred (InvalidRequestException) when calling the RotateSecret operation: No Lambda rotation function ARN is associated with this secret.
```

`moto` can be a little more lenient in this regard and allow
`rotate_secret` to be called without a Lambda function being
present, if only to allow simulation of the `AWSCURRENT` and
`AWSPREVIOUS` labels moving across versions.

However, if a lambda function _has_ been specified when calling
`rotate_secret`, it should be invoked therefore providing the
developer with the full multi-stage process [3] which can be
used to test the Lambda function itself and ensuring that full
end-to-end testing is performed. Without this there's no easy
way to configure the Secret in the state needed to provide the
Lambda function with the data in the format it needs to be in
at each step of the invocation process.

[1]: https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-lambda-function-overview.html
[2]: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.rotate_secret
[3]: https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-lambda-function-overview.html#rotation-explanation-of-steps

* Run `black` over `secretsmanager/models.py`

* Make `lambda_backends` import local to the condition

* Implement `update_secret_version_stage`

Allow a staging label to be moved across versions.

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.update_secret_version_stage

* Add an integration test for Secrets Manager & Lambda

* Support passing `ClientRequestToken` to `put_secret_value`

By passing `ClientRequestToken` to `put_secret_value` within
the lambda function  invoked by calling `rotate_secret`, one
can update the value associated with the existing (pending)
version, without causing a new secret version to be created.

* Add application logic for `AWSPENDING`

The rotation function must end with the versions of the secret
in one of two states:

 - The `AWSPENDING` and `AWSCURRENT` staging labels are
   attached to the same version of the secret, or
 - The `AWSPENDING` staging label is not attached to any
   version of the secret.

If the `AWSPENDING` staging label is present but not attached
to the same version as `AWSCURRENT` then any later invocation
of RotateSecret assumes that a previous rotation request is
still in progress and returns an error.

* Update `default_version_id` after Lambda rotation concludes

Call `set_default_version_id` directly, rather than going 
through `reset_default_version` as the Lambda function is 
responsible for moving the version labels around, not `rotate_secret`.

* Run `black` over changed files

* Fix Python 2.7 compatibility

* Add additional test coverage for Secrets Manager

* Fix bug found by tests

AWSPENDING + AWSCURRENT check wasn't using `version_stages`.
Also tidy up the AWSCURRENT moving in `update_secret_version_stage`
to remove AWSPREVIOUS it from the new stage.

* Run `black` over changed files

* Add additional `rotate_secret` tests

* Skip `test_rotate_secret_lambda_invocations` in test server mode

* Add test for invalid Lambda ARN
2021-05-11 12:08:01 +01:00