Skip to content
This repository has been archived by the owner on Aug 14, 2024. It is now read-only.

Update from main repo #5

Open
wants to merge 6,209 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
6209 commits
Select commit Hold shift + click to select a range
b9502f8
Put events fix for multiple targets (#11880)
zaingz Nov 21, 2024
3be7ae0
fix java home for macos (#11888)
macnev2013 Nov 21, 2024
6748e0e
Add restructurings to fix events persistence in v2 (#11889)
dfangl Nov 21, 2024
2daa733
release version 4.0.0
localstack-bot Nov 21, 2024
116b799
prepare next development iteration
localstack-bot Nov 21, 2024
981e558
update README for v4 (#11902)
alexrashed Nov 22, 2024
91394ca
Re-introduce EventBridge invoke analytics (#11893)
joe4dev Nov 22, 2024
7c2d1e3
Enable EventBridge API destinations and connections (#11896)
dfangl Nov 22, 2024
ac6f897
add error replacement for DynamoDBStreams v2 (#11887)
bentsku Nov 22, 2024
e1e028d
Refactor EventBridge ArchiveServices to allow restoration without sid…
dfangl Nov 22, 2024
bdcb1dc
Fix put_targets validation regressions (#11903)
joe4dev Nov 22, 2024
e4000fb
Add Step Functions support for Variables and JSONata features (#11906)
MEPalma Nov 19, 2024
907c3b1
Add custom data path at beginning of loaders list (#11906)
dominikschubert Nov 21, 2024
3bfb64b
Allow proper python signal handling if jpype runs (#11906)
dfangl Nov 19, 2024
f391023
Fix formatting for new sfn features (#11907)
dominikschubert Nov 22, 2024
0ffd0ca
Disable selected StepFunctions unit tests due to broken imports (#11908)
dominikschubert Nov 22, 2024
151764b
Fix provider signature for StepFunctions TestState operation (#11909)
dominikschubert Nov 22, 2024
32fb0e0
Fix JVM startup for StepFunctions (#11910)
MEPalma Nov 22, 2024
e548a46
release version 4.0.1
localstack-bot Nov 22, 2024
da763c1
prepare next development iteration
localstack-bot Nov 22, 2024
7c4191e
Fix localstack namespace package (#11912)
dominikschubert Nov 22, 2024
39ac0b9
Fix linting issue after namespace package fix (#11913)
dominikschubert Nov 22, 2024
5f457e5
release version 4.0.2
localstack-bot Nov 23, 2024
14bcadc
prepare next development iteration
localstack-bot Nov 23, 2024
43187f7
Update CODEOWNERS (#11919)
localstack-bot Nov 25, 2024
4803c4c
Lambda: Fix behaviour for alias update and delete operations (#11878)
anisaoshafi Nov 25, 2024
08ad92b
fix(providers): Removed cloudcontrol provider (#11920)
Pive01 Nov 25, 2024
4ff3829
Update ASF APIs, update provider signatures (#11918)
localstack-bot Nov 25, 2024
3a32d76
Upgrade pinned Python dependencies (#11926)
localstack-bot Nov 26, 2024
5f19fbc
Events create connection test fix (#11904)
zaingz Nov 26, 2024
0d02e67
Add nodejs22.x AWS Lambda runtime (#11929)
dfangl Nov 26, 2024
95210a8
update rolo to 0.7.4 (#11933)
bentsku Nov 26, 2024
1abd2ff
Remove custom spec for AWS StepFunctions (#11925)
dominikschubert Nov 26, 2024
e5aa33d
Apply IAM patches when loading STS to avoid wrong access key formats …
dfangl Nov 26, 2024
e9777b7
ci/prevent init file to break packaging (#11914)
cloutierMat Nov 26, 2024
9e21cd5
add variable to configure SNS sender (#11930)
bentsku Nov 26, 2024
221fde1
Apigw fix openapi identity sources (#11939)
cloutierMat Nov 26, 2024
1adbd94
Update ASF APIs, update s3 provider signature (#11940)
localstack-bot Nov 27, 2024
cf4b124
StepFunctions: Improve Activity Name and Arn Validation Logic (#11924)
MEPalma Nov 27, 2024
04c02da
fixed java lib path for macos (#11892)
macnev2013 Nov 27, 2024
b28bad3
implement S3 conditional write `IfMatch` (#11941)
bentsku Nov 27, 2024
090230b
fix flaky SES test (#11944)
bentsku Nov 27, 2024
1ff7a48
Extend patch decorator to add methods to class types (#11932)
giograno Nov 27, 2024
0331d0e
Add analytics for event rule engine (#11928)
joe4dev Nov 27, 2024
0e01610
Re-introduce error analytics for EventBridge rule error (#11935)
joe4dev Nov 27, 2024
1a46f58
Add lambda ESM analytics (#11883)
joe4dev Nov 28, 2024
4e78bdf
analytics for non-prefixed env var forwarding in CLI (#11946)
alexrashed Nov 28, 2024
892eb4d
StepFunctions: Support Comments in Comparison Composite Statement Lis…
MEPalma Nov 28, 2024
5a2a3f8
fix ESM analytics (#11961)
bentsku Nov 29, 2024
be61d50
Implement read operation for AWS::SSM::Parameter & update resource sp…
cloutierMat Nov 29, 2024
2b405dc
Handle null value in SES OpenAPI spec (#11954)
giograno Nov 29, 2024
6bc1e1e
StepFunctions: Fix ErrorName Value for Lambda Task Errors (#11957)
MEPalma Nov 29, 2024
a47e701
Added test and fix for wrong time format and serialization in events …
zaingz Nov 29, 2024
365d9ad
StepFunctions: Support for ContextObject Paths Bindings for ErrorPath…
MEPalma Nov 29, 2024
1bd7dca
[SFN] Add usage analytics for Variable Workflow and JSONata features …
gregfurman Nov 29, 2024
55295bf
[ESM] Fix polling of SQS queue when batch size exceeds 10 (#11945)
gregfurman Nov 29, 2024
d5b43de
implement new native EventBridge EventRuleEngine (#11960)
bentsku Nov 29, 2024
21210ce
Add deprecation for Java-based event ruler (#11964)
joe4dev Nov 29, 2024
52d4e4f
fix: follow-up for null value in SES response (#11966)
giograno Nov 29, 2024
e0e3ec2
APIGW: fix parsing invalid JSON template in MOCK integration (#11967)
cloutierMat Nov 29, 2024
aa795ed
release version 4.0.3
localstack-bot Nov 29, 2024
d2d7409
prepare next development iteration
localstack-bot Nov 29, 2024
052b9bf
Update ASF APIs (#11969)
localstack-bot Dec 2, 2024
353bd2e
fix ASF code generation for recursive structures with keywords (#11972)
alexrashed Dec 3, 2024
325c82a
Upgrade pinned Python dependencies (#11973)
localstack-bot Dec 3, 2024
78fdf45
fix postgres install in pro test pipeline (#11974)
alexrashed Dec 3, 2024
414a968
SNS: improve SNS Filter Policy engine and implement `cidr` operator (…
bentsku Dec 3, 2024
0ae976e
upgrade outdated github action in ASF update workflow (#11975)
alexrashed Dec 4, 2024
22fd338
Reject events larger than the max size allowed (#11623)
xocasdashdash Dec 4, 2024
b182cae
Events: EventRuleEngine: improve `cidr` to support ipv6 and better va…
bentsku Dec 4, 2024
35cb30e
fix SNS test with region replacement (#11984)
bentsku Dec 4, 2024
e0638d4
Remove legacy event filtering implementation (#11985)
joe4dev Dec 4, 2024
891ed23
fix transformation of matching operations in aws::events::rule (#11811)
pinzon Dec 4, 2024
cbe2923
[ESM] Handle Lambda TCP socket connection timeouts (#11977)
gregfurman Dec 5, 2024
fd77541
Add test for EventBridge Scheduler TagResource API and UntagResource …
kakakakakku Dec 5, 2024
fd580a2
[ESM] Raise exception when setting DestinationConfig.OnSuccess (#11989)
gregfurman Dec 5, 2024
6df4dbc
OpenSearch: added sql plugin validated test (#11971)
erikmichel-dev Dec 5, 2024
891c13b
apigw clean up the invalid json parser (#11968)
cloutierMat Dec 6, 2024
52c952d
[EventsBridge] Add validation for malformed Detail value (#11990)
gregfurman Dec 6, 2024
abce2b5
[SFN] Correctly record failed EventsBridge PUT requests (#11991)
gregfurman Dec 6, 2024
994758a
Feature/Eventbridge v2: Support extending available targets (#11407)
maxhoheiser Dec 6, 2024
523b896
fix StringSplit regex escape (#11995)
cloutierMat Dec 6, 2024
b882369
make SNS `SigningCertURL` configurable even if not resolvable (#11993)
bentsku Dec 7, 2024
882326c
Update CODEOWNERS (#12001)
localstack-bot Dec 9, 2024
eaf1a15
Update service router, provider signatures, ASF APIs (#12000)
localstack-bot Dec 9, 2024
75ddcb6
Events: fix `numeric` operator string handling and provider validatio…
bentsku Dec 9, 2024
37a56a5
Bump python from 3.11.10-slim-bookworm to 3.11.11-slim-bookworm in th…
dependabot[bot] Dec 10, 2024
f6f83d2
Allow usage of additional runtimes with the Lambda SnapStart feature …
dfangl Dec 10, 2024
3907c24
Upgrade pinned Python dependencies (#12008)
localstack-bot Dec 10, 2024
c32c401
Clarify usage counter descriptions (#12009)
joe4dev Dec 10, 2024
206be1c
Cloudwatch: add basic composite alarm support (#11828)
tiurin Dec 10, 2024
abb35c3
enable localstack instance creation override for testing (#11988)
cloutierMat Dec 10, 2024
315c515
Bump moto-ext to 5.0.22.post1 (#12003)
viren-nadkarni Dec 11, 2024
5163c57
Print web app URL in start command (#12016)
gtsiolis Dec 11, 2024
2d53785
fix APIGW test with hardcoded region (#12020)
bentsku Dec 11, 2024
33e59e9
upgrade cryptography and amazon-kclpy (#12005)
alexrashed Dec 11, 2024
bebc66a
[ESM] Validate filter criteria and unskip tests (#12018)
gregfurman Dec 11, 2024
a541d8b
StepFunctions: Base Support for Task Credentials (#11987)
MEPalma Dec 11, 2024
412122d
Replicator implement cfn read for supported resources (#12017)
cloutierMat Dec 11, 2024
5949987
fix APIGW transformers to not do value replacement on port (#12021)
bentsku Dec 11, 2024
1977871
add validation before creating an s3 bucket for scenario testing (#12…
pinzon Dec 12, 2024
52df10a
APIGW: ParameterMapping skip if invalid input (#12023)
bentsku Dec 12, 2024
630f782
apigw fix openapi request parameters (#12027)
cloutierMat Dec 13, 2024
4b22031
add silv-io as default reviewer for upgrade PRs (#12029)
alexrashed Dec 13, 2024
f6b38bf
Upgrade npm in docker image to mitigate cross-spawn CVE (#12024)
dfangl Dec 13, 2024
9f28c06
fix `echo_http_server_post` returning double slash path (#12032)
bentsku Dec 13, 2024
cb66b15
StepFunctions: Fix Evaluation of Nested Map Runs (#12033)
MEPalma Dec 13, 2024
235a06a
StepFunctions: Fix Boto Request Encoding (#12035)
MEPalma Dec 13, 2024
ab47589
[ESM] Handle DynamoDB-local Invalid ShardID Exception (#12036)
gregfurman Dec 13, 2024
42335ca
Unskip fixed event filtering tests (#11992)
joe4dev Dec 14, 2024
2f4bf0b
Update ASF APIs (#12038)
localstack-bot Dec 16, 2024
7a0ae44
Update CODEOWNERS (#12039)
localstack-bot Dec 16, 2024
69ddfef
Unskip supported Lambda and ESM tests (#12012)
joe4dev Dec 16, 2024
072d250
Refactor/events: Custom api destination and connection tests (#11999)
maxhoheiser Dec 16, 2024
e548fb2
DynamoDB: Fix missing SSEDescription in UpdateTable (#11938)
IreneLime Dec 17, 2024
1dba4f3
Upgrade pinned Python dependencies (#12046)
localstack-bot Dec 17, 2024
42bec1a
DynamoDB: Fix empty replicas list in response (#12047)
viren-nadkarni Dec 17, 2024
a25d0d9
CloudFormation, Fix Retrieval of State Machine Definitions On Stack U…
MEPalma Dec 18, 2024
c76cc60
StepFunctions: Migration to String Expressions (#12028)
MEPalma Dec 18, 2024
5cefc0b
bump minimum version of cbor (#12051)
alexrashed Dec 18, 2024
e4038fc
feat(cloudformation): Add partial `NoEcho` parameter support (#11897)
rominf Dec 19, 2024
a36f580
add replicator to Advanced section (#12052)
cloutierMat Dec 19, 2024
d6e0887
add read/list methods for ec2 security-groups resource provider (#12034)
pinzon Dec 20, 2024
96eec2e
fix client factory for bypassing DNS server (#12059)
bentsku Dec 20, 2024
61535b7
Cfn support layer version read list (#12060)
cloutierMat Dec 23, 2024
126777f
fix(11576): fixing bug in standardqueue put message (#11717)
kshitijkohli Dec 24, 2024
c9ecef3
Improve type safety of `container_exists` (#12053)
martinfrancois Dec 25, 2024
08f12bf
Upgrade pinned Python dependencies (#12070)
localstack-bot Dec 25, 2024
9933a51
Update ASF APIs (#12063)
localstack-bot Dec 25, 2024
1b53465
Fix MacOS -> macOS (#12055)
zuyu Dec 25, 2024
5399278
Fix swagger endpoint from ephemeral instance (#12026)
giograno Dec 25, 2024
af276e0
Upgrade lambda runtime init to version v0.1.31-pre (#12050)
dfangl Jan 2, 2025
3e1471a
Bugfix/eventbridge/transformer issue with nested key (#11998)
maxhoheiser Jan 2, 2025
41ffa76
StepFunctions: Ensure Service Integrations Assume State Machine Role …
MEPalma Jan 2, 2025
f94b900
DDB: parity fix for JS clients (#12083)
giograno Jan 3, 2025
186ecf0
allow setting of customId for IAM Roles (#12077)
pinzon Jan 3, 2025
ed8046a
LDR: selectable local mounts (#12092)
simonrw Jan 3, 2025
65277e5
allow setting of customId on IAM Policies (#12073)
pinzon Jan 3, 2025
c3f72f7
Improve error message for a missing parameter value - provide its nam…
asomov Jan 4, 2025
3af3830
CFn: improve error messages (#11591)
simonrw Jan 5, 2025
b829400
fix template body when using CFN create-stack (#12097)
pinzon Jan 6, 2025
4809473
lambda layer enable deterministic layer version creation (#12098)
cloutierMat Jan 6, 2025
43e960d
Update CODEOWNERS (#12105)
localstack-bot Jan 7, 2025
98c7bee
Bump python from `370c586` to `8739526` in the docker-base-images gro…
dependabot[bot] Jan 7, 2025
f66ed12
Upgrade pinned Python dependencies (#12082)
localstack-bot Jan 7, 2025
a24f409
remove references to the discuss forum (#12106)
HarshCasper Jan 7, 2025
7795211
Bugfix/eventbridge/process to all matching rules (#12090)
maxhoheiser Jan 7, 2025
14ab0f5
Add s3 as ESM failure destination for Kinesis and DynamoDB stream sou…
tiurin Jan 7, 2025
edf600e
relax healthcheck timeout constraints (#12067)
displaylink-kstrzemp Jan 7, 2025
b7ed5bc
Add tests to source package exclusions in MANIFEST.in (#12108)
silv-io Jan 7, 2025
a6fd457
Docker client: support lists for entrypoints (#12093)
simonrw Jan 7, 2025
b8f8a62
Bump moto-ext to 5.0.26.post1 (#12079)
viren-nadkarni Jan 8, 2025
243a4be
KMS: fix DeriveSharedSecret (#12071)
alvertogit Jan 8, 2025
0191993
StepFunctions: Better Error Messages For JSONPath Operations (#12094)
MEPalma Jan 8, 2025
ec18ec9
Bugfix/eventbridge/event bus desciption not asigned on create (#12100)
maxhoheiser Jan 9, 2025
fad716d
DynamoDB: Disable Scalable Vector Extensions in JRE (#12112)
viren-nadkarni Jan 9, 2025
eb6e3dc
Ship StepFunction JSONata dependency by default (#12110)
joe4dev Jan 9, 2025
3aef62f
Refactor/events/custom api destination (#12057)
maxhoheiser Jan 9, 2025
630b2a1
StepFunctions, improve the use of ItemsPath declarations in Distribut…
MEPalma Jan 9, 2025
9f208af
DynamoDB: fix GlobalSecondaryIndexes parity in Create and DescribeTab…
bentsku Jan 10, 2025
c6d7896
Fix SSM parameter handling with paths and queries by ARN (#12116)
dfangl Jan 13, 2025
0f081fb
Docker Utils: Utility method to create file in container (#12122)
bblommers Jan 13, 2025
fa5e395
Update ASF APIs (#12125)
localstack-bot Jan 13, 2025
1867cc6
Update CODEOWNERS (#12126)
localstack-bot Jan 14, 2025
b15d7eb
Bump moto-ext to 5.0.26.post2 (#12134)
viren-nadkarni Jan 14, 2025
4832016
Upgrade pinned Python dependencies, update formatting (#12133)
localstack-bot Jan 17, 2025
1edb594
add cc methods for lambda function resource provider (#12111)
pinzon Jan 20, 2025
5bbacec
StepFunctions: Improvements to Timestamp Validation (#12074)
MEPalma Jan 20, 2025
99886cb
StepFunctions: Stateless evaluation of EvalComponents (#12068)
MEPalma Jan 20, 2025
bd8bfa6
[ESM] Handle polling of batches exceeding SQS message limits (#12118)
gregfurman Jan 20, 2025
7e62817
Add tests for KMS resource tagging and untagging (#12121)
k-a-il Jan 20, 2025
1fca388
Bump python from `8739526` to `6ed5bff` in the docker-base-images gro…
dependabot[bot] Jan 21, 2025
51a6a67
EventBridge: fix engine for empty prefix and suffix (#12147)
groves Jan 21, 2025
2a9fdec
StepFunctions: Support for Escape Sequences in JSONata String Literal…
MEPalma Jan 21, 2025
ece83c8
Feature: filtering for ListFirewallRules in Route53Resolver (#11742)
ecukalla Jan 21, 2025
6fea92c
Upgrade pinned Python dependencies (#12152)
localstack-bot Jan 22, 2025
889c8c5
Update ASF APIs (#12145)
localstack-bot Jan 22, 2025
b4b0ab9
Fix events cron regex for schedule-expression param validation (#12156)
anisaoshafi Jan 22, 2025
14b3a06
StepFunctions: AWS-SDK Integration Retain Specific Error Names (#12161)
MEPalma Jan 22, 2025
65647fc
Add validation for tags in kms service (#12142)
k-a-il Jan 22, 2025
e5e74db
Fix legacy test that broke pipeline after eventbridge cron update (#1…
anisaoshafi Jan 22, 2025
ed8c76e
S3: fix SSE-C parity error message (#12162)
bentsku Jan 22, 2025
81d9fb0
EventBridge: fix empty conditions in event rule engine (#12154)
bentsku Jan 22, 2025
e0c636f
fix pre-signed URL with JS SDK, enable test_presigned_url_v4_x_amz_in…
bentsku Jan 23, 2025
20f919b
fix cfn template join with noValue (#12163)
pinzon Jan 23, 2025
d676d6a
APIGW: fix OpenAPI import StatusCode string casting (#12137)
bentsku Jan 23, 2025
bdfdf15
S3: fix trailing slash logic (#12166)
bentsku Jan 23, 2025
9ae3666
Skip flaky StepFunction timeout test (#12173)
joe4dev Jan 23, 2025
44992c0
S3: fix exception from ObjectLock retention (#12165)
bentsku Jan 23, 2025
7b58081
update kinesis-mock from 0.4.7 to 0.4.8 (#12178)
alexrashed Jan 24, 2025
b6b0a2f
S3: fix ContentEncoding with aws-chunked (#12167)
bentsku Jan 24, 2025
c10bf82
Update cbor 2 requirement to 5.5 (#11704)
hammer498 Jan 24, 2025
27be0b7
Remove deprecated Java-based event ruler (#12158)
joe4dev Jan 24, 2025
eff69ac
SNS: fix Subscribe non existent topic exception (#12175)
bentsku Jan 24, 2025
0a5cd13
StepFunctions: Clean-up legacy JSONata unit tests (#11921)
MEPalma Jan 24, 2025
1790318
StepFunctions: Support for Output Blocks in Choice Rules, Improvments…
MEPalma Jan 24, 2025
beb7641
Update ASF APIs (#12189)
localstack-bot Jan 27, 2025
1d5276c
Fix missing symbol in HTML generation of metrics coverage report (#11…
vignesh1507 Jan 27, 2025
b0627a1
StepFunctions: Fix Parsing of Version Tokens as Soft Keywords (#12190)
MEPalma Jan 27, 2025
faef710
S3: implement new checksum algorithm CRC64NVME add ChecksumType for P…
bentsku Jan 27, 2025
8da6f60
Fix: validate schedule_expression for EventBridge Scheduler (#12191)
anisaoshafi Jan 27, 2025
2a59659
Upgrade pinned Python dependencies (#12194)
localstack-bot Jan 28, 2025
8987fe5
CFN/EC2: fix KeyError for EC2:Instance PublicIpAddress (#12176)
bentsku Jan 28, 2025
884c86e
Add docker stats functionality to docker clients (#12170)
silv-io Jan 28, 2025
25b920c
S3: implement new data integrity for MultipartUpload (#12183)
bentsku Jan 28, 2025
7e58c74
Fix wrong dash symbol in README (#12058)
odlot Jan 29, 2025
a3cd603
SNS : fix Message Signature typo and add Lambda URL fixture (#12181)
bentsku Jan 29, 2025
6d9597a
adjust --follow arg positioning to be compatible with docker and podm…
cfeller Jan 29, 2025
97ad700
fix: Explicitly stop ESM workers on LocalStack shutdown (#12203)
gregfurman Jan 29, 2025
8a211b8
release version 4.1.0
localstack-bot Jan 30, 2025
4f2c85c
prepare next development iteration
localstack-bot Jan 30, 2025
fa144f3
add 4.1 blog to README (#12208)
HarshCasper Jan 30, 2025
96d99d6
raise validationException if resource does not exist in CFn (#12202)
pinzon Jan 30, 2025
96c4ae5
Add info about how to enable type hints for testing to dev setup guid…
tiurin Jan 31, 2025
cefdb14
Add codebuild, codedeploy, and codepipeline to the client types (#12209)
giograno Jan 31, 2025
a952439
Update CODEOWNERS (#12219)
localstack-bot Feb 3, 2025
2a340b6
Update ASF APIs, update provider signatures (#12218)
localstack-bot Feb 3, 2025
952eb3e
Bump moto-ext to 5.0.28.post1 (#12213)
k-a-il Feb 3, 2025
dd330d3
Changed: adjust validation for scheduler expression (#12220)
anisaoshafi Feb 3, 2025
d7ba30f
S3: implement TransitionDefaultMinimumObjectSize for Lifecycle Config…
bentsku Feb 3, 2025
84b2f5f
APIGW: add Binary Media support for response in `AWS_PROXY` (#12199)
bentsku Feb 3, 2025
ca9275b
restructure unit tests (#12221)
bentsku Feb 3, 2025
379d551
Upgrade pinned Python dependencies (#12224)
localstack-bot Feb 4, 2025
fd3d900
[SQS] Stop blocking Queue.get() call on LocalStack shutdown (#12214)
gregfurman Feb 4, 2025
041e915
Update README CLI output (#12225)
gtsiolis Feb 4, 2025
bfb17b7
DynamoDB: disable Scalable Vectors Extensions on arm64 (#12226)
tiurin Feb 4, 2025
91fa86d
Step Functions: Extended Support for Escape Sequences in String Liter…
MEPalma Feb 4, 2025
873d150
release version 4.1.1
localstack-bot Feb 5, 2025
7f32b7d
prepare next development iteration
localstack-bot Feb 5, 2025
1b67f4f
Fix kubernetes dev run script (#12229)
dfangl Feb 6, 2025
ccf99d7
APIGW: binary support for non-proxy integration (#12215)
bentsku Feb 7, 2025
d8265eb
[ESM] Dynamically set SQS message override count (#12233)
gregfurman Feb 7, 2025
b4acd16
Update ASF APIs (#12239)
localstack-bot Feb 10, 2025
7c364d1
add product and edition to session analytics (#12198)
ackdav Feb 10, 2025
2a2dfb0
[ESM] Provide SqsPoller with default parameters (#12240)
gregfurman Feb 10, 2025
afb3931
[SQS] Cancel pending and future tasks on shutdown (#12228)
gregfurman Feb 10, 2025
35cd175
Step Functions: Improve Logging and Error Detection for Unsupported S…
MEPalma Feb 10, 2025
dfe3575
[SQS] Add custom header for overriding WaitTimeSeconds (#12172)
gregfurman Feb 10, 2025
a43bd8f
Step Functions: Add Supported Integrations For Glue (#12248)
MEPalma Feb 10, 2025
83749c4
Upgrade pinned Python dependencies (#12250)
localstack-bot Feb 11, 2025
7bb5b3c
Bump python from `6ed5bff` to `42420f7` in the docker-base-images gro…
dependabot[bot] Feb 11, 2025
e157b87
fixing typos in the `README.md` (#12242)
hassansuhaib Feb 11, 2025
57aeecb
Add fixture for creating an IAM role and attaching existing policy (#…
viren-nadkarni Feb 12, 2025
25d4d82
[SQS] Improve shutdown capabilities of SqsProvider (#12252)
gregfurman Feb 12, 2025
a79d200
skip flaky transcribe tests (#12260)
alexrashed Feb 13, 2025
6ee910b
Upgrade pinned Python dependencies (#12266)
localstack-bot Feb 13, 2025
904f55a
fix ListObjectVersions pagination when version id marker is deleted (…
bentsku Feb 13, 2025
c3866e1
fix ListObjectVersions pagination comparison (#12270)
bentsku Feb 14, 2025
b09f490
[Events] Skip flaky test against SQS target (#12273)
gregfurman Feb 16, 2025
2d7ba1b
Update ASF APIs (#12275)
localstack-bot Feb 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
StepFunctions: Ensure Service Integrations Assume State Machine Role …
…Credentials (localstack#12089)
  • Loading branch information
MEPalma authored Jan 2, 2025
commit 41ffa76891286fffa5ca72a7b501fd7ecbbd36c4
Original file line number Diff line number Diff line change
@@ -5,6 +5,9 @@
from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_reader.resource_eval.resource_eval import (
ResourceEval,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
StateCredentials,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.service.resource import (
ResourceRuntimePart,
)
@@ -15,31 +18,41 @@

class ResourceEvalS3(ResourceEval):
_HANDLER_REFLECTION_PREFIX: Final[str] = "_handle_"
_API_ACTION_HANDLER_TYPE = Callable[[Environment, ResourceRuntimePart], None]
_API_ACTION_HANDLER_TYPE = Callable[[Environment, ResourceRuntimePart, StateCredentials], None]

@staticmethod
def _get_s3_client(resource_runtime_part: ResourceRuntimePart):
def _get_s3_client(
resource_runtime_part: ResourceRuntimePart, state_credentials: StateCredentials
):
return boto_client_for(
region=resource_runtime_part.region,
account=resource_runtime_part.account,
service="s3",
region=resource_runtime_part.region, service="s3", state_credentials=state_credentials
)

@staticmethod
def _handle_get_object(env: Environment, resource_runtime_part: ResourceRuntimePart) -> None:
s3_client = ResourceEvalS3._get_s3_client(resource_runtime_part=resource_runtime_part)
def _handle_get_object(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
state_credentials: StateCredentials,
) -> None:
s3_client = ResourceEvalS3._get_s3_client(
resource_runtime_part=resource_runtime_part, state_credentials=state_credentials
)
parameters = env.stack.pop()
response = s3_client.get_object(**parameters)
response = s3_client.get_object(**parameters) # noqa
content = to_str(response["Body"].read())
env.stack.append(content)

@staticmethod
def _handle_list_objects_v2(
env: Environment, resource_runtime_part: ResourceRuntimePart
env: Environment,
resource_runtime_part: ResourceRuntimePart,
state_credentials: StateCredentials,
) -> None:
s3_client = ResourceEvalS3._get_s3_client(resource_runtime_part=resource_runtime_part)
s3_client = ResourceEvalS3._get_s3_client(
resource_runtime_part=resource_runtime_part, state_credentials=state_credentials
)
parameters = env.stack.pop()
response = s3_client.list_objects_v2(**parameters)
response = s3_client.list_objects_v2(**parameters) # noqa
contents = response["Contents"]
env.stack.append(contents)

@@ -55,4 +68,5 @@ def eval_resource(self, env: Environment) -> None:
self.resource.eval(env=env)
resource_runtime_part: ResourceRuntimePart = env.stack.pop()
resolver_handler = self._get_api_action_handler()
resolver_handler(env, resource_runtime_part)
state_credentials = StateCredentials(role_arn=env.aws_execution_details.role_arn)
resolver_handler(env, resource_runtime_part, state_credentials)
Original file line number Diff line number Diff line change
@@ -6,6 +6,9 @@
from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.result_writer.resource_eval.resource_eval import (
ResourceEval,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
StateCredentials,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.service.resource import (
ResourceRuntimePart,
)
@@ -16,22 +19,28 @@

class ResourceEvalS3(ResourceEval):
_HANDLER_REFLECTION_PREFIX: Final[str] = "_handle_"
_API_ACTION_HANDLER_TYPE = Callable[[Environment, ResourceRuntimePart], None]
_API_ACTION_HANDLER_TYPE = Callable[[Environment, ResourceRuntimePart, StateCredentials], None]

@staticmethod
def _get_s3_client(resource_runtime_part: ResourceRuntimePart):
def _get_s3_client(
resource_runtime_part: ResourceRuntimePart, state_credentials: StateCredentials
):
return boto_client_for(
region=resource_runtime_part.region,
account=resource_runtime_part.account,
service="s3",
service="s3", region=resource_runtime_part.region, state_credentials=state_credentials
)

@staticmethod
def _handle_put_object(env: Environment, resource_runtime_part: ResourceRuntimePart) -> None:
def _handle_put_object(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
state_credentials: StateCredentials,
) -> None:
parameters = env.stack.pop()
env.stack.pop() # TODO: results

s3_client = ResourceEvalS3._get_s3_client(resource_runtime_part=resource_runtime_part)
s3_client = ResourceEvalS3._get_s3_client(
resource_runtime_part=resource_runtime_part, state_credentials=state_credentials
)
map_run_record = env.map_run_record_pool_manager.get_all().pop()
map_run_uuid = map_run_record.map_run_arn.split(":")[-1]
if parameters["Prefix"] != "" and not parameters["Prefix"].endswith("/"):
@@ -66,4 +75,5 @@ def eval_resource(self, env: Environment) -> None:
self.resource.eval(env=env)
resource_runtime_part: ResourceRuntimePart = env.stack.pop()
resolver_handler = self._get_api_action_handler()
resolver_handler(env, resource_runtime_part)
state_credentials = StateCredentials(role_arn=env.aws_execution_details.role_arn)
resolver_handler(env, resource_runtime_part, state_credentials)
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
from typing import Final, Optional
from dataclasses import dataclass
from typing import Final

from localstack.services.stepfunctions.asl.component.common.string.string_expression import (
StringExpression,
)
from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
from localstack.services.stepfunctions.asl.eval.environment import Environment

_CREDENTIALS_ROLE_ARN_KEY: Final[str] = "RoleArn"
ComputedCredentials = dict

@dataclass
class StateCredentials:
role_arn: str


class RoleArn(EvalComponent):
@@ -26,12 +29,8 @@ class Credentials(EvalComponent):
def __init__(self, role_arn: RoleArn):
self.role_arn = role_arn

@staticmethod
def get_role_arn_from(computed_credentials: ComputedCredentials) -> Optional[str]:
return computed_credentials.get(_CREDENTIALS_ROLE_ARN_KEY)

def _eval_body(self, env: Environment) -> None:
self.role_arn.eval(env=env)
role_arn = env.stack.pop()
computes_credentials: ComputedCredentials = {_CREDENTIALS_ROLE_ARN_KEY: role_arn}
computes_credentials = StateCredentials(role_arn=role_arn)
env.stack.append(computes_credentials)
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@

from localstack.aws.api.lambda_ import InvocationResponse
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
ComputedCredentials,
StateCredentials,
)
from localstack.services.stepfunctions.asl.eval.environment import Environment
from localstack.services.stepfunctions.asl.utils.boto_client import boto_client_for
@@ -39,10 +39,10 @@ def _from_payload(payload_streaming_body: IO[bytes]) -> Union[json, str]:


def exec_lambda_function(
env: Environment, parameters: dict, region: str, account: str, credentials: ComputedCredentials
env: Environment, parameters: dict, region: str, state_credentials: StateCredentials
) -> None:
lambda_client = boto_client_for(
region=region, account=account, service="lambda", credentials=credentials
service="lambda", region=region, state_credentials=state_credentials
)

invocation_resp: InvocationResponse = lambda_client.invoke(**parameters)
Original file line number Diff line number Diff line change
@@ -30,8 +30,7 @@
StatesErrorNameType,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
ComputedCredentials,
Credentials,
StateCredentials,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.service.resource import (
ResourceRuntimePart,
@@ -235,15 +234,15 @@ def _eval_service_task(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
normalised_parameters: dict,
task_credentials: ComputedCredentials,
state_credentials: StateCredentials,
): ...

def _before_eval_execution(
self,
env: Environment,
resource_runtime_part: ResourceRuntimePart,
raw_parameters: dict,
task_credentials: TaskCredentials,
state_credentials: StateCredentials,
) -> None:
parameters_str = to_json_str(raw_parameters)

@@ -263,7 +262,7 @@ def _before_eval_execution(
scheduled_event_details["heartbeatInSeconds"] = heartbeat_seconds
if self.credentials:
scheduled_event_details["taskCredentials"] = TaskCredentials(
roleArn=Credentials.get_role_arn_from(computed_credentials=task_credentials)
roleArn=state_credentials.role_arn
)
env.event_manager.add_event(
context=env.event_history_context,
@@ -286,7 +285,7 @@ def _after_eval_execution(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
normalised_parameters: dict,
task_credentials: ComputedCredentials,
state_credentials: StateCredentials,
) -> None:
output = env.stack[-1]
self._verify_size_quota(env=env, value=output)
@@ -308,13 +307,13 @@ def _eval_execution(self, env: Environment) -> None:
resource_runtime_part: ResourceRuntimePart = env.stack.pop()

raw_parameters = self._eval_parameters(env=env)
task_credentials = self._eval_credentials(env=env)
state_credentials = self._eval_state_credentials(env=env)

self._before_eval_execution(
env=env,
resource_runtime_part=resource_runtime_part,
raw_parameters=raw_parameters,
task_credentials=task_credentials,
state_credentials=state_credentials,
)

normalised_parameters = copy.deepcopy(raw_parameters)
@@ -324,7 +323,7 @@ def _eval_execution(self, env: Environment) -> None:
env=env,
resource_runtime_part=resource_runtime_part,
normalised_parameters=normalised_parameters,
task_credentials=task_credentials,
state_credentials=state_credentials,
)

output_value = env.stack[-1]
@@ -334,5 +333,5 @@ def _eval_execution(self, env: Environment) -> None:
env=env,
resource_runtime_part=resource_runtime_part,
normalised_parameters=normalised_parameters,
task_credentials=task_credentials,
state_credentials=state_credentials,
)
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@
FailureEvent,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
ComputedCredentials,
StateCredentials,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.service.resource import (
ResourceCondition,
@@ -294,7 +294,7 @@ def _eval_service_task(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
normalised_parameters: dict,
task_credentials: ComputedCredentials,
state_credentials: StateCredentials,
):
# TODO: add support for task credentials

Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@
StatesErrorNameType,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
ComputedCredentials,
StateCredentials,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.service.resource import (
ResourceCondition,
@@ -128,15 +128,14 @@ def _eval_service_task(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
normalised_parameters: dict,
task_credentials: ComputedCredentials,
state_credentials: StateCredentials,
):
service_name = self._get_boto_service_name()
api_action = self._get_boto_service_action()
api_client = boto_client_for(
region=resource_runtime_part.region,
account=resource_runtime_part.account,
service=service_name,
credentials=task_credentials,
region=resource_runtime_part.region,
state_credentials=state_credentials,
)
response = getattr(api_client, api_action)(**normalised_parameters) or dict()
if response:
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
StatesErrorNameType,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
ComputedCredentials,
StateCredentials,
)
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.service.resource import (
ResourceCondition,
@@ -90,15 +90,15 @@ def _before_eval_execution(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
raw_parameters: dict,
task_credentials: ComputedCredentials,
state_credentials: StateCredentials,
) -> None:
if self.resource.condition == ResourceCondition.Sync:
self._attach_aws_environment_variables(parameters=raw_parameters)
super()._before_eval_execution(
env=env,
resource_runtime_part=resource_runtime_part,
raw_parameters=raw_parameters,
task_credentials=task_credentials,
state_credentials=state_credentials,
)

def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
@@ -138,12 +138,12 @@ def _build_sync_resolver(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
normalised_parameters: dict,
task_credentials: ComputedCredentials,
state_credentials: StateCredentials,
) -> Callable[[], Optional[Any]]:
batch_client = boto_client_for(
region=resource_runtime_part.region,
account=resource_runtime_part.account,
service="batch",
region=resource_runtime_part.region,
state_credentials=state_credentials,
)
submission_output: dict = env.stack.pop()
job_id = submission_output["JobId"]
@@ -186,15 +186,14 @@ def _eval_service_task(
env: Environment,
resource_runtime_part: ResourceRuntimePart,
normalised_parameters: dict,
task_credentials: ComputedCredentials,
state_credentials: StateCredentials,
):
service_name = self._get_boto_service_name()
api_action = self._get_boto_service_action()
batch_client = boto_client_for(
region=resource_runtime_part.region,
account=resource_runtime_part.account,
service=service_name,
credentials=task_credentials,
state_credentials=state_credentials,
)
response = getattr(batch_client, api_action)(**normalised_parameters)
response.pop("ResponseMetadata", None)
Loading