diff --git a/stepfunctions/TOOLS/convert_config.yaml b/stepfunctions/TOOLS/convert_config.yaml index 2b6487ea..f393460f 100644 --- a/stepfunctions/TOOLS/convert_config.yaml +++ b/stepfunctions/TOOLS/convert_config.yaml @@ -62,3 +62,18 @@ config: SG_ECS_ALL: *PRD_SG_ECS_ALL # セキュリティグループ(ecs-crm-datafetch) SG_CRM_DATAFETCH: *PRD_SG_CRM_DATAFETCH + +config: + r-data-import-state: + # ステージング環境 + staging: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # 本番環境 + product: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 diff --git a/stepfunctions/r-data-import-state/r-data-import-state.json b/stepfunctions/r-data-import-state/r-data-import-state.json new file mode 100644 index 00000000..41de6967 --- /dev/null +++ b/stepfunctions/r-data-import-state/r-data-import-state.json @@ -0,0 +1,123 @@ +{ + "Comment": "MeDaCa データ取込ECSタスク起動 ステートマシン", + "StartAt": "params", + "States": { + "params": { + "Type": "Pass", + "Parameters": { + "sns": { + "TopicArn": "arn:aws:sns:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:nds-notice-#{ENV_NAME}" + }, + "ecs": { + "LaunchType": "FARGATE", + "Cluster.$": "$.InputParams.ClusterName", + "TaskDefinition.$": "$.InputParams.TaskName", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "Subnets.$": "States.Array($.InputParams.SubNetIdApNorthEast1A, $.InputParams.SubNetIdApNorthEast1D)", + "SecurityGroups.$": "States.Array($.InputParams.SecurityGroupIdECSAll, $.InputParams.SecurityGroupIdECSDataImport)", + "AssignPublicIp": "DISABLED" + } + }, + "Overrides": { + "ContainerOverrides": [ + { + "Name.$": "$.InputParams.ContainerName", + "Environment": [ + { + "Name": "BUCKET_NAME", + "Value.$": "$.InputParams.BucketName" + }, + { + "Name": "TARGET_KEY", + "Value.$": "$.InputParams.TargetKey" + }, + { + "Name": "DATA_SOURCE_NAME", + "Value.$": "$.InputParams.DataSourceName" + }, + { + "Name": "FILE_NAME", + "Value.$": "$.InputParams.FileName" + }, + { + "Name": "MODE", + "Value.$": "$.InputParams.Mode" + } + ] + } + ] + } + } + }, + "Comment": "パラメータ設定", + "ResultPath": "$.params", + "Next": "data-import" + }, + "data-import": { + "Type": "Task", + "Resource": "arn:aws:states:::ecs:runTask.sync", + "Parameters": { + "LaunchType.$": "$.params.ecs.LaunchType", + "Cluster.$": "$.params.ecs.Cluster", + "TaskDefinition.$": "$.params.ecs.TaskDefinition", + "NetworkConfiguration.$": "$.params.ecs.NetworkConfiguration", + "Overrides.$": "$.params.ecs.Overrides" + }, + "ResultPath": "$.result", + "Retry": [ + { + "ErrorEquals": [ + "States.ALL" + ], + "BackoffRate": 2, + "IntervalSeconds": 3, + "MaxAttempts": 3 + } + ], + "Catch": [ + { + "ErrorEquals": [ + "States.ALL" + ], + "Next": "CreateImportPendingFile", + "ResultPath": "$.result" + } + ], + "Next": "Success", + "Comment": "データ登録処理" + }, + "CreateImportPendingFile": { + "Type": "Task", + "Parameters": { + "Body": "", + "Bucket.$": "$.InputParams.BucketName", + "Key.$": "States.Format('{}.pending-import', $.InputParams.TargetKey)" + }, + "Resource": "arn:aws:states:::aws-sdk:s3:putObject", + "Next": "FailedNotice", + "Comment": "データ登録保留ファイル作成", + "ResultPath": "$.result" + }, + "FailedNotice": { + "Type": "Task", + "Resource": "arn:aws:states:::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)" + }, + "Next": "Fail" + }, + "Success": { + "Type": "Succeed", + "Comment": "正常終了" + }, + "Fail": { + "Type": "Fail", + "Comment": "異常終了", + "Error": "StatusError", + "Cause": "StepFunctions ErrorEnd" + } + } + } \ No newline at end of file