8000 Add default logging configuration for state machine (#6628) · localstack/localstack@1f1ca5d · GitHub
[go: up one dir, main page]

Skip to content

Commit 1f1ca5d

Browse files
authored
Add default logging configuration for state machine (#6628)
1 parent 615b51d commit 1f1ca5d

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

localstack/services/stepfunctions/provider.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
CreateStateMachineOutput,
66
DeleteStateMachineInput,
77
DeleteStateMachineOutput,
8+
LoggingConfiguration,
9+
LogLevel,
810
StepfunctionsApi,
911
)
1012
from localstack.aws.forwarder import HttpFallbackDispatcher, get_request_forwarder_http
@@ -42,6 +44,11 @@ def on_before_start(self):
4244
def create_state_machine(
4345
self, context: RequestContext, request: CreateStateMachineInput
4446
) -> CreateStateMachineOutput:
47+
# set default logging configuration
48+
if not request.get("loggingConfiguration"):
49+
request["loggingConfiguration"] = LoggingConfiguration(
50+
level=LogLevel.OFF, includeExecutionData=False
51+
)
4552
result = self.forward_request(context, request)
4653
event_publisher.fire_event(
4754
event_publisher.EVENT_STEPFUNCTIONS_CREATE_SM,

tests/integration/test_stepfunctions.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import json
2+
import logging
23
import os
34

45
import pytest
@@ -163,6 +164,8 @@
163164
},
164165
}
165166

167+
LOG = logging.getLogger(__name__)
168+
166169

167170
@pytest.fixture(scope="module")
168171
def setup_and_tear_down():
@@ -200,6 +203,24 @@ def setup_and_tear_down():
200203
testutil.delete_lambda_function(name=TEST_LAMBDA_NAME_5)
201204

202205

206+
@pytest.fixture
207+
def create_state_machine(stepfunctions_client):
208+
machines_arns = []
209+
210+
def factory(**kwargs):
211+
result = stepfunctions_client.create_state_machine(**kwargs)
212+
machines_arns.append(result["stateMachineArn"])
213+
return result
214+
215+
yield factory
216+
217+
for machine in machines_arns:
218+
try:
219+
stepfunctions_client.delete_state_machine(stateMachineArn=machine)
220+
except Exception as e:
221+
LOG.debug("Unable to delete SFN state machine: ", e)
222+
223+
203224
def _assert_machine_instances(expected_instances, sfn_client):
204225
def check():
205226
state_machines_after = sfn_client.list_state_machines()["stateMachines"]
@@ -516,6 +537,17 @@ def check_invocations():
516537
},
517538
}
518539

540+
STS_ROLE_POLICY_DOC = {
541+
"Version": "2012-10-17",
542+
"Statement": [
543+
{
544+
"Effect": "Allow",
545+
"Principal": {"Service": ["states.amazonaws.com"]},
546+
"Action": "sts:AssumeRole",
547+
}
548+
],
549+
}
550+
519551

520552
@pytest.mark.parametrize("region_name", ("us-east-1", "us-east-2", "eu-west-1", "eu-central-1"))
521553
@pytest.mark.parametrize("statemachine_definition", (TEST_STATE_MACHINE_3,)) # TODO: add sync2 test
@@ -570,6 +602,31 @@ def assert_success():
570602
client1.delete_state_machine(stateMachineArn=child_machine_arn)
571603

572604

605+
@pytest.mark.aws_validated
606+
def test_default_logging_configuration(iam_client, create_state_machine, stepfunctions_client):
607+
role_name = f"role_name-{short_uid()}"
608+
try:
609+
role_arn = iam_client.create_role(
610+
RoleName=role_name,
611+
AssumeRolePolicyDocument=json.dumps(STS_ROLE_POLICY_DOC),
612+
)["Role"]["Arn"]
613+
614+
definition = clone(TEST_STATE_MACHINE)
615+
definition = json.dumps(definition)
616+
617+
sm_name = f"sts-logging-{short_uid()}"
618+
result = create_state_machine(name=sm_name, definition=definition, roleArn=role_arn)
619+
620+
assert result["ResponseMetadata"]["HTTPStatusCode"] == 200
621+
result = stepfunctions_client.describe_state_machine(
622+
stateMachineArn=result["stateMachineArn"]
623+
)
624+
assert result["ResponseMetadata"]["HTTPStatusCode"] == 200
625+
assert result["loggingConfiguration"] == {"level": "OFF", "includeExecutionData": False}
626+
finally:
627+
iam_client.delete_role(RoleName=role_name)
628+
629+
573630
def test_aws_sdk_task(stepfunctions_client, iam_client, sns_client):
574631
statemachine_definition = {
575632
"StartAt": "CreateTopicTask",

0 commit comments

Comments
 (0)
0