기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
표준 워크플로는에 실행 기록을 기록 AWS Step Functions하지만 선택적으로 Amazon CloudWatch Logs에 대한 로깅을 구성할 수 있습니다.
표준 워크플로처럼 Express 워크플로는 AWS Step Functions의 실행 내역을 기록하지 않습니다. Express 워크플로의 실행 내역과 결과를 보려면 Amazon CloudWatch Logs에 로깅을 구성해야 합니다. 로그를 게시해도 실행이 차단되거나 실행 속도가 느려지지 않습니다.
참고
로깅을 구성하면 CloudWatch Logs 요금
로깅 구성
Step Functions 콘솔을 사용하여 표준 워크플로를 만들 때 해당 상태 시스템은 CloudWatch Logs에 로그를 보내도록 구성되지 않습니다. Step Functions 콘솔을 사용하여 Express 워크플로를 만들 때 해당 상태 시스템은 기본적으로 CloudWatch Logs에 로그를 보내도록 구성됩니다.
Express 워크플로의 경우 Step Functions는 CloudWatch Logs에 필요한 AWS Identity and Access Management (IAM) 정책을 사용하여 역할을 생성할 수 있습니다. API, CLI 또는 AWS CloudFormation을 사용하여 표준 워크플로나 Express 워크플로를 만드는 경우 Step Functions는 기본적으로 로깅을 활성화하지 않으므로 역할에 필요한 권한이 있는지 확인해야 합니다.
콘솔에서 시작된 실행마다 Step Functions는 해당 실행별 로그 이벤트를 가져오도록 올바른 필터가 구성된 CloudWatch Logs에 대한 링크를 제공합니다.
필요에 따라 로그를 암호화하도록 고객 관리형 AWS KMS 키를 구성할 수 있습니다. 자세한 내용과 권한 설정은 저장 데이터 암호화 섹션을 참조하세요.
로깅을 구성하려면 CreateStateMachine 또는 UpdateStateMachine을 사용할 때 LoggingConfiguration 파라미터를 전달하면 됩니다. CloudWatch Logs Insights를 사용하여 CloudWatch Logs의 데이터를 자세히 분석할 수 있습니다. 자세한 내용은 CloudWatch Logs Insights를 사용한 로그 데이터 분석을 참조하십시오.
CloudWatch Logs 페이로드
실행 내역 이벤트에 해당 정의의 입력 또는 출력 속성이 포함될 수 있습니다. CloudWatch Logs로 전송된 이스케이프된 입력 또는 이스케이프된 출력이 248KiB를 초과하는 경우 CloudWatch Logs 할당량의 결과로 출력이 잘립니다.
-
inputDetails
및outputDetails
속성을 검토하여 페이로드가 잘렸는지 여부를 확인할 수 있습니다. 자세한 내용은HistoryEventExecutionDataDetails
데이터 유형을 참조하세요. -
표준 워크플로의 경우
GetExecutionHistory
를 사용하여 전체 실행 내역을 확인할 수 있습니다. -
Express 워크플로에
GetExecutionHistory
을 사용할 수 없습니다. 전체 입력 및 출력을 확인하려면 Amazon S3 ARN을 사용하면 됩니다. 자세한 내용은 Step Functions에서 대용량 페이로드를 전달하는 대신 Amazon S3 ARN 사용 단원을 참조하십시오.
CloudWatch Logs에 로깅하기 위한 IAM 정책
또한 다음 예제와 같이 CloudWatch Logs에 로깅할 수 있는 적절한 권한이 있도록 상태 시스템 실행 IAM 역할을 구성해야 합니다.
IAM 정책 예시
다음은 권한을 구성하는 데 사용할 수 있는 정책의 예입니다. 다음 예제와 같이 Resource
필드에 *를 지정해야 합니다. CreateLogDelivery 및 DescribeLogGroups와 같은 CloudWatch API 작업은 Amazon CloudWatch Logs에서 정의한 리소스 유형을 지원하지 않습니다. 자세한 내용은 Amazon CloudWatch Logs에서 정의한 작업을 참조하세요.
-
CloudWatch 리소스에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서의 CloudWatch Logs 리소스 및 작업을 참조하세요.
-
CloudWatch Logs로 로그를 전송하도록 설정하는 데 필요한 권한에 대한 자세한 내용은 CloudWatch Logs로 전송된 로그 섹션의 사용자 권한을 참조하세요.
{
"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": "*"
}
]
}
CloudWatch Logs에 대한 상태 시스템 로깅 문제 해결
상태 시스템이 CloudWatch Logs로 로그를 전송할 수 없는 경우 다음 단계를 시도하세요.
-
CloudWatch Logs에 로깅할 수 있는 권한이 있는지 상태 시스템 실행 역할을 확인합니다.
CreateStateMachine 또는 UpdateStateMachine API 엔드포인트를 호출할 때
roleArn
파라미터에 지정된 IAM 역할이 이전 IAM 정책 예제에 표시된 필수 권한을 제공하는지 확인합니다. -
CloudWatch Logs 리소스 정책이 5,120자 제한을 초과하지 않는지 확인합니다.
정책이 문자 제한을 초과하는 경우 로그 그룹 이름 앞에
/aws/vendedlogs/states
접두사를 붙여 상태 시스템에 권한을 부여하고 제한을 피합니다. Step Functions 콘솔에서 로그 그룹을 만들면 제안된 로그 그룹 이름에 접두사/aws/vendedlogs/states
가 이미 추가되어 있습니다. 로깅 모범 사례에 대한 자세한 내용은 CloudWatch Logs 리소스 정책 크기 제한 섹션을 참조하세요.
Step Functions 실행 이벤트에 대한 로그 수준
로그 수준 범위는 ALL
부터 ERROR
, FATAL
, OFF
입니다. ALL
의 경우 모든 이벤트 유형이 로깅되며, OFF
로 설정하면 이벤트 유형이 로깅되지 않습니다. ERROR
및 FATAL
에 대해서는 다음 표를 참조하십시오.
이러한 로그 수준을 기반으로 Express 워크플로 실행에 대해 표시되는 실행 데이터에 대한 자세한 내용은 표준 및 Express 콘솔 환경 차이 섹션을 참조하세요.
이벤트 유형 | ALL |
ERROR |
FATAL |
OFF |
---|---|---|---|---|
ChoiceStateEntered |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ChoiceStateExited |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ExecutionAborted |
로깅됨 | 로깅됨 | 로깅됨 | 로깅되지 않음 |
ExecutionFailed |
로깅됨 | 로깅됨 | 로깅됨 | 로깅되지 않음 |
ExecutionStarted |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ExecutionSucceeded |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ExecutionTimedOut |
로깅됨 | 로깅됨 | 로깅됨 | 로깅되지 않음 |
FailStateEntered |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
LambdaFunctionFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
LambdaFunctionScheduled | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
LambdaFunctionScheduleFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
LambdaFunctionStarted |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
LambdaFunctionStartFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
LambdaFunctionSucceeded |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
LambdaFunctionTimedOut |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
MapIterationAborted |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
MapIterationFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
MapIterationStarted |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
MapIterationSucceeded |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
MapRunAborted |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
MapRunFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
MapStateAborted |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
MapStateEntered |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
MapStateExited |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
MapStateFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
MapStateStarted |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
MapStateSucceeded |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ParallelStateAborted |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
ParallelStateEntered |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ParallelStateExited |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ParallelStateFailed | 로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
ParallelStateStarted |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
ParallelStateSucceeded |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
PassStateEntered |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
PassStateExited |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
SucceedStateEntered |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
SucceedStateExited |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
TaskFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
TaskScheduled |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
TaskStarted | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
TaskStartFailed |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
TaskStateAborted |
로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
TaskStateEntered |
로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
TaskStateExited | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
TaskSubmitFailed | 로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
TaskSubmitted | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
TaskSucceeded | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
TaskTimedOut | 로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
WaitStateAborted | 로깅됨 | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 |
WaitStateEntered | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |
WaitStateExited | 로깅됨 | 로깅되지 않음 | 로깅되지 않음 | 로깅되지 않음 |