JUST DO IT!

Redshift serverless ์ƒ์„ฑํ•˜๊ณ  S3์˜ csv ํŒŒ์ผ Redshift์— COPYํ•˜๊ธฐ - TIL230523 ๋ณธ๋ฌธ

TIL

Redshift serverless ์ƒ์„ฑํ•˜๊ณ  S3์˜ csv ํŒŒ์ผ Redshift์— COPYํ•˜๊ธฐ - TIL230523

sunhokimDev 2023. 5. 23. 17:03

๐Ÿ“š KDT WEEK 8 DAY 2 TIL

  • Redshift ์•Œ์•„๋ณด๊ธฐ
  • Redshift Severless ์ƒ์„ฑ ์‹ค์Šต
  • Redshift COPY ์‹ค์Šต

 

๐ŸŸฅ Redshift

 

AWS์—์„œ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค ์„œ๋น„์Šค

 

  • ์ตœ์†Œ 160GB ~ 2PB๊นŒ์ง€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • ์‘๋‹ต์†๋„๊ฐ€ ๋น ๋ฅด์ง€ ์•Š์•„ ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋Š” ๋ถ€์ ํ•ฉ
  • ๋ ˆ์ฝ”๋“œ ๋ณ„๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปฌ๋Ÿผ๋ณ„๋กœ ์ €์žฅํ•จ
    • ์ปฌ๋Ÿผ๋ณ„ ์••์ถ•์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๋น ๋ฅด๋‹ค
  • ๋ฒŒํฌ ์—…๋ฐ์ดํŠธ(S3์—์„œ ๋ ˆ์ฝ”๋“œํŒŒ์ผ์„ ์ผ๊ด„๋ณต์‚ฌ ๊ฐ€๋Šฅ) ์ง€์› - COPY SQL
  • ๊ณ ์ • ์šฉ๋Ÿ‰/๋น„์šฉ ์—”์ง„, ๊ฐ€๋ณ€ ๋น„์šฉ ์˜ต์…˜(Redshift Serverless)๋„ ์ง€์›
  • ๋ฐ์ดํ„ฐ ๊ณต์œ  ๊ธฐ๋Šฅ(Datashare)์œผ๋กœ ๋‹ค๋ฅธ AWS ๊ณ„์ •๊ณผ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์ด๋ฏ€๋กœ Primary Key Uniqueness๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • SQL ๊ธฐ๋ฐ˜ 

 

Redshift์˜ ์Šค์ผ€์ผ๋ง ๋ฐฉ์‹

์šฉ๋Ÿ‰์ด ๋ถ€์กฑํ•ด์งˆ ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹

 

ex) dc2.large๋ฅผ ์‚ฌ์šฉ์ค‘์ผ ๋•Œ

  • Scale Out : dc2.large๋ฅผ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€
  • Scale Up : dc2.8xlarge๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ
  • Auto Scaling : Dense Compute, Managed Storage ์˜ต์…˜์—์„œ๋งŒ ์ œ๊ณต, ์ž๋™์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ

 

Redshift ์ตœ์ ํ™”๊ฐ€ ๋ณต์žกํ•˜๋‹ค.

๊ณ ์ •๋น„์šฉ ์˜ต์…˜, ๋‘ ๋Œ€์ด์ƒ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋  ๊ฒฝ์šฐ ๋ ˆ์ฝ”๋“œ์˜ ๋ถ„์‚ฐ ์ €์žฅ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Snowflake์™€ BigQuery์˜ ๊ฒฝ์šฐ ์•Œ์•„์„œ ์ตœ์ ํ™” ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค.

 

* ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค์ˆ˜์˜ ๋…ธ๋“œ์— ๋ถ„๋ฐฐํ• ์ง€ ์ •ํ•˜๋Š” ์˜ต์…˜๋“ค *

  • Diststyle
    • All : ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ชจ๋“  ๋…ธ๋“œ์— ๋™์ผํ•˜๊ฒŒ ๋„ฃ๋Š”๋‹ค.
    • Even : ๋ ˆ์ฝ”๋“œ์„ ํ•˜๋‚˜์”ฉ ๋Œ์•„๊ฐ€๋ฉด์„œ ๋ชจ๋“  ๋…ธ๋“œ์— ๋ถ„๋ฐฐํ•œ๋‹ค.
      • ๋ฐ์ดํ„ฐ ์…”ํ”Œ๋ง ๋ฌธ์ œ
    • Key : ํŠน์ • ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๋…ธ๋“œ์— ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹
      • JOIN์ด๋‚˜ GROUP BY๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” KEY๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.
      • ํ•˜์ง€๋งŒ Data Skewed(๋น„๋Œ€์นญ) ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ๋ถ„์‚ฐ ์ €์žฅ์˜ ํšจ์œจ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
      • ๋”ฐ๋ผ์„œ, ํŠน์ • KEY์˜ ๋ ˆ์ฝ”๋“œ ๊ฐ’์ด ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ๋น„ํšจ์œจ์ ์ด๋‹ค.

Diststyle์˜ ์˜ต์…˜๋“ค

 

  • Distkey : ์–ด๋–ค ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐํฌ๋˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    • Diststyle์ด Key์ธ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹นํ•œ๋‹ค
  • Sortkey : ๋ ˆ์ฝ”๋“œ๊ฐ€ ํ•œ ๋…ธ๋“œ ๋‚ด์—์„œ ์–ด๋–ค ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๋Š”์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    • ๋ณดํ†ต ํƒ€์ž„์Šคํƒฌํ”„ ํ•„๋“œ๊ฐ€ ํ•ด๋‹น๋œ๋‹ค.

 

ex)

CREATE TABLE my_table(
    column1 INT,
    column2 VARCHAR(50),
    column3 TIMESTAMP,
    column4 DECIMAL(18,2)
) DISTSTYLE KEY DISTKEY(column1) SORTKEY(column3);

 


 

๐ŸŸฆ Redshift Serverless ์‹ค์Šต

 

์•„๋งˆ์กด์—์„œ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  Redshift๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ ‘์†ํ•œ๋‹ค.

์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์˜ Try Redshift Serverless ~ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค.

ํ•™์Šต ์‹ค์Šต์šฉ์ด๋ฏ€๋กœ ๋” ์ ์€ ๋น„์šฉ์ด ๋‚˜๊ฐ€๋Š” ๋ฆฌ์ „(์˜ค๋ ˆ๊ณค)์„ ์„ ํƒํ•˜์—ฌ ์‹ค์Šตํ•˜์˜€๋‹ค.

 

์ƒ์„ฑ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ๋’ค, ๋ณ„๋‹ค๋ฅธ ์„ค์ •์—†์ด ๊ตฌ์„ฑ ์ €์žฅ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•œ๋‹ค.

 

์ƒ์„ฑ ์ค‘ ๋‚˜์˜ค๋Š” ํ™”๋ฉด. Serverless์—์„œ๋Š” ๊ฐ€๋ณ€ ๋น„์šฉ์ž„์„ ๊ธฐ์–ตํ•˜์ž.

์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ตฌ์„ฑ > default ์—์„œ ์ƒˆ๋กœ์šด admin ์œ ์ €๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.

๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž ์•”ํ˜ธ ๋ณ€๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์ƒˆ ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ admin์œผ๋กœ ๋„ฃ์ž

 

๊ทธ๋ฆฌ๊ณ  Redshift์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ์—”๋“œ ํฌ์ธํŠธ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค.

 

์ž‘์—… ๊ทธ๋ฃน ๊ตฌ์„ฑ > default > ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋ณต์‚ฌํ•˜์ž

 

admin ์œ ์ € ์ •๋ณด์™€ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด์ œ Redshift์— ์ ‘์†ํ•ด๋ณด์ž.

Google Colab์—์„œ ์ ‘์†ํ•˜๋ ค๋ฉด Redshift ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ํ™œ์„ฑ๊ณผ VPC ํฌํŠธ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.

 

1. ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์„ค์ •

์ž‘์—… ๊ทธ๋ฃน ๊ตฌ์„ฑ > default > ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณด์•ˆ > ํŽธ์ง‘๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ž.

 

ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ ์ฒดํฌํ•˜๊ณ  ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.

 

2. VPC ๋ณด์•ˆ ๊ทธ๋ฃน์— Redshift ํฌํŠธ ์ถ”๊ฐ€ํ•˜๊ธฐ

 

์•„๊นŒ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์„ค์ •์˜ ๋ณธ ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€ ํ™”๋ฉด์—์„œ, VPC ๋ณด์•ˆ ๊ทธ๋ฃน์„ ์„ ํƒํ•ด์„œ ๋“ค์–ด์˜ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

 

ํ•˜๋‹จ ํƒญ์˜ '์ธ๋ฐ”์šด๋“œ ๊ทœ์น™' ์—์„œ '์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ํŽธ์ง‘' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

 

๋‘ ๋ฒˆ์งธ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์ด ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•œ ๊ทœ์น™์ด๋‹ค. 5439 ํฌํŠธ๋Š” Redshift ํฌํŠธ์— ํ•ด๋‹นํ•œ๋‹ค.

์ด๋กœ์จ Redshift๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„œ๋Š” ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

 

Google Colab์„ ํ†ตํ•ด Redshift ์ ‘์†ํ•˜๊ธฐ

๋ชจ์ž์ดํฌ๋œ ๋ถ€๋ถ„์ด ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋“ค์–ด๊ฐ„ ๋ถ€๋ถ„์ด๋‹ค.

์ ‘์†ํ•  ๋•Œ๋Š” postgresql://admin:password@์—”๋“œํฌ์ธํŠธ ํ˜•ํƒœ๋กœ ์ ‘์†ํ•˜๋ฉด ๋œ๋‹ค.

์ ‘์†์— ์„ฑ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ์—†์ด ๊ตฌ๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค.

 


 

๐ŸŸง Redshift ์ดˆ๊ธฐ ์„ค์ •

 

1. Schema

์‚ฌ์šฉ ๋ชฉ์ ์— ๋งž๊ฒŒ Redshift schema(ํด๋”)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์ €์žฅํ•œ๋‹ค.

CREATE SCHEMA raw_data; -- ETL ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ์šฉ
CREATE SCHEMA analytics; -- ELT ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ์šฉ

SELECT * FROM pg_namespace; -- ๋ชจ๋“  ์Šคํ‚ค๋งˆ ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ

 

2. User

CREATE USER user1 PASSWORD 'password'; -- ์ƒˆ๋กœ์šด ์œ ์ € ์ƒ์„ฑํ•˜๊ธฐ

SELECT * FROM pg_user; -- ๋ชจ๋“  ์œ ์ € ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ

 

3. GROUP

๊ถŒํ•œ์„ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋ถ€์—ฌํ•˜์ง€ ์•Š๊ณ , ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ํšจ์œจ์ ์œผ๋กœ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

ํ•œ ์‚ฌ์šฉ์ž๋Š” ๋‹ค์ˆ˜์˜ ๊ทธ๋ฃน์— ์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

CREATE GROUP ๊ทธ๋ฃน์ด๋ฆ„; -- ๊ทธ๋ฃน์ƒ์„ฑ
ALTER GROUP ๊ทธ๋ฃน์ด๋ฆ„ ADD USER ์‚ฌ์šฉ์ž์ด๋ฆ„; -- ๊ทธ๋ฃน์— ์œ ์ €๋„ฃ๊ธฐ

SELECT * FROM pg_group; -- ๋ชจ๋“  ๊ทธ๋ฃน ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ

 

4. ROLE

๊ทธ๋ฃน์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๋ฃน๊ณผ ๋‹ฌ๋ฆฌ ์—ญํ• ์€ ๋‹ค๋ฅธ ์—ญํ• ์— ๊ณ„์Šนํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ญํ• ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌ๋  ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ์—ญํ• ์— ๋ถ€์—ฌ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

ํ•œ ์‚ฌ์šฉ์ž๋Š” ๋‹ค์ˆ˜์˜ ์—ญํ• ์— ์†Œ์† ๊ฐ€๋Šฅํ•˜๋‹ค.

 

CREATE ROLE ์—ญํ• ์ด๋ฆ„; -- ์ƒˆ๋กœ์šด ์—ญํ•  ์ƒ์„ฑ
GRANT ROLE ์—ญํ• ์ด๋ฆ„ TO ์œ ์ €์ด๋ฆ„; -- ๊ธฐ์กด ์—ญํ• ์— ์œ ์ €๋„ฃ๊ธฐ
GRANT ROLE ์—ญํ• ์ด๋ฆ„1 TO ROLE ์—ญํ• ์ด๋ฆ„2; -- ๊ธฐ์กด ์—ญํ• 1์„ ์ƒˆ๋กœ์šด ์—ญํ• 2์— ๋ชจ๋“  ๊ถŒํ•œ ๊ณ„์Šน

SELECT * FROM SVV_ROLES; -- ๋ชจ๋“  ์—ญํ•  ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ

 

Colab ์‹ค์Šต

๋”๋ณด๊ธฐ

SCHEMA ์‹ค์Šต

์ง์ ‘ ๋งŒ๋“  ์Šคํ‚ค๋งˆ ์™ธ์—๋„ ๊ธฐ๋ณธ์ ์ธ ์Šคํ‚ค๋งˆ๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

 

USER ์‹ค์Šต

 ์œ ์ € ๋˜ํ•œ ์ƒ์„ฑํ–ˆ๋˜ user1๊ณผ admin ๋ง๊ณ ๋„ ๋‹ค๋ฅธ ์œ ์ €๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

GROUP ์‹ค์Šต

 

ROLE ์‹ค์Šต

 

 


 

๐ŸŸฉ Redshift ๋ฒŒํฌ์—… ์—…๋ฐ์ดํŠธ + ์‹ค์Šต

 

์•„๋ž˜์™€ ๊ฐ™์€ ์‚ฌ์ „ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

 

  1. ์ž„์˜์˜ ์Šคํ‚ค๋งˆ ๋ฐ‘์œผ๋กœ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ๋ช‡ ๊ฐœ๋ฅผ ๋งŒ๋“ ๋‹ค.
  2. ์ž…๋ ฅ์ด ๋  csv ํŒŒ์ผ๋“ค์„ ๋งŒ๋“ค๊ณ  S3 ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•œ๋‹ค.
  3. Redshift๊ฐ€ S3 ๋ฒ„ํ‚ท์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ ์„ค์ •ํ•ด์ฃผ๊ธฐ โ–ถ AWS IAM ํ™œ์šฉ

 

IAM์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด s3 ์ ‘๊ทผ ์—ญํ•  ์ƒ์„ฑํ•˜๊ธฐ

 

1. IAM ์—ญํ• ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ Redshift -Customizable ์˜ต์…˜์œผ๋กœ ํ•˜๋‚˜ ์ƒ์„ฑํ•œ๋‹ค.

AWS IAM > ์—ญํ• (role) > ์—ญํ•  ๋งŒ๋“ค๊ธฐ

 

2. ๋‹ค์Œ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  S3์— ๊ด€ํ•œ ๊ถŒํ•œ์„ ์—ฐ๊ฒฐํ•˜๋ฉด ๋œ๋‹ค.

Read ๊ถŒํ•œ๋งŒ ์ฃผ๊ณ ์‹ถ๋‹ค๋ฉด readonly ์˜ต์…˜์„ ์ฐพ์•„ ์ค˜๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

 

Redshift์— ์—ญํ• ๋ถ€์—ฌ

IAM์œผ๋กœ ์ƒ์„ฑํ•œ ์—ญํ• ์„ Redshift์— ๋ถ€์—ฌํ•ด๋ณด์ž.

์—ญํ• ์„ ๋ถ€์—ฌํ•  Redshift ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ•ด๋‹น ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋“ค์–ด๊ฐ€์„œ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

Redshift ํด๋Ÿฌ์Šคํ„ฐ > ๋„ค์ž„์ŠคํŽ˜์ด์Šค > default > ๋ณด์•ˆ ๋ฐ ์•”ํ˜ธํ™” > IAM ์—ญํ•  ๊ด€๋ฆฌ

 

์•„๊นŒ ๋งŒ๋“ค์—ˆ๋˜ ์—ญํ•  ์—ฐ๊ฒฐํ•˜๋ฉด ๋!

 


 

COPY ์‹ค์Šตํ•ด๋ณด๊ธฐ

 

S3 ๋ฒ„ํ‚ท์— csv ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ณผ์ •์€ ์ƒ๋žตํ•˜๊ณ , (๋งค์šฐ ์ง๊ด€์ ์ด๋ฏ€๋กœ)

๋ฐ”๋กœ Colab์—์„œ Redshift์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์—์„œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ , COPY ์ปค๋งจ๋“œ๋ฅผ ์จ๋ณด์•˜๋‹ค.

 

ํ…Œ์ด๋ธ”์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ S3๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ , ํ™•์ธํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

์ˆœ์„œ๋Œ€๋กœ ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ, S3์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€ ๋„ฃ๊ธฐ, ๋„ฃ์€ ๋ฐ์ดํ„ฐ ๊ฐ’ ํ™•์ธํ•˜๊ธฐ ์ด๋‹ค.

์—ฌ๊ธฐ์„œ COPY ์ปค๋งจ๋“œ๋ฅผ ์„ค๋ช…ํ•˜์ž๋ฉด,

  • COPY ~ : ์–ด๋–ค ํ…Œ์ด๋ธ”์— ๋„ฃ์„์ง€ ๋ช…์‹œํ•œ๋‹ค.
  • FROM ~ : ์–ด๋””์—์„œ ๊ฐ€์ ธ์˜ฌ์ง€ ์ ๋Š”๋ฐ, ๋‚˜๋Š” S3 ๋ฒ„ํ‚ท > test-data ํด๋” > ํ•ด๋‹น csv ํŒŒ์ผ ์„ ๋„ฃ์—ˆ๋‹ค.
  • credentials ~ : Redshift๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์—ฌ๊ธฐ์—๋„ S3 ์ œ์–ด ์—ญํ• ์„ ๋„ฃ์–ด์ฃผ์–ด์•ผํ•œ๋‹ค.
    • aws_iam_role = ๋‹ค์Œ์œผ๋กœ ํ•ด๋‹น ์—ญํ• ์˜ ARN ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. ARN ๊ฐ’์€ ์—ญํ•  ์ •๋ณด์— ์ ํ˜€์žˆ๋‹ค.
  • delimiter ',' : ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ €์žฅ๋˜์—ˆ๋Š”์ง€ ์ ๋Š”๋ฐ, CSV์ด๋ฏ€๋กœ ,(์ฝค๋งˆ) ์ด๋‹ค.
  • dateforamt 'auto' timeforamt 'auto' : ํ•ด๋‹น ํฌ๋งท์„ ์ž๋™์œผ๋กœ ์•Œ์•„์„œ ์ธ์‹ํ•˜๊ณ  ๊ฐ€์ ธ์˜จ๋‹ค.
  • IGNOREHEADER 1 : CSV ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰์€ ์ปฌ๋Ÿผ๋ช…์ด๋ฏ€๋กœ ์ด ๊ตฌ๋ฌธ์œผ๋กœ์จ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • removequotes : ๋ฐ์ดํ„ฐ์˜ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ€์ ธ์˜จ๋‹ค.

 

COPY SQL ๋ฌธ๋ฒ• ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค : https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

 

COPY - Amazon Redshift

Amazon Redshift Spectrum external tables are read-only. You can't COPY to an external table.

docs.aws.amazon.com

 

+++ COPY ๋ช…๋ น ์‹คํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ƒ์„ฑ๋œ ์—๋Ÿฌ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด

SELECT * FROM stl_load_errors ORDER starttime DESC;