2022. 4. 3. 18:06ใAmazon Web Service
https://aws.amazon.com/ko/getting-started/hands-on/build-web-app-s3-lambda-api-gateway-dynamodb/
์ ์ฒด์ ์ธ ์ํคํ ์ฒ
1. ๊ธฐ๋ณธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ
โ๏ธ ์์ฝ: AWS Amplify ์ฝ์์ ํตํด ์น ์ฑ์ ์ํ ์ ์ ๋ฆฌ์์ค ๋ฐฐํฌ
๐ซฃ๋ค์ด๊ฐ๊ธฐ ์ ์ฉ์ด ์ ๋ฆฌ
์ ์ ์น๊ณผ ๋์ ์น์ ์ฐจ์ด
์ ์ ์น ์ฌ์ดํธ: ์ด๋ฏธ ๊ธฐ์กด์ ์ ์ฅ๋์ด ์๋ html ๋ฌธ์๋ฅผ ๋ณ๊ฒฝ ์์ด ๊ทธ๋๋ก ๋ณด์ฌ์ค๋ค.
example
<!DOCTYPE html>
<html>
<head>
<title>test page</title>
</head>
<body>
<h3>Test page</h3><hr>
<p>Hello, new page!</p>
</body>
</html>
๋์ ์น ์ฌ์ดํธ: ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ํญ๋ชฉ๋ค์ ์ ์ฉํ html ๋ฌธ์๋ฅผ ๋ณด์ฌ์ค๋ค.
์ดํดํ๊ธฐ ์ข์ ๋ธ๋ก๊ทธ ๊ธ
<๋์ ์น ์ฌ์ดํธ ์ข ๋ฅ>
- Client Side Rendering(CSR):
ํด๋ผ์ด์ธํธ ์ชฝ์์ HTML์ ์์ฑํ๋ ๋ฐฉ๋ฒ. ์๋ฒ๋ json ํ์ผ๋ง ์ ์ก. ๋ด ํฌ๋กค๋ฌ๋ค์ด JS์ ์ฝ์ง ๋ชปํด์ ๊ฒ์๋์ง ์์ ์ ์์.- Server Side Rendering(SSR):
์๋ฒ ์ชฝ์์ ์ด๋ฏธ ์์ฑ๋ HTML์ ๋ณด๋ด์ฃผ๋ ๋ฐฉ๋ฒ. ์ ์์ฒญ๋ง๋ค ์๋ก ๊ณ ์นจ.- CSR + SSR
ํด๋ผ์ด์ธํธ ์ชฝ์์ Ajax ์์ฒญ -> ์๋ฒ์์ ๋ฐ์ดํฐ ์ ์ก -> HTML ์์ฑ(์ด ๋ฐฉ๋ฒ์ ๋ํด์๋ ์กฐ๊ธ ์๋ฆฌ์กํ๋ค)
what is API?
๋์์ + ์ค๋ช ์ด ๊ฐ์ด ์๋ ์ ์ฉํ ๊ธ
API๋ ์จ์ดํฐ๋ค.
๋๋ ํด๋ผ์ด์ธํธ๋ก, ๋ ์คํ ๋์ ์๋์ด๋ผ๊ณ ํ ์ ์๋ค. ํด๋ผ์ด์ธํธ๋ ๋ฉ๋ด๋ฅผ ๊ณ ๋ฅผ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์๋๋ค์ ์ง์ ์ผ์ด๋์ ์ฃผ๋ฐฉ์ ์ฃผ๋ฌธ์ ์ ์ํ๊ฑฐ๋ ์ฃผ๋ฐฉ์์ ์์์ ๋ฐ์์ฌ ์ ์๋ค. ๋ด๊ฐ ๊ฒฝ์์ฌ ๋ ์คํ ๋์ ์ํ๋ผ๋ฉด ํด๋น ์ฃผ๋ฐฉ์์ ๋ ์ํผ๋ฅผ ํ์น ์๋ ์๊ณ , ์ผ๋ฐ์ธ์ด๋๋ผ๋ ๊ดํ ์ฃผ๋ฐฉ์์ ์ด๋ฌผ์ฉก๊ฑฐ๋ฆฌ๋ฉฐ ๋ฐฉํด๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.(๋๋ ์ฃผ๋ฐฉ์ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฅด๋๊น!)
์ด๋ ์ฐ๋ฆฌ๋ ์จ์ดํฐ๋ผ๋ ์๋ก์ด ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค. ์ฐ๋ฆฌ๋ ํธ์ํ ์์์ ์ฃผ๋ฌธ์ ํ๊ณ , ์จ์ดํฐ๋ ๋ฐ์ ์ฃผ๋ฌธ์ ์ฃผ๋ฐฉ์ผ๋ก ๊ฐ์ ธ๊ฐ๋ค. ์์์ด ์๋ฃ๋๋ฉด ๊ทธ ์์์ ์ฐ๋ฆฌ์๊ฒ ๋ค์ ๊ฐ์ ธ๋ค์ค๋ค.
์ฆ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ค ์๊ธฐ ์๋ฆฌ์์ ๊ฐ๋งํ ์๊ณ , ์จ์ดํฐ๋ผ๋ 'API'๋ง ์ฐ๋ฆฌ ๋ ์ฌ์ด๋ฅผ ์๋ค ๊ฐ๋ค ํ๋ฉฐ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ฃผ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์๊น๋ ๋งํ๋ฏ ํด๋ผ์ด์ธํธ๊ฐ ๊ฒฝ์์ฌ ๋ ์คํ ๋ ์ํ๋ผ์ ์ฃผ๋ฐฉ์ ๋ค์ด์ ๋ ์ํผ๋ฅผ ํ์ณ๊ฐ๊ณ ์ถ์ดํ ์๋ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋๋์ฑ API๊ฐ ํ์ํ ๊ฒ์ด๋ค. ์ ๋ง๋ก ํ์ํ ์ ๋ณด๋ง ์ ๊ณตํด์ฃผ๋ ๊ฒ! ๊ทธ๊ฒ์ API๋ฅผ ํตํด ์ ๋ณด(์ฐ๋ฆฌ์ ์์์์๋ ์์)์ ์ ๋ฌํ๋ ํ์ฌ ์ ์ฅ์์ ๊ต์ฅํ ์ค์ํ๋ค.
๊ทธ๋์ API๊ฐ ์ด๋ ๊ฒ ์ ๋ช , ์ ๋งํ ๊ฒ์ด๋ค!
1) index.html ์์ฑ ๋ค์ HTML ํ์ผ์ ์์ถํด ZIPํ์ผ๋ก ๋ง๋ค๊ธฐ
2) Amplify ์ฝ์ ๋ก๊ทธ์ธ
3) Amplify Hosting - ์น ์ฑ ํธ์คํ ์์ํ๊ธฐ
4) 'Git ๊ณต๊ธ์ ์์ด ๋ฐฐํฌ' -> ์๊น ๋ง๋ค์ด ๋ zip ํ์ผ ์ ๋ก๋
5) ์ฃผ์ด์ง ๋๋ฉ์ธ์ ๋งํฌ๋ก ๋ค์ด๊ฐ๋ฉด 'Hello Word'! :D
2. ์๋ฒ๋ฆฌ์ค ํจ์ ์์ฑ(AWS Lambda)
โ๏ธ ์์ฝ: Python์ผ๋ก Lambdaํจ์ ์์ฑ ํ ํ ์คํธ
๐ซฃ๋ค์ด๊ฐ๊ธฐ ์ ์ฉ์ด ์ ๋ฆฌ
Lambda ํจ์์ ์ฅ์ ๊ณผ ๋จ์
Lambda ํจ์๋ '์จ๋๋งจ๋'๋ก ์คํ๋๋ ์ฝ๋๋ค. ์ฆ, demand๊ฐ ์์ด์ผ ์คํ๋๋ค.
๋๋ค ํจ์๋ ํ์์๋ ํด์์ ์ทจํ๊ณ ์๋ค.
๊ทธ๋ฌ๋ค ํด๋ผ์ด์ธํธ๊ฐ ๋๋ค ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด๊ฒ ๋๋ฉด, ๊ทธ์ ์์ผ ์ผ์ด๋์ ํจ์๊ฐ ์ผ์ ํ๊ฒ ๋๋ค.
์ด๋ฐ ํน์ง์ ๋ช ํํ ์ฅ๋จ์ ์ด ์๋ค.
์ฅ์ ์ ์๊ธ์ด ์ ๊ฒ ๋์จ๋ค๋ ๊ฒ. ๋๊ตฐ๊ฐ์ ์์ฒญ์ด ์์๋๋ง ์๋ํ๋ ๊ณ์ํด์ ์ผ์ ธ ์์ด์ผ ํ๋ EC2 ์ธ์คํด์ค๋ค๊ณผ ๋ค๋ฅด๋ค.
๋จ์ ์ ์์ฒญ์ด ๋ค์ด์์ผ ์ผ์ง๋ค๋ ๊ฒ. ๊ณ์ํด์ ๋๊ธฐ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ์ผ ์ฒ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋ ์๋ฒ์ ๋ค๋ฅด๊ฒ ๋๋ค ํจ์๋ awakeํ๋ ์๊ฐ๊ณผ ์ฒ๋ฆฌํ๋ ์๊ฐ์ ๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์ delay๊ฐ ์กฐ๊ธ ๋ ์๋ค. (ํ์ง๋ง ์์ฒญ๋.. ์๋น์ค๊ฐ ์๋ ์ด์ ํฌ๊ฒ ๋๊ปด์ง์ง ์๋๋ค๊ณ ํ๋๋ฐ ์ด๊ฑด ์ง์ ํ ์คํธ ํด๋ณด์ง ์์์ ์ ๋ชจ๋ฅด๊ฒ ๋ค๐ )
1) Lamda ์ฝ์ ๋ก๊ทธ์ธ -> 'ํจ์ ์์ฑ'
- ์๋ก ์์ฑ
- ํจ์ ์ด๋ฆ: hello_world_func
- ๋ฐํ์: Python 3.9
- ์ํคํ ์ฒ: x86_64
์ํคํ ์ฒ๊ฐ ๋ ์ข ๋ฅ์ธ ์ด์ .. ์ ํ ๊ธฐ์ค?
- arm64 - AWS Graviton2 ํ๋ก์ธ์์ฉ 64๋นํธ ARM ์ํคํ ์ฒ์ ๋๋ค.
- x86_64 - x86 ๊ธฐ๋ฐ ํ๋ก์ธ์์ฉ 64๋นํธ x86 ์ํคํ ์ฒ์ ๋๋ค. ๊ธฐ๋ณธ ์ํคํ ์ฒ๋ x86_64์ ๋๋ค.
arm64 ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ ํจ์๋ x86 ๊ธฐ๋ฐ CPU์์ ์คํ๋๋ ๋๋ฑํ ํจ์์ ๋นํด GB/s๋น ๋น์ฉ์ด ์ ๋ ดํฉ๋๋ค.
๊ธฐ์กด ํจ์๊ฐ x86 ๊ธฐ๋ฐ CPU ๋ช ๋ น ์งํฉ์ ๋ํ ์ข ์์ฑ์ ๊ฐ๋ ๊ฒฝ์ฐ ARM ๋ช ๋ น ์งํฉ์ ๋ํด ์ข ์์ฑ์ ๋ค์ ์ปดํ์ผํ์ฌ arm64 ์ํคํ ์ฒ์ฉ ๋ฐฐํฌ ํจํค์ง๋ฅผ ์๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค.
-AWS์์ ์ฌ์ฉ cmd + c cmd + v
2) ํจ์ ์ฝ๋ ์์ฑ
์์ฑํ ๋ค Deploy ๋ฒํผ ๋๋ฌ์ฃผ๊ธฐ
# import the JSON utility package since we will be working with a JSON object
import json
# define the handler function that the Lambda service will use an entry point
def lambda_handler(event, context):
# extract values from the event object we got from the Lambda service
name = event['firstName'] +' '+ event['lastName']
# return a properly formatted JSON object
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda, ' + name)
}
์ฝ๋์ ์ฃผ์์ ๋ณด๋ฉด์ ์ดํดํ ๋ฐ๋ก๋,
lambda_handler๋ผ๋ ํจ์๋ event๋ผ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ ๊ฒ์ด๊ณ , ์ด event ์๋ firstName์ด๋ผ๋ ์ธ์์ lastName์ด๋ผ๋ ์ธ์๊ฐ ์์ด์ ํด๋น ์ธ์์ ๊ฐ์ name์ ์ ์ฅ.
๊ทธ๋ฆฌ๊ณ status code 200๊ณผ 'Hello from lambda (name)'์ json ํํ๋ก ๋ฆฌํด!
3) ์๋ก ์์ฑํ ํจ์ Test ํด๋ณด๊ธฐ
ํด๋น ์ฝ๋ ์์ ์ฃผํฉ์ ๋ฒํผ 'Test'์ ๋๋ฅด๋ฉด 'ํ ์คํธ ์ด๋ฒคํธ ๊ตฌ์ฑ'์ด๋ผ๋ ํ๋ฉด์ด ๋ฌ๋ค
์ด๋ฒคํธ ์ด๋ฆ, ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ Json์ ๊ฐ๋ตํ๊ฒ ์ ๋ ฅํด์ค ๋ค์ ์ ์ฅ!
์ ์ฅ์ ์๋ฃํ ๋ค์ ํ์ด์ง ์๋จ์์ [์ฝ๋] ์์ ์๋ [ํ ์คํธ]๋ก ๋์ด๊ฐ์ ํ ์คํธ ๋ฒํผ์ ๋๋ฌ๋ณด๋ฉด
์ด๋ฐ์์ผ๋ก return ๊ฐ, ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ๋ชจ๋ ํ์ธํ ์ ์๋ค
3. ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์น ์ฑ์ ์ฐ๊ฒฐ
โ๏ธ ์์ฝ: API Gateway์ ํตํด API ์์ฑ, HTTP ๋ฉ์๋ ์ ์, Lambdaํจ์ ํธ๋ฆฌ๊ฑฐ, Management Console์์ API ํ ์คํธ
๐ซฃ๋ค์ด๊ฐ๊ธฐ ์ ์ฉ์ด ์ ๋ฆฌ
what is RESTful API?
(ํญ์ ์ ํํ ์ ์๋ฅผ ๋ชจ๋ฅด๊ณ ์ง๋๊ฐ.... ์ด ๊ธฐํ๋ฅผ ํตํด ๋๋์ด..)
REST API๋ ์ง์ ๋ ํ์์ ๋ง์ถฐ์ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ!
CRUD(Create, Read, Update, Delete)๊ฐ REST API์์๋
Create - POST
Read - GET
Update - PUT
Delete - DELETE
๋ก ๋ฐ๋๊ฒ ๋๋ ๊ฒ.
๊ฒฐ๊ตญ REST API๋ผ๋ ์ง์ ๋ ํ์ ํ์ API์ ํตํด ๋๊ตฌ๋ ์ฝ๊ฒ ์~ ์ด๋ฐ๊ฑธ ์์ฒญํ๊ตฌ๋~ ๋ฅผ ์ ์ ์๊ณ API์ ๊ธฐ๋ณธ ๊ฐ๋ ์ฒ๋ผ
์๋ฒ์ ํต์ ํ๋ฉฐ ์ํ๋ ๊ฒ์ ์ป์ ์ ์๋ค.
1) API Gateway ์ฝ์ -> ์ REST API ์์ฑ
- REST
- ์ API; ์ต์ ํ๋ ์์ง
2) ์ ๋ฆฌ์์ค ๋ฐ ๋ฉ์๋ ์์ฑ
- ๋ฆฌ์์ค > ์์ > ๋ฉ์๋ ์์ฑ > ๋๋กญ ๋ค์ด์์ POST ์ ํ > Lambda ํจ์ ์ ํ(์๊น ๋ง๋ ํจ์ ์ด๋ฆ ๊ธฐ์ . hello_world_func)
- ์์ > CORS ํ์ฑํ > 'CORS ํ์ฑํ ๋ฐ ๊ธฐ์กด์ CORS ํค๋ ๋์ฒด' ํด๋ฆญ
3) API ๋ฐฐํฌ
- ์์ > API ๋ฐฐํฌ
- ๋ฐฐํฌ ์คํ ์ด์ง > ์ ์คํ ์ด์ง
- ๋จ๊ณ ์ด๋ฆ; dev
- URL ํธ์ถ ์์ ์๋ URL ๋ณต์ฌํ๊ณ ์ ์ฅ(์ถํ ๋จ๊ณ์ ํ์)
4) API ๊ฒ์ฆ
- ๋ฆฌ์์ค > POST ํด๋ฆญ > ๋ฒ๊ฐ ๋ชจ์ ์์ด์ฝ ํด๋ฆญ
- ์์ฒญ ๋ณธ๋ฌธ์ ๋ด์ฉ ๊ธฐ์ , ํ ์คํธ ์คํ
{
"firstName":"Grace",
"lastName":"Hopper"
}
4. ๋ฐ์ดํฐ ํ ์ด๋ธ ์์ฑ
โ๏ธ ์์ฝ: DynamoDB ํ ์ด๋ธ ์์ฑ, IAM์ผ๋ก ์ญํ ๋ถ์ฌ, AWS SDK๋ก ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฐ๊ธฐ
๐ซฃ๋ค์ด๊ฐ๊ธฐ ์ ์ฉ์ด ์ ๋ฆฌ
Amazon DynamoDB
ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค. ์คํค๋ง ์์ฑ ํ์ ์์.
๊ท๋ชจ์ ๊ด๊ณ ์์ด ์ผ์ ํ ์ฑ๋ฅ ์ ๊ณต. ์๋ฒ ๊ด๋ฆฌ ํ์ ์์.
API vs SDK(Software Development Kit)
SDK๋ ์์ด ๋ป ๊ทธ๋๋ก Development Kit์ด๋ค. ์ด๊ฒ์ ๊ฒ ๋ค์ํ ๋๊ตฌ๋ค์ด ํฌํจ๋ ํคํธ์ด๋ค.
์ฆ, API vs SDK๋ณด๋ค๋ SDK์์ API๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ SDK (์ฌ์งํฉ) API ๊ฐ ๋ง๊ฒ ๋ค!
1) DynamoDB ํ ์ด๋ธ ์์ฑ
- ํํฐ์ ํค == ๊ธฐ๋ณธํค: ID
์์ฑ์ด ์๋ฃ๋๋ฉด ํด๋น ํ ์ด๋ธ๋ก ๋ค์ด๊ฐ์ ์ถ๊ฐ์ ๋ณด ๋๋๋ค์ด์์ ARN ๋ณต์ฌ
2) IAM ์ ์ฑ ์์ฑ & ๋๋ค ํจ์์ ์ถ๊ฐ
- IAM ์๋น์ค๋ก ์ ์. ์ญํ ์ ๋ณด๋ฉด ๋ด๊ฐ ์์ฑํ ํจ์์ ๋์ผํ role์ด lamda๊ถํ๊ณผ ํจ๊ป ์์ฑ๋์ด ์๋ค. ์ฌ๊ธฐ๋ก ์ ์!
- ์ธ๋ผ์ธ ์ ์ฑ ์์ฑ: ๋ง์ฐ์ค ์ปค์๋ก ํ์ํด๋ ๊ณณ์ ๋ฐฉ๊ธ ๋ณต์ฌํ ์์ ์ DB ARN์ ๋ฃ์ด์ค๋ค.
3) DynamoDB ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ธ ์ ์๋๋ก Lambda ํจ์ ๊ตฌ์ฑ ์์
๋ค์ ๋๋ค ํจ์๋ก ๋์์์ ์ฝ๋ ์์ค๋ฅผ ์์ !
- ์ฌ๊ธฐ์ dynamodb.Table("๋ณธ์ธ์ํ
์ด๋ธ์ด๋ฆ")
์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
4) TEST
Deploy ์๋ฃํ ํจ์๋ฅผ Testํด๋ณธ๋ค!! ๋๋ค ํ์ด์ง์์ Test์ ์๋ฃํ ๋ค์ ๋ค์ DynamoDB๋ก ๋์์์
ํ
์ด๋ธ์์ ํ ํญ๋ชฉ ํ์
์ ๋๋ฌ๋ณด๋ฉด ๋ฐฉ๊ธ testํ ๊ฒฐ๊ณผ๊ฐ ์ ๋ค์ด๊ฐ ์์์ ํ์ธํ ์ ์๋ค.
5. ๊ธฐ๋ณธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ
1) index.html ์ฝ๋ ์์
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World</title>
<!-- Add some CSS to change client UI -->
<style>
body {
background-color: #232F3E;
}
label, button {
color: #FF9900;
font-family: Arial, Helvetica, sans-serif;
font-size: 20px;
margin-left: 40px;
}
input {
color: #232F3E;
font-family: Arial, Helvetica, sans-serif;
font-size: 20px;
margin-left: 20px;
}
</style>
<script>
// define the callAPI function that takes a first name and last name as parameters
var callAPI = (firstName,lastName)=>{
// instantiate a headers object
var myHeaders = new Headers();
// add content type header to object
myHeaders.append("Content-Type", "application/json");
// using built in JSON utility package turn object to string and store in a variable
var raw = JSON.stringify({"firstName":firstName,"lastName":lastName});
// create a JSON object with parameters for API call and store in a variable
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
// ์๊น 3๋ฒ์์ API ์์ฑ์ ๋ณต์ฌํ URL์ ๋ถ์ฌ์ค๋๋ค!!
fetch("YOUR-API-INVOKE-URL", requestOptions)
.then(response => response.text())
.then(result => alert(JSON.parse(result).body))
.catch(error => console.log('error', error));
}
</script>
</head>
<body>
<form>
<label>First Name :</label>
<input type="text" id="fName">
<label>Last Name :</label>
<input type="text" id="lName">
<!-- set button onClick method to call function we defined passing input values as parameters -->
<button type="button" onclick="callAPI(document.getElementById('fName').value,document.getElementById('lName').value)">Call API</button>
</form>
</body>
</html>
์ฝ๋์์ fetch("YOUR-~") ์ด ๋ถ๋ถ์ ๋ฌธ์์ด์ 3๋ฒ ๋จ๊ณ์์ ๋ณต์ฌํด๋๋ผ๊ณ ํ๋ ๋งํฌ๋ก ๊ต์ฒดํด์ค๋ค.
์๊น ํ๋ ๊ฒ์ฒ๋ผ index.html์ ์์ถํ๊ณ , Amplify ์ฝ์์์ ์ฝ๋ ํ์ผ์ ๊ต์ฒดํด ์ ๋ก๋ํด์ค๋ค.
2) ๐ฅ COMPLETE!
๋๋ฉ์ธ์ ์ ์ํ๋ฉด ์ด๋ฐ ๋ฉ์ง ํ๋ฉด์ด ๋ฌ๋ค!!
๋ด ์ด๋ฆ์ ๋ฃ๊ณ Call API ๋ฒํผ์ ๋๋ฌ์ฃผ๋ฉด~
DynamoDB์ ๋ฐ๋ก ์ ๋ฐ์ดํธ ๋๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ฐ!
์ง์ง์ง์ง
(์ด์ ์๊ธ์ด ๊ฑฑ์ ๋๋๊น ์ญ์ ํ๋ฌ ๊ฐ์ผ์ง..)
'Amazon Web Service' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
AWS์ ๊ด๋ จํ ๋คํธ์ํฌ ๊ธฐ์ด ์ง์ (0) | 2022.06.26 |
---|---|
AWS Cloudwatch๋ก GPU ์ฌ์ฉ ๋ชจ๋ํฐ๋งํ๊ธฐ (0) | 2022.01.24 |