1. SDK
SDK(Software Development Kit, ์ํํธ์จ์ด ๊ฐ๋ฐ ํคํธ)- ์ ์ : ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋๊ตฌ์ ์งํฉ
- AWS์์๋ ๋ค์ํ ์ธ์ด์ ํ๋ ์์ํฌ๋ฅผ ์ํ SDK๋ฅผ ์ ๊ณตํ๋ค.
- e.g. JS, Python, PHP, .Net, Ruby, Java, Go, Node.js, C++
- ๋ํ ์น๊ณผ ๋ชจ๋ฐ์ผ ์ฑ์ ์ํ SDK๋ ๋ณ๋๋ก ์ ๊ณตํ๋ค.
- e.g. Web : JS, React, Angular, Vue, Next.js
- e.g. Mobile : Android, IOS, React Native, Ionic, Flutter
- cf. AWS ๊ณต์๋ฌธ์ SDK : https://aws.amazon.com/ko/developer/tools/
2. CLI
CLI (Command Line Interface, ๋ช ๋ นํ ๋๊ตฌ): ํฐ๋ฏธ๋์ ํตํด์ ๋ช ๋ น์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ- AWS์๋ ์ฌ๋ฌ ์ข
๋ฅ์ CLI๊ฐ ์๋ค.
- AWS CLI, PowerShell Tools, EC2 AMI Tools, Elastic Beanstalk CLI
- ECS CLI, Amplify CLI, Serverless Application Model(SAM) CLI, Compilot
- cf. AWS ๋ช ๋ น์ค ๋๊ตฌ
3. (์ค์ต) Node.js์ npm ์ค์น
Node.js LTS ๋ฒ์ ์ ๋ค์ด๋ก๋ํ๋ค.
- https://nodejs.org/en
- npm๋ ๊ฐ์ด ์ค์น๋๋ค.
4. (์ค์ต) Shared Credential ์ค์
Shared Credentials(๊ณต์ ์๊ฒฉ ์ฆ๋ช )- ์ฌ์ฉํ๋ ์ปดํจํฐ์ AWS ์๊ฒฉ ์ฆ๋ช ์ ์ค์ ํจ์ผ๋ก์จ
- ํด๋น ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋์ ๋ณ๋์ ์ค์ ์์ด
- SDK๋ CLI๋ฅผ ์ฌ์ฉํ์ฌ AWS ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค.
- ๊ณต์ ์๊ฒฉ ์ฆ๋ช ์ AWS๋ฅผ ์ฌ์ฉํด์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ์ ๊ฑฐ์ ํ์์
- cf. ๊ณต์ ์๊ฒฉ ์ฆ๋ช ์์ฑ : ๊ณต์ config ๋ฐ credentials ํ์ผ
๋จผ์ ๊ณต์ ์๊ฒฉ ์ฆ๋ช ์ ์ํ IAM ์ฌ์ฉ์๋ฅผ ์์ฑํด์ผ ํ๋ค.
- [IAM] โ ์ผ์ชฝ ๋ฉ๋ด [์ฌ์ฉ์] โ [์ฌ์ฉ์ ์์ฑ] ๋ฒํผ์ ํด๋ฆญ
์ฌ์ฉ์ ์ด๋ฆ: admin- [๋ค์] ๋ฒํผ์ ํด๋ฆญ
- [์ง์ ์ ์ฑ
์ฐ๊ฒฐ] ์ต์
์ ์ ํ.
- ์๋์ ๊ถํ ์ ์ฑ ๋ชฉ๋ก์ด ๋์ค๋๋ฐ, ์ฌ๊ธฐ ๊ฒ์์ฐฝ์ s3full ์ด๋ผ๊ณ ๊ฒ์.
- AmazonS3FullAccess ์ ์ฑ ์ ํด๋ฆญ.
- ์ฒดํฌํ ์ดํ์ [๋ค์] ๋ฒํผ์ ํด๋ฆญ.
- ๋ง์ง๋ง ๋จ๊ณ์์๋ ์์์ ์ค์ ํ ์ ๋ณด๋ฅผ ํ ๋ฒ ๋ ํ์ธํ๋ค.
- ์ด์์ด ์๋ค๋ฉด [์ฌ์ฉ์ ์์ฑ] ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ค.
IAM ์ฌ์ฉ์๊ฐ ์ ์ ์์ฑ๋๋ฉด, ์์ [์ฌ์ฉ์ ๋ณด๊ธฐ]๋ฅผ ํด๋ฆญํด ์ฌ์ฉ์ ์์ธ์ ๋ณด๋ฅผ ๋์จ๋ค.
- ์๋ก์ด ์ก์ธ์ค ํค๋ฅผ ์์ฑํ๊ธฐ ์ํด์ [๋ณด์ ์๊ฒฉ ์ฆ๋ช ] ํญ์ ํด๋ฆญํ๋ค.
- [์ก์ธ์ค ํค ๋ง๋ค๊ธฐ] ๋ฒํผ์ ํด๋ฆญํ๋ค.
- (์ก์ธ์ค ํค ์์ฑ) ํ์ด์ง๊ฐ ๋์จ๋ค.
์ฌ์ฉ ์ฌ๋ก: Command Line Interface(CLI)๋ฅผ ์ ํ- ์์ ๊ถ์ฅ ์ฌํญ์ ์ดํดํ๋ ํ์ธ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ฒดํฌ ํ์
- [๋ค์] ๋ฒํผ์ ํด๋ฆญ
- ํ๊ทธ๋ฅผ ์ค์ ํ๋ ๋จ๊ณ์ธ๋ฐ ๊ฑด๋๋ด๋ค.
- [์ก์ธ์ค ํค ๋ง๋ค๊ธฐ] ๋ฒํผ์ ํด๋ฆญ.
- ์ก์ธ์ค ํค๋ ์ฒ์ ๋ง๋๋ ์์ ์๋ง ํค๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์๋ค.
- [.csv ํ์ผ ๋ค์ด๋ก๋] ๋ฒํผ์ ํด๋ฆญ
- IAM ์ฌ์ฉ์์ ์ก์ธ์ค ํค ๋ชฉ๋ก์ ๋ณด๋ฉด, ์ก์ธ์ค ํค๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด์ ์๋ก ์์ฑํ ์ก์ธ์ค ํค๋ฅผ ์ด์ฉํด์ ๊ณต์ ์๊ฒฉ ์ฆ๋ช ์ ์ค์ ํด์ผ ํ๋ค.
๊ณต์ ์๊ฒฉ ์ฆ๋ช ์ ๊ฐ ์ด์์ฒด์ ๋ณ๋ก ์ฌ์ ์ ์ ํด์ง ์์น์ ํ์ผ ํํ๋ก ๋ง๋ค์ด์ค์ผ ํ๋ค.
- Linux ๋ฐ Mac :
~/.aws/config~/.aws/credentials
- Windows
%USERPROFILE%\.aws\config%USERPROFILE%\.aws\credentials
cf. Config์ Credentials ํ์ผ ๋ ๋ค ์์ฑํ ํ์๋ ์๊ณ ํ๋๋ง ์์ฑํ๋ฉด ๋๋ค.
1$ mkdir ~/.aws2$ cd ~/.aws3$ vim credentials # vim config
์ดํ credentials ํ์ผ์๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ๊ณต์ ์๊ฒฉ ์ฆ๋ช ์ ์์ฑํ๋ฉด ๋๋ค.
1[default]2region = ap-northeast-23aws_access_key_id = ๋ดaws์ก์ธ์คํค4aws_secret_access_key = ๋ด๊ฐ์์ฑํ์ํฌ๋ฆฟํค
์๊น IAM ์ฌ์ฉ์์ accesskey๋ฅผ ์์ฑํ๋ฉด์ ๋ค์ด๋ก๋ ๋ฐ์ CSV ํ์ผ์ ์ด์ด์,
- accesskey ID์ secret accesskey๋ฅผ ๋ณต์ฌํด์ ๋ถ์ฌ ๋ฃ์ด์ค๋ค.
- ํ์ผ์ ๋ชจ๋ ์์ฑํ๋ค๋ฉด, ๋ช
๋ น ๋ชจ๋์์
:wq๋ฅผ ์ ๋ ฅํด์ ์ ์ฅํ๊ณ ๋๊ฐ๋ค.
5. (์ค์ต) AWS SDK for JS
๋ฐํํ๋ฉด์ aws๋ผ๋ ํด๋๋ฅผ ๋ง๋ ๋ค. ๊ทธ ํ์ผ์ vscode ํฐ๋ฏธ๋๋ก ์ฐ๋ค.
1npm init -y23# s3๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ AWS SDK ํจํค์ง ์ค์น4npm install --save @aws-sdk/client-s3
package.json ํ์ผ์ type:module์ ์ถ๊ฐํ๋ค.
1{2"name": "aws",3"version": "1.0.0",4"description": "",5"main": "index.js",6"scripts": {7"test": "echo \"Error: no test specified\" && exit 1"8},9"keywords": [],10"author": "",11"license": "ISC",12"dependencies": {13"@aws-sdk/client-s3": "^3.490.0"14},15"type": "module"16}
- type์ module๋ก ํด์ฃผ๋ฉด Node.js์์ ECMA ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์ฌ์ฉ ๊ฐ๋ฅ
index.js ํ์ผ์ ํ๋ ๋ง๋ ๋ค.
1import { CreateBucketCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3'23export async function main() {4const s3Client = new S3Client({})56// S3 ๋ฒํท ์์ฑ7const bucketName = '์์ ์ ๋ฒํท ์ด๋ฆ์ ์ ๋ ฅ'8await s3Client.send(9new CreateBucketCommand({10Bucket: bucketName,11}),12)1314// S3 ๋ฒํท์ ํ์ผ ์ ๋ก๋15await s3Client.send(16new PutObjectCommand({17Bucket: bucketName,18Key: 'hello.txt',19Body: 'Hello, JavaScript SDK!',20}),21)22}
AWS SDK๋ฅผ ์ฌ์ฉํด์ S3 ๋ฒํท์ ์์ฑํ๊ณ ๋ฒํท์ ํ์ผ์ ์ ๋ก๋ํ๋ ์ฝ๋์ด๋ค.
1node index.js
์ ๋ช ๋ น์ด๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋ฉด, AWS ์ฝ์ S3 ํ์ด์ง์ ์๋ก ๋ฒํท์ด ์์ฑ๋๋ค.
- ๊ทธ๋ฌ๋ฉด ๋ด๋ถ์
hello.txt๋ผ๋ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ค.- cf. ์์ฑํ ์ฝ๋๋ก ์ ๋ก๋๋ ๊ฐ์ฒด๋ค.
- ๊ฐ์ฒด๋ฅผ ํด๋ฆญํด์ ๋ค์ด๋ก๋ ๋ฐ์๋ณด๋ฉด, ์ฝ๋์์ ์์ฑํ ๋ด์ฉ์ด ์ ๋์จ๋ค.
- cf. ๋ง์ฝ ์๋ฌ ๋ฉ์์ง๊ฐ ๋์จ๋ค๋ฉด,
- ๊ณต์ ์๊ฒฉ ์ฆ๋ช ์ด ์ ๋๋ก ์ค์ ๋์ด์์ง ์๊ฑฐ๋, ์ฝ๋ ์์ ์ค๋ฅ๊ฐ ์๋ ๊ฒ
6. (์ค์ต) AWS CLI ์ค์น ๋ฐ ์ฌ์ฉ
- cf. ์ต์ ๋ฒ์ ์ AWS CLI ์ค์น ๋๋ ์ ๋ฐ์ดํธ ๊ฐ์ด๋
- ์ ๋งํฌ๋ฅผ ๊ฐ๋ณด๋ฉด, ๊ฐ ์ด์์ฒด์ ๋ณ๋ก AWS CLI๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด ๋์์๋ค.
AWS CLI ์ค์น๊ฐ ์๋ฃ๋ ์ดํ ํฐ๋ฏธ๋์ ์ฐ๋ค.
1# ์ ์ค์น๋์๋์ง ๋ฒ์ ํ์ธ2$ aws --version34# S3 ๋ฒํท ๋ชฉ๋ก ์ถ๋ ฅ5$ aws s3 ls67# S3 ์ ๋ฒํท ์์ฑ (๋ฒํท์ด๋ฆ์ ๊ณ ์ ํ ์ด๋ฆ์ผ๋ก ์ ๋ ฅ)8# mb (make bucket์ ์ฝ์)9$ aws s3 mb s3://<๋ฒํท์ด๋ฆ>
๊ฐ๋จํ hello.txt ํ์ผ์ ๋ง๋ ๋ค. ๋ด์ฉ์ ์๋ฌด๋ ๊ฒ ์
๋ ฅํ๋ฉด ๋๋ค.
1# S3 ๋ฒํท์ ํ์ผ ์ ๋ก๋2# cp (copy์ ์ฝ์)3$ aws s3 cp hello.txt s3://<๋ฒํท์ด๋ฆ>45# S3 ๋ฒํท ์ญ์ (๋ฒํท์ ๋น์ด์์ด์ผ๋ง ์ญ์ ๊ฐ๋ฅ)6# rb (remove bucket์ ์ฝ์)7# force ์ต์ : ๊ฐ์ ๋ก ์งํ8$ aws s3 rb --force hello.txt s3://<๋ฒํท์ด๋ฆ>
6.1 AWS CLI Command Ref
- https://awscli.amazonaws.com/v2/documentation/api/latest/reference/index.html
- AWS CLI์๋ ๊ฐ ์๋น์ค๋ณ๋ก ์๋ง์ ๋ช ๋ น์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ธ์ฐ๋๊ฒ ๋ถ๊ฐ๋ฅ.
- ๊ทธ๋์ ํ์ํ ๋๋ง๋ค ๋ฌธ์๋ฅผ ๋ณด๊ณ ๋ช ๋ น์ด๋ฅผ ์ฐพ์์ ์ฌ์ฉํ์.