시작하기#
기본 개념#
Amazon S3에 준비된 파일을 Linux 작업 환경으로 자동 가져오기
클라우드 환경에서는 애플리케이션, 외부 시스템, 데이터 수집 서비스 등 다양한 환경이 Amazon S3에 파일을 저장합니다.
이후 Linux 서버에서 해당 파일을 처리해야 한다면 S3에 새로운 파일이 업로드되었는지 확인하고, 필요한 파일을 서버의 작업 폴더로 내려받는 과정이 필요할 수 있습니다.
Amazon S3 파일 자동 다운로드는 파일이 저장되는 S3와 실제 처리가 진행되는 Linux 서버를 직접 연결하는 방식입니다.
S3의 특정 버킷과 경로를 지정하고 Linux 서버의 작업 폴더를 연결하면, 필요한 파일이 준비된 이후 지정된 조건에 따라 서버 환경으로 자동 전송할 수 있습니다.

예를 들어 다음과 같은 환경을 구성할 수 있습니다.
| 파일이 생성되는 환경 | 파일을 처리하는 환경 |
|---|---|
| Amazon S3 | Linux Server |
s3://company-data/incoming/ |
/data/incoming/ |
| 외부 시스템이 파일 업로드 | 분석 프로그램이 파일 처리 |
이렇게 연결하면 S3는 파일이 모이는 위치가 되고, Linux 서버는 필요한 파일을 받아 실제 작업을 수행하는 환경이 됩니다.
즉, 단순히 S3의 파일을 내려받는 것이 아니라 클라우드에 준비된 파일을 Linux 작업 흐름으로 연결할 수 있습니다.
다운로드 흐름#
파일 업로드 여부를 확인하고 필요한 파일만 Linux 서버로 가져오기
자동 다운로드는 S3에 있는 모든 파일을 한 번에 복사하는 방식으로만 구성할 필요가 없습니다.
파일이 저장되는 위치와 파일 유형, 실행 조건에 따라 실제 Linux 서버에서 필요한 파일만 가져오도록 구성할 수 있습니다.
예를 들어 S3의 /incoming/ 경로에 다음 파일이 저장되어 있다고 가정할 수 있습니다.
incoming/
├── sales-20260901.csv
├── sales-20260902.csv
├── image.zip
├── temporary.txt
└── README.md이 중 Linux 분석 서버에는 CSV 파일만 자동으로 가져오도록 설정할 수 있습니다.
Amazon S3
incoming/
│
├── sales-20260901.csv ────────┐
├── sales-20260902.csv ────────┤
│ │
├── image.zip ───────────── 제외 │
├── temporary.txt ────────── 제외 │
└── README.md ────────────── 제외 │
▼
Linux Server
/data/input/파일이 Linux 서버에 반영된 이후에는 분석 프로그램이나 후속 처리 작업에서 해당 파일을 바로 사용할 수 있습니다.
전체 흐름은 다음과 같이 구성됩니다.
| 단계 | 처리 내용 |
|---|---|
| 파일 저장 | 외부 시스템 또는 애플리케이션이 S3에 파일 업로드 |
| 대상 확인 | 지정된 버킷과 경로에서 파일 확인 |
| 조건 적용 | 파일 이름, 확장자, 경로 등의 조건 확인 |
| 파일 전송 | 조건에 맞는 파일을 Linux 서버로 다운로드 |
| 작업 폴더 반영 | 지정된 경로에 파일 저장 |
| 결과 처리 | Linux 환경의 다음 작업에서 파일 활용 |
이 흐름을 통해 파일이 S3에 준비되는 시점과 Linux 서버에서 작업을 시작하는 시점을 하나의 파일 흐름으로 연결할 수 있습니다.
활용 변화#
S3 확인과 수동 다운로드 없이 파일 준비 과정 자동화하기
기존에는 Linux 서버에서 사용할 파일이 S3에 업로드되면 담당자나 운영 작업이 다음 과정을 반복할 수 있습니다.
S3 접속
│
▼
새 파일 확인
│
▼
필요한 파일 선택
│
▼
Linux 서버 다운로드
│
▼
작업 폴더 이동
│
▼
처리 시작자동 다운로드를 구성하면 파일 준비 과정이 다음과 같이 변경됩니다.
S3 파일 업로드
│
▼
조건 자동 확인
│
▼
Linux 작업 폴더 반영
│
▼
다음 작업 시작두 방식의 차이는 다음과 같습니다.
| 구분 | 기존 방식 | 자동 다운로드 |
|---|---|---|
| 새 파일 확인 | 직접 S3 확인 | 지정된 조건으로 자동 확인 |
| 파일 선택 | 필요한 파일 직접 선택 | 규칙에 맞는 파일 자동 선택 |
| 다운로드 | 필요할 때마다 직접 실행 | 조건에 따라 자동 실행 |
| 저장 위치 | 매번 확인 또는 지정 | 미리 설정한 Linux 경로 사용 |
| 다음 작업 | 파일 준비 후 직접 시작 | 파일 반영 이후 자동 연결 가능 |
예를 들어 매일 생성되는 데이터 파일을 분석 서버로 가져오거나, 외부 시스템의 처리 결과를 Linux 서버에서 다음 작업에 사용해야 하는 환경에 적용할 수 있습니다.
IT 엔지니어#
환경 연결#
S3의 파일 위치와 Linux 서버의 작업 폴더 연결하기
먼저 Source로 사용할 Amazon S3와 Target으로 사용할 Linux 서버를 연결합니다.
S3에서는 파일을 확인할 버킷과 경로를 지정하고, Linux 서버에서는 다운로드한 파일을 저장할 실제 작업 폴더를 설정합니다.
┌─────────────────────────────────────┐
│ SOURCE │
│ │
│ Amazon S3 │
│ │
│ Bucket : company-data │
│ Path : /incoming/daily/ │
└──────────────────┬──────────────────┘
│
│ File Transfer
│
┌──────────────────▼──────────────────┐
│ TARGET │
│ │
│ Linux Server │
│ │
│ Host : analytics-server │
│ Path : /data/input/daily/ │
└─────────────────────────────────────┘
환경을 연결할 때는 다음 범위를 함께 확인합니다.
| 구분 | 확인 내용 |
|---|---|
| S3 접근 | 버킷과 파일 경로에 접근할 수 있는지 확인 |
| Source 경로 | 실제 파일이 저장되는 위치 확인 |
| Linux 연결 | 대상 서버의 연결 상태 확인 |
| Target 경로 | 파일을 저장할 작업 폴더 지정 |
| 저장 권한 | Linux 서버에 파일을 생성할 수 있는지 확인 |
이 설정을 통해 어디에서 파일을 가져오고 어디에 저장할지 전송 경로를 명확하게 구성할 수 있습니다.
파일 조건#
Linux 서버에서 실제로 필요한 S3 파일만 선택하기
하나의 S3 버킷에는 여러 시스템의 파일이 함께 저장될 수 있습니다.
따라서 Linux 서버로 모든 파일을 전송하기보다 실제 작업에 필요한 파일만 선택하도록 조건을 설정할 수 있습니다.
예를 들어 데이터 처리 서버에서는 다음 조건을 사용할 수 있습니다.
Source Path
└── /incoming/data/
File Rules
├── Include : *.csv
├── Include : *.json
└── Exclude : temporary/*이를 실제 파일 흐름에 적용하면 다음과 같습니다.
Amazon S3
│
├── data/
│ ├── customer.csv ✓ Download
│ ├── order.json ✓ Download
│ └── test.tmp ✕ Skip
│
└── temporary/
└── sample.csv ✕ Skip
파일 조건은 다음과 같은 기준으로 구성할 수 있습니다.
| 기준 | 활용 예시 |
|---|---|
| 파일 경로 | 특정 폴더의 파일만 처리 |
| 파일 이름 | 날짜 또는 업무명 규칙에 맞는 파일 선택 |
| 확장자 | CSV, JSON, ZIP 등 필요한 유형만 처리 |
| 제외 조건 | 임시 파일이나 테스트 파일 제외 |
| 실행 시점 | 파일 준비 또는 지정된 일정에 따라 실행 |
이렇게 구성하면 S3를 공용 저장소로 사용하면서도 Linux 서버에는 실제 처리에 필요한 파일만 자동으로 준비할 수 있습니다.
실행 구성#
파일 준비 시점에 맞춰 다운로드 작업 자동 실행하기
파일을 가져올 조건을 설정한 뒤에는 실제 다운로드 작업을 시작할 기준을 구성합니다.
예를 들어 새로운 파일이 준비되었을 때 자동으로 실행하거나, 매일 특정 시간에 S3를 확인하도록 구성할 수 있습니다.
실행 조건
│
┌───────────┼───────────┐
│ │ │
▼ ▼ ▼
파일 확인 일정 실행 이전 작업 완료
│ │ │
└───────────┼───────────┘
▼
Download Flow
│
▼
Linux Server실행 방식은 업무 환경에 따라 다르게 구성할 수 있습니다.
| 실행 기준 | 활용 환경 |
|---|---|
| 파일 준비 | S3에 새로운 파일이 저장된 후 처리 |
| 정기 실행 | 매일 또는 지정된 시간에 파일 확인 |
| 이전 작업 완료 | 다른 파일 처리 또는 전송 이후 실행 |
| 외부 요청 | 애플리케이션 또는 API 요청으로 실행 |
예를 들어 외부 시스템이 매일 밤 S3에 데이터를 업로드한다면, 파일이 준비된 이후 Linux 분석 서버로 다운로드하고 다음 분석 작업까지 연결할 수 있습니다.

경로 설계#
여러 S3 파일을 목적에 따라 다른 Linux 작업 환경으로 분리하기
하나의 S3 버킷에서 여러 종류의 파일을 사용하는 경우 파일 목적에 따라 Linux 서버 또는 작업 폴더를 분리할 수 있습니다.
예를 들어 다음과 같이 구성할 수 있습니다.
Amazon S3
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
/raw-data/ /image/ /release/
│ │ │
▼ ▼ ▼
Linux Data Linux Media Linux Deploy
/data/raw/ /media/input/ /opt/release/각 파일 유형이 필요한 작업 환경으로 바로 이동하기 때문에, 하나의 Linux 서버에 모든 파일을 모은 뒤 다시 분류하는 과정을 줄일 수 있습니다.
반대로 여러 S3 경로의 파일을 하나의 처리 서버로 모으는 방식도 가능합니다.
S3 System-A ───┐
│
S3 System-B ───┼────► Linux Processing Server
│ │
S3 System-C ───┘ ▼
/data/input/이처럼 실제 서버 구조와 업무 목적에 따라 수집형 또는 분산형 다운로드 구조를 구성할 수 있습니다.
결과 확인#
다운로드 작업과 파일별 처리 상태 확인하기
자동 다운로드가 실행되면 Runs에서 전체 작업의 진행 상태와 처리 결과를 확인합니다.
실행 중인 작업에서는 현재 전송량과 진행률을 확인하고, 완료된 작업에서는 실제로 어떤 파일이 Linux 서버에 반영되었는지 확인할 수 있습니다.

Run에서는 다음과 같은 정보를 확인할 수 있습니다.
| 확인 항목 | 확인 내용 |
|---|---|
| Source | 파일을 가져온 S3 버킷과 경로 |
| Target | 파일이 저장되는 Linux 서버와 경로 |
| Files | 처리된 파일 목록 |
| Total Size | 전체 전송 용량 |
| Progress | 현재 다운로드 진행률 |
| Status | 실행 및 완료 상태 |
| Started | 작업 시작 시간 |
| Completed | 작업 완료 시간 |
예를 들어 하나의 Run에서 다음과 같이 파일별 결과를 확인할 수 있습니다.
Run Details
────────────────────────────────
Source
Amazon S3 /incoming/data/
Target
Linux /data/input/
Files
────────────────────────────────
customer.csv Completed
order.csv Completed
product.json Completed
Status
Completed이를 통해 전체 작업의 완료 여부뿐 아니라 실제 파일이 Linux 서버의 지정된 위치에 정상적으로 반영되었는지 함께 확인할 수 있습니다.
후속 연결#
파일 다운로드 이후 Linux 서버의 처리 작업까지 이어가기
파일이 Linux 작업 폴더에 저장된 이후에는 해당 파일을 기준으로 다음 작업을 시작할 수 있습니다.
예를 들어 데이터 파일을 다운로드한 뒤 분석 프로그램을 실행하거나, 미디어 파일을 가져온 뒤 변환 작업을 시작하도록 연결할 수 있습니다.
┌───────────────┐
│ Amazon S3 │
└───────┬───────┘
│
▼
┌───────────────┐
│ File Download │
└───────┬───────┘
│
▼
┌───────────────────────┐
│ Linux Working Folder │
└───────────┬───────────┘
│
┌──────┼──────────────┐
│ │ │
▼ ▼ ▼
분석 작업 파일 변환 알림
후속 작업은 다음과 같이 활용할 수 있습니다.
| 연결 방식 | 활용 예시 |
|---|---|
| 서버 처리 | 파일 반영 후 분석 또는 변환 작업 시작 |
| 다음 Flow | 다른 장비 또는 스토리지로 파일 전송 |
| 알림 | 다운로드 완료 또는 실패 결과 알림 |
| 운영 확인 | 모니터링 환경에서 실행 상태 확인 |
이를 통해 S3 → Linux 서버의 단순 파일 이동을 넘어 파일이 실제 업무에 사용되는 다음 단계까지 자동으로 연결할 수 있습니다.
장애 대응#
다운로드가 완료되지 않은 위치를 확인하고 필요한 작업 다시 실행하기
자동 다운로드 과정에서 파일이 정상적으로 반영되지 않은 경우 Runs의 상세 정보를 통해 처리 상태를 확인합니다.
문제가 발생한 위치에 따라 S3 Source, 파일 조건, Linux Target 또는 저장 경로를 확인할 수 있습니다.
장애 확인은 모든 환경을 처음부터 다시 점검하기보다 문제가 발생한 단계부터 확인하는 방식으로 진행할 수 있습니다.
┌─────────────┐
│ Run 확인 │
└──────┬──────┘
│
▼
문제 발생 위치
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
S3 Source File Rule Linux Target
│ │ │
▼ ▼ ▼
접근 확인 조건 확인 경로·권한 확인
│ │ │
└───────────────┼───────────────┘
▼
설정 조정
│
▼
Retry
│
▼
새 Run 확인확인 항목은 다음과 같이 구분할 수 있습니다.
| 문제 위치 | 확인 내용 | 조치 |
|---|---|---|
| S3 | 버킷 접근과 원본 파일 상태 | 연결 및 접근 설정 확인 |
| 파일 조건 | 경로, 이름, 확장자 조건 | 다운로드 규칙 조정 |
| Linux | 서버 연결 상태 | Target 환경 확인 |
| 저장 경로 | 실제 작업 폴더 위치 | 경로 수정 |
| 접근 권한 | 파일 생성 및 저장 권한 | 권한 설정 확인 |
| 실행 기록 | Run과 파일별 처리 결과 | 문제 단계 확인 후 재실행 |
환경을 조정한 뒤에는 해당 작업을 다시 실행하고 새로운 Run을 통해 결과를 확인합니다.
이렇게 하면 Amazon S3에 파일이 저장되는 단계부터 Linux 서버의 작업 폴더 반영, 이후의 처리 작업까지 하나의 자동화 흐름으로 구성하고 안정적으로 운영할 수 있습니다.
개발자#
S3의 파일을 Linux 서버로 내려받는 예약 자동화를 코드로 등록하기
정해진 시각에 실행되는 자동화 하나를 만들면, S3의 파일이 Linux로 전송됩니다. 시작 전에 다음 항목을 준비합니다.
| 준비물 | 내용 |
|---|---|
| INNORIX 인증 | INNORIX_ACCESS_TOKEN (Authorization: Bearer) |
| S3 장비 | 소스 device ID와 원본 경로 (예: my-bucket/incoming) |
| Linux 장비 | 대상 device ID와 저장 폴더 경로 (예: /work/incoming) |
| 런타임 | Python 3 + requests · Java 17+ · Node.js 18+ · .NET 8+ |
Python·Node.js는 REST를 직접 호출하는 최소
api()헬퍼를 정의해 씁니다(API 호출 레시피 참고). Java·C#은 번들 소스의InnorixClient와Json(C#은J) 헬퍼를 사용하며,encode_path·now_iso가 여기에 들어 있습니다. 장비 식별자(device-s3·device-linux-01)와 경로는 실제 값으로 바꿔 넣습니다.
예약 자동화 생성#
예약 전송은 transferType: "normal"에 스케줄을 붙여 만듭니다. 스케줄은 schedules[].type: "day"(매일)와 실행 시각(hour·minute·ampm)으로 지정합니다. 경로는 장비 식별자와 인코딩된 경로를 이어 붙인 토큰(encode_path)으로 넣습니다.
def create_scheduled_download(source, source_path, target, target_path,
hour="02", minute="00", ampm="am", action="nosend"):
body = {
"name": "s3 to linux daily",
"flowName": "s3 to linux daily",
"transferType": "normal",
"isUpcoming": False,
"timezone": "Asia/Seoul",
"details": [{
"senderId": source,
"receiverId": target,
"sourceItem": [{
"hash": encode_path(source, source_path),
"filePath": str(source_path or "").replace("\\", "/"),
"isDir": True,
}],
"targetPath": encode_path(target, target_path),
"step": 1,
"transferOptions": {
"noSchedule": False,
"target-action": action, # nosend = skip files already on the target
"send-fileoption": {},
},
}],
"schedules": [{
"type": "day", # run daily
"startDateType": "now",
"hour": hour, "minute": minute, "ampm": ampm,
"startDate": now_iso(),
"timezone": "Asia/Seoul",
}],
"step": 1,
}
return api("POST", "/api/automations", body)["automationId"]
automation_id = create_scheduled_download(
"device-s3", "my-bucket/incoming",
"device-linux-01", "/work/incoming", hour="02")static String createScheduledDownload(InnorixClient client, String source, String sourcePath,
String target, String targetPath, String hour, String minute, String ampm, String action) {
Map<String, Object> detail = Json.newObj(
"senderId", source,
"receiverId", target,
"sourceItem", Json.newArr(Json.newObj(
"hash", InnorixClient.encodePath(source, sourcePath),
"filePath", sourcePath.replace("\\", "/"),
"isDir", true)),
"targetPath", InnorixClient.encodePath(target, targetPath),
"step", 1,
"transferOptions", Json.newObj(
"noSchedule", false,
"target-action", action, // nosend = skip files already on the target
"send-fileoption", Json.newObj()));
Map<String, Object> body = Json.newObj(
"name", "s3 to linux daily",
"flowName", "s3 to linux daily",
"transferType", "normal",
"isUpcoming", false,
"timezone", "Asia/Seoul",
"details", Json.newArr(detail),
"schedules", Json.newArr(Json.newObj(
"type", "day", // run daily
"startDateType", "now",
"hour", hour, "minute", minute, "ampm", ampm,
"startDate", InnorixClient.nowIso(), "timezone", "Asia/Seoul")),
"step", 1);
return Json.str(client.apiObj("POST", "/api/automations", body, null), "automationId");
}async function createScheduledDownload(source, sourcePath, target, targetPath,
hour = "02", minute = "00", ampm = "am", action = "nosend") {
const body = {
name: "s3 to linux daily",
flowName: "s3 to linux daily",
transferType: "normal",
isUpcoming: false,
timezone: "Asia/Seoul",
details: [{
senderId: source,
receiverId: target,
sourceItem: [{
hash: encodePath(source, sourcePath),
filePath: String(sourcePath ?? "").replace(/\\/g, "/"),
isDir: true,
}],
targetPath: encodePath(target, targetPath),
step: 1,
transferOptions: {
noSchedule: false,
"target-action": action, // nosend = skip files already on the target
"send-fileoption": {},
},
}],
schedules: [{
type: "day", // run daily
startDateType: "now",
hour, minute, ampm,
startDate: nowIso(),
timezone: "Asia/Seoul",
}],
step: 1,
};
return (await api("POST", "/api/automations", body)).automationId;
}
const automationId = await createScheduledDownload(
"device-s3", "my-bucket/incoming",
"device-linux-01", "/work/incoming", "02");static async Task<string> CreateScheduledDownloadAsync(InnorixClient client, string source, string sourcePath,
string target, string targetPath, string hour = "02", string minute = "00", string ampm = "am",
string action = "nosend")
{
var detail = new JsonObject
{
["senderId"] = source,
["receiverId"] = target,
["sourceItem"] = new JsonArray
{
new JsonObject
{
["hash"] = InnorixClient.EncodePath(source, sourcePath),
["filePath"] = sourcePath.Replace("\\", "/"),
["isDir"] = true,
}
},
["targetPath"] = InnorixClient.EncodePath(target, targetPath),
["step"] = 1,
["transferOptions"] = new JsonObject
{
["noSchedule"] = false,
["target-action"] = action, // nosend = skip files already on the target
["send-fileoption"] = new JsonObject(),
},
};
var body = new JsonObject
{
["name"] = "s3 to linux daily",
["flowName"] = "s3 to linux daily",
["transferType"] = "normal",
["isUpcoming"] = false,
["timezone"] = "Asia/Seoul",
["details"] = new JsonArray { detail },
["schedules"] = new JsonArray
{
new JsonObject
{
["type"] = "day", // run daily
["startDateType"] = "now",
["hour"] = hour, ["minute"] = minute, ["ampm"] = ampm,
["startDate"] = InnorixClient.NowIso(), ["timezone"] = "Asia/Seoul",
}
},
["step"] = 1,
};
return J.Str(await client.ApiObjAsync("POST", "/api/automations", body), "automationId");
}| 항목 | 값 | 설명 |
|---|---|---|
transferType |
"normal" |
예약 전송 (실시간 감시 아님) |
schedules[].type |
"day" |
매일 반복 |
schedules[].hour · minute · ampm |
string | 실행 시각 |
transferOptions.target-action |
nosend · overwrite · numbering |
nosend=대상에 이미 있는 파일은 건너뜀 |
isUpcoming |
false |
요청에 담은 반복 스케줄을 그대로 등록 (서버가 다음 실행 시각 값으로 대체하지 않음). 예약 자동화에서는 false로 지정 |
sync와normal의 차이transferType: "sync"는 원본 폴더를 지속적으로 감시하는 방식입니다. 정해진 시각에만 전송하려면 이 레시피처럼transferType: "normal"에 스케줄을 지정합니다. 주기(매주·매월 등)를 다르게 잡는 방법은 예약 전송 레시피에서 다룹니다.
실행 확인#
예약 자동화가 실행될 때마다 실행 이력이 쌓입니다. 회차별 상태와 monitorId를 조회합니다. 실행 이력은 최신 회차가 배열 앞에 옵니다.
runs = api("GET", f"/api/automations/{automation_id}/executions") or []
for run in runs:
print(run["startTime"], run["status"], run["monitorId"])List<Object> runs = Json.asArr(client.api("GET", "/api/automations/" + automationId + "/executions"));
for (Object run : runs) {
Map<String, Object> r = Json.asObj(run);
System.out.println(Json.str(r, "startTime") + " " + Json.intOrNull(r, "status") + " " + Json.str(r, "monitorId"));
}const runs = (await api("GET", `/api/automations/${automationId}/executions`)) || [];
for (const run of runs) {
console.log(run.startTime, run.status, run.monitorId);
}JsonArray runs = J.AsArr(await client.ApiAsync("GET", quot;/api/automations/{automationId}/executions"));
foreach (JsonNode run in runs)
Console.WriteLine(quot;{J.Str(run, "startTime")} {J.IntOrNull(run, "status")} {J.Str(run, "monitorId")}");각 회차의 monitorId로 파일 단위 결과까지 이어집니다(전송 상태·파일 조회는 API 호출 레시피 참고).
예약 일시정지·재개·삭제#
예약을 잠시 멈추려면 일시정지하고, 다시 켜려면 재개합니다. 예약을 완전히 끝내려면 자동화를 삭제합니다. 원본·대상 경로나 실행 시각을 변경하려면 기존 자동화를 삭제하고 변경된 값으로 새 자동화를 생성합니다.
api("POST", f"/api/automations/{automation_id}/pause", {"pause": True}) # pause
api("POST", f"/api/automations/{automation_id}/pause", {"pause": False}) # resume
api("DELETE", f"/api/automations/{automation_id}") # delete automation (permanent)client.api("POST", "/api/automations/" + automationId + "/pause", Json.newObj("pause", true)); // pause
client.api("POST", "/api/automations/" + automationId + "/pause", Json.newObj("pause", false)); // resume
client.api("DELETE", "/api/automations/" + automationId); // delete automation (permanent)await api("POST", `/api/automations/${automationId}/pause`, { pause: true }); // pause
await api("POST", `/api/automations/${automationId}/pause`, { pause: false }); // resume
await api("DELETE", `/api/automations/${automationId}`); // delete automation (permanent)await client.ApiAsync("POST", quot;/api/automations/{automationId}/pause", new JsonObject { ["pause"] = true }); // pause
await client.ApiAsync("POST", quot;/api/automations/{automationId}/pause", new JsonObject { ["pause"] = false }); // resume
await client.ApiAsync("DELETE", quot;/api/automations/{automationId}"); // delete automation (permanent)구현 결과#
이 레시피를 적용하면 다음 흐름으로 S3의 파일을 Linux 서버로 정기 수집할 수 있습니다.
S3에 파일 적재
↓
예약 시각에 자동화 실행 (normal)
↓
Linux 서버로 전송
↓
실행 이력·monitorId 확인예약된 시각마다 S3의 파일을 Linux로 내려받아 클라우드에 적재된 데이터를 온프레미스 작업 환경으로 자동 수집할 수 있습니다.