Aws-cli: Cloudformation ์™ธ๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜ ํŒŒ์ผ์€ YAML ํŒŒ์ผ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 11์›” 03์ผ  ยท  143์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: aws/aws-cli

aws-cli๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์™ธ๋ถ€ yaml ํŒŒ์ผ(dev.yaml)์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋งค๊ฐœ๋ณ€์ˆ˜ ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

aws cloudformation update-stack --stack-name test --template-body file://./api-test.yaml --parameters file://./dev.yaml

dev.yaml ์—๋Š” ๋‹ค์Œ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

---
- ParameterKey: APICacheClusterSize
  ParameterValue: '1.6'

๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ์—…๋ฐ์ดํŠธ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Error parsing parameter '--parameters': Expected: '=', received: '-' for input:

---
- ParameterKey: APICacheClusterSize
^
  ParameterValue: '1.6'

์•„๋ž˜์™€ ๊ฐ™์€ ์ปจํ…์ŠคํŠธ๋กœ JSON ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  dev.yaml ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

[
  {
    "ParameterKey": "APICacheClusterSize",
    "ParameterValue": "1.6"
  }
]

๊ทธ๋ ‡๋‹ค๋ฉด aws cloudformation์˜ ์™ธ๋ถ€ ํŒŒ๋ผ๋ฏธํ„ฐ ํŒŒ์ผ์€ YAML ํŒŒ์ผ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด...?

feature-request

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

์ด ๊ธฐ๋Šฅ ์š”์ฒญ์„ ๋‘ ๋ฒˆ์งธ๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์•ˆ๋…•ํ•˜์„ธ์š”, ํ˜„์žฌ ๋ช…๋ น์ค„ ์ธ์ˆ˜์˜ ์ผ๋ถ€๋กœ YAML์„ ์ง€์›ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์–ด๋–ป๊ฒŒ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์„ ๊ธฐ๋Šฅ ์š”์ฒญ์œผ๋กœ ํ‘œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

--parameters์— ์ œ๊ณตํ•œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ๋กœ๋“œ๋˜๊ณ  ์ธ์ˆ˜๋กœ ์ง์ ‘ ๋คํ”„๋˜๋ฏ€๋กœ ํŒŒ์ผ ๋‚ด์šฉ์€ ๋‘ ๊ฐ€์ง€ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๋กœ๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•ฝ์‹ ๊ตฌ๋ฌธ:
ParameterKey=string,ParameterValue=string,UsePreviousValue=boolean
๋˜๋Š” JSON ๊ตฌ๋ฌธ:

[
    {
         "ParameterKey": "string",
         "ParameterValue": "string",
         "UsePreviousValue": true|false
     }
]

์ด ๊ธฐ๋Šฅ ์š”์ฒญ์„ ๋‘ ๋ฒˆ์งธ๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ๋‘ ๋ฒˆ์งธ ํ• ๊ฑฐ์•ผ

+1

์ œ๋ฐœ. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

+1

์ ˆ๋Œ€์ ์œผ๋กœ +1

--template-body ์—๋Š” YAML ํ˜•์‹ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€๋งŒ --parameters ์—๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” +1์€ ์–ด์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘

+1

+1

+1

yaml์—์„œ ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ yaml์—์„œ๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด ๊ธฐ๋Šฅ์€ ํ•„์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

+1

+100

+1

+100

+1

" https://gist.github.com/mbailey/2f7c878eed123cab6fb125117f35aecc
"
" yamlise - vim์—์„œ JSON ํŒŒ์ผ์„ ํŽธ์ง‘ํ•  ๋•Œ YAML์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
"
" JSON ๊ณตํฌ์ฆ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.
" ๋ชจ๋“  ์‹œ๋„๊ฐ€ JSON์„ ๋งˆ์Šคํ„ฐํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
" ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. http://www.json.org/
"
"์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„ˆ๋ฌด ๋Šฆ์ง€ ์•Š์•˜์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค!
" '์ œ๋ฐœ. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.'
" https://github.com/aws/aws-cli/issues/2275#issuecomment -277829948
"
" ์„ค์น˜
" =============
" 1. cfn-flip ์„ค์น˜ https://github.com/awslabs/aws-cfn-template-flip
" 2. ์ด ํŒŒ์ผ์„ ~/.vimrc์— ํฌํ•จํ•˜์‹ญ์‹œ์˜ค.
" 3. vim cloudformation-params.json
" ์ด์ œ ๋‹น์‹ ์ด ๊ฐˆ๋งํ•˜๋Š” ์ฐธ๋งˆ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
" 4. :wq
" ์ด์ œ ํŒŒ์ผ์— Amazon CLI๊ฐ€ ์˜ˆ์ƒํ•˜๋Š” JSON์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
"
:augroup yamlise
: ์ž๋™ ๋ช…๋ น!
: autocmd BufReadPost,FileReadPost *.json '[,']!cfn-flip
: autocmd BufWritePre,FileWritePre *.json '[,']!cfn-flip
: autocmd FileAppendPre *.json '[,']!cfn-flip
:augroup END

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+999

+1

+1

+1

+1

+2

+1

+1

+1

+1

+1

+1

+1

+10000000

+1

+์ •๋ณด

+1

+1

+1

+1

+1

๋‹ค์Œ์€ Bash ํ”„๋กœ์„ธ์Šค ๋Œ€์ฒด ๋ฐ cfn-flip ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
aws cloudformation ... --parameters file://<(cfn-flip parameters.yml)

+1

+1

++

+0.5

+1

++

+1!

ํ…œํ”Œ๋ฆฟ์ด YAML์— ์žˆ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ JSON์— ์žˆ๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒํ•œ ๋ˆ„๋ฝ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ AWS์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค....์ œ๋ฐœ?

+1

+1

์ข‹์€ ์•„์นจ!

AWS CLI์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์œ„ํ•ด UserVoice ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ณผ์ •์˜ ์ผํ™˜์œผ๋กœ GitHub์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋กœ ๋Œ€ํ™”๋ฅผ ํฌ์„ํ•˜์ง€ ์•Š๊ณ  ๊ฐ€์žฅ ๊ด€์‹ฌ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋” ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ง€์›์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ UserVoice ์ž…๋ฌธ์„œ(์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ): ์•„์ด๋””์–ด๊ฐ€ ๊ฒŒ์‹œ๋œ ํ›„ ์‚ฌ๋žŒ๋“ค์€ ์•„์ด๋””์–ด์— ํˆฌํ‘œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ œํ’ˆ ํŒ€์€ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์ œ์•ˆ์— ์ง์ ‘ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

GitHub์—์„œ ๊ธฐ์กด ๊ธฐ๋Šฅ ์š”์ฒญ์„ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์„ธ์š”!

๊ทธ๋ฆฌ๊ณ  ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ด ๋ฌธ์ œ๋Š” ํ›„๋Œ€๋ฅผ ์œ„ํ•ด GitHub์— ๊ณ„์† ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ ๊ฒŒ์‹œ๋ฌผ์„ UserVoice๋กœ ํ…์ŠคํŠธ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— GitHub ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์˜๊ฒฌ๊ณผ ํ† ๋ก ์„ ๊ณ„์† ์—ผ๋‘์— ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

GitHub๋Š” ๋ฒ„๊ทธ ๋ณด๊ณ ๋ฅผ ์œ„ํ•œ ์ฑ„๋„๋กœ ๋‚จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ, ์ด ๋ฌธ์ œ๋Š” ์ด์ œ https://aws.uservoice.com/forums/598381-aws-command-line-interface ์—์„œ ์ œ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-AWS SDK ๋ฐ ๋„๊ตฌ ํŒ€

์ด ํ•ญ๋ชฉ์€ ํŠนํžˆ UserVoice( https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168310-cloudformation-external-parameter-file-do-not-supp )์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ GitHub ๋ฌธ์ œ์— ๊ธฐ๋Šฅ ์š”์ฒญ์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+100

+1

+1

+1

+1
๊ทธ๋ฆฌ๊ณ  ์ „๋ฐ˜์ ์œผ๋กœ ์ผ๊ด€์„ฑ์„ ๋” ๋†’์ด๋ ค๋ฉด +1000์„ ์ฃผ์„ธ์š” ;)

+1

์ด ๋ฌธ์ œ๋Š” 2๋…„ ์ž…๋‹ˆ๋‹ค ;_;

@matthewflannery ์•„๋‹ˆ์š” , ์‹ค์ œ๋กœ๋Š” 587์ผ์ž…๋‹ˆ๋‹ค.

+1

@Yaowenjie 587/365 = 1.608 ~ 2๋…„

+1

๋” 11!1!1one!!1!11

:+1:

:heavy_plus_sign: :100:

๐Ÿ‘

+1

์ด๋ฒˆ ํ˜ธ์˜ 2์ฃผ๋…„ ๊ธฐ๋…ํ–‰์‚ฌ๊ฐ€ ๋‘ ๋‹ฌ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค ์—ฌ๋Ÿฌ๋ถ„! ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐ŸŽ‰๐ŸŽ‰๐ŸŽŠ๐ŸŽŠ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ

์šฐ๋ฆฌ ํŒ€์€ YAML์— ์ต์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์—(๋ชจ๋“  ํ…œํ”Œ๋ฆฟ์€ YAML์— ์žˆ์Œ) YAML ํŒŒ์ผ์„ json ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ CF์— ์ „๋‹ฌํ•˜๋Š” ์ผ๋ถ€ ์…ธ ์ž๋™ํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ (์ ์–ด๋„ ๋‚˜์—๊ฒŒ) ์ด ๊ธฐ๋Šฅ์ด ์–ผ๋งˆ๋‚˜ ์›ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ณ ๊ฐ์ด ์ด์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์ค‘์‹ฌ์œผ๋กœ ์ž์ฒด ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ๋‹ต์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋˜ํ•œ CloudFormation์—์„œ ์ž‘๋™ํ•˜๋Š” ์ „์ฒด parametersKey/ParamaterValue ๋ฐฉ์‹์€ ์–ด๋ฆฌ์„์€ ๊ฒƒ์ž„์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

YAML์—์„œ CloudFormation ํ…œํ”Œ๋ฆฟ์„ ๊ฐ–๊ณ  JSON์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ํŒŒ์ผ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@Yashswarnkar ์˜ˆ - YAML์˜ ํ…œํ”Œ๋ฆฟ๊ณผ JSON์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ JSON์—๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์ด YAML์— ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  YAML ํŒŒ์ผ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

+1 ๋งค๊ฐœ๋ณ€์ˆ˜ ํŒŒ์ผ์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๊ณ  CLI์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ •๋ง๋กœ ์›ํ•ฉ๋‹ˆ๋‹ค. yaml์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด --parameters์™€ ํ•จ๊ป˜ create-stack CLI ๋ช…๋ น์— ๋Œ€ํ•œ .yaml ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์€ ์•„์ง ์—†๋‚˜์š”?

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ETA๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

+1

๊ฑฐ์˜ 2๋…„ ๋™์•ˆ ์—ฌ์ „ํžˆ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ yaml์ด ์—†์Šต๋‹ˆ๋‹ค... :(

+1

+1

+1

์ด์ œ ๋ณด์•ˆ ๋ฌธ์ž์—ด๊ณผ ๋””์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” SSM์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ AWS ๊ณ„์ •์— ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์น˜ํ•œ ๋‹ค์Œ cloudformation ํ…œํ”Œ๋ฆฟ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค... ๋ˆ„๊ตฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ?

์œ„์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ cfn-flip ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/awslabs/aws-cfn-template-flip

bash์—์„œ - <( ) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ json ํŒŒ์ผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜.yaml ํ‘œ์‹œ

pip install cfn_flip

cat <(cfn-flip parameters.yaml)

cli ๋ช…๋ น์—์„œ <( )์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

aws cloudformation update-stack --stack-name test --template-body file://./api-test.yaml --parameters file://<(cfn-flip parameters.yaml)

+100

์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์ˆ˜์š”๊ฐ€ ๋งŽ์€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋ฐฑ ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์™œ ์ด์— ๋Œ€ํ•œ ์›€์ง์ž„์ด ์—†์—ˆ์Šต๋‹ˆ๊นŒ?

+1
์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๋‚ด์—์„œ JSON์„ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ JSON์€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•ด์•ผ ํ•˜๋Š” ์•…๋ชฝ์ž…๋‹ˆ๋‹ค...

[
    {
        "ParameterKey": "DistributionJSON",
        "ParameterValue": "{\"Account_ID_1\":\"region_1,region_2\",\"Account_ID_2\":\"region_1\"}"
    }
]

๋น„๊ต ๋Œ€์ƒ:

- ParameterKey: DistributionJSON
  ParameterValue: '{"Account_ID_1":"region_1,region_2","Account_ID_2":"region_1"}'

์ž˜? ๋” ์ด์ƒ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๊นŒ?

์ž˜? ๋” ์ด์ƒ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๊นŒ?

์ง„์ •ํ•ด 2019๋…„ 1์›”๋ฟ์ด์•ผ

์ด๋ด, ์ด ์‚ฌ๋žŒ๋“ค์ด PR์— ํ•ฉ๋ฅ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํŒ€์ด ์กฐ์ง ์™ธ๋ถ€์˜ ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ์ •๊ธฐ์ ์œผ๋กœ PR์„ ๋ณ‘ํ•ฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ด ๊ธ€์„ ์“ฐ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชฐ๋ผ. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ์ˆ˜์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ทธ๋“ค์€ ๊ฒฐ๊ตญ ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜์›ํžˆ ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜๊ณ  ๊ทธ๊ฒƒ์— ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์นœ๊ตฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งค๋…„ 'Payameter Fam'(yaml ๋งค๊ฐœ๋ณ€์ˆ˜ fam์—์„œ์™€ ๊ฐ™์ด)์ด๋ผ๋Š” ํšŒ์˜๋ฅผ ๊ฐ–๊ณ  ์—ฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ํ•จ๊ป˜ ๋ชจ์—ฌ ์•ˆํ‹ฐ yaml ํŠธ๋ผ์šฐ๋งˆ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

+1

๐Ÿ‘

+1

+1

3๋…„, API์˜ 90%๊ฐ€ YAML์„ ์‚ฌ์šฉํ•˜๊ณ  ์งœ์ฆ๋‚˜๋Š” +1์ด ๋งŽ๊ณ  AWS๊ฐ€ ๊ณต์„ ๊ธ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

yaml์ด ๊ตฌ์„ฑ ํŒŒ์ผ/ํ•ญ๋ชฉ ์ฃผ์„ ํ•ด์ œ/๊ธฐํƒ€์— ๋Œ€ํ•œ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์ •๋ง ์›ํ•ฉ๋‹ˆ๋‹ค.

+1

2019๋…„ 6์›”์ธ๋ฐ ์™œ AWS์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ์•Š๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋งค๋…„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ๊ณ ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ž ์ •๋ง? ์ด๊ฑธ ์›€์ง์ด๊ฒŒ ํ•ด์ค˜

+1

+1

+1

+1

+1

+1

+1

๊ธฐ๋‹ค๋ฆฌ๋‹ค... ๊ธฐ๋‹ค๋ฆฌ๋‹ค...

์•„์ง ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

์—ฌ์ „ํžˆ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” Json ์ „์šฉ์ž…๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” ์œ ์น˜์›์„ ์‹œ์ž‘ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ฒฐ์†์„ ๋‹ค์ง€๊ณ  Jeff Barr, et. ํŠธ์œ„ํ„ฐ์—์„œ ์•Œ.

์ด๊ฒƒ์€ ์‚ฌ๋ž‘ ์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค

+1

+1

+1

+1
์ด ๋ฐ”์œ„์— ๋ถ€๋”ชํžˆ๋ฉด YAML ๋งค๊ฐœ๋ณ€์ˆ˜ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚ด ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” YAML์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค(์ €๋Š” ์•„๋‹™๋‹ˆ๋‹ค:))

XML ์ง€์›๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? SOAP๋ฅผ ํ†ตํ•ด ์ด๊ฒƒ์„ ์ œ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. AWS ์ง€์›์€ Windows Forms์—์„œ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

+1

+1

2019๋…„ 10์›” 31์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 4:04 Bernie Durfee [email protected]
์ผ๋‹ค:

+1

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aws/aws-cli/issues/2275?email_source=notifications&email_token=AHCULG57Z7SJHTRO43JC6LLQRL6ZPA5CNFSM4CVAW4OKYYY3PNVWWK3TUL52HS4DFVEXG43VMVBW63
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AHCULG3TRJ5FGXG3NOVORBTQRL6ZPANCNFSM4CVAW4OA
.

+1

+1

๋ชจ๋“  ์—…๋ฐ์ดํŠธ :/ ?

+1

+1
id๋Š” cloudformation ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฐ€๋Šฅํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ํŒŒ์ผ์— ์ฃผ์„์„ ๋‹ฌ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋ณผ๋ฅจ์˜ ์Šค๋ƒ…์ƒท ID๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.
-> AutoEnableIO, ์œ ํ˜•, ํฌ๊ธฐ ๋ฐ IOPS ์ด์™ธ์˜ ๋ณผ๋ฅจ ์†์„ฑ์€ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์†์„ฑ์„ ๋‹ค์‹œ ์ด์ „ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์Šคํƒ์„ ๋‹ค์‹œ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ์„ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. aws cloudformation create-stack --stack-name myfirsttest --region us-west-2 --template-body file://testcfn.yml
๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜ '--template-body' ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜: paramfile file://testcfn.yml ์„ ๋กœ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: [Errno 2] ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: 'testcfn.yml'

๋‚ด testcfn.yml ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Description: > Vritika / Udacity project This template deploys a VPC Resources: UdacityVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsHostnames: true

โ€บ aws ssm get-parameters-by-path help                                                                               

# ...

SYNOPSIS
            get-parameters-by-path
          --path <value>
          [--recursive | --no-recursive]
          [--parameter-filters <value>]
          [--with-decryption | --no-with-decryption]
          [--cli-input-json | --cli-input-yaml]
          [--starting-token <value>]
          [--page-size <value>]
          [--max-items <value>]
          [--generate-cli-skeleton <value>]
          [--cli-auto-prompt <value>]

# ...

       --generate-cli-skeleton  (string)  Prints  a  JSON skeleton to standard
       output without sending an API request. If provided with no value or the
       value input, prints a sample input JSON that can be used as an argument
       for --cli-input-json. Similarly, if provided yaml-input it will print a
       sample  input  YAML that can be used with --cli-input-yaml. If provided
       with the value output, it validates the command inputs  and  returns  a
       sample output JSON for that command.

์˜ˆ, yaml ์ง€์›!!!

โ€บ aws ssm get-parameters-by-path --path "/foo/bar/" --recursive --generate-cli-skeleton yaml-input
Path: ''  # [REQUIRED] The hierarchy for the parameter.
Recursive: true # Retrieve all parameters within a hierarchy.
ParameterFilters: # Filters to limit the request results.
- Key: ''  # [REQUIRED] The name of the filter.
  Option: '' # For all filters used with DescribeParameters, valid options include Equals and BeginsWith.
  Values: # The value you want to search for.
  - ''
WithDecryption: true # Retrieve all parameters in a hierarchy with their value decrypted.
MaxResults: 0 # The maximum number of items to return for this call.
NextToken: '' # A token to start the list.

์ด๊ฑฐ ์•„์ง๋„ ์•ˆ๋˜๋Š”๊ฑด๊ฐ€์š”?? ์•„๋‹ˆ๋ฉด ์–ด๋”˜๊ฐ€์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋†“์ณค์Šต๋‹ˆ๊นŒ?

๋งค๊ฐœ๋ณ€์ˆ˜์— .yaml์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
https://github.com/realestate-com-au/stackup

๋‚˜๋Š” AWS๊ฐ€ ์ด ์ฝ”๋“œ๋ฅผ ๊ตฌ๋งคํ•˜๊ณ  ๊ทธ๋“ค์˜ IP๋กœ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด ๋ถ€๋™์‚ฐ ๋ฌธ์„ ๋‘๋“œ๋ ค์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.....

+1

hacky๋Š” ๊ฝค ๋นจ๋ฆฌ ์ง€์ €๋ถ„ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” hacky ๋ฐฉ๋ฒ•์˜ ์—ด๋ ฌํ•œ ํŒฌ์ด ์•„๋‹™๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ params ํŒŒ์ผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด.

s3template.yml

AWSTemplateFormatVersion: '2010-09-09'
Description: create a single S3 bucket
Parameters: 
  BucketName:
    Description: Unique name for bucket.
    Type: String
  AccessControl:
    Description: Access Control of the bucket
    Type: String
    AllowedValues:
      - Private
      - PublicRead

Resources:
  SampleBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName
      AccessControl: !Ref AccessControl

s3template.params

BucketName=sample-unique-bucket-123456
AccessControl=Private

๋‹ฌ๋ฆฌ๋‹ค :
aws cloudformation deploy --template-file ./s3template.yml --stack-name sample-testbucket --region us-east-1 --parameter-overrides $(cat s3template.params)

YAML๊ณผ ๊ฐ™์€ params ํŒŒ์ผ์˜ ๊ฒฝ์šฐ +1์ž…๋‹ˆ๋‹ค. ์™œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋งˆํฌ์—…์„ ํ˜ผํ•ฉํ•˜๋„๋ก ๊ฐ•์š”ํ•ฉ๋‹ˆ๊นŒ?

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