diff --git a/lambda/dataimport/dataimport.py b/lambda/dataimport/dataimport.py index 0daf4194..72695078 100644 --- a/lambda/dataimport/dataimport.py +++ b/lambda/dataimport/dataimport.py @@ -61,14 +61,14 @@ def lambda_handler(event, context): if __name__ == '__main__': - # ローカル実行用 + # ローカル実行用。バケット名やファイルキーはよしなに変えてください。 lambda_handler({"Records": [{ "s3": { "bucket": { "name": "test-shimoda-bucket" }, "object": { - "key": "folder/object_key" + "key": "crm/target/CRM_Account_20221116111800.csv" } } }]}, {}) diff --git a/stepfunctions/r-data-import-state/r-data-import-state.json b/stepfunctions/r-data-import-state/r-data-import-state.json index 34d74e82..258880f1 100644 --- a/stepfunctions/r-data-import-state/r-data-import-state.json +++ b/stepfunctions/r-data-import-state/r-data-import-state.json @@ -52,7 +52,38 @@ }, "Comment": "パラメータ設定", "ResultPath": "$.params", - "Next": "data-import" + "Next": "?IsExistsFatalErrorFile" + }, + "?IsExistsFatalErrorFile": { + "Type": "Task", + "Parameters": { + "Bucket.$": "$.InputParams.BucketName", + "Key.$": "States.Format('{}/target/.detected_fatal_error_ecs', $.InputParams.DataSourceName)" + }, + "Resource": "arn:aws:states:::aws-sdk:s3:headObject", + "ResultPath": "$.result", + "Catch": [ + { + "ErrorEquals": [ + "States.ALL" + ], + "Next": "data-import", + "ResultPath": "$.result" + } + ], + "Comment": "ECSタスク起動エラーファイル存在チェック", + "Next": "PendingDataImportNotice" + }, + "PendingDataImportNotice": { + "Type": "Task", + "Resource": "arn:aws:states:::aws-sdk:sns:publish", + "Parameters": { + "TopicArn.$": "$.params.sns.TopicArn", + "Subject": "データ登録ECSタスク異常通知", + "Message.$": "States.Format('「{}/{}/target/」に登録処理中断ファイル(.detected_fatal_error_ecs)が見つかったため、データ登録の起動を中断しました。\n', $.InputParams.BucketName, $.InputParams.DataSourceName)" + }, + "End": true, + "Comment": "データ登録処理起動中断通知" }, "data-import": { "Type": "Task", @@ -67,7 +98,9 @@ "ResultPath": "$.result", "Retry": [ { - "ErrorEquals": ["States.ALL"], + "ErrorEquals": [ + "States.ALL" + ], "BackoffRate": 2, "IntervalSeconds": 3, "MaxAttempts": 3 @@ -75,7 +108,9 @@ ], "Catch": [ { - "ErrorEquals": ["States.ALL"], + "ErrorEquals": [ + "States.ALL" + ], "Next": "CreateImportPendingFile", "ResultPath": "$.result" } @@ -88,22 +123,23 @@ "Parameters": { "Body": "", "Bucket.$": "$.InputParams.BucketName", - "Key.$": "States.Format('{}.pending-import', $.InputParams.TargetKey)" + "Key.$": "States.Format('{}/target/.detected_fatal_error_ecs', $.InputParams.DataSourceName)" }, "Resource": "arn:aws:states:::aws-sdk:s3:putObject", "Next": "FailedNotice", - "Comment": "データ登録保留ファイル作成", + "Comment": "データ登録処理起動中断ファイル作成", "ResultPath": "$.result" }, "FailedNotice": { "Type": "Task", - "Resource": "arn:aws:states:::sns:publish", + "Resource": "arn:aws:states:::aws-sdk:sns:publish", "Parameters": { "TopicArn.$": "$.params.sns.TopicArn", "Subject": "データ登録ECSタスク異常通知", - "Message.$": "States.Format('【{}】{}のデータ登録が失敗したため、登録中断ファイルを作成しました。\n\n バケット名:{}\n取込ファイルパス:{}\n\n', $.InputParams.DataSourceName, $.InputParams.FileName, $.InputParams.BucketName, $.InputParams.TargetKey)" + "Message.$": "States.Format('【{}】{}のデータ登録が失敗したため、登録処理中断ファイル(.detected_fatal_error_ecs)を作成しました。\n\n バケット名:{}\n取込ファイルパス:{}\n\n', $.InputParams.DataSourceName, $.InputParams.FileName, $.InputParams.BucketName, $.InputParams.TargetKey)" }, - "Next": "Fail" + "Next": "Fail", + "Comment": "データ登録処理起動失敗通知" }, "Success": { "Type": "Succeed",