๐ 1. ํ๋ก์ ํธ ๊ฐ์
ํ๋ก์ ํธ ๋ช
BMW AI ๊ธฐ๋ฐ ๋์งํธ ๋ธ๋ก์์ด ์๋ ์์ฑ ์์คํ
ํ๋ก์ ํธ ์ ๋ณด
- ๊ฐ๋ฐ ๊ธฐ๊ฐ: 2025๋ 6์ 25์ผ ~ 2025๋ 7์ 8์ผ (14์ผ)
- ์ฐธ์ฌ ์ธ์: 4๋ช
- ์ดํธ์ญ (ํ๋ก์ ํธ ๋ฆฌ๋)
- ๋ฐ๋ฏฟ์ (๋ฐฑ์๋ ๊ฐ๋ฐ)
- ์ ๋ํ (ํ๋ก ํธ์๋ ๊ฐ๋ฐ)
- ๊น๋ํ (AI ๋ชจ๋ธ ํตํฉ)
ํ๋ก์ ํธ ๋ชฉํ
- ์ฌ์ฉ์๊ฐ BMW ๊ด์ฌ ๋ชจ๋ธ๊ณผ ์ ํธ ์ฌํญ ๋ฐ ์ด๋ฉ์ผ ์ฃผ์๋ง ์ ๋ ฅํ๋ฉด, ๊ฐ์ธํ ๋ธ๋ก์์ด ์๋ ์์ฑ
- AI ๊ธฐ๋ฐ ์ด๋ฏธ์ง 3์ฅ + ๋์์ + ํ๊ตญ์ด ์ค๋ช ํ ์คํธ ํตํฉ ์ ๊ณต
- ๋ชจ๋ ์ด๋ฉ์ผ ํด๋ผ์ด์ธํธ์์ ์์ ํ๊ฒ ์ด๋ฆฌ๋ HTML ์ด๋ฉ์ผ ์๋ ๋ฐ์ก
๐ 2. ์์คํ ์ํคํ ์ฒ
์ ์ฒด ์์คํ ํ๋ฆ
%%{init: {"theme": "dark"}}%% graph TB A[๐ ์ฌ์ฉ์ ์น ํด๋ผ์ด์ธํธ] --> B[๐ช API Gateway] B --> C[โก ๋ฉ์ธ Lambda] C --> D[๐ S3 ์ํ ํ์ผ ์์ฑ] C --> E[๐ฌ SQS ํ] subgraph image_process [์ด๋ฏธ์ง ์์ฑ] F[๐ผ๏ธ callBendrockSlideImage Lambda] G[๐ค Claude Sonnet ํ ์คํธ ๋ฐ ์ด๋ฏธ์ง ํ๋กฌํํธ ์์ฑ] H[๐จ Titan Image Generator] I[๐ S3 ์ด๋ฏธ์ง ์ ์ฅ] F --> G G --> H H --> I end J{3๊ฐ ์ด๋ฏธ์ง ์๋ฃ?} I --> J subgraph video_generation [๋์์ ์์ฑ] direction LR K[๐ฌ getVideo Lambda] --> L[๐ฅ Nova Reel] --> M[๐ S3 ๋์์ ์ ์ฅ] end M --> O{๋์์ ์๋ฃ?} subgraph email_sending [์ด๋ฉ์ผ ์ ์ก] direction LR P[๐ง send-email Lambda] --> Q[๐ ์ด๋ฉ์ผ ํ ํ๋ฆฟ ์์ฑ] --> R[๐ฎ SES ์ด๋ฉ์ผ ๋ฐ์ก] --> S[๐ฌ ์ฌ์ฉ์ ์์ ] end %% ๋ฉ์ธ ํ๋ก์ฐ์ ์๋ธ๊ทธ๋ํ ๊ฐ ์ฐ๊ฒฐ E --> F J -->|Yes| K O -->|Yes| P style A fill:#375A7F,stroke:#fff style B fill:#5D6470,stroke:#fff style C fill:#466B7F,stroke:#fff style F fill:#3D5A53,stroke:#fff style K fill:#44476A,stroke:#fff style P fill:#495D5B,stroke:#fff
๋ฐ์ดํฐ ์ํ์ค ํ๋ก์ฐ
%%{init: {"theme": "dark"}}%% sequenceDiagram participant U as ๐ค ์ฌ์ฉ์ participant C as ๐ป ํด๋ผ์ด์ธํธ participant ML as โก ๋ฉ์ธ Lambda participant SQS as ๐ฌ SQS ๋๊ธฐ์ด participant IL as ๐ผ๏ธ ์ด๋ฏธ์ง/ํ ์คํธ ์์ฑ ๋ฐ <br>Polling Lambda participant VL as ๐ฌ ๋์์ ์์ฑ ๋ฐ <br>Polling Lambda participant S3 as ๐ S3 ์ ์ฅ์ participant EL as ๐ง ์ด๋ฉ์ผ Lambda participant SES as ๐ฎ SES U->>C: ์ ๋ณด ์ ๋ ฅ ํ <BR>์์ฑ ๋ฒํผ ํด๋ฆญ C->>ML: ์์ ์์ฒญ ML->>S3: ์ํ ํ์ผ ์์ฑ ML->>SQS: 3๊ฐ ์ด๋ฏธ์ง ๋ฐ ํ ์คํธ ์์ ์ ์ก ML->>C: job_id ๋ฐํ SQS->>IL: ๋ฉ์์ง ์์ IL->>IL: ํ ์คํธ ์์ฑ loop ์ด๋ฏธ์ง ์์ฑ (3ํ) IL->>IL: ์ด๋ฏธ์ง ์์ฑ IL->>S3: ์ด๋ฏธ์ง ์ ์ฅ + ์ํ ์ ๋ฐ์ดํธ end C->>IL: ์ด๋ฏธ์ง ์๋ฃ ํ์ธ IL->>C: ์ด๋ฏธ์ง ๊ฒฝ๋ก & ํ ์คํธ C->>U: ์ด๋ฏธ์ง & ํ ์คํธ ์ถ๋ ฅ C->>VL: ๋์์ ์์ฒญ VL->>VL: ๋์์ ์์ฑ VL->>S3: ๋์์ ์ ์ฅ C->>VL: ๋์์ ์๋ฃ ํ์ธ VL->>C: ๋์์ ๊ฒฝ๋ก C->>U: ๋์์ ์ถ๋ ฅ U->>C: ์ด๋ฉ์ผ ์ ์ก ๋ฒํผ ํด๋ฆญ C->>EL: ์ด๋ฉ์ผ ๋ฐ์ก ์์ฒญ EL->>EL: HTML ํ ํ๋ฆฟ ์์ฑ EL->>SES: ์ด๋ฉ์ผ ๋ฐ์ก SES->>U: ์์ฑ๋ ๋ธ๋ก์์ด ์์
๐ง 3. ํต์ฌ ๊ธฐ์ ๊ตฌ์ฑ
AI ๋ชจ๋ธ ํตํฉ
AWS ์๊ฒฉ์ฆ ์์ ์: ๊น๋ํ ๋งค๋์ ๐
%%{init: {"theme": "dark"}}%% graph LR A[๐ ์ฌ์ฉ์ ํ๋กฌํํธ] --> B[๐ค Claude Sonnet] B --> C[๐จ Titan Image Generator] C --> D[โ ์ด๋ฏธ์ง ์์ฑ] B --> E[๐ฅ Nova Reel] E --> F[๐ฌ ๋์์ ์์ฑ] B --> G[๐ฐ๐ท ํ๊ตญ์ด ํ ์คํธ ์์ฑ] G --> H[๐ ๋ธ๋ก์์ด] D --> H F --> H style A fill:#375A7F,stroke:#222 style B fill:#5D6470,stroke:#222 style C fill:#466B7F,stroke:#222 style E fill:#3D5A53,stroke:#222
AI ๋ชจ๋ธ ๊ณผ๋ถํ ๋ฐฉ์ง ๋ก์ง
๋์์ฑ, ํ ๋น๋๋ง ๋๋ ค์คฌ์ด๋ ๊ณ ๋ฏผ ๋ํ
%%{init: {"theme": "dark"}}%% graph LR A[๐ API ์์ฒญ] --> B{๋์์ฑ ์ ํ ํ์ธ} B -->|ํ์ฉ| C[โก Lambda ์คํ] B -->|์ด๊ณผ| D[๐ฌ SQS ๋๊ธฐ์ด] C --> E{ThrottlingException?} E -->|Yes| F[โฐ 2<sup>n</sup>์ด ์ฌ์๋ ๋๊ธฐ] E -->|No| G[โ ์ ์ ์ฒ๋ฆฌ] F --> H[๐ ์ฌ์๋] H --> E D --> I[๐ ์์ฐจ ์ฒ๋ฆฌ] I --> C style A fill:#375A7F,stroke:#222 style C fill:#5D6470,stroke:#222 style G fill:#3D5A53,stroke:#222
๐ 4. ๊ธฐ์ ์ ๊ฐ๋ฐ ์ฑ๊ณผ
์์ญ | ๊ตฌํ ํ์ด๋ผ์ดํธ |
---|---|
๐ค ์์ ๋ฌด์ธํ | ๋ฒํผ ํ ๋ฒ์ผ๋ก ์ด๋ฏธ์ง ยท ๋์์ ์์ฑ๋ถํฐ ์ด๋ฉ์ผ ๋ฐ์ก๊น์ง ์ ๊ณผ์ ๋ฌด์ธ ์ฒ๋ฆฌ |
๐ง AI ๋ชจ๋ธ ํตํฉ | 1) Claude Sonnet – ํ
์คํธ ์์ฝ ยท ์นดํผ๋ผ์ดํ
2) Titan Image Generator – ๊ณ ํ์ง ์ด๋ฏธ์ง ์์ฑ 3) Nova Reel – 6์ด ์๋ค๋งํฑ ์์ |
๐ก๏ธ ์์ ์ฑ | ๋ฉ์ธ์ง ๋น๋๊ธฐ์ ์ฒ๋ฆฌ๋ก ๋๊ธฐ์ฑ์ ์ํ ํ์์์ ๋ฌธ์ ํด์ ์ ํ๋ ์ฑ๋ฆฐ์ง AI ๋ชจ๋ธ์ ๋์์ฑ ๋ฐ ํ ๋น๋์๋ ๋ถ๊ตฌํ๊ณ , ์์ฐจ์ ๋์ฉ๋ ์ฒ๋ฆฌ |
๐ง ์ด๋ฉ์ผ ํธํ์ฑ | ์๋ก์ด HTML ํ ํ๋ฆฟ ์์ฑ์ผ๋ก ๋ชจ๋ ์ด๋ฉ์ผ ํด๋ผ์ด์ธํธ์์ ์์ ํ๊ฒ ์๋ |
๐ 5. ๋น์ฆ๋์ค ํจ๊ณผ
- โฑ๏ธ ์ฒ๋ฆฌ ์๊ฐ ๋จ์ถ: ๊ธฐ์กด ์๋ ์์ ๋๋น 90% ์ด์ ๋จ์ถ
- ๐ฐ ์ธ๋ ฅ ๋น์ฉ ์ ๊ฐ: ๋์์ธ ยท ํธ์ง ยท ๋ฉ์ผ ๋ฐ์ก ์์ ์๋ํ๋ก ๋ํญ ์ ๊ฐ
- ๐ ์ผ๊ด๋ ํ์ง: AI ๋ชจ๋ธ์ด ๋์ผํ ํค ยท ์คํ์ผ ์ ์ง
- ๐ ํ์ฅ์ฑ: Lambda + SQS ๊ตฌ์กฐ๋ก ์์ฒญ ํญ์ฃผ ์์๋ ํ์ฅ ๊ฐ๋ฅ
(AWS ์ค์ ํ์)
๐ง 6. ๊ธฐ์ ์ ๋์ ๊ณผ ํด๊ฒฐ
์ฃผ์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ์ฑ
%%{init: {"theme": "dark"}}%% graph TD A[โ ๏ธ ThrottlingException] --> B[โฐ 2<sup>n</sup>์ด ์ฌ์๋ ๋๊ธฐ] A --> C[๐ Lambda ๋์์ฑ ์ ํ] A --> D[๐ ์์ฐจ ์ฒ๋ฆฌ ๊ตฌํ] L[โก ๋์ ์์ฒญ] --> M[๐ฌ SQS ๋๊ธฐ โ ์์ฐจ ์ฒ๋ฆฌ ๊ตฌํ] L --> N["๐ ์๋ฒ ์์ ๋ฐ Lambda ๋์ ์ฒ๋ฆฌ ์ ํ"] H[๐ง ์ด๋ฉ์ผ ํธํ์ฑ] --> I[๐ ์๋ก์ด HTML ํ ํ๋ฆฟ] H --> J[๐จ ์ธ๋ผ์ธ CSS ์ ์ฉ] H --> K[๐ผ๏ธ ์ ์ ๊ฐค๋ฌ๋ฆฌ ๋ณํ] style A fill:#D32F2F,stroke:#222 style H fill:#F57C00,stroke:#222 style L fill:#F57C00,stroke:#222
ํด๊ฒฐ ๊ณผ์
- โ ๏ธ ThrottlingException
- ๋ฌธ์ : AWS Bedrock API ์์ฒญ ํ๋ ์ด๊ณผ๋ก ์์คํ ๋ถ์์
- ํด๊ฒฐ: 2โฟ ์ด ์ฌ์๋ ๋๊ธฐ + ์์ฐจ ์ฒ๋ฆฌ + ๋์์ฑ ์ ํ
- ๊ฒฐ๊ณผ: ๊ธฐ์กด ๋๊ธฐ์ฑ ๋ฐ ํ์์์ ๋ฌธ์ ํด๊ฒฐ, ์์ ์ ์ธ ๋์ฉ๋ ์ฒ๋ฆฌ ์์คํ ๊ตฌ์ถ
- ๐ ๋์ ์์ฒญ
- ๋ฌธ์ : ๋์ ์ฒ๋ฆฌ๋ก ์ธํ job_id ๋ถ์ผ์น ๋ฐ ์ํ ๊ด๋ฆฌ ๋ณต์ก์ฑ
(๋ฉ์ธ์ง ๊ผฌ์) - ํด๊ฒฐ: SQS ์ค์ ์กฐ์ + Lambda ๋์์ฑ ์ ํ
- ๊ฒฐ๊ณผ: 3๊ฐ ์ด๋ฏธ์ง๊ฐ ๋์ผ ์์ ์ผ๋ก ์์ ์ ์์ฐจ ์ฒ๋ฆฌ
- ๋ฌธ์ : ๋์ ์ฒ๋ฆฌ๋ก ์ธํ job_id ๋ถ์ผ์น ๋ฐ ์ํ ๊ด๋ฆฌ ๋ณต์ก์ฑ
- ๐ง ์ด๋ฉ์ผ ํธํ์ฑ
- ๋ฌธ์ : ์น ๊ธฐ์ ๊ณผ ์ด๋ฉ์ผ ๊ธฐ์ ์ ์ฐจ์ด๋ก ์ธํ ํธํ์ฑ ์ด์
- ํด๊ฒฐ: ์ด๋ฉ์ผ ์ ์ฉ HTML ํ ํ๋ฆฟ ์๋ก ๊ฐ๋ฐ
- ๊ฒฐ๊ณผ: ๋ชจ๋ ์ด๋ฉ์ผ ํด๋ผ์ด์ธํธ์์ ์๋ฒฝ ์๋
๐ง 8. ์์คํ ํ๊ณ ๋ฐ ๋์
ํ๊ณ | ํ์ฌ ๋์ |
---|---|
๐บ Nova Reel 720p ํด์๋ ์ ํ | 1080p ์ด์ ์ง์ ์ถ์ ์ ์ฆ์ ๊ต์ฒดํ๋๋ก ์ธํฐํ์ด์ค ๋ถ๋ฆฌ |
โก Bedrock ์ค๋กํ๋ง | 2โฟ ์ด ์ฌ์๋ ๋๊ธฐ ์ต๋ ๋์ ์์ฑ 2๊ฑด์ผ๋ก ์ ํ ๋๋ ์์ฒญ ์ ๋๊ธฐ์ด๋ก ์ ํ |
๐ง ์ด๋ฉ์ผ ํด๋ผ์ด์ธํธ ์ ์ฝ | ์ ์ ๊ฐค๋ฌ๋ฆฌ + ๋ค์ด๋ก๋ ๋ฒํผ์ ์ง์คํ ๊ฐ๊ฒฐํ ๋์์ธ |
๐ S3 ๋ฝ ํ์ผ ๋ฏธ๊ตฌํ | ํ์ฌ ๋จ์ ์ํ ํ์ผ ์ ๋ฐ์ดํธ๋ก ๋์์ฑ ์ด์ ์ ์ฌ |
๐ฐ 8. ํฅํ ๋ฐ์ ๋ก๋๋งต
๋จ๊ธฐ ๊ฐ์ (3-6๊ฐ์): ๋งค์ฅ ๋์งํธ ํ์
%%{init: {"theme": "dark"}}%% graph LR A[๐ช ์ ์์ฅ ํค์ค์คํฌ] --> B["๐ง ์นดํก/๋ฌธ์(SMS) ๋ฐ์ก"] B --> C[๐ ๊ณ ๊ฐ ๋ฐ์ดํฐ ์์ง] C --> D[๐โโ๏ธ ๋ด๋น์ ์ฐ๋] style A fill:#375A7F,stroke:#fff style B fill:#5D6470,stroke:#fff style C fill:#466B7F,stroke:#fff style D fill:#3D5A53,stroke:#fff
- ๐ช ์ ์ฐจ ํ๋งค ์ ์์ฅ ํค์ค์คํฌ ๋์ : ๊ณ ๊ฐ์ด ์ง์ ์ฐจ๋ ๋ชจ๋ธ์ ์ ํํ๊ณ ์ฆ์์์ ๋ง์ถคํ ๋ธ๋ก์์ด ์์ฑ
- ๐ง ์นดํก/๋ฌธ์(SMS) ๋ฐ์ก: ํค์ค์คํฌ์์ ์ ํ๋ฒํธ ์ ๋ ฅ ์, ์์ฑ๋ ๋ธ๋ก์์ด ๋งํฌ๋ฅผ ์ฆ์ ๊ณ ๊ฐ์๊ฒ ์ ์ก
- ๐ ๊ณ ๊ฐ ์ ๋ณด ์์ง: ํค์ค์คํฌ ์ฌ์ฉ ํจํด, ์ ํํ ๋ชจ๋ธ, ์ต์ ์ ํธ๋ ๋ฐ์ดํฐ ์๋ ์์ง
- ๐โโ๏ธ ๋ด๋น์ ์ฐ๋: ์์ฑ๋ ๋ธ๋ก์์ด ์ ๋ณด์ ๊ณ ๊ฐ ๊ด์ฌ์ฌ๋ฅผ ์์ ๋ด๋น์์๊ฒ ์ ๋ฌ
์ค๊ธฐ ๊ฐ์ (6-12๊ฐ์): ๋ค์ฑ๋ ์์ต ํ์ฅ
%%{init: {"theme": "dark"}}%% graph LR A[๐ ์น์ฌ์ดํธ ํตํฉ] --> B[๐ฑ BMW ๋ชจ๋ฐ์ผ ์ฑ ํ์ฅ] B --> C[๐ฐ ํจ๊ณผ ์ธก์ ] style A fill:#375A7F,stroke:#fff style B fill:#466B7F,stroke:#fff style C fill:#3D5A53,stroke:#fff
- ๐ ์น์ฌ์ดํธ ํตํฉ: BMW ๊ณต์ ์น์ฌ์ดํธ์์ ๋ธ๋ก์์ด ์์ฑ
- ๐ฑ BMW ๋ชจ๋ฐ์ผ ์ฑ ํ์ฅ: ๊ธฐ์กด MyBMW ์ฑ์ ๋ธ๋ก์์ด ์์ฑ ๋ฐ ๊ณต์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ๐ฐ ํจ๊ณผ ์ธก์ : ๋ธ๋ก์์ด ์์ฑ ํ ์ค์ ๊ตฌ๋งค๊น์ง์ ์ ํ์จ ์ถ์
์ฅ๊ธฐ ๋ก๋๋งต (1-2๋ ): ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๋ง์ถค ํ๋งค
%%{init: {"theme": "dark"}}%% graph TD A[๐ข BMW ๋ฐ์ดํฐ ์ผํฐ ์ฐ๊ฒฐ] --> B[๐ง AI ๋ถ์] B --> C[๐ฏ ๋ง์ถค ๊ณ ๊ฐ ๊ด๋ฆฌ] F[๐ ๊ณ ๊ฐ ํ๋ ๋ถ์] --> B G[๐ ์์ธก ๋ถ์] --> C style A fill:#375A7F,stroke:#fff style B fill:#5D6470,stroke:#fff style C fill:#466B7F,stroke:#fff
- ๐ข BMW ๋ฐ์ดํฐ ์ผํฐ ์ฐ๊ฒฐ
- ์ ์ธ๊ณ BMW ๊ณ ๊ฐ ์ ๋ณด์ ์ฐ๊ฒฐ
- ์ฐจ๋ ์์ ์ฃผ๋ค์ ์ทจํฅ ๋ฐ ์๋น ํจํด ํ์
- ๐ง AI ๊ธฐ๋ฐ ์์ธก ์๋น์ค
- ๊ณ ๊ฐ ์ฑํฅ ๊ธฐ๋ฐ ๊ตฌ๋งค ๊ฐ๋ฅ์ฑ ์์ธก
- ์ต์ ์ฐจ๋ ๋ชจ๋ธ ์๋ ์ถ์ฒ
- ๐ฏ ๋ง์ถค ๊ณ ๊ฐ ๊ด๋ฆฌ
- ๋ธ๋ก์์ด ์์ฑ๋ถํฐ ๊ณ์ฝ๊น์ง ์ ๊ณผ์ ๊ด๋ฆฌ
- ๊ณ ๊ฐ๋ณ ์ต์ ํ๋ ์ฝํ ์ธ ์ ๊ณต
10. ์์ฐ
https://motion-brochure-client.s3.us-east-1.amazonaws.com/index.html
https://arc6-787585086301.us-west1.run.app/

๐ 9. ๋ง๋ฌด๋ฆฌ
๊ธฐ์ ์ ์ธก๋ฉด
- ์ต์ AI ๋ชจ๋ธ๊ณผ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ํ์ฉํ ์์คํ ๊ตฌ์ถ
- ์ด๊ธฐ ๋ฐ์ํ๋ ๋๊ธฐ์ฑ ๋ฐ ํ์์์ ๋ฌธ์ ๋ฅผ ๋จ๊ณ์ ์ผ๋ก ํด๊ฒฐ
- ์น ๋ธ๋ผ์ฐ์ ์ฉ HTML๊ณผ ์ด๋ฉ์ผ์ฉ HTML์ ์ฐจ์ด์ ๋ฐ๊ฒฌ
AWS ์๋น์ค ํน์ฑ
- Bedrock API ์ค๋กํ๋ง ๋ฌธ์ ๋ฅผ ํตํด ์๋น์ค ์ ํ ์ฌํญ ํ์
- ์ฌ์ ํ ์คํธ์ ๋ถํ ๋ถ์ฐ ๊ณํ์ ์ค์์ฑ ํ์ธ
- AWS ๋ด ๋๊ธฐ ๋ฐ ๋น๋๊ธฐ ์์คํ
์์ ์ํ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ ๊ฒฝํ
๋ญ๋ ์ฝ์ง ์์
Thank you
AI ๊ธฐ์ ๊ณผ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ํ์ฉํ์ฌ BMW ๋์งํธ ๊ฐ์ธํ ๋ธ๋ก์์ด ์์คํ
์ ๊ตฌํํ์ต๋๋ค.
๊ฐ๋ฐ ๊ณผ์ ์์ ์ฌ๋ฌ ๊ธฐ์ ์ ๋์ ๊ณผ ๋ฌธ์ ์ ๋ค์ ๋ง์ฃผํ์ง๋ง, ํ์๋ค์ ํ๋ ฅ๊ณผ ์ง์์ ์ธ ๊ฐ์ ์ ํตํด ํด๊ฒฐํ ์ ์์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.


๐
ํ๋ก์ ํธ ์๋ฃ์ผ: 2025๋
7์ 8์ผ
โฑ๏ธ ์ด ๊ฐ๋ฐ ๊ธฐ๊ฐ: 14์ผ
๐โโ๏ธ ์ฐธ์ฌ ์ธ์: 4๋ช
(์ดํธ์ญ, ๊น๋ํ, ๋ฐ๋ฏฟ์, ์ ๋ํ)
๐ ๏ธ ์ฃผ์ ๊ธฐ์ : AWS Lambda, Bedrock, SQS, S3, SES, Python, JavaScript