INNORIX
전송 빌더전송 파인더개발자리소스고객사
무료 시작하기
INNORIX

LET FILES
MOVE THEMSELVES

INNORIX는 모든 시스템과 환경에서 파일 이동과 자동화를 제공하는 엔터프라이즈 파일 인프라 기업입니다.
5,000개 이상의 기업 및 공공기관에서 사용하고 있습니다.

시작하기

  • 필요한 전송 만들기
  • 필요한 전송 찾기

주요 전송

  • 팀 업무 폴더 동기화
  • 고객에게 대용량 파일 전송
  • 여러 시스템 파일 탐색
  • FTP·SFTP·SCP·rsync 전환
  • 앱에 파일 전송 추가
  • 웹 업로드·다운로드 적용
  • AI·데이터 워크플로 구축
  • 모든 전송 둘러보기→

개발자

  • 개발자 센터
  • 구현 예제
  • API 빠른 시작
  • 개발자 가이드
  • API 레퍼런스
  • GitHub

리소스

  • 리소스 센터
  • 제품 가이드
  • 외부 서비스 연동
  • 배포 및 관리
  • 도움말 센터

고객사

  • 정부
  • 공공부문
  • 제조
  • 엔지니어링
  • 금융
  • 유통
  • IT/통신
  • 미디어
  • 의료
  • 교육

플랜

  • 가격 및 플랜

회사

INNORIX 소개

Exabyter를 찾고 계신가요?

이제 INNORIX Platform에 통합되었습니다

기타 INNORIX 제품

Al.bert — 스마트 교통 AI

글로벌 오피스

  • 미국 뉴욕
  • 대한민국 서울
  • 베트남 호찌민
  • 오피스 위치 보기→

(C)2026 INNORIX. All rights reserved.

  • 보안
  • 상태
  • 이용약관
  • 개인정보 처리방침
  • 쿠키 정책
  1. 가이드
  2. Kubernetes에서 오브젝트 스토리지로 결과 파일 보내기

Kubernetes에서 오브젝트 스토리지로 결과 파일 보내기

컨테이너 워크로드가 만든 결과 파일을 S3 등 오브젝트 스토리지나 외부 파일 서버로 전달합니다.

IT 엔지니어개발자
  • AI 학습 데이터와 모델 파일의 전체 흐름 자동화하기
  • AI 모델 파일을 여러 엣지 장비에 배포하기
  • 폐쇄망·망분리 환경에서 파일을 승인 반입·반출하기
  • 승인된 파일을 여러 지점에 동시에 배포하기
  • Azure Blob에서 사내 서버로 파일 전달하기
  • 데이터베이스 덤프, 백업, 아카이브 파일을 원격 보관처로 자동 전달하기
  • 지점·공장·엣지 장비의 파일을 중앙으로 수집하기
  • CI/CD 빌드 결과물을 여러 서버에 배포하기
  • 서로 다른 클라우드 스토리지 사이에서 파일 이동하기
  • 서로 다른 AWS 계정의 S3 버킷 사이에 파일 전송하기
  • 고객별 파일 작업 공간 제공하기
  • 고객에게 만료 조건이 있는 대용량 다운로드 링크 제공하기
  • 고객이 브라우저에서 대용량 파일을 업로드하게 하기
  • 고객 작업 공간으로 대용량 파일 직접 보내기
  • 데이터베이스 백업 파일을 오브젝트 스토리지에 보관하기
  • Datadog으로 파일 전송 실패와 복구 알림 받기
  • 웹, 앱, 업무 시스템에 파일 전송 기능 추가하기
  • 파일 도착 후 검증·변환·후속 작업 실행하기
  • NAS, 파일 서버의 대량 파일을 클라우드로 이전하기
  • FTP 배치 작업을 관리형 파일 흐름으로 전환하기
  • Google Cloud Storage에서 Amazon S3로 직접 전송하기
  • Grafana에서 파일 전송 상태 대시보드 만들기
  • 전송된 파일의 해시값으로 무결성 자동 검증하기
  • 새 파일이 생기면 지정한 곳으로 자동 전송하기
  • Kubernetes에서 오브젝트 스토리지로 결과 파일 보내기
  • Git 밖의 대용량 파일과 빌드 결과물 자동 전달하기
  • Git으로 관리하기 어려운 파일을 자동 전달하기
  • 분산 서버의 로그·진단 파일을 중앙으로 모으기
  • 미디어 원본과 처리 결과를 단계별로 자동 전달하기
  • 수신 파일을 Microsoft Defender로 검사하고 후속 처리하기
  • 여러 단계의 파일 전송을 하나의 흐름으로 자동화하기
  • 승인된 파일을 여러 팀·지점에 자동 배포하기
  • 협력사 파일을 업무 시스템으로 자동 분류하기
  • 협력사·공급망과 정기적으로 파일 교환하기
  • 매일·매주 반복되는 파일 전송 자동화하기
  • 네트워크 중단 후 파일 전송을 자동으로 재개하기
  • rsync 작업을 관리형 파일 흐름으로 전환하기
  • 정해진 시간에 반복 파일 전송 예약하기
  • 소프트웨어·펌웨어를 여러 장비에 배포하고 결과 확인하기
  • 소프트웨어 패키지를 여러 서버·지점에 배포하기
  • 팀 폴더의 변경 파일을 여러 장비에 자동 반영하기
  • 팀 업무 폴더를 여러 PC에 자동 반영하기
  • 여러 장비의 파일을 한곳에서 찾고 직접 전송하기
  • 웹사이트에 대용량 파일 업로드·다운로드 기능 추가하기
  • 채널을 구독해 새 파일을 자동으로 받기
  • Amazon S3에서 Azure Blob으로 직접 전송하기
  • Amazon S3에서 Cloudflare R2로 파일 이전하기
  • Amazon S3 파일을 Linux 서버로 자동 내려받기
  • SCP 셸 스크립트를 CLI 기반 전송으로 전환하기
  • SFTP 계정과 배치 전송을 중앙에서 관리하기
  • Slack·Teams에서 파일 전송을 실행하고 상태 알림 받기
  • Windows 폴더의 파일을 Amazon S3로 자동 업로드하기
  • Windows와 Linux 서버 사이에 파일을 직접 전송하기

시작하기#

기본 개념#

컨테이너 작업 결과를 외부 저장 환경으로 직접 전달하기

Kubernetes에서 실행되는 애플리케이션이나 배치 작업은 다양한 파일을 생성할 수 있습니다.

예를 들어 데이터 처리 Job이 결과 파일을 생성하거나, 미디어 변환 워크로드가 처리된 영상을 저장하고, 분석 작업이 CSV 또는 JSON 파일을 생성할 수 있습니다.

기존에는 작업 결과를 별도의 관리 과정으로 외부에 옮길 수 있습니다.

Kubernetes Cluster
        │
        ▼
   Pod / Container
        │
        │ Result File
        ▼
   Temporary Storage
        │
        │ Manual / Script
        ▼
External Storage

전송 Flow를 구성하면 Kubernetes에서 생성된 파일과 외부 저장 환경을 직접 연결할 수 있습니다.

┌────────────────────────┐
│   Kubernetes Cluster   │
│                        │
│   Pod / Workload       │
│        │               │
│        ▼               │
│   Result Files         │
└────────────┬───────────┘
             │
             │ File Transfer
             ▼
┌────────────────────────┐
│    External Storage    │
│                        │
│   S3 / File Server     │
└────────────────────────┘

이렇게 하면 워크로드 실행 → 결과 파일 생성 → 외부 스토리지 전송 → 저장 결과 확인까지 하나의 파일 흐름으로 연결할 수 있습니다.

파일 위치#

워크로드별 결과 파일 경로를 선택해 필요한 데이터만 전달하기

하나의 Kubernetes 환경에서는 여러 애플리케이션과 작업이 동시에 실행될 수 있습니다.

따라서 모든 파일을 외부로 전송하기보다, 실제 보관하거나 다음 업무에서 사용할 결과 파일의 생성 위치를 기준으로 전송 범위를 구성할 수 있습니다.

예를 들어 처리 작업에서 다음과 같은 파일 구조가 생성된다고 가정합니다.

/data/job/
│
├── input/
│   └── source-data.csv
│
├── processing/
│   └── temporary.json
│
├── output/
│   ├── result-01.csv
│   ├── result-02.csv
│   └── summary.json
│
└── logs/
    └── job.log

이 경우 실제 처리 결과가 저장되는 output/ 경로만 외부 스토리지로 전달할 수 있습니다.

Kubernetes Workload                   External Storage

/data/job/                            result-storage
│                                     │
├── input/          Not Included      │
├── processing/     Not Included      │
│                                     │
└── output/         ─────────────▶    └── daily/
    ├── result-01.csv                      ├── result-01.csv
    ├── result-02.csv                      ├── result-02.csv
    └── summary.json                       └── summary.json

[제품UI_Kubernetes Source의 파일 경로를 지정하고 결과 파일이 저장될 외부 스토리지의 Target 경로를 설정하는 화면]

전송 범위를 명확하게 구성하면 처리 과정에서 생성되는 임시 파일까지 모두 이동하는 대신 최종 결과 파일을 중심으로 외부 저장과 후속 활용 환경을 구성할 수 있습니다.

전송 시점#

작업 완료 후 결과 파일이 준비되는 시점에 맞춰 전송하기

컨테이너 환경에서는 파일이 생성되기 전에 전송 작업이 시작되지 않도록 워크로드의 실행 상태와 파일 생성 시점을 함께 고려할 수 있습니다.

예를 들어 배치 작업이 완료된 후 결과 파일을 전송하거나, 지정된 경로에 새로운 파일이 생성되면 자동으로 외부 스토리지에 반영하도록 구성할 수 있습니다.

실행 기준 활용 방식
작업 완료 후 워크로드가 결과 파일을 생성한 뒤 전송
새 파일 감지 지정 경로에 새 파일이 생성되면 자동 전송
정기 실행 일정에 따라 결과 파일을 수집
이전 작업 완료 앞 단계 Flow가 완료된 후 다음 전송 시작
변경 파일 확인 수정되거나 새로 생성된 파일만 반영

예를 들어 데이터 처리 작업이 완료된 이후 다음 Flow를 실행하도록 구성할 수 있습니다.

Data Processing Job
        │
        ▼
Result File Created
        │
        ▼
Transfer Condition
        │
        ▼
External Storage
        │
        ▼
Result Verification

이렇게 하면 작업이 진행 중인 파일을 미리 이동하는 대신 결과 파일이 준비된 시점을 기준으로 외부 저장 작업을 연결할 수 있습니다.

IT 엔지니어#

환경 연결#

Kubernetes 파일 생성 환경과 외부 저장소를 전송 경로로 연결하기

먼저 결과 파일이 생성되는 Kubernetes 환경과 파일을 저장할 외부 스토리지를 각각 연결합니다.

Source에서는 워크로드가 생성한 파일을 확인하고 읽을 수 있어야 하며, Target에서는 전달된 파일을 지정된 위치에 저장할 수 있어야 합니다.

Transfer Environment

Kubernetes
└── Workload
    └── Result Path
        └── Read Files

            │
            ▼

        Transfer Flow

            │
            ▼

External Storage
├── Amazon S3
├── File Server
└── Storage Path
    └── Write Files

전송 작업을 구성하기 전에 다음 항목을 함께 확인합니다.

연결 환경 확인 내용
Kubernetes 파일 생성 환경과 연결 상태
Source 경로 결과 파일이 생성되는 위치
워크로드 파일 생성 작업과 실행 상태
외부 스토리지 Target 연결 상태
저장 경로 결과 파일이 저장될 위치
접근 범위 Source 읽기와 Target 저장 권한

각 환경을 분리해 연결하면 Kubernetes의 파일 생성 위치와 외부 스토리지의 저장 위치를 하나의 Flow로 연결하면서도 각각의 접근 범위를 관리할 수 있습니다.

대상 구성#

S3 보관과 파일 서버 전달을 업무 목적에 맞게 나누기

Kubernetes에서 생성된 결과 파일은 활용 목적에 따라 서로 다른 외부 환경으로 전달할 수 있습니다.

장기 보관이나 여러 서비스에서 활용할 파일은 Amazon S3로 전송하고, 사내 프로그램에서 바로 사용해야 하는 파일은 내부 파일 서버로 전달하는 방식으로 구성할 수 있습니다.

                     ┌─────────────────┐
                     │   Amazon S3     │
                     │ Backup / Archive│
                     └────────▲────────┘
                              │
                              │
Kubernetes Result Files ──────┤
                              │
                              │
                     ┌────────┴────────┐
                     │  File Server    │
                     │ Processing Path │
                     └─────────────────┘

대상별 활용 방식은 다음과 같이 나눌 수 있습니다.

Target 활용 방식
Amazon S3 처리 결과와 대용량 파일 보관
외부 파일 서버 내부 프로그램의 후속 처리
분석 서버 분석 시스템에서 결과 파일 활용
백업 스토리지 장기 보관과 복구용 파일 저장

이처럼 하나의 결과 파일을 여러 환경으로 전달하거나, 파일 유형에 따라 서로 다른 Target으로 분기해 저장할 수 있습니다.

파일 선별#

결과 파일과 임시 파일을 구분해 전송 범위 설정하기

컨테이너 작업 중에는 최종 결과 외에도 임시 파일, 중간 처리 파일, 로그 등이 함께 생성될 수 있습니다.

따라서 파일 경로나 이름, 확장자를 기준으로 실제 외부에 전달할 파일만 선택할 수 있습니다.

예를 들어 다음과 같이 구성할 수 있습니다.

파일 조건 처리 방식
output/*.csv S3로 전송
output/*.json 분석 서버로 전달
archive/*.zip 장기 보관 스토리지로 전송
tmp/* 전송 대상 제외
logs/* 별도 로그 수집 Flow로 연결

이렇게 하면 모든 파일을 동일한 방식으로 이동하는 대신 파일의 역할에 따라 저장 위치와 이후 활용 환경을 분리할 수 있습니다.

흐름 연결#

컨테이너 작업부터 파일 전송과 후속 처리까지 하나의 Flow로 구성하기

결과 파일을 외부 스토리지로 전달한 뒤에는 다음 처리 작업까지 연결할 수 있습니다.

예를 들어 Kubernetes에서 데이터 처리 작업이 완료되면 결과 파일을 S3로 전송하고, 저장이 완료된 이후 분석 Flow나 알림 작업을 실행하도록 구성할 수 있습니다.

┌───────────────┐
│ Kubernetes Job│
└───────┬───────┘
        │ Completed
        ▼
┌───────────────┐
│ Result Files  │
└───────┬───────┘
        │ Transfer
        ▼
┌───────────────┐
│ Amazon S3     │
└───────┬───────┘
        │
        ├──────────────▶ Next Processing
        │
        ├──────────────▶ Analysis
        │
        └──────────────▶ Completion Notice

이 구조를 활용하면 컨테이너에서 생성된 파일을 단순히 외부로 복사하는 것을 넘어 워크로드 결과 → 외부 저장 → 분석·후속 처리 → 결과 확인까지 이어지는 자동화 흐름을 구성할 수 있습니다.

실행 관리#

워크로드별 파일 전송 결과와 외부 저장 상태를 함께 확인하기

전송 작업이 실행되면 Runs에서 현재 작업 상태와 처리 결과를 확인할 수 있습니다.

특정 Run을 선택하면 Kubernetes Source와 외부 Target, 전송된 파일 수와 전체 용량, 진행 상태와 완료 결과를 확인할 수 있습니다.

각 Run에서는 다음과 같은 정보를 확인할 수 있습니다.

확인 항목 확인 내용
Source Kubernetes 파일 생성 환경과 경로
Target S3 또는 외부 파일 서버의 저장 위치
Total Files 처리 대상 파일 수
Total Size 전체 전송 용량
Progress 현재 전송 진행 상태
Status 완료·진행·실패 상태
Started 작업 시작 시간
Completed 작업 완료 시간

전송이 완료되면 Source에서 선택한 결과 파일이 Target의 지정된 위치에 정상적으로 반영되었는지 확인할 수 있습니다.

이를 통해 어떤 워크로드의 결과가 어느 외부 스토리지로 전달되었는지와 실제 처리 결과를 실행 기록을 기준으로 관리할 수 있습니다.

운영 대응#

파일 생성 환경과 외부 Target을 구분해 문제 원인 확인하기

전송 과정에서 추가 확인이 필요한 경우에는 먼저 Kubernetes의 파일 생성 환경과 외부 스토리지 중 어느 구간에서 문제가 발생했는지 확인합니다.

Source에서 파일을 찾을 수 없는 경우에는 워크로드의 결과 파일 생성 상태와 Source 경로를 확인합니다. Target에 파일을 저장할 수 없는 경우에는 외부 스토리지 연결과 저장 경로, 접근 권한을 확인할 수 있습니다.

Transfer Issue
      │
      ▼
 View Run Details
      │
      ├──────────────────┐
      ▼                  ▼
Kubernetes Source    External Target
      │                  │
      │                  │
Workload Status      Storage Connection
Result File Path     Target Path
File Availability    Write Permission
      │                  │
      └────────┬─────────┘
               ▼
        Environment Update
               │
               ▼
             Retry
               │
               ▼
       External Storage Check

필요한 경로나 연결 환경을 조정한 뒤에는 해당 작업을 다시 실행할 수 있습니다.

재실행 후에는 새로운 Run을 통해 Kubernetes 워크로드에서 생성된 파일이 Amazon S3 또는 외부 파일 서버의 지정된 위치에 정상적으로 반영되었는지 확인합니다.

이 레시피를 적용하면 Kubernetes 파일 생성 환경 연결 → 결과 파일 경로 선택 → S3 또는 외부 파일 서버 Target 구성 → 파일 생성 시점에 맞춘 자동 전송 → 파일 유형별 분기 → 후속 작업 연결 → 실행 결과 확인 → 문제 구간별 재처리까지 하나의 흐름으로 구성할 수 있습니다.

이를 통해 컨테이너 워크로드에서 생성된 결과 파일을 작업 종료 후 별도로 수집하는 대신, Kubernetes의 처리 결과를 외부 스토리지와 직접 연결하고 보관·분석·후속 업무까지 이어지는 파일 전송 자동화 환경을 구성할 수 있습니다.

개발자#

클러스터 워크로드의 결과 파일을 외부 스토리지로 전송하기

클러스터 내 에이전트와 외부 대상을 장비로 등록한 뒤, 잡 완료 시 전송 API를 호출합니다. 시작 전에 다음 항목을 준비합니다.

준비물 내용
INNORIX 인증 INNORIX_ACCESS_TOKEN (Authorization: Bearer)
소스 장비 클러스터 내 에이전트의 device ID와 결과 경로 (예: /data/out)
대상 장비 S3·파일 서버의 device ID와 저장 경로 (예: results/2026)
런타임 Python 3 + requests · Java 17+ · Node.js 18+ · .NET 8+

Python·Node.js는 REST를 직접 호출하는 최소 api() 헬퍼와 상태 상수(STATUS_COMPLETE·TERMINAL)를 API 호출 레시피의 것을 재사용합니다. Java·C#은 번들 소스의 InnorixClient(상수 포함)와 Json(C#은 J) 헬퍼를 사용합니다. 장비 식별자와 경로는 실제 값으로 바꿔 넣습니다.

잡 완료 후 결과 전송#

잡이 결과 파일을 다 쓴 뒤(후처리 스텝·완료 훅) 전송을 만들고 종료 상태를 확인합니다.

import time


def transfer_results(source, source_path, target, target_path, action="overwrite"):
    transfer = api("POST", "/api/transfers/manual", {
        "sourceDevice": source,
        "targetDevice": target,
        "targetPath": target_path,
        "sourcePaths": [source_path],
        "sendAllFolder": True,
        "transferOptions": {"target-action": action},
    })
    detail = wait_transfer(transfer["monitorId"])
    return transfer["monitorId"], detail.get("status") == STATUS_COMPLETE


def wait_transfer(monitor_id, timeout=7200, interval=5):
    deadline = time.time() + timeout
    while time.time() < deadline:
        detail = api("GET", f"/api/transfers/{monitor_id}") or {}
        if detail.get("status") in TERMINAL:
            return detail
        time.sleep(interval)
    raise TimeoutError(monitor_id)


monitor_id, ok = transfer_results("k8s-agent", "/data/out", "s3-dst", "results/2026")
print("transfer ok" if ok else "needs check", monitor_id)
static Object[] transferResults(InnorixClient client, String source, String sourcePath,
        String target, String targetPath, String action) throws InterruptedException {
    Map<String, Object> transfer = client.apiObj("POST", "/api/transfers/manual", Json.newObj(
            "sourceDevice", source,
            "targetDevice", target,
            "targetPath", targetPath,
            "sourcePaths", List.of(sourcePath),
            "sendAllFolder", true,
            "transferOptions", Json.newObj("target-action", action)), null);
    String monitorId = Json.str(transfer, "monitorId");
    Map<String, Object> detail = waitTransfer(client, monitorId, 7200, 5);
    Integer status = Json.intOrNull(detail, "status");
    return new Object[]{monitorId, status != null && status == InnorixClient.STATUS_COMPLETE};
}

static Map<String, Object> waitTransfer(InnorixClient client, String monitorId,
        long timeoutSec, long intervalSec) throws InterruptedException {
    long deadline = System.currentTimeMillis() + timeoutSec * 1000;
    while (System.currentTimeMillis() < deadline) {
        Map<String, Object> detail = client.apiObj("GET", "/api/transfers/" + monitorId, null, null);
        Integer status = Json.intOrNull(detail, "status");
        if (status != null && InnorixClient.TERMINAL.contains(status))
            return detail;
        Thread.sleep(intervalSec * 1000);
    }
    throw new RuntimeException("timeout: " + monitorId);
}
async function transferResults(source, sourcePath, target, targetPath, action = "overwrite") {
  const transfer = await api("POST", "/api/transfers/manual", {
    sourceDevice: source,
    targetDevice: target,
    targetPath,
    sourcePaths: [sourcePath],
    sendAllFolder: true,
    transferOptions: { "target-action": action },
  });
  const detail = await waitTransfer(transfer.monitorId);
  return { monitorId: transfer.monitorId, ok: detail.status === STATUS_COMPLETE };
}

async function waitTransfer(monitorId, { timeout = 7200, interval = 5 } = {}) {
  const deadline = Date.now() + timeout * 1000;
  while (Date.now() < deadline) {
    const detail = (await api("GET", `/api/transfers/${monitorId}`)) || {};
    if (TERMINAL.has(detail.status)) return detail;
    await new Promise((r) => setTimeout(r, interval * 1000));
  }
  throw new Error(`timeout: ${monitorId}`);
}

const { monitorId, ok } = await transferResults("k8s-agent", "/data/out", "s3-dst", "results/2026");
console.log(ok ? "transfer ok" : "needs check", monitorId);
static async Task<(string monitorId, bool ok)> TransferResultsAsync(InnorixClient client, string source,
    string sourcePath, string target, string targetPath, string action = "overwrite")
{
    var transfer = await client.ApiObjAsync("POST", "/api/transfers/manual", new JsonObject
    {
        ["sourceDevice"] = source,
        ["targetDevice"] = target,
        ["targetPath"] = targetPath,
        ["sourcePaths"] = J.ArrOfStrings(new[] { sourcePath }),
        ["sendAllFolder"] = true,
        ["transferOptions"] = new JsonObject { ["target-action"] = action },
    });
    string monitorId = J.Str(transfer, "monitorId");
    JsonObject detail = await WaitTransferAsync(client, monitorId);
    int? status = J.IntOrNull(detail, "status");
    return (monitorId, status != null && status == InnorixClient.StatusComplete);
}

static async Task<JsonObject> WaitTransferAsync(InnorixClient client, string monitorId,
    int timeoutSec = 7200, int intervalSec = 5)
{
    DateTime deadline = DateTime.UtcNow.AddSeconds(timeoutSec);
    while (DateTime.UtcNow < deadline)
    {
        JsonObject detail = await client.ApiObjAsync("GET", 
quot;/api/transfers/{monitorId}"
, null, null); int? status = J.IntOrNull(detail, "status"); if (status != null && InnorixClient.Terminal.Contains(status.Value)) return detail; await Task.Delay(intervalSec * 1000); } throw new TimeoutException(monitorId); }

에이전트 배치와 접근 전송 시점에 INNORIX 에이전트가 결과 파일이 저장된 볼륨 경로에 접근할 수 있어야 합니다. 에이전트를 Pod·DaemonSet·별도 노드 프로세스 중 어떤 방식으로 배치할지, 결과 볼륨(PVC·hostPath 등)에 어떻게 접근하는지는 제품의 Kubernetes 지원 방식을 따릅니다(클러스터 설정 영역). 전송 코드는 등록된 device ID만 참조합니다.

호출 시점 잡이 결과 파일을 다 쓴 뒤 호출해야 누락 없이 전송됩니다. 잡 완료 훅·후처리 스텝에서 전송 API를 호출하거나, 파일 생성 시 자동 전송이 필요하면 Hot Folder 방식을 검토합니다.

실패 파일은 중단 후 재개 레시피의 retry_failed로 실패분만 다시 전송합니다.

구현 결과#

이 레시피를 적용하면 다음 흐름으로 클러스터 결과 파일을 외부로 전송할 수 있습니다.

Kubernetes 워크로드 결과 (/data/out)
&nbsp;&nbsp;&nbsp;↓  잡 완료 후 전송 API 호출

INNORIX 전송 (k8s-agent → s3-dst)
&nbsp;&nbsp;&nbsp;↓  종료 상태 확인

Amazon S3 / 파일 서버 (results/2026) · 실패 파일만 재시도

컨테이너 워크로드의 결과 파일을 클러스터 외부의 S3나 파일 서버로 전송하고, 실패 파일만 선택해 다시 보낼 수 있습니다.

이전새 파일이 생기면 지정한 곳으로 자동 전송하기다음Git 밖의 대용량 파일과 빌드 결과물 자동 전달하기

이 페이지에서

  • 시작하기
  • 기본 개념
  • 파일 위치
  • 전송 시점
  • IT 엔지니어
  • 환경 연결
  • 대상 구성
  • 파일 선별
  • 흐름 연결
  • 실행 관리
  • 운영 대응
  • 개발자
  • 잡 완료 후 결과 전송
  • 구현 결과