Git์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Snowflake ์„ค์ •ํ•˜๊ธฐยถ

์›๊ฒฉ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๋ฉด Snowflake๋Š” ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์œ„์น˜, ์ž๊ฒฉ ์ฆ๋ช…(ํ•„์š”ํ•œ ๊ฒฝ์šฐ) ๋ฐ Snowflake๊ฐ€ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ API ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ง€์ •ํ•˜๋Š” Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Snowflake์—์„œ ์›๊ฒฉ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

  1. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‹œํฌ๋ฆฟ์„ ์ƒ์„ฑํ•˜์—ฌ ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

  2. API ํ†ตํ•ฉ์„ ์ƒ์„ฑ ํ•˜์—ฌ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ API์™€์˜ Snowflake ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  3. ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ธ์ฆ์„ ์œ„ํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.ยถ

์›๊ฒฉ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, Snowflake๊ฐ€ ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ธ์ฆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๊ฒฉ ์ฆ๋ช…์ด ํฌํ•จ๋œ ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์‹œํฌ๋ฆฟ์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ API์™€์˜ Snowflake ์ƒํ˜ธ ์ž‘์šฉ์„ ์ง€์ •ํ•˜๋Š” API ํ†ตํ•ฉ์„ ๋งŒ๋“œ๋Š” ์‚ฌ์šฉ์ž๋Š” ์ด ์‹œํฌ๋ฆฟ์„ ALLOWED_AUTHENTICATION_SECRETS ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Git์„ ์‚ฌ์šฉํ•˜๋„๋ก Snowflake๋ฅผ ์„ค์ • ํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‹œํฌ๋ฆฟ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์‹œํฌ๋ฆฟ์„ ์ €์žฅํ•  ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ CREATE SECRET ๊ถŒํ•œ

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ CREATE SECRET ์•ก์„ธ์Šค ์ œ์–ด ์š”๊ตฌ ์‚ฌํ•ญ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ํ†ตํ•ฉ์ด ํฌํ•จ๋  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ USAGE ๊ถŒํ•œ

๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์‹œํฌ๋ฆฟ์˜ PASSWORD ๊ฐ’์— ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. GitHub์—์„œ ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์„ค๋ช…์„œ์—์„œ ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ ๊ด€๋ฆฌํ•˜๊ธฐ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

SQL:

CREATE SECRET ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž๊ฒฉ ์ฆ๋ช…์ด ํฌํ•จ๋œ ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ์˜ ์ฝ”๋“œ๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ myco_git_secret ์‹œํฌ๋ฆฟ์„ ์ƒ์„ฑํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

USE ROLE ACCOUNTADMIN;
CREATE ROLE myco_secrets_admin;
GRANT CREATE SECRET ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_secrets_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_secrets_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE SECRET myco_git_secret
  TYPE = password
  USERNAME = 'gladyskravitz'
  PASSWORD = 'ghp_token';
Copy

๋ฆฌํฌ์ง€ํ† ๋ฆฌ API์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ API ํ†ตํ•ฉ ๋งŒ๋“ค๊ธฐยถ

Snowflake๊ฐ€ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ API์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด API ํ†ตํ•ฉ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Git์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Snowflake ๊ณ„์ •์„ ์„ค์ • ํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉํ•  API ํ†ตํ•ฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

API ํ†ตํ•ฉ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณ„์ •์— ๋Œ€ํ•œ CREATE INTEGRATION ๊ถŒํ•œ

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ CREATE API INTEGRATION ์•ก์„ธ์Šค ์ œ์–ด ์š”๊ตฌ ์‚ฌํ•ญ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ์‹œํฌ๋ฆฟ์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ USAGE ๊ถŒํ•œ

  • ํ†ตํ•ฉ์ด ์ฐธ์กฐํ•˜๋Š” ์‹œํฌ๋ฆฟ์— ๋Œ€ํ•œ USAGE ๊ถŒํ•œ

Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ API์— ๋Œ€ํ•œ API ํ†ตํ•ฉ์„ ๋งŒ๋“ค ๋•Œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • git_https_api ๋ฅผ API_PROVIDER ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ALLOWED_AUTHENTICATION_SECRETS ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๊ฐ’์œผ๋กœ ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž๊ฒฉ ์ฆ๋ช…์ด ํฌํ•จ๋œ ์‹œํฌ๋ฆฟ ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Snowflake๊ฐ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ธ์ฆํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ Snowflake ์‹œํฌ๋ฆฟ(์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก).

    • all (๋Œ€/์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์‹œํฌ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    • none (๋Œ€/์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œํฌ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

SQL:

CREATE API INTEGRATION ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ API์™€์˜ Snowflake ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ง€์ •ํ•˜๋Š” API ํ†ตํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ์˜ ์ฝ”๋“œ๋Š” ์ด๋ฆ„์ด git_api_integration ์ธ API ํ†ตํ•ฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

USE ROLE ACCOUNTADMIN;
CREATE ROLE myco_git_admin;
GRANT CREATE INTEGRATION ON ACCOUNT TO ROLE myco_git_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_git_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;

USE ROLE myco_secrets_admin;
GRANT USAGE ON SECRET myco_git_secret TO ROLE myco_git_admin;

USE ROLE myco_git_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE API INTEGRATION git_api_integration
  API_PROVIDER = git_https_api
  API_ALLOWED_PREFIXES = ('https://github.com/my-account')
  ALLOWED_AUTHENTICATION_SECRETS = (myco_git_secret)
  ENABLED = TRUE;
Copy

์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ Snowflake Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ ๋งŒ๋“ค๊ธฐยถ

์›๊ฒฉ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก Snowflake๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ํŒŒ์ผ์„ ํฌํ•จํ•˜๋„๋ก Snowflake์—์„œ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ด ์„น์…˜์˜ ๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์‹œํฌ๋ฆฟ (์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ)๊ณผ API ํ†ตํ•ฉ ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์€ ๋‹ค์Œ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ถœ์ฒ˜

    Git์—์„œ, origin ์€ ์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ URL์˜ ๋‹จ์ถ•์–ด์ž…๋‹ˆ๋‹ค. ์›๊ฒฉ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Snowflake๋ฅผ ์„ค์ •ํ•  ๋•Œ URL ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. URL์€ HTTPS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ URL์€ ๋‹ค์Œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • GitHub ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํ™ˆ ํŽ˜์ด์ง€์—์„œ ์›๋ณธ URL๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด Code ๋ฒ„ํŠผ์„ ์„ ํƒํ•œ ๋‹ค์Œ ๋ฒ„ํŠผ ์•„๋ž˜์— ํ‘œ์‹œ๋˜๋Š” ์ƒ์ž์—์„œ HTTPS URL์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    • ๋ช…๋ น์ค„์—์„œ ๋‹ค์Œ ์˜ˆ์ œ์™€ ๊ฐ™์ด ๋กœ์ปฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋‚ด์—์„œ git config ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      $ git config --get remote.origin.url
      
      Copy

      ์ด ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      https://github.com/my-account/snowflake-extensions.git
      

      git config ์— ๋Œ€ํ•œ ์ฐธ์กฐ ์ •๋ณด๋Š” git ์„ค๋ช…์„œ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ธ์ฆํ•  ๋•Œ Snowflake๊ฐ€ ์‚ฌ์šฉํ•  ์ž๊ฒฉ ์ฆ๋ช…(ํ•„์š”ํ•œ ๊ฒฝ์šฐ)

  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ API์™€์˜ Snowflake ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ง€์ •ํ•˜๋Š” API ํ†ตํ•ฉ

Snowflake์—์„œ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์ด ํฌํ•จ๋œ ์Šคํ‚ค๋งˆ์—์„œ CREATE GIT REPOSITORY

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ CREATE GIT REPOSITORY ์•ก์„ธ์Šค ์ œ์–ด ์š”๊ตฌ ์‚ฌํ•ญ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • Git ์ธ์ฆ์„ ์œ„ํ•œ ์ž๊ฒฉ ์ฆ๋ช…์ด ํฌํ•จ๋œ ์‹œํฌ๋ฆฟ์— ๋Œ€ํ•œ USAGE ๊ถŒํ•œ

  • Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์ด ์ฐธ์กฐํ•˜๋Š” API ํ†ตํ•ฉ์— ๋Œ€ํ•œ USAGE ๊ถŒํ•œ

Snowsight ๋˜๋Š” SQL ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ค๊ธฐ ์ „์— ์‹œํฌ๋ฆฟ (์›๊ฒฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ) ๋ฐ API ํ†ตํ•ฉ ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

snowflake_extensions ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณต์ œ๋ณธ์—์„œ๋Š” ์ธ์ฆ์„ ์œ„ํ•œ ์ž๊ฒฉ ์ฆ๋ช…๊ณผ ํ•จ๊ป˜ git_api_integration API ํ†ตํ•ฉ ๋ฐ myco_git_secret ์‹œํฌ๋ฆฟ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

USE ROLE ACCOUNTADMIN;
GRANT CREATE GIT REPOSITORY ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;

USE ROLE myco_git_admin;

CREATE OR REPLACE GIT REPOSITORY snowflake_extensions
  API_INTEGRATION = git_api_integration
  GIT_CREDENTIALS = myco_git_secret
  ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
Copy