https://www.davehall.com.au/blog/2020/07/10/logging-step-functions-cloudwatch/
AWSTemplateFormatVersion: '2010-09-09'
Description: StepFunction with Logging Example.
Parameters:
Resources:
StepFunctionExecRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: !Sub "states.${AWS::Region}.amazonaws.com"
Action:
- sts:AssumeRole
Path: "/"
Policies:
- PolicyName: StepFunctionExecRole
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- lambda:InvokeFunction
- lambda:ListFunctions
Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:my-lambdas-namespace-*"
- Effect: Allow
Action:
- logs:CreateLogDelivery
- logs:CreateLogStream
- logs:GetLogDelivery
- logs:UpdateLogDelivery
- logs:DeleteLogDelivery
- logs:ListLogDeliveries
- logs:PutLogEvents
- logs:PutResourcePolicy
- logs:DescribeResourcePolicies
- logs:DescribeLogGroups
Resource: "*"
MyStateMachineLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: /aws/vendedlogs/states/my-step-function-{stage}
RetentionInDays: 14
DashboardImportStateMachine:
Type: AWS::StepFunctions::StateMachine
Properties:
StateMachineName: my-step-function
StateMachineType: STANDARD
LoggingConfiguration:
Destinations:
- CloudWatchLogsLogGroup:
LogGroupArn: !GetAtt MyStateMachineLogGroup.Arn
IncludeExecutionData: True
Level: ALL
DefinitionString:
!Sub |
{
... JSON Step Function definition goes here
}
RoleArn: !GetAtt StepFunctionExecRole.Arn
From AWS role permission needed:
https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogDelivery",
"logs:CreateLogStream",
"logs:GetLogDelivery",
"logs:UpdateLogDelivery",
"logs:DeleteLogDelivery",
"logs:ListLogDeliveries",
"logs:PutLogEvents",
"logs:PutResourcePolicy",
"logs:DescribeResourcePolicies",
"logs:DescribeLogGroups"
],
"Resource": "*"
}
]
}
Enabling logging from certain AWS services (vended logs)
https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html
Amazon CloudWatch Logs resource policy size restrictions <–why vended logs are needed
https://docs.aws.amazon.com/step-functions/latest/dg/bp-cwl.html