이벤트 소스 파이프
프로세스: DataLake→Glue→QuickSight
CloudWatch에서 호출된 Glue의 실행 로그를 Lambda로 합계, 추출하여 S3 섹션에 업로드합니다.
Lambda 함수는 Step Function에서 시작됩니다.
EventBridge(구: CloudWatch Events)
EventBright에 대한 이벤트 실행 규칙이 설정되어 있습니다.
이벤트 모드를 시간표(모드)로 설정하고 시간표에 따라 동작을 설정합니다.
이렇게 정기적으로 Step Funcitons를 실행하면 데이터가 Lambda로 이동합니다.
다음은 로그 내용입니다.
Lambda 함수를 사용하여 Glue의 실행 로그를 S3 섹션에 업로드합니다.
terraform/moduls/cloudwatch/cloudwatch.tf
# ----------------------------------
# Eventbridge (Cloud Watch Events)
# ----------------------------------
resource "aws_cloudwatch_event_rule" "cloudwatch_lambda_test_rule" {
name = "cloudwatch-lambda-test-rule"
schedule_expression = "cron(0/60 * * * ? *)"
}
resource "aws_cloudwatch_event_target" "cloudwatch_lambda_test_target" {
rule = "${aws_cloudwatch_event_rule.cloudwatch_lambda_test_rule.name}"
target_id = "lambda_test"
arn = "${aws_lambda_function.lambda_test.arn}"
}
resource "aws_lambda_permission" "cloudwatch_lambda_test_permission" {
statement_id = "AllowExecutionFromCloudWatch"
action = "lambda:InvokeFunction"
function_name = "${aws_lambda_function.lambda_test.function_name}"
principal = "events.amazonaws.com"
source_arn = "${aws_cloudwatch_event_rule.cloudwatch_lambda_test_rule.arn}"
}
resource "aws cloudwatch event rule"에서 이벤트 규칙을 설정합니다.resource "aws closudwatch 이벤트 target"에서 실행 대상을 설정합니다.
Resource "aws lambda permission"에서 Lambda 함수에 대한 최소 액세스 권한을 설정합니다.
Step Functions
단계 Function의 상태기 및 해당 실행 결과입니다.
상태기는 다음 캡처와 같은 처리 순서를 정의하는 설정입니다.
다음은 상태 이동도입니다.이렇게 하면 처리 상황과 상태를 확인하고 추적할 수 있다.
각 단계에서 뱉은 CloudWatch 로그에서 실행 로그를 확인할 수 있습니다.
terraform/modules/sfn/sfn.tf
# ----------------------------------
# Stete machine
# ----------------------------------
resource "aws_sfn_state_machine" "sfn" {
name = "${var.enviroment}-sfn"
role_arn = "${aws_iam_role.sfn.arn}"
definition = <<EOT
{
"Comment": "Export Cloudwatch LogStream recursively",
"StartAt": "Export logs to S3",
"TimeoutSeconds": 60,
"States": {
"Export logs to S3": {
"Type": "Task",
"Resource": "${var.lambda_test_arn}",
"Next": "Finished process ?"
},
"Finished process ?": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.status",
"StringEquals": "running",
"Next": "Wait and refuse"
},
{
"Variable": "$.status",
"StringEquals": "completed",
"Next": "Success"
}
]
},
"Wait and refuse": {
"Type": "Wait",
"Seconds": 5,
"Next": "Export logs to S3"
},
"Success": {
"Type": "Succeed"
}
}
}
EOT
logging_configuration {
log_destination = "${var.sfn_arn}"
include_execution_data = true
level = "ALL"
}
}
Step Function의 상태기는 aws sfn state machine에서 정의됩니다.States 매개변수를 정렬하여 단계를 하나씩 정의합니다.
Next에서 다음 단계를 지정할 수 있습니다.
Type은 실행 유형입니다.예를 들어, "Choice"가 설정된 경우 후속 처리를 분기할 수 있습니다.
If~else문과 같은 동작의 인상을 가지고 있다.String Equals는 분기 조건입니다.Lambda 함수의 반환값(반환값)을 일관성 또는 불일치로 판정합니다.
Lambda + CloudWatch Logs
Lambda 함수가 등록되었습니다.
추출된 시간 폭을 지정하여 로그 파일을 S3 구간에 업로드합니다.
※ 파이썬 보토3 상세 요약은 다음과 같다.(참조)
Lambda의 실행 로그입니다.람바다를 실행할 때의 오류 정보 등도 이 로그에서 확인할 수 있다.
다음은 로그 내용입니다.
terraform/modules/lambda/lambda.tf
# ----------------------------------
# Lambda function
# ----------------------------------
# Generate an empty Lambda file
data "archive_file" "initial_lambda_package" {
type = "zip"
output_path = "./src/.temp_files/lambda.zip"
source {
content = "# empty"
filename = "main.py"
}
}
# Upload Lambda files to S3
resource "aws_s3_bucket_object" "lambda_file" {
bucket = "${var.s3_private_bucket}"
key = "initial.zip"
source = "./src/.temp_files/lambda.zip"
}
# Generate a Lambda function
# Refer to the Lambda file placed on S3
resource "aws_lambda_function" "lambda_test" {
function_name = "lambda_test"
role = "${aws_iam_role.lambda.arn}"
handler = "main.handler"
runtime = "python3.8"
timeout = 60
publish = true
s3_bucket = "${var.s3_private_bucket}"
s3_key = "${aws_s3_bucket_object.lambda_file.id}"
}
Resource "aws lambda function"에서 Lambda 함수를 정의합니다.handler에서 파일 이름.Lambda 함수의 함수 이름을 설정합니다.
main.py 파일의handler 함수를 실행하십시오.
S3
지정된 S3 세그먼트의 디렉토리 아래에 로그 파일이 표시됩니다.
색인 페이지
Terraform에 대한 주제는 다음과 같습니다.
Reference
이 문제에 관하여(이벤트 소스 파이프), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tk_tatsuro/items/20bc847d848bbb402860텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)