Openflow Connector for Shopify 설정

Openflow Connector for Shopify 설정

이 페이지에서는 Shopify용 Openflow Connector를 설정하는 전체 절차를 설명해요. 전제 조건 확인, Shopify dev 앱 구성, Snowflake 계정 준비, 커넥터 설치와 구성까지 차례로 다룹니다.

출처: Snowflake 문서

본문

Note

이 커넥터는 Snowflake Connector Terms에 의해 규율됩니다.

이 토픽은 Shopify용 Openflow Connector를 설정하는 단계를 설명합니다.

전제 조건

  1. About the Openflow Connector for Shopify를 검토하세요.

  2. 런타임 배포를 설정하세요.

  1. Openflow - Snowflake Deployments를 사용한다면 required domain configuration을 검토하고 Shopify 커넥터에 필요한 도메인 접근을 부여했는지 확인하세요. Openflow - BYOC Deployments를 사용한다면 클라우드 네트워크 이그레스가 <your_store>.myshopify.com과 storage.googleapis.com에 HTTPS(포트 443)로 접근할 수 있게 구성하세요. 커넥터는 벌크 쿼리 결과에 대해 Shopify가 반환하는 서명된 Google Cloud Storage URL을 다운로드하기 위해 후자가 필요합니다.

  2. Openflow 관리자 역할 또는 Openflow 관리에 사용하는 유사한 역할에 접근할 수 있는지 확인하세요.

  3. Openflow - BYOC Deployments에 배포하고 KEY_PAIR 인증 전략을 사용한다면 키 페어 인증을 설정하세요. 자세한 내용은 key pair authentication을 참고하세요.

Shopify 설정

Shopify 스토어 관리자가 Shopify dev 앱을 만들고 커넥터가 인증할 API 스코프를 구성해야 합니다.

  1. Shopify Dev Dashboard에 로그인합니다.

  2. Create app을 선택하고 앱 이름을 제공합니다.

  3. 새 앱의 Access 섹션에서 복제하려는 객체에 해당하는 read_* 스코프를 선택합니다:

  • read_orders: 주문, 거래, 주문 처리(기본적으로 지난 60일로 제한됨; read_all_orders는 전체 주문 기록으로 확장하지만 별도 Shopify 접근 요청 필요; 자세한 내용은 아래 메모 참고)

  • read_products: 제품, 제품 변형, 컬렉션

  • read_customers: 고객, 세그먼트

  • read_inventory: 재고 항목, 위치

  • read_merchant_managed_fulfillment_orders: 주문 처리 주문

사용 가능한 스코프 전체 목록은 Shopify access scopes reference를 참고하세요.

Important

일부 스코프는 앱이 사용하기 전에 Shopify 승인이 필요합니다:

  • read_all_orders: 60일보다 오래된 주문에 접근하는 데 필요합니다. Dev Dashboard에서 앱의 API access 설정으로 접근 요청을 제출하세요.

  • 보호된 고객 데이터: read_customers 스코프에는 Shopify가 보호된 고객 데이터로 분류하는 고객 필드(이름, 주소, 이메일, 전화)가 포함됩니다. 이 필드를 읽는 앱은 보호된 고객 데이터에 대한 접근을 요청하고 Shopify의 데이터 보호 요구 사항을 충족해야 합니다. Dev Dashboard에서 앱의 API access 설정으로 접근 요청을 제출하세요.

자세한 내용은 Shopify 개발자 문서의 Protected customer data를 참고하세요.

Note

복제하려는 객체에 필요한 스코프만 부여하세요.

일부 GraphQL 필드는 읽는 데 쓰기 스코프가 필요합니다(예: Customer 객체의 marketingUnsubscribeUrl은 write_customers 필요). 해당 쓰기 스코프를 부여하지 않으면 Shopify API가 그 필드에 대해 오류를 반환합니다. 이를 피하려면 Object Definitions Override 파라미터의 graphqlFields 목록에서 필드를 생략하거나 ignoredFields에 추가하세요. ignoredFields는 최상위 필드 이름에만 적용됩니다. 중첩 필드는 graphqlFields 하위 선택에서 직접 제거해야 합니다.

  1. Release를 선택합니다. 선택적으로 버전 이름과 메시지를 제공한 뒤 Release를 다시 선택해 확인합니다.

  2. 앱 Overview 페이지에서 Install app을 선택합니다. 스토어로 리다이렉트됩니다. Install을 선택해 설치를 확인합니다.

Note

나중에 앱의 스코프를 변경하면 새 앱 버전을 릴리스하고 스토어에 앱을 재설치해 업데이트된 권한을 적용해야 합니다.

  1. Settings » Credentials로 이동해 Client ID와 Client Secret을 찾습니다. 두 값을 복사하세요: Shopify Client ID와 Shopify Client Secret 커넥터 파라미터를 구성할 때 필요합니다.

자세한 내용은 Shopify 개발자 문서의 Client secrets를 참고하세요.

Snowflake 계정 설정

Openflow 관리자로 다음 작업을 수행해 Snowflake 계정을 설정하세요. 기본 SNOWFLAKE_MANAGED 인증 전략에서는 런타임의 execute-as 역할이 커넥터가 Snowflake에 접근할 때 사용하는 신원이므로, 그 역할에 다음 권한을 부여합니다.

Note

Openflow - BYOC Deployments에 커넥터를 배포하고 권장되는 SNOWFLAKE_MANAGED 대신 KEY_PAIR 인증 전략을 사용한다면, 런타임의 관리 토큰에 의존하는 대신 이 동일한 execute-as 역할을 서비스 사용자에게 부여하게 됩니다. 서비스 사용자 생성은 Set up key-pair authentication for Openflow - BYOC Deployments를 참고하세요.

데이터베이스, 스키마, 웨어하우스 생성

  1. 대상 데이터베이스를 생성합니다:
USE ROLE OPENFLOW_ADMIN;
CREATE DATABASE IF NOT EXISTS <destination_database>;
  1. 대상 스키마를 생성합니다:
CREATE SCHEMA IF NOT EXISTS <destination_database>.<destination_schema>;
  1. 런타임의 execute-as 역할에 필요한 권한을 부여합니다:
GRANT USAGE ON DATABASE <destination_database> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
GRANT USAGE ON SCHEMA <destination_database>.<destination_schema> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
GRANT CREATE TABLE ON SCHEMA <destination_database>.<destination_schema> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
  1. 웨어하우스를 생성(또는 기존 웨어하우스 사용)하고 사용 권한을 부여합니다:
CREATE WAREHOUSE IF NOT EXISTS <openflow_warehouse>
  WITH
  WAREHOUSE_SIZE = 'XSMALL'
  AUTO_SUSPEND = 300
  AUTO_RESUME = TRUE;

GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
  1. 커넥터가 수집한 테이블에 접근해야 하는 다른 Snowflake 사용자가 있다면(예: Snowflake에서 커스텀 처리를 위해), 그 사용자들에게 execute-as 역할을 부여하세요.

커넥터 설치

커넥터를 설치하려면 데이터 엔지니어로 다음을 수행하세요:

  1. Openflow의 Connector library 탭으로 이동합니다.

  2. Openflow 커넥터 페이지에서 커넥터를 찾아 Install을 선택합니다.

  3. Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭합니다.

Note

커넥터를 설치하기 전에 커넥터가 수집한 데이터를 저장할 데이터베이스와 스키마를 Snowflake에 만들었는지 확인하세요.

  1. Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 앱이 Snowflake 계정에 접근하도록 허용하라는 메시지가 나오면 Allow를 선택합니다. 커넥터 설치 과정은 완료하는 데 몇 분 정도 걸립니다.

  2. Snowflake 계정 자격 증명으로 런타임에 인증합니다.

Openflow 캔버스에 커넥터 프로세스 그룹이 추가됩니다.

커넥터 구성

커넥터를 구성하려면 다음 단계를 수행하세요:

  1. 추가된 커넥터 프로세스 그룹을 우클릭하고 Parameters를 선택합니다.

  2. 다음 섹션에 설명된 대로 필수 파라미터 값을 채웁니다.

Shopify 파라미터

다음 파라미터가 Shopify 소스 연결을 구성합니다:

Parameter Description
Shop Domain 스토어의 myshopify.com 도메인. 예: mystore.myshopify.com
Shopify Client ID Shopify dev 앱의 Client ID.
Shopify Client Secret Shopify dev 앱의 Client Secret. 민감 파라미터로 안전하게 저장됩니다.
Shopify API Version 요청에 사용할 Shopify Admin API 버전. 기본값: 2026-04
Objects to Sync 복제할 Shopify 객체 유형의 쉼표 또는 줄바꿈 구분 목록. 대소문자 구분 없음. 각 값은 Shopify Admin GraphQL API의 쿼리 엔드포인트에 해당해야 합니다(예: orders는 orders 쿼리, products는 products 쿼리). Object Definitions Override 파라미터로 사용자 정의를 제공하거나 Enable Introspection이 true가 아니면 내장 카탈로그에 없는 유형은 건너뜁니다. 기본값: orders,products,customers,productVariants,inventoryItems,collections
Objects to Track for Deletes Events API를 통해 삭제를 모니터링할 Shopify 객체 유형의 쉼표 또는 줄바꿈 구분 목록. 각 유형은 독립적으로 폴링됩니다. 레지스트리에 없는 유형은 건너뜁니다. 삭제 추적을 완전히 비활성화하려면 비워 두세요. 예: products, customers, collections
Sync Schedule 커넥터가 새 데이터나 업데이트된 데이터를 위해 Shopify를 폴링하는 빈도. NiFi 스케줄링 구문 사용. 기본값: 30 min
Deletes Schedule 커넥터가 삭제 이벤트를 위해 Shopify Events API를 폴링하는 빈도. NiFi 스케줄링 구문 사용. 삭제 감지 지연이 중요하지 않다면 API 비용을 줄이기 위해 이 간격을 늘리세요. 기본값: 15 min
Object Definitions Override 내장 카탈로그에 새 객체 정의를 추가하거나 기존 정의를 오버라이드하는 선택적 JSON 배열. 각 요소는 해당 apiType의 카탈로그 항목을 완전히 교체합니다. 추출할 필드를 사용자 정의하거나, 승격 열을 정의하거나, 사용자 정의 객체 유형을 등록하려면 이 파라미터를 사용하세요. 자세한 내용은 Object definition overrides 참고.
Enable Introspection true이면 Shopify Admin GraphQL introspection 엔드포인트를 조회해 알 수 없는 객체 유형을 자동 탐색합니다. 탐색된 정의는 24시간 동안 캐시됩니다. 기본값: true
Ignore Deprecated Fields true이면 폐기된 GraphQL 필드가 introspection 생성 쿼리에서 제외됩니다. Enable Introspection이 true일 때만 적용됩니다. 기본값: true

Snowflake 대상 파라미터

다음 파라미터가 Snowflake 대상을 구성합니다:

Parameter Description
Snowflake Authentication Strategy 커넥터가 Snowflake에 연결할 때 사용하는 인증 전략.
SNOWFLAKE_MANAGED (기본): 런타임의 execute-as 역할과 연결된 Snowflake 관리 토큰 사용. Snowflake는 Openflow - Snowflake Deployments와 Openflow - BYOC Deployments 모두에서 이 옵션을 권장합니다.
KEY_PAIR: 사용자가 제공한 RSA 키 페어 사용. 교차 계정 시나리오를 위해 Openflow - BYOC Deployments에서만 사용 가능.
Snowflake Account Identifier <organization>-<account> 형식의 Snowflake 계정 식별자. 인증 전략이 KEY_PAIR일 때 필요. 예: MYORG-MYACCOUNT
Snowflake Username 인증에 사용할 Snowflake 사용자. 인증 전략이 KEY_PAIR일 때 필요.
Snowflake Private Key Snowflake 키 페어 인증용 PEM 인코딩 개인 키 콘텐츠(PKCS8 형식). 인증 전략이 KEY_PAIR일 때 필요. 민감 파라미터로 안전하게 저장됩니다. 이 파라미터나 Snowflake Private Key File 중 하나는 정의되어야 합니다.
Snowflake Private Key File Snowflake Private Key의 대안. Reference asset 체크박스를 선택하고 파일을 자산으로 업로드한 뒤 해당 자산을 파라미터 값으로 선택해 개인 키 파일을 업로드합니다. 이 파라미터나 Snowflake Private Key 중 하나는 정의되어야 합니다.
Snowflake Private Key Password 개인 키가 암호화된 경우 복호화할 비밀번호. 인증 전략이 KEY_PAIR일 때만 적용됩니다.
Snowflake Role 테이블 생성, 데이터 수집, 접근 검증에 사용되는 execute-as 역할.
Destination Database Snowflake의 대상 데이터베이스 이름. 커넥터를 시작하기 전에 데이터베이스가 이미 존재해야 합니다.
Destination Schema Snowflake의 대상 스키마 이름. 커넥터를 시작하기 전에 스키마가 이미 존재해야 합니다.
Snowflake Warehouse CREATE TABLE·MERGE 같은 테이블 관리 작업에 사용되는 Snowflake 웨어하우스.

플로우 실행

  1. 캔버스의 빈 영역을 우클릭하고 Enable all Controller Services를 선택합니다.

  2. 커넥터 프로세스 그룹을 우클릭하고 Start를 선택합니다.

커넥터가 Shopify Admin API를 조회하고 Snowflake에 데이터를 로드하기 시작합니다.

다음 단계

더 알아보기 (Learn more)