Aws-cli: ๊ณต์‹ AWS CLI Docker ์ด๋ฏธ์ง€ ์ œ๊ณต

์— ๋งŒ๋“  2018๋…„ 04์›” 26์ผ  ยท  28์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: aws/aws-cli

AWS CLI๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ณต์‹ Docker ์ด๋ฏธ์ง€๊ฐ€ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค. Docker Hub์˜ "amazon" ์‚ฌ์šฉ์ž๋Š” ํŠนํžˆ ECS ๋ฐ Elastic Beanstalk์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๋งŒ ํฌํ•จํ•˜๋ฉฐ ์ƒˆ Docker Store์—๋Š” ์•„์ง ๊ณต์‹ Amazon Docker ์ด๋ฏธ์ง€๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Docker Hub์—์„œ "aws cli"๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์ด๋ฏธ์ง€(1๋ฐฑ๋งŒ ๊ฐœ ์ด์ƒ ๋‹ค์šด๋กœ๋“œ)๋Š” Mesosphere์—์„œ ๋งŒ๋“  ์ด ์ด๋ฏธ์ง€์˜€์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ์ž‘์€ Alpine Linux ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ Dockerfile๋งŒ ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์กฐ์‚ฌ๋ฅผ ํ†ตํ•ด ์ด ์กฐ์ง์—์„œ ubuntu-base Dockerfile์ด ์žˆ๋Š” aws-codebuild-docker-images ์ €์žฅ์†Œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ด ์ด๋ฏธ์ง€๋Š” ์ข‹์•„๋ณด์ด๋Š”๋ฐ ์™œ Docker Hub/Store๋กœ ํ‘ธ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์™œ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ด๋ฏธ์ง€๊ฐ€ ํ‘ธ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? Mesosphere aws-cli ์ด๋ฏธ์ง€๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ubuntu-base ์— ๋น„ํ•ด ๋‹จ์ˆœํ•ด์„œ ์ œ๋Œ€๋กœ ์ตœ์ ํ™”๋˜์ง€ ์•Š์•˜๋Š”์ง€ ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ubuntu-base ์ด๋ฏธ์ง€๋Š” Alpine Linux์— ๋น„ํ•ด ์˜ค๋ž˜๋˜๊ณ  ๋ถ€ํ”ผ๊ฐ€ ํฐ Ubuntu 14.04.5๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

TL;
Amazon์—์„œ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  Docker Hub/Store์— ํ‘ธ์‹œํ•˜๋Š” ๊ณต์‹ aws-cli Docker ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” Alpine Linux๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ฃผ์š” ์ตœ์‹  Linux ๋ฐฐํฌํŒ์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

docker run -it amazon/aws-cli

ํŽธ์ง‘ํ•˜๋‹ค

์ด ๋ฌธ์ œ๋Š” ํ˜„์žฌ #3553์—์„œ ์ถ”์ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์ง€์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ๊ทธ ์Šค๋ ˆ๋“œ์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋งˆ๊ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

duplicate guidance service-api

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Jenkins ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๊ฐ™์€ CI/CD ๋„ํ‚น ํ™˜๊ฒฝ์—์„œ๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋นŒ๋“œ์— aws-cli๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋Œ€์‹  ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š” Docker ์ด๋ฏธ์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  28 ๋Œ“๊ธ€

๋งํฌํ•˜๋Š” ์ด๋ฏธ์ง€๋Š” ํ•ด๋‹น ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด CodeBuild ํŒ€์ด ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ํ—ˆ๋ธŒ์— ๊ฒŒ์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉด ์„œ๋น„์Šค ํฌ๋Ÿผ์—์„œ / ์ง€์›์„ ํ†ตํ•ด ์—ฐ๋ฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ CLI์ผ ๋ฟ์ธ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๋Š” ๋ฐ ์–ด๋–ค ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๊ณ  mvp๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ณ  ๋ณต์žกํ•œ ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์น˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ CLI๋Š” ๊ทธ๋ ‡๊ฒŒ ๋ณต์žกํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: install python, install pip, install cli. ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐํฌํŒ์—๋Š” ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ ํŒจํ‚ค์ง€๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๊ตฌ์‹์ผ ์œ„ํ—˜์ด ์žˆ์ง€๋งŒ).

AWS CLI Docker ์ด๋ฏธ์ง€๋Š” Kubernetes ๋ฐฐํฌ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Jenkins ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๊ฐ™์€ CI/CD ๋„ํ‚น ํ™˜๊ฒฝ์—์„œ๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋นŒ๋“œ์— aws-cli๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋Œ€์‹  ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š” Docker ์ด๋ฏธ์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

์˜ˆ ์™€์šฐ ์ด ๋ฌธ์ œ๋ฅผ ์—ฐ ๊ฒƒ์„ ์™„์ „ํžˆ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค ...

๋ชจ๋“  ์ž‘์€ CLI ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์‚ฌ์†Œํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. Dockerfile์˜ apt get ing์€ ํ•ฉ๋ฆฌ์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์š”์ ์€ ์ถ”๊ฐ€ ๋‹จ๊ณ„๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ, Dockerfile FROM ๊ธฐ๋ณธ ๋ฐ๋น„์•ˆ ์ด๋ฏธ์ง€ apt get Python์„ ๋งŒ๋“  ๋‹ค์Œ Python์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...๋˜๋Š” FROM ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @xplorld ๋ฐ @alexandrusavin์ด ์–ธ๊ธ‰ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. Amazon์˜ ๋„์›€ ์—†์ด๋Š” ๊ทน๋ณตํ•  ์ˆ˜ ์—†๋Š” ๋”์ฐํ•œ ์žฅ์• ๋ฌผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ด ์ œ๊ธฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. - ๊ณ ๊ฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” CI ํŒŒ์ดํ”„๋ผ์ธ์—์„œ cloudformation ํ…œํ”Œ๋ฆฟ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋กœ์ปฌ ๊ฐœ๋ฐœ ๋ฐ CLI์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์˜ Python, ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์˜ pip, ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์˜ CLI๋ฅผ ์–ป๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์ง€์—ฐ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. docker run --rm awscli:latest ... ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‘, ์ด ๋ฌธ์ œ๋Š” ํ˜„์žฌ #3553์—์„œ ์ถ”์ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์ง€์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ๊ทธ ์Šค๋ ˆ๋“œ์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋งˆ๊ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Docker๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ๊ณต์‹ Docker ์ด๋ฏธ์ง€๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ์„ ์„ค์น˜ํ•˜๊ณ  pip๋ฅผ ์„ค์น˜ํ•˜๊ณ  cli๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ aws ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  command not found $ ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ ๊ฐ™์€ Dockerfile์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

FROM python:alpine

ARG CLI_VERSION=1.16.86

RUN apk -uv add --no-cache groff jq less && \
    pip install --no-cache-dir awscli==$CLI_VERSION

WORKDIR /aws

CMD sh

๊ทธ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ผ์ด์ง€๋งŒ aws-cli ์˜ ๊ณต์‹ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ํ™•์‹คํžˆ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ CLI์ผ ๋ฟ์ธ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๋Š” ๋ฐ ์–ด๋–ค ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๊ณ  mvp๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ณ  ๋ณต์žกํ•œ ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์น˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ CLI๋Š” ๊ทธ๋ ‡๊ฒŒ ๋ณต์žกํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: install python, install pip, install cli.

๋ฏฟ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ์ง์›์˜ ๋Œ“๊ธ€์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์Šฌํ”„๋‹ค.

์ €๋Š” S3์— ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” K8S Cronjob์„ ์‹คํ–‰ํ•˜๋ ค๋Š” ๋น„์Šทํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ awscli ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์œผ๋ฉด _์ง€๊ธˆ์ฏค์ด๋ฉด ํŽธ๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์š”์ฒญ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ #3553์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋งํฌํ•˜๋Š” ์ด๋ฏธ์ง€๋Š” ํ•ด๋‹น ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด CodeBuild ํŒ€์ด ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ํ—ˆ๋ธŒ์— ๊ฒŒ์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉด ์„œ๋น„์Šค ํฌ๋Ÿผ์—์„œ / ์ง€์›์„ ํ†ตํ•ด ์—ฐ๋ฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ CLI์ผ ๋ฟ์ธ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๋Š” ๋ฐ ์–ด๋–ค ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๊ณ  mvp๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ณ  ๋ณต์žกํ•œ ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์น˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ CLI๋Š” ๊ทธ๋ ‡๊ฒŒ ๋ณต์žกํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: install python, install pip, install cli. ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐํฌํŒ์—๋Š” ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ ํŒจํ‚ค์ง€๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๊ตฌ์‹์ผ ์œ„ํ—˜์ด ์žˆ์ง€๋งŒ).

๊ฐœ์ธ์ ์œผ๋กœ ๋‚ด ์›Œํฌ์Šคํ…Œ์ด์…˜์„ ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€๋กœ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ์ปจํ…Œ์ด๋„ˆํ™”ํ•ฉ๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ๋ชจ์ˆœ๋  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€.

์•ˆ๋…•ํ•˜์„ธ์š” Github์˜ ์‚ฌ๋žŒ๋“ค

๋˜ํ•œ ๋ฐฐํฌ ์ž‘์—… ๊ธฐ๊ฐ„์„ ์ฒญ๊ตฌํ•˜๋Š” CI/CD ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ๋•Œ(์˜ˆ: ์›” ์‹œ๊ฐ„๋‹น $xx.xx ๋“ฑ) ๊ณ„์†ํ•ด์„œ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์—ฌ์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์—†๋Š” ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ ๋‹ค์‹œ ํ•„์š”ํ•œ ๋„๊ตฌ.

์ œ ๊ฒฝ์šฐ์—๋Š” python ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ zip ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ awscli๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋ฉฐ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์—†์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ˆœํžˆ ๋‚ญ๋น„๋œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์‚ฌ์ „ ์„ค์น˜๋œ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ๊ฐ’์„ ๋งค๊ธธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์ œ ๊ฐ awscli ๋ฆด๋ฆฌ์Šค์— ์ž๋™์œผ๋กœ ๋นŒ๋“œ๋œ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โš ๏ธ ๋ฉด์ฑ… ์กฐํ•ญ : ๋‚˜๋Š” ์ €์ž์ž…๋‹ˆ๋‹ค

b4nst ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Bitbucket Pipeline์šฉ์œผ๋กœ Atlassian์—์„œ ๊ตฌ์ถ•ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. DockerHub์— atlassian/pipelines-awscli(https://hub.docker.com/r/atlassian/pipelines-awscli)๋กœ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์ด๊ฒƒ์„ ๊ทธ๋“ค์˜ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@b4nst ๋„์ปค ํ—ˆ๋ธŒ ์ €์žฅ์†Œ๋ฅผ github์— ์—ฐ๊ฒฐํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

์ด๋ฏธ ๋„์ปค ํ—ˆ๋ธŒ ํŽ˜์ด์ง€ ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์‚ฌ๋žŒ๋“ค์ด CI/CD๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ธฐ์—… ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ผ๋ถ€์ธ ๋ฏผ๊ฐํ•œ ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ˆ„๊ฐ€, ๋ฌด์—‡์„ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ๋žŒ๋“ค์€ ์ข‹์€ ์˜๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋”๋ผ๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด์ง€ ์•Š๋Š” ํ•œ ๋Œ€๊ธฐ์—…์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ผ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ„ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ @b4nst ์˜ ๋„์ปค ์ด๋ฏธ์ง€์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ์ •์ƒ์ž…๋‹ˆ๋‹ค. Atlassian์˜ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ์ค‘์— ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ช‡ ๊ฐ€์ง€ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด git์ด ์žˆ๊ณ  ๋ฌด์—‡๋ณด๋‹ค ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  git ์ €์žฅ์†Œ์—์„œ ํ•ญ๋ชฉ์„ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ข‹์€ ์†”๋ฃจ์…˜์€ AWS๊ฐ€ ์ž์ฒด ์ตœ์‹  ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(cli์— ๋Œ€ํ•ด ์‹ ๋ขฐํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์‹ ๋ขฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค). ํ•˜์ง€๋งŒ ํ•œํŽธ์œผ๋กœ๋Š” ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ๋œ ์•…ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํฐ ํšŒ์‚ฌ์—์„œ ์ง€์›ํ•˜๋”๋ผ๋„ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†์œผ๋ฉด awscli์— ๋Œ€ํ•ด Microsoft ๋˜๋Š” Google์„ ์‹ ๋ขฐํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค...)

Dockerhub abdennour/aws ์— ์ง€์†์ ์œผ๋กœ ๋ฐฐํฌํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋ฒ ์ด์ปค๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ค‘ ํ•˜๋‚˜๋Š” AWS ์ด๋ฏธ์ง€ ์ž…๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด .env ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  PR์„ ์—ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์„ค๋ช…์„œ์— amazonlinux์— ๊ธฐ๋ณธ์ ์œผ๋กœ cli๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ๋Š” amazonlinux์šฉ AWS ์ด๋ฏธ์ง€๋„... ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์•„๋งˆ์กด์€ ๋…์ ๊ธฐ์—…์ด๊ณ  ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๊นŒ?

+1

ํ•˜๋‚˜ ์ฐพ๋‹ค๊ฐ€ ์—ฌ๊ธฐ๊นŒ์ง€ ์™”๊ณ  ๋‚˜์ค‘์— ๊ณต์‹ ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ ๋‚˜์ค‘์— ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฐพ๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋ถ™์ด๊ฒ ์Šต๋‹ˆ๋‹ค.

https://hub.docker.com/r/amazon/aws-cli

@Xaeonn ๋งž์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ณต์‹ AWS CLI Docker ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. Amazon ๊ฐœ๋ฐœ์ž๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ด ๋ฌธ์ œ๊ฐ€ ํ˜„์žฌ ์ถ”์ ๋˜๊ณ  ์žˆ๋Š” #3553์—์„œ ์ง€๋‚œ ๋ฐค์— ์ด๊ฒƒ์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ์„ ์„ค์น˜ํ•˜๊ณ  pip๋ฅผ ์„ค์น˜ํ•˜๊ณ  cli๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ aws ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  command not found $ ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

:smile: :laughing: :laughing: ํด๋ž˜์‹ :100: , ํ•ญ์ƒ ๋‚ด ํ•˜๋ฃจ๋ฅผ ๋งŒ๋“ ๋‹ค

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰