Aws-cli: SignatureDoesNotMatch ์˜ค๋ฅ˜

์— ๋งŒ๋“  2014๋…„ 01์›” 22์ผ  ยท  175์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: aws/aws-cli

ListUsers ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ A ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜(SignatureDoesNotMatch)๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๋ฐ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

confusing-error

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

๋ฐฉ๊ธˆ ๋‚˜์—๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ๋ณด๊ณ ํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‹œ์Šคํ…œ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋–จ์–ด์ง„ ๊ฒฐ๊ณผ์˜€์Šต๋‹ˆ๋‹ค. pool.ntp.org์— ๋Œ€ํ•ด ntpdate๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ˆ˜์ •: ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‹จ๊ณ„๋ฅผ ๋” ์ž˜ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ด ์˜๊ฒฌ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๋ฌธ์ œ๊ฐ€ ์ž๊ฒฉ ์ฆ๋ช… ์ž์ฒด์— ์žˆ๋Š”์ง€ ์•„๋‹ˆ๋ฉด CLI์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ AWS SDK(javascript, ruby, java ๋“ฑ)์—์„œ ์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด https://github.com/jamesls/aws-creds-test์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” python ๋ฐ javascript์šฉ AWS SDK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณต์ œ ํ›„ make install , make test . ์ž๊ฒฉ ์ฆ๋ช…(CLI์™€ ์œ ์‚ฌ)์„ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  sts.GetCallerIdentity API๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

/tmp $ mkdir /tmp/repro-cli-602
/tmp $ cd /tmp/repro-cli-602/
/tmp/repro-cli-602 $ git clone git://github.com/jamesls/aws-creds-test
Cloning into 'aws-creds-test'...
...
/tmp/repro-cli-602 $ cd aws-creds-test/
/tmp/repro-cli-602/aws-creds-test (master u=) $ make install
npm install
[email protected] /private/tmp/repro-cli-602/aws-creds-test
โ”œโ”€โ”ฌ [email protected]
...
pip install -r requirements.txt
Requirement already satisfied: botocore<2.0.0,>=1.5.0 in /usr/local/lib/python2.7/site-packages (from -r requirements.txt (line 1))
...



/tmp/repro-cli-602/aws-creds-test (master u=) $ make test
./test-creds.sh
Testing python...
Access Key:
Secret Access Key:
AKID   hash: 4e7c36343646e1fa7495092bffcd4b9b7dd00f2f5014a189ab81f326e6472a62
AKID length: 20

SAK    hash: 941a655993caccb1a1218883b97a88b6f41762c6d03902f1cdd1e2a5de5fd82e
SAK  length: 40
Successfuly made an AWS request with the provided credentials.

Testing javasript...
Access Key: ********************
Secret Access Key: ****************************************
AKID   hash: 4e7c36343646e1fa7495092bffcd4b9b7dd00f2f5014a189ab81f326e6472a62
AKID length: 20


SAK    hash: 941a655993caccb1a1218883b97a88b6f41762c6d03902f1cdd1e2a5de5fd82e
SAK  length: 40
Sucessfully made an AWS request with the provided credentials.

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ถœ๋ ฅ์„ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์œ„์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ python๊ณผ javascript ๋ชจ๋‘์— ๋Œ€ํ•ด ํ†ต๊ณผํ•˜์ง€๋งŒ CLI๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‹คํŒจํ•˜๋ฉด CLI ๋ฌธ์ œ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ๊ฐ€ python์—์„œ๋Š” ์‹คํŒจํ•˜์ง€๋งŒ javascript์—์„œ๋Š” ํ†ต๊ณผํ•˜๋ฉด botocore(CLI์—์„œ ์‚ฌ์šฉ)์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ„์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ python๊ณผ javascript ๋ชจ๋‘์— ๋Œ€ํ•ด ์‹คํŒจํ•˜๋ฉด ์‹ค์ œ ์ž๊ฒฉ ์ฆ๋ช…์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค.

thomas<strong i="6">@iMac</strong>:~ $ echo $AWS_ACCESS_KEY_ID
AKIAXXXXXXXXXXXXXXXX
thomas<strong i="7">@iMac</strong>:~ $ echo $AWS_SECRET_ACCESS_KEY
abcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+0
thomas<strong i="8">@iMac</strong>:~ $ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
              env    AWS_ACCESS_KEY_ID
              env    AWS_SECRET_ACCESS_KEY
    region                eu-west-1              env    AWS_DEFAULT_REGION

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋‚ด ์ž๊ฒฉ ์ฆ๋ช… ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Jenkins s3 ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‚ด ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ aws-cli์—์„œ ์•„๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

aws s3 cp s3://my-bucket/folder/test.txt test.txt
A client error (Forbidden) occurred when calling the HeadObject operation: Forbidden Completed 1 part(s) with ... file(s) remaining

aws s3api get-object --bucket my-bucket --key folder/test.txt test.txt
A client error (SignatureDoesNotMatch) occurred when calling the GetObject operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ฐ€์„ ๋งŒ๋“ค๋ฉด ๋‹ค๋ฅธ (AuthFailure) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

[[email protected]]]$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************AMKA              env    AWS_ACCESS_KEY_ID
secret_key     ****************jPU2              env    AWS_SECRET_ACCESS_KEY
    region                us-west-2              env    AWS_DEFAULT_REGION

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์™„์ „ํžˆ ๋ง‰๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. x509 ์ธ์ฆ์„œ๋ฅผ ์ง€์ •ํ•˜์—ฌ ec2-blah-stuff ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋„์›€๋ง์—๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋‚˜์™€ ์žˆ์œผ๋ฏ€๋กœ ์˜์กดํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์ด ๋˜๊ฑฐ๋‚˜ ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์•ก์„ธ์Šค/๋น„๋ฐ€ ํ‚ค๊ฐ€ ์‹ค์ œ๋กœ ์œ ํšจํ•œ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๋„ํ•ด ๋ณผ ๋ช‡ ๊ฐ€์ง€:

  • ์ด๋Ÿฌํ•œ ๋™์ผํ•œ ์•ก์„ธ์Šค/๋น„๋ฐ€ ํ‚ค ์ž๊ฒฉ ์ฆ๋ช…์ด ๋‹ค๋ฅธ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? (java/javascript/ruby/python SDK?)
  • "aw s3" ์ด์™ธ์˜ ๋‹ค๋ฅธ ๋ช…๋ น์ด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? "aws ec2 describe-instances"๊ฐ€ ์—ฌ์ „ํžˆ ์ธ์ฆ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ๋„๊ตฌ(์˜ˆ: ec2-describe-instance)์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌ์Šคํ…Œ์ด์…˜์šฉ์ด ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Amazon Linux ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” awscli ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ๋„ ๋ฌธ์ œ๋‹ค. ๋™์ผํ•œ Dockerfile๋กœ ๋นŒ๋“œ๋œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
EC2์—์„œ ๋นŒ๋“œํ•  ๋•Œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ coreos vagrant box์—์„œ ๋กœ์ปฌ๋กœ ๋นŒ๋“œํ•  ๋•Œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž๊ฒฉ ์ฆ๋ช… ์ž์ฒด์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ–ˆ์ง€๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ ์ž๊ฒฉ ์ฆ๋ช… ํŽ˜์ด์ง€ ์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋‹ค์‹œ ํ™•์ธ

๋ฐฉ๊ธˆ ๋‚˜์—๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ๋ณด๊ณ ํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‹œ์Šคํ…œ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋–จ์–ด์ง„ ๊ฒฐ๊ณผ์˜€์Šต๋‹ˆ๋‹ค. pool.ntp.org์— ๋Œ€ํ•ด ntpdate๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

env ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cred๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด sudo๋ฅผ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

๊ฐ€์ƒ ๋จธ์‹ ์— ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ OS ์‹œ๊ฐ„์ด ๊ฒŒ์ŠคํŠธ OS ์‹œ๊ฐ„๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„ค๋ช…ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

_lot_์˜ ํ‚ค๊ฐ€ ์žˆ๋Š” ๋ฒ„ํ‚ท์„ ๋‚˜์—ดํ•˜๋Š” ๋™์•ˆ ์ข‹์€ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งค์šฐ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

A client error (SignatureDoesNotMatch) occurred when calling the ListObjects operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.

๋‹ค์Œ์€ aws configure list ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.

      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************4UNA shared-credentials-file
secret_key     ****************MNOG shared-credentials-file
    region                <not set>             None    None

์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์€ ๋‹ค๋ฅธ aws ํ˜ธ์ถœ๊ณผ ์ž˜ ์ž‘๋™ํ•˜๋ฉฐ ์‹ค์ œ๋กœ ์ด list ์€ ์ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „์— ์˜ค๋žœ ์‹œ๊ฐ„(1์‹œ๊ฐ„ ์ด์ƒ) ๋™์•ˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์‹คํŒจํ•œ ๋ช…๋ น์—์„œ 82,000์ค„ ์ด์ƒ์˜ ์ถœ๋ ฅ์ด ์žˆ๋Š” ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž ์‹œ ์ž ์ž๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•˜๋ฉด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์Šค๋กœํ‹€๋ง๋˜์–ด ์ž˜๋ชป๋œ ์˜ค๋ฅ˜ ๋˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. aws cp foo s3://mybucket/foo/bar๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 11GB ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

A client error (SignatureDoesNotMatch) occurred when calling the UploadPart operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.

๊ทธ๋ฆฌ๊ณ 

Max retries exceeded with url: /***REDACTED***?partNumber=196&uploadId=B2viwGFF4Lmq5itbs8ipqwBExx0BWGRm3gkG_D5EYTiU8uEO_tmUT.d.i7BcgPnP5npZa.OW7yMfJ3ZhhLJD61zP7EVv.5.ZftCJQbKNdkEBeijGBqWlrxz4vMx3B05Q (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)

์‹œ์Šคํ…œ ์‹œ๊ฐ„์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์—…๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ๋™์ผํ•œ ์‹œ์Šคํ…œ์—์„œ ์ƒ๋‹นํ•œ ์†๋„ ์ €ํ•˜(http ์š”์ฒญ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ˆ˜์ค€์—์„œ)๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด ์กฐ์ ˆ ๋ฌธ์ œ์ธ ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์€ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ  ๋™์ผํ•œ ์‹œ์Šคํ…œ์—์„œ ์›น ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ž˜ ์ž‘๋™ํ•˜๋ฏ€๋กœ aws-cli ๋ฌธ์ œ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ aws-cli 1.5.5์—์„œ๋„ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ aws-cli๋ฅผ 1.6.2๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1.6.2์—์„œ ๋‚˜์—๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜ค๋Š˜ ๋‚˜์—๊ฒŒ ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ƒˆ๋กœ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐœ์›” ๋™์•ˆ awl-cli๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๊ณ  ์ž๊ฒฉ ์ฆ๋ช… AFAIK๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

$ aws configure --profile ye list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                       ye           manual    --profile
access_key     ****************ERMQ shared-credentials-file    
secret_key     ****************E8Id shared-credentials-file    
    region                us-east-1      config-file    ~/.aws/config

์ด ๋ฌธ์ œ๋Š” ์ด์ œ https://github.com/boto/botocore/pull/388 ์„ ํ†ตํ•ด ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์Œ AWS CLI ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ณต๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

@jamesls ๊ฐ€ awscli ๋ฒ„์ „ 1.6.4 ์—์„œ ์ˆ˜์ • ๋˜์—ˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. 1.5.4 ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

์ƒˆ๋กœ์šด ์šฐ๋ถ„ํˆฌ ์‹œ์Šคํ…œ์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

A client error (SignatureDoesNotMatch) occurred when calling the PutObject operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.

pip๋ฅผ ํ†ตํ•ด aws-cli๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ pip list
ansible (1.5.4)
apt-xapian-index (0.45)
argparse (1.2.1)
awscli (1.6.5)
bcdoc (0.12.2)
botocore (0.76.0)
chardet (2.0.1)
Cheetah (2.4.4)
cloud-init (0.7.5)
colorama (0.2.5)
configobj (4.7.2)
docutils (0.11)
html5lib (0.999)
httplib2 (0.8)
Jinja2 (2.7.2)
jmespath (0.5.0)
jsonpatch (1.3)
jsonpointer (1.0)
Landscape-Client (14.01)
MarkupSafe (0.18)
mercurial (2.8.2)
oauth (1.0.1)
PAM (0.4.2)
Pillow (2.3.0)
pip (1.5.4)
prettytable (0.7.2)
pyasn1 (0.1.7)
pycrypto (2.6.1)
pycurl (7.19.3)
Pygments (1.6)
pyinotify (0.9.4)
pyOpenSSL (0.13)
pyserial (2.6)
python-apt (0.9.3.5)
python-dateutil (2.3)
python-debian (0.1.21-nmu2ubuntu2)
PyYAML (3.10)
requests (2.2.1)
roman (2.0.0)
rsa (3.1.2)
setuptools (3.3)
six (1.5.2)
Sphinx (1.2.2)
ssh-import-id (3.21)
Twisted-Core (13.2.0)
urllib3 (1.7.1)
wsgiref (0.1.2)
zope.interface (4.0.5)

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ํ•ด๊ฒฐ์ฑ…์€ ๋ช‡ ์ดˆ ๋™์•ˆ ์ž ์„ ์ž” ๋‹ค์Œ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋„๊ตฌ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋„ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2014๋…„ 12์›” 2์ผ ํ™”์š”์ผ ์˜ค์ „ 3์‹œ 38๋ถ„์— Mark Wolfe [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์šฐ๋ถ„ํˆฌ ์‹œ์Šคํ…œ์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

PutObject ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜(SignatureDoesNotMatch)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚ค์™€ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”.

pip๋ฅผ ํ†ตํ•ด aws-cli๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ ํ• ๋ชฉ๋ก
๊ฐ€๋Šฅํ•œ (1.5.4)
apt-xapian-index (0.45)
argparse (1.2.1)
awscli (1.6.5)
bcdoc (0.12.2)
๋ณดํ† ์ฝ”์–ด (0.76.0)
์ƒค๋ฅด๋ฐ (2.0.1)
์น˜ํƒ€ (2.4.4)
ํด๋ผ์šฐ๋“œ ์ดˆ๊ธฐํ™”(0.7.5)
์ฝœ๋กœ๋ผ๋„ (0.2.5)
configobj (4.7.2)
docutils (0.11)
html5lib(0.999)
httplib2 (0.8)
์ง„์ž2 (2.7.2)
jmespath (0.5.0)
jsonํŒจ์น˜ (1.3)
jsonpointer (1.0)
๋žœ๋“œ์Šค์ผ€์ดํ”„ ํด๋ผ์ด์–ธํŠธ(14.01)
๋งˆํฌ์—…์„ธ์ดํ”„(0.18)
์ˆ˜์€(2.8.2)
๋งน์„ธ(1.0.1)
ํŒธ (0.4.2)
๋ฒ ๊ฐœ(2.3.0)
ํ• (1.5.4)
์˜ˆ์œ ํ…Œ์ด๋ธ” (0.7.2)
pyasn1 (0.1.7)
ํŒŒ์ดํฌ๋ฆฝํ†  (2.6.1)
ํŒŒ์ด์ปฌ (7.19.3)
์•ˆ๋ฃŒ(1.6)
ํŒŒ์ด๋…ธํ‹ฐํŒŒ์ด(0.9.4)
pyOpenSSL(0.13)
ํŒŒ์ด์‹œ๋ฆฌ์–ผ (2.6)
ํŒŒ์ด์ฌ apt (0.9.3.5)
ํŒŒ์ด์ฌ-๋‚ ์งœ์œ ํ‹ธ(2.3)
ํŒŒ์ด์ฌ ๋ฐ๋น„์•ˆ(0.1.21-nmu2ubuntu2)
ํŒŒ์ดYAML(3.10)
์š”์ฒญ(2.2.1)
๋กœ๋งˆ์ž (2.0.0)
RSA (3.1.2)
์„ค์ • ๋„๊ตฌ(3.3)
์—ฌ์„ฏ (1.5.2)
์Šคํ•‘ํฌ์Šค (1.2.2)
SSH ๊ฐ€์ ธ์˜ค๊ธฐ ID(3.21)
ํŠธ์œ„์ŠคํŠธ ์ฝ”์–ด(13.2.0)
urllib3 (1.7.1)
wsgiref (0.1.2)
zope.interface (4.0.5)

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aws/aws-cli/issues/602#issuecomment -65198065.

@wolfeidau ๊ทธ๋ฆฌ๊ณ  ๋„ค ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋งํ–ˆ์–ด์š”. ๋กœ์ปฌ์— pip ์„ค์น˜๋œ awscli์—์„œ SignatureDoesNotMatch ์˜ค๋ฅ˜๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ข‹์•„!

A client error (SignatureDoesNotMatch) occurred when calling the DeregisterInstancesFromLoadBalancer operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

The Canonical String for this request should have been
'POST
/

host:elasticloadbalancing.us-east-1.amazonaws.com
user-agent:aws-cli/1.6.5 Python/2.7.8 Darwin/13.4.0
x-amz-date:20141203T015747Z

host;user-agent;x-amz-date
1d9dafbf4bfa9b1225d91bdbf99d8645503484d174b9094e4c3af637e6664b5b'

The String-to-Sign should have been
'AWS4-HMAC-SHA256
20141203T015747Z
20141203/us-east-1/elasticloadbalancing/aws4_request
5a56d12a4920502f4124e37a92aad475c36edda93d9865871e6a4fe1e49045c3'

์ด ๋ฌธ์ œ๋Š” ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด deregister-instances-from-load-balancer ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

@jamesls ์ง€๊ธˆ์€ ๋งค๋ฒˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค :(

์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๋Š” VM์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ Ubuntu๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ์‹œ๊ณ„๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ๋”ฐ๋ผ์žก์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•  ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: sudo ntpdate -s time.nist.gov).

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ตœ์ข… ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

+1

CLI ๋ฒ„์ „ 1.7.8์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์‹œ๋„ํ•  ๋•Œ ๋™์ผํ•œ SignatureDoesNotMatch ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
$ aws iam list-users

๊ทธ๋ฆฌ๊ณ  ์ด์— ๋Œ€ํ•œ AuthFailure๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
$ aws ec2 describe-security-groups

๋‚ด ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ ํ‚ค๋ฅผ ์‹œ๋„ํ•˜๋ฉด ๋‘ ๋ช…๋ น์ด ๋ชจ๋‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ๋ฌธ์ œ์˜ ์›์ธ์ผ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ž˜๋œ ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค์ž…๋‹ˆ๋‹ค. ๋ฐฑ๋ถ„์œจ, ๋”ํ•˜๊ธฐ ๋ฐ ์Šฌ๋ž˜์‹œ ๋ฌธ์ž๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. H2J7/oT3Fib15SwFVB1s3EnTCmg+SC7wF7qoP+dw%

:+1: @gsterndale. % ์žˆ๋Š” ์•ก์„ธ์Šค ํ‚ค๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ์ด ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ํ‚ค๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ํ‚ค๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค(ํŠนํžˆ ๋น„๋ฐ€์˜ + ๊ธฐํ˜ธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ) ํ‚ค๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๋‚ด ๋ชจ๋“  ์„œ๋ช… ํ‚ค ๋ฌธ์ œ๋Š” ๋กœ์ปฌ mac homebrew ์„ค์น˜ ๋Œ€์‹  ์šฐ๋ถ„ํˆฌ ์‹œ์Šคํ…œ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ–ˆ์„ ๋•Œ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

์ €๋Š” AWS๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ณ  node js์—์„œ ๋ฐ”๋กœ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

              ^

SignatureDoesNotMatch: ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ๊ท€ํ•˜๊ฐ€ ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๋ฐ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ƒ๋‹ดํ•˜์„ธ์š”
์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ถ€์‚ฌ์žฅ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด ์š”์ฒญ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'๊ฒŒ์‹œํ•˜๋‹ค
/

ํ˜ธ์ŠคํŠธ:email.us-west-2.amazonaws.com
x-amz-content-sha256:89cdc817a829111278fbed35aacc694db71669f3845874beaecaf00ff2be1a39
x-amz- ๋‚ ์งœ:20150809T053346Z

ํ˜ธ์ŠคํŠธ;x-amz-content-sha256;x-amz-date
89cdc817a829111278fbed35aacc694db71669f3845874beaecaf00ff2be1a39'

String-to-Sign์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'AWS4-HMAC-SHA256
20150809T053346Z
20150809/us-west-2/ses/aws4_request
0b908b0248bae550b814b37629a418707742416377816b5a5e78e1897b72293e'

+1

๋ชจ๋“  aws s3 ๋ช…๋ น(ubuntu 14.04 LTS์˜ awscli 1.8.6)์— ๋Œ€ํ•ด ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์•Œ๋ ค์ง„ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ž๊ฒฉ ์ฆ๋ช… ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  aws configure, ์žฌ๋ถ€ํŒ…, awscli ์žฌ์„ค์น˜๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

@mcobzarenco , ์ƒˆ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด

@gsterndale ์ด์ „ ํ‚ค์— ์Šฌ๋ž˜์‹œ๊ฐ€ ์žˆ๋‹ค๋Š” ์œ„์˜ ๋Œ“๊ธ€์„ ๋ณด์•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋‚ด ํ‚ค๊ฐ€ ์ตœ๊ทผ์— ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(2015๋…„ 6์›”). AWS Ubuntu 14.04 LTS์—์„œ๋งŒ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋žฉํ†ฑ(14.04)์—์„œ awscli(๋™์ผํ•œ ๋ฒ„์ „)๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@mcobzarenco ํ‚ค์˜ ์‹œ๋Œ€๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ˆ˜ ๋ฌธ์ž๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ํ‚ค๋ฅผ ๋งŒ๋“ค ๋•Œ ํผ์„ผํŠธ, ๋”ํ•˜๊ธฐ ๋ฐ ์Šฌ๋ž˜์‹œ ๋ฌธ์ž๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋™์•ˆ ์ƒˆ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค์€ ์šด ์ข‹๊ฒŒ๋„ ์ด๋Ÿฌํ•œ ๋ฌธ์ž๊ฐ€ ์—†์—ˆ๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์šฐ๋ถ„ํˆฌ์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. cli๋ฅผ ํ†ตํ•ด ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ~/.aws/config์— ์ €์žฅ๋˜์ง€๋งŒ '+' ๋ฌธ์ž๋Š” ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜์—ฌ '+'๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@gsterndale ํŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. + ํฌํ•จ๋˜์ง€ ์•Š์€ ์ƒˆ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @stebl ์˜ ์†”๋ฃจ์…˜์€ ํ‚ค ๊ต์ฒด๊ฐ€ ๋ถˆํŽธํ•œ ๊ฒฝ์šฐ์— ์ข‹์Šต๋‹ˆ๋‹ค.

node js์™€ ํ•จ๊ป˜ AWS SDK๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์–ธ๊ธ‰๋œ ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค.
http://aws.amazon.com/developers/getting-started/nodejs/

AWS SDK๋Š” ํŠน์ • ๋ฒ„์ „์˜ node js๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ node js์˜ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ์˜ˆ, ํŠน์ˆ˜ ๊ธฐํ˜ธ๊ฐ€ ์—†๋Š” ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋‚ด ํŠน์ • ๊ฒฝ์šฐ์—๋Š” + ).

์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(ํ•œ ์‹œ์Šคํ…œ์—์„œ๋Š” awscli๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋™์ผํ•œ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ๊ฑฐ๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž์˜ ์‹œ์Šคํ…œ์—์„œ iam list-users๋Š” ์ด SignatureDoesNotMatch ์˜ค๋ฅ˜๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค). ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์˜ ์‹œ์Šคํ…œ ์‹œ๊ณ„ ์‹œ๊ฐ„์„ ์ˆ˜์ •ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@tukaaa๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค์— ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹Œ ๋ฌธ์ž(์˜ˆ: +)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋”˜๊ฐ€๋กœ ํƒˆ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์œ ๊ฒƒ ๊ฐ™์•„์š” ;-(

@ebuildy ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” CLI ๋ฒ„์ „( aws --version )์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด CLI์˜ ์ด์œ  ๋ฒ„์ „์ด๋ผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

aws-cli/1.9.1 Python/3.5.0 Windows/7 botocore/1.1.8 ์— ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•ŒํŒŒ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ Windows ์ƒ์ž์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ƒ์ž์— ๋™์ผํ•œ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹˜์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. AWS cli๋ฅผ ์ œ๊ฑฐ/์žฌ์„ค์น˜ํ•˜๊ณ  ์ž๊ฒฉ ์ฆ๋ช…/๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ญ์ œํ•œ ๋‹ค์Œ aws ๊ตฌ์„ฑ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

aws-cli/1.10.3 Python/2.7.10 Darwin/14.5.0 botocore/1.3.25 ์—์„œ ๋ฐฉ๊ธˆ ๋ดค์Šต๋‹ˆ๋‹ค.

ํŠน์ˆ˜ ๋ฌธ์ž ์—†์ด ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝ์šฐ ํŠน์ˆ˜ ๋ฌธ์ž๋Š” FWIW๊ฐ€ / ์ด๊ณ  INI ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@I๋Š” @gsterndale ์„ค๋ช… ๋‚˜๋Š”์ด ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

aws --version
aws-cli/1.10.6 Python/2.7.11 Linux/3.10.0-327.4.5.el7.x86_64 botocore/1.3.28

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ํ‚ค์—๋Š” ํŠน๋ณ„ํ•œ ๊ธฐํ˜ธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

s3-cli ๋…ธ๋“œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋น„๋ฐ€ ํ‚ค์— [ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งˆ์นจ๋‚ด ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์•Œ์•„๋ƒˆ๋‹ค. ์‹ค์ˆ˜๋กœ ํ‚ค์— ์—ฌ๋Ÿฌ ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์ด์œ ์•ผ.

๋‹ค์Œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. rhel7๊ณผ ์šฐ๋ถ„ํˆฌ ๋ชจ๋‘์—์„œ. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์•ŒํŒŒ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹จ์ผ ์—ญํ• ์— ๋Œ€ํ•ด ๋ณดํ˜ธ๋˜๋Š” s3 ๋ฒ„ํ‚ท
  • ํ•ด๋‹น ์—ญํ• ์ด ์žˆ๋Š” ec2 ์ธ์Šคํ„ด์Šค๋Š” ๋ณดํ˜ธ๋œ s3 ๋ฒ„ํ‚ท์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์ „์— ๋™์ผํ•œ ์—ญํ• ์„ ๋งก์„ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
aws sts assume-role --role-arn <role_name> --role-session-name default --output json --query Credentials > credentials.json
export AWS_ACCESS_KEY_ID=`sed -n 's/.*"AccessKeyId": "\(.*\)"/\1/p' credentials.json`
export AWS_SECRET_ACCESS_KEY=`sed -n 's/.*"SecretAccessKey": "\(.*\)",/\1/p' credentials.json`
export AWS_SESSION_TOKEN=`sed -n 's/.*"SessionToken": "\(.*\)",/\1/p' credentials.json`

--query๊ฐ€ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ž๊ฒฉ ์ฆ๋ช…์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Mac(pip๋ฅผ ํ†ตํ•ด ์„ค์น˜)์—์„œ awscli ๋ฒ„์ „ 1.10์„ ์‹คํ–‰ํ•˜๊ณ  Ubuntu(Amazon ์ด๋ฏธ์ง€) awscli ๋ฒ„์ „ 1.2.9๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. aws configure --profile user ๋Š” ๊ฐ๊ฐ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ 1.10์€ ๊ตฌ์„ฑ ๋ฐ ์ž๊ฒฉ ์ฆ๋ช…์˜ ๋‘ ํŒŒ์ผ์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 1.2.9๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ž๊ฒฉ ์ฆ๋ช… ์ •๋ณด ํฌํ•จ). ๋ฒ„์ „ 1.10์—์„œ ์ƒ์„ฑ๋œ ์ž๊ฒฉ ์ฆ๋ช… ๋ฐ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ๋ฒ„์ „ 1.2.9์—์„œ ์ƒ์„ฑ๋œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋ฉด ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์žˆ๊ณ  awscli ๋ฒ„์ „ 1.10์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 1.2.9์—์„œ ์ƒ์„ฑ๋œ ๊ตฌ์„ฑ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[profile FOO0]
aws_secret_access_key = FOO1
aws_access_key_id = FOO2
output = FOO3
region = FOO4

์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋กœ ์ธํ•œ ๊ฒƒ์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+๊ฐ€ ํฌํ•จ๋œ ๋น„๋ฐ€ ํ‚ค์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” S3 ๊ณ„์ •์˜ ์†Œ์œ ์ž๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์‰ฝ๊ฒŒ ์ƒˆ ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํŠน์ˆ˜ ๋ฌธ์ž ์—†์ด ์ƒˆ ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ์™ธ์— ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ฐพ์€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

tl;dr ์†”๋ฃจ์…˜: aws_secret_access_key์— ์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‹ค์‹œ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” aws_secret_access_key์— +(๋”ํ•˜๊ธฐ ๊ธฐํ˜ธ)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ƒˆ๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค ... ๋™์ผํ•œ ๋ฌธ์ œ ... ์ด๊ฒƒ์€ Ubuntu์— ์žˆ์Šต๋‹ˆ๋‹ค ... ๋กœ์ปฌ OS ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ Amazon API ๋ฌธ์ œ์ด๋ฏ€๋กœ OSX์—์„œ ๋ฒ—์–ด๋‚˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ๋‹ค๋ฅธ ์˜๊ฒฌ์€ ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค

aws ec2 ์„ค๋ช… ์ธ์Šคํ„ด์Šค

DescribeInstances ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜(AuthFailure)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. AWS๊ฐ€ ์ œ๊ณต๋œ ์•ก์„ธ์Šค ์ž๊ฒฉ ์ฆ๋ช…์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

------------------------------------------------

aws ec2 ์„ค๋ช… ๋ณด์•ˆ ๊ทธ๋ฃน

DescribeSecurityGroups ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(AuthFailure): AWS๊ฐ€ ์ œ๊ณต๋œ ์•ก์„ธ์Šค ์ž๊ฒฉ ์ฆ๋ช…์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

------------------------------------------------

aws ecr ๋กœ๊ทธ์ธ

GetAuthorizationToken ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜(InvalidSignatureException)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๋ฐ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด ์š”์ฒญ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'๊ฒŒ์‹œํ•˜๋‹ค
/

์ฝ˜ํ…์ธ  ์œ ํ˜•:์‘์šฉ ํ”„๋กœ๊ทธ๋žจ/x-amz-json-1.1
ํ˜ธ์ŠคํŠธ:ecr.us-east-1.amazonaws.com
x-amz- ๋‚ ์งœ:20160615T182955Z
x-amz- ๋Œ€์ƒ:AmazonEC2ContainerRegistry_V20150921.GetAuthorizationToken

์ฝ˜ํ…์ธ  ์œ ํ˜•;ํ˜ธ์ŠคํŠธ;x-amz-๋‚ ์งœ;x-amz-๋Œ€์ƒ
44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a'

String-to-Sign์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'AWS4-HMAC-SHA256
20160615T182955Z
20160615/us-east-1/ecr/aws4_request
86c2e3c850acd6765a1ca6aa626c6e9a6c85284f3954f45e170f51b5b89961c7'

------------------------------------------------

aws iam ๋ชฉ๋ก ์‚ฌ์šฉ์ž

ListUsers ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜(SignatureDoesNotMatch)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๋ฐ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด ์š”์ฒญ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'๊ฒŒ์‹œํ•˜๋‹ค
/

ํ˜ธ์ŠคํŠธ:iam.amazonaws.com
x-amz- ๋‚ ์งœ:20160615T183516Z

ํ˜ธ์ŠคํŠธ;x-amz-๋‚ ์งœ
b6359072c78d70ebee1e81adcbab4f01bf2c23245fa365ef83fe8f1f955085e2'

String-to-Sign์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'AWS4-HMAC-SHA256
20160615T183516Z
20160615/us-east-1/iam/aws4_request
ad9f7581f0bf25ecae56355a6c96b60f3dc3188efbbdb3d0d4806e9f2c5cf8a9'

------------------------------------------------

aws --๋ฒ„์ „
aws-cli/1.10.38 Python/2.7.11+ Linux/4.4.0-22-generic botocore/1.4.28

------------------------------------------------

๊ณ ์–‘์ด /root/.aws/credentials
[๊ธฐ๋ณธ]
aws_access_key_id = AKIAJ7FCEUVVSGX7KZGQ
aws_secret_access_key = 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

    Notice the plus sign ( + ) in above aws_secret_access_key   !!!!

   aws only works when aws_secret_access_key does NOT contain non-alpha chars

------------------------------------------------

ํ•ด๊ฒฐ์ฑ… :
์ƒˆ๋กœ์šด ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ญ์ œํ•˜๊ณ  ์ƒ์„ฑํ•œ ํ›„
์—ฌ๊ธฐ์„œ aws_secret_access_key์—๋Š” ๋”ํ•˜๊ธฐ ๊ธฐํ˜ธ( + )๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ช…๋ น์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ž๊ฒฉ ์ฆ๋ช…์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ ๋์— ^M ๋ฌธ์ž๊ฐ€ ์žˆ์–ด์„œ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค.

+ ์—†์ด ๋น„๋ฐ€ ํ‚ค๋ฅผ ์–ป๋Š” ๊ฒƒ๋„ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค...

์ฐธ๊ณ  - (boot2docker VM'd) ๋„์ปค์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ VM ์‹œ๊ณ„๊ฐ€ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ์กฐ: http://stackoverflow.com/questions/24551592/how-to-make-sure-dockers-time-syncs-with-that-of-the-host

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๊ฒฉ ์ฆ๋ช…์„ ๋‹ค์‹œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์—…๋ฐ์ดํŠธ: rm -rf .aws/cli/cache/ ์‹คํ–‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ์ง€๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ญํ• ์„ ๋งก์œผ๋ ค๊ณ  ํ•  ๋•Œ

๋ฒ„์ „:
aws-cli/1.11.17 Python/2.7.10 Darwin/16.1.0 botocore/1.4.74

ํŽธ์ง‘: ์ง€๊ธˆ ๋‹ค์‹œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
aws-cli/1.11.18 Python/2.7.12 Darwin/16.1.0 botocore/1.4.75

์‚ฐ์ถœ:

Assuming role arn:aws:iam::XXXXXXXX:role/XXXX-staging using profile default

An error occurred (SignatureDoesNotMatch) when calling the AssumeRole operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

The Canonical String for this request should have been
'POST
/

host:sts.amazonaws.com
x-amz-date:20161118T102600Z

host;x-amz-date
41db88384d54dc0783e616aa0662ebffce8832b35025195052029a5dc0e33c0e'

The String-to-Sign should have been
'AWS4-HMAC-SHA256
20161118T102600Z
20161118/us-east-1/sts/aws4_request
786b3d624f5aeea9ffcb2b802b177a4c2aebbfed608a2464ee684c6972bc6bc6'

์ตœ์‹ (์ตœ์‹ ) ๋ฒ„์ „์˜ AWS CLI์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ 1.8.3 CLI๋ฅผ 1.11.19๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์œผ๋ฉฐ ๋‚ด๊ฐ€ ๋งŒ๋“  ์ƒˆ ์‚ฌ์šฉ์ž/ํ‚ค๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ฐ€ ํ‚ค์— ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ์Œ์„ ์–ป๊ธฐ ์ „์— ์•ฝ 5๊ฐœ์˜ ํ‚ค๋ฅผ ์žฌํ™œ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์Œ์„ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ•˜๋ฉด CLI๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋งค์šฐ ์„ฑ๊ฐ€์‹  - Amazon์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์ž˜๋ชป๋œ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.....

@mpopova-yottaa awe-cli ์บ์‹œ๋ฅผ ์™„์ „ํžˆ ์ง€์šฐ๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ? ์ „์ฒด ~/.aws ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ด ๋ณด์‹ญ์‹œ์˜ค(๊ตฌ์„ฑ/์ž๊ฒฉ ์ฆ๋ช… ํŒŒ์ผ์˜ ๋ณต์‚ฌ๋ณธ ๋งŒ๋“ค๊ธฐ).

aws ec2 describe-instances ๋Š” ๋‚˜๋ฅผ ์œ„ํ•ด ์‹คํ–‰๋˜์ง€๋งŒ ๊ตฌ๋ฆ„ ํ˜•์„ฑ ์Šคํƒ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•  ๋•Œ:

```์“ฐ๋ ˆ๋“œ "main" com.amazonaws.services.cloudformation.model.AmazonCloudFormationException ์˜ˆ์™ธ: ์šฐ๋ฆฌ๊ฐ€ ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๋ฐ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด ์š”์ฒญ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'๊ฒŒ์‹œํ•˜๋‹ค
/

amz-sdk-invocation-id:18d13b66-80ae-f676-c0cf-dbf875edb1aa
amz-sdk- ์žฌ์‹œ๋„:3/345/470
ํ˜ธ์ŠคํŠธ:cloudformation.us-west-1.amazonaws.com
์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ:aws-sdk-java/1.11.20 Mac_OS_X/10.10.5 Java_HotSpot(TM)_64-Bit_Server_VM/25.91-b14/1.8.0_91
x-amz- ๋‚ ์งœ:20161127T194448Z

amz-sdk-invocation-id;amz-sdk-retry;host;user-agent;x-amz-date
aca0973fb4ac4029ec038d9c80b4afa23b6d305822b10e6bc32751ee1bd311d5'

String-to-Sign์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
'AWS4-HMAC-SHA256
20161127T194448Z
20161127/us-west-1/cloudformation/aws4_request
cb0286a8727afcc465171ab991accde0aaa7210e160a9ba3196e2a5e4305f428'(์„œ๋น„์Šค: AmazonCloudFormation, ์ƒํƒœ ์ฝ”๋“œ: 403, ์˜ค๋ฅ˜ ์ฝ”๋“œ: SignatureDoesNotMatch, ์š”์ฒญ ID: f52abbd9-190-b90)

config details:

`$: aws --version`           >>       `aws-cli/1.11.21 Python/2.7.12 Darwin/14.5.0 botocore/1.4.78`

`$: aws configure list`     >>
```   Name                Value                Type     Location
      ----                   -----                  ----        --------
profile                    not set>             None    None
access_key     ****************RTSA                env
secret_key     ****************UC3r                  env
region                us-west-1              env       AWS_DEFAULT_REGION

๋น„๋ฐ€ ํ‚ค๋Š” ์˜์ˆซ์ž๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์–ด์„œ ๋ง‰ํ˜”์Šต๋‹ˆ๋‹ค.

@aebrow4 awe-cli์— ๋Œ€ํ•œ ์บ์‹œ๊ฐ€ ๋‹ค์šด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ญ์ œ ์‹œ๋„: .aws/cli/cache/

@cultavix .aws ์•ˆ์— cli ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค

--archive-description "`date`" aws glacier upload-archive ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. --archive-description "`date +%Y/%m/%d`" ํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•˜๋ฏ€๋กœ ํƒˆ์ถœ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ฮป aws s3 sync s3://foo-bar-assets/ . --exclude "*/*.mp4" --exclude "*.mp4" fatal error: An error occurred (SignatureDoesNotMatch) when calling the ListObjects operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.

NTP ์„œ๋ฒ„์™€ ์‹œ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ(์„ฑ๊ณต์ ์œผ๋กœ) ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ์„ธํŠธ๋ฅผ ๊ฐ€์งˆ ๋•Œ๊นŒ์ง€ ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ฮป aws --version aws-cli/1.11.16 Python/2.7.9 Windows/8 botocore/1.4.73

awscli ๋ฐ ์ƒ˜ํ”Œ Python ์ฝ”๋“œ(boto3)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” IBM ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ S3 API ํ˜ธํ™˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํ‚ท๊ณผ ํ•ด๋‹น ์ปจํ…์ธ ๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—…๋กœ๋“œํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค(pyhton ์ฝ”๋“œ ๋ฐ cli ๋ชจ๋‘).
ruby aws-sdk ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ).
-- ๊ตฌ์„ฑ
aws-cli/1.2.9 Python/3.4.3 Linux/3.19.0-33-generic

Glacier์— ๋‹ค์ค‘ ํŒŒํŠธ ์—…๋กœ๋“œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๋‹ฌ ๋™์•ˆ ์‚ฌ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. aws cli๋ฅผ ํ†ตํ•ด ์—ฌ์ „ํžˆ ์ž˜ ์ž…๊ธˆํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ž๊ฒฉ ์ฆ๋ช…์€ ๊ณ„์† ์ž‘๋™ํ•˜์ง€๋งŒ boto3์„ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

"botocore.exceptions.ClientError: InitiateMultipartUpload ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(InvalidSignatureException: ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๋ฐ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค."

aws --๋ฒ„์ „์€
aws-cli/1.11.38 ํŒŒ์ด์ฌ/2.7.10 ๋‹ค์œˆ/15.6.0 ๋ณดํ† ์ฝ”์–ด/1.5.1

(์˜ˆ, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค...๊ทธ๋Ÿฐ ํ–‰์šด์€ ์—†์Šต๋‹ˆ๋‹ค.)

ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ์ƒˆ ํ‚ค ์Œ์„ ๊ฐ€์ ธ์˜ค๋ฉด(์ œ ๊ฒฝ์šฐ์—๋Š” + ์˜€์Šต๋‹ˆ๋‹ค) ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋น„๋ฐ€ ํ‚ค์—์„œ + ์˜ ์ž˜๋ชป๋œ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ํ™•์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ๋‹ค์Œ์€ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. https://gist.github.com/jamesls/00ef7fcc0ac39ba8b06956d165c42f6d . ์ด๊ฒƒ์€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค:

  • + ๋˜๋Š” / ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ์ž๊ฒฉ ์ฆ๋ช…์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋ฃจํ”„์—์„œ aws iam create-access-key ๋ฅผ ํ†ตํ•ด ์ƒˆ access_key/secret_key ์Œ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ์ƒˆ "testcreds" ํ”„๋กœํ•„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ AWS CLI ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜๋„๋ก ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

API ํ˜ธ์ถœ์ด ์‹คํŒจํ•  ๋•Œ๊นŒ์ง€ ๋ฌดํ•œ ๋ฃจํ”„์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹คํŒจํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. + ๋ฐ / ๊ฐ€ ์žˆ๋Š” ๋น„๋ฐ€ ํ‚ค๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” + ๋˜๋Š” / ๊ฐ€ ์žˆ๋Š” secret_keys๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ™•์‹คํžˆ ๊ฐ€๋Šฅํ•จ์„ ํ™•์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทผ๋ณธ ์›์ธ์ด ์„œ๋ช… ์ฝ”๋“œ์˜ ๋ฒ„๊ทธ๋งŒํผ ์ง์ ‘์ ์ธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + ๊ฐ€ ์žˆ์œผ๋ฉด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ์ฃผ์„์„ ๋‹ค์‹œ ์ฝ์œผ๋ฉด ~/.aws/config ๋˜๋Š” ~/.aws/credentials ํŒŒ์ผ์— ์ž๊ฒฉ ์ฆ๋ช…์„ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + ๋˜๋Š” / ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ”Œ๋žซํผ ํŠน์ • ์‚ฌํ•ญ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹œ๋ฉด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ์ž๊ฒฉ ์ฆ๋ช…์„ ์–ด๋–ป๊ฒŒ ์–ป์Šต๋‹ˆ๊นŒ(์ฝ˜์†”์—์„œ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ, aws iam create-access-key , ์ฝ˜์†”์—์„œ CSV ํŒŒ์ผ ๋“ฑ)?
  2. ์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜๋„๋ก CLI๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? aws configure ์„ ์‹คํ–‰ ์ค‘์ด๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๊นŒ? aws configure set ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ~/.aws/config ๋ฐ/๋˜๋Š” ~/.aws/credentials ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค์–‘ํ•œ AWS_* ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋”์šฑ ๋„์›€์ด ๋  ๋ณด๋„ˆ์Šค ์‚ฌํ•ญ:

  1. ๋‹ค๋ฅธ SDK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ CLI์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์ด ๋‹ค๋ฅธ AWS SDK์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?
  2. ํ…Œ์ŠคํŠธ ๊ณ„์ •์ด๋‚˜ ํ…Œ์ŠคํŠธ IAM ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ ํ•˜๋Š”

์šฐ๋ฆฌ ์ธก์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์งˆ๋ฌธ์— ๋‹ตํ•˜๋ ค๋ฉด:
Amazon ์ฝ˜์†”์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ƒ์„ฑํ•˜๊ณ  ~/.aws/credentials์— ์ž˜๋ผ๋‚ด๊ธฐ/๋ถ™์—ฌ๋„ฃ๊ธฐ(Mac์—์„œ emacs๋กœ ํŽธ์ง‘)

์ง€๊ธˆ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์—์„œ(๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์ด ๋ถ„์•ผ์˜ ์ดˆ๋ณด์ž์ž…๋‹ˆ๋‹ค...) 'Canonical String'์€ ์ •ํ™•ํ•˜์ง€๋งŒ 'String-to-Sign'์€ ์ž˜๋ชป๋˜์–ด ๋งˆ์ง€๋ง‰ ์ค„์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰, auth.py string_to_sign์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ธ์‡„ํ•  ๋•Œ 'sha256(canonical_request.encode('utf-8')).hexdigest())'์—์„œ ์ƒ์„ฑ๋œ ์ˆซ์ž๊ฐ€ ๋ฐ˜ํ™˜๋œ ์˜ค๋ฅ˜ "The String -to-Sign ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." .

๋‚ด ์ž๊ฒฉ ์ฆ๋ช…์—๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†์œผ๋ฉฐ CrossFTP(์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Œ!!!)์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ํ†ต์ฐฐ๋ ฅ์ด๋ผ๋„ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!!

@samato88 ์€ ๋‹ค๋ฅธ ๋ฌธ์ œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด(๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ๋ชจ๋‘ ์ œ๊ฑฐํ•ด์•ผ ํ•จ) ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

string_to_sign์€ secret_access_key์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์— ์„œ๋ช…ํ•  ๋•Œ ๋ณด๋‚ด๋ ค๋Š” HTTP ์š”์ฒญ์„ ๋ฐ›์•„ ๋ฌธ์ž์—ด(์˜ˆ: ๋ฌธ์ž์—ด ot sign)๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฌธ์ž์—ด์— ๋น„๋ฐ€ ํ‚ค๋กœ ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค(๋ช‡ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ). ๋”ฐ๋ผ์„œ ์„œ๋ช…ํ•  ๋ฌธ์ž์—ด๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฌธ์ œ๋Š” ์ด ๋ฌธ์ œ์™€ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  --debug ์ถœ๋ ฅ์„ ์ œ๊ณต(๋˜๋Š” ์„œ๋น„์Šค์˜ ์ „์ฒด ์š”์ฒญ ๋ฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ํฌํ•จ)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค jamesls - ๋‹ค์Œ ์œ„์น˜์—์„œ ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/aws/aws-cli/issues/2474

์–ด๋–ค ํ†ต์ฐฐ๋ ฅ์ด๋ผ๋„ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์‹œ๊ฐ„์ด 5๋ถ„ ์ด์ƒ ๊บผ์ง€๋ฉด CLI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์‹คํ–‰... sudo ntpdate -s time.nist.gov

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์‹œ ์‹œ๋„

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ๋‚ด ๋น„๋ฐ€ ํ‚ค์— "+"๊ธฐํ˜ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .aws/credentials ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  aws configure๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด sq queue์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

@AlexParra03 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.... :-)

@robotzero ์ž๊ฒฉ ์ฆ๋ช…์„ ์–ด๋–ป๊ฒŒ ์ž…๋ ฅํ–ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? aws configure ์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ ์›น ์ฝ˜์†”์—์„œ ๊ฐ’์„ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ํ–ˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, aws configure๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋‚ด ๋น„๋ฐ€์— +๊ฐ€ ์žˆ์–ด์„œ ์—ฌ์ „ํžˆ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ˆ˜ ๋ฌธ์ž ์—†์ด ์ƒˆ ํ‚ค๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

aws --๋ฒ„์ „
aws-cli/1.11.78 ํŒŒ์ด์ฌ/3.6.1 ๋‹ค์œˆ/15.6.0 ๋ณดํ† ์ฝ”์–ด/1.5.41

๋‚ด ๋น„๋ฐ€์—๋Š” +์™€ /๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์ด ์—†๋Š” ๋น„๋ฐ€์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ์ด ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

$ aws --version
aws-cli/1.11.44 Python/3.5.3 Linux/4.10.0-19-generic botocore/1.5.7

$ lsb_release -sd 
Ubuntu 17.04

์ž๊ฒฉ ์ฆ๋ช…์— "+"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ํ‚ค ์—†์ด ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ•˜์—ฌ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ "/"๋Š” ์ข‹์€ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค.

@adityanatraj @shwetapurushe @damienrj ์—ฌ๊ธฐ์—์„œ ์ด ์งˆ๋ฌธ์— ๋ชจ๋‘ ๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ํ™˜๊ฒฝ๊ณผ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์–ป์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜๊ฒฌ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด + ๋กœ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์žฌํ˜„๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ™˜๊ฒฝ ์กฐํ•ฉ ๋ฐ/๋˜๋Š” ์ž๊ฒฉ ์ฆ๋ช…์„ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ง„ํ–‰ ์ค‘์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@jamesls

  1. ์ž๊ฒฉ ์ฆ๋ช…์€ ์–ด๋–ป๊ฒŒ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

์›น ์ฝ˜์†”์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ณต์‚ฌํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

  1. CLI๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‘ ๊ฐœ์˜ ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

~/.aws/config

[default]
region = us-east-1
output = json

~/.aws/credentials

[default]
aws_access_key_id = ACCESS_KEY_HERE 
aws_secret_access_key = SECRET_ACCESS_KEY_THAT_BREAKS_WITH_A_+_SIGN

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. '+' ๊ธฐํ˜ธ๊ฐ€ ํฌํ•จ๋œ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์‚ญ์ œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋„ˆ์Šค ์งˆ๋ฌธ์— ๋„์›€์„ ๋“œ๋ฆด ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@adityanatraj ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์ด๊ฒƒ์ด CLI๋งŒ์˜ ๋ฌธ์ œ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์ž๊ฒฉ ์ฆ๋ช… ์ž์ฒด์˜ ๋ฌธ์ œ์ธ์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋‹ค๋ฅธ AWS SDK์—์„œ ์ด๋Ÿฌํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์ง์ ‘ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ์ƒ˜ํ”Œ repo/script๋ฅผ ํ•จ๊ป˜ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/jamesls/aws-creds-test . ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  make install , make test .

/tmp $ mkdir /tmp/repro-cli-602
/tmp $ cd /tmp/repro-cli-602/
/tmp/repro-cli-602 $ git clone git://github.com/jamesls/aws-creds-test
Cloning into 'aws-creds-test'...
...
/tmp/repro-cli-602 $ cd aws-creds-test/
/tmp/repro-cli-602/aws-creds-test (master u=) $ make install
npm install
[email protected] /private/tmp/repro-cli-602/aws-creds-test
โ”œโ”€โ”ฌ [email protected]
...
pip install -r requirements.txt
Requirement already satisfied: botocore<2.0.0,>=1.5.0 in /usr/local/lib/python2.7/site-packages (from -r requirements.txt (line 1))
...



/tmp/repro-cli-602/aws-creds-test (master u=) $ make test
./test-creds.sh
Testing python...
Access Key:
Secret Access Key:
AKID   hash: 4e7c36343646e1fa7495092bffcd4b9b7dd00f2f5014a189ab81f326e6472a62
AKID length: 20

SAK    hash: 941a655993caccb1a1218883b97a88b6f41762c6d03902f1cdd1e2a5de5fd82e
SAK  length: 40
Successfuly made an AWS request with the provided credentials.

Testing javasript...
Access Key: ********************
Secret Access Key: ****************************************
AKID   hash: 4e7c36343646e1fa7495092bffcd4b9b7dd00f2f5014a189ab81f326e6472a62
AKID length: 20


SAK    hash: 941a655993caccb1a1218883b97a88b6f41762c6d03902f1cdd1e2a5de5fd82e
SAK  length: 40
Sucessfully made an AWS request with the provided credentials.

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ถœ๋ ฅ์„ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค.

๊ฐœ์ฒด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค PutObject ์š”์ฒญ(C#)์—์„œ ์ด์™€ ๋™์ผํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. + ๋ฐ /๊ฐ€ ์žˆ๋Š” ์ƒˆ ๋น„๋ฐ€ ํ‚ค๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ž ์—†์ด ์ƒˆ ํ‚ค๋ฅผ ์ƒ์„ฑํ–ˆ๋Š”๋ฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ท€ํ•˜์˜ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋Š” Linux์šฉ์ด๊ณ  ์ €๋Š” Windows๋ฅผ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
Windows ์…ธ ๋ฐ _aws configure_๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Control-C ๋ฐ Control-V๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ถ™์—ฌ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” _aws cp_๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ๋„ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋น„๋ฐ€ ํ‚ค์— ๊ธฐํ˜ธ๊ฐ€ ์—†๋Š” ํ•œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๊ณง ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋Š” ์ž๊ฒฉ ์ฆ๋ช…์„ ์–ป์„ ๋•Œ๊นŒ์ง€ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ณ„์† ์žฌ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค!

์–ด์ œ AWS์— ์ง€์› ํ‹ฐ์ผ“์„ ์ œ์ถœํ–ˆ๋Š”๋ฐ ์˜ค๋Š˜ ํ•ด๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฒˆ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ + ๋ฐ / ๋ชจ๋‘ ์ด์ œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ? ๋” ์ด์ƒ ์ด ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด Pi์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
์ตœ์‹  awscli(aws-cli/1.11.85 Python/3.4.2 Linux/4.9.24-v7+ botocore/1.5.48)์—์„œ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

root@pi :~# aws s3 ls s3://
ListBuckets ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜(SignatureDoesNotMatch)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Secret Access Key์™€ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ REST ์ธ์ฆ ๋ฐ SOAP ์ธ์ฆ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

ํŠน์ˆ˜ ๋ฌธ์ž(+ ๋˜๋Š” /)๊ฐ€ ์—†๋Š” ๋น„๋ฐ€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์•ก์„ธ์Šค๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์€ ํ•ญ์ƒ ์ผ์น˜ํ–ˆ์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

".aws/config" ํŒŒ์ผ์—์„œ ์œ ํšจํ•œ ์˜์—ญ(ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ๋งŒ ..)์„ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜ธํ™˜๋˜๋Š” s3 ์Šคํ† ๋ฆฌ์ง€(Amazon์˜ s3 ์•„๋‹˜)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

[๊ธฐ๋ณธ]
aws_secret_access_key = ๋งˆ์ด ํ‚ค
aws_access_key_id = MYID
region = us-east-1 <-- ์ด์ „์— "๋”๋ฏธ" ๊ฐ’์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์˜์—ญ์—๋Š” "์˜ฌ๋ฐ”๋ฅธ" ๊ฐ’์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "dummyvalue"์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•˜๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ "us-east-1" ๊ฐ’์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!
์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚˜๋„ ๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค๋‹ค. ๋˜ํ•œ ๋น„๋ฐ€ ํ‚ค์— '+'๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ž๊ฒฉ ์ฆ๋ช…์ด ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ~/.aws/credentials ํŒŒ์ผ์— ๋„ฃ์œผ๋ฉด(์†์œผ๋กœ ํŽธ์ง‘ํ•˜์—ฌ) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[ํŽธ์ง‘] ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ dos(vim์˜ ff=dos)์šฉ์œผ๋กœ ํ˜•์‹ํ™”๋œ ํŒŒ์ผ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ .csv ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ํŽธ์ง‘ํ•˜์—ฌ ํ•ญ๋ชฉ์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๋ณ€๊ฒฝํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์„ 'ff=unix'๋กœ ๋‹ค์‹œ ํฌ๋งทํ•˜๋ฉด ๋” ์ด์ƒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2์˜ ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ์ค„ ๋ฐ˜ํ™˜์ด๋ฉฐ, dos๋Š” "CR-NL"์„ ์‚ฌ์šฉํ•˜๊ณ  ์œ ๋‹‰์Šค๋Š” "NL"์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ๋œ "CR" ๋ฌธ์ž์˜€์Šต๋‹ˆ๋‹ค.

๋‚˜๋„, ๊ทธ๋ฆฌ๊ณ  ๋˜ํ•œ "+" ๋ฌธ์ œ๋ฅผ ํ™•์ธ

Mac์šฉ Docker๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Docker๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์‹œ์Šคํ…œ ์‹œ๊ฐ„ ๋ถˆ์ผ์น˜๊ฐ€ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๋‹ค.
๋น„๋ฐ€์„ ํ™•์ธํ–ˆ๊ณ  ๊ทธ ์•ˆ์— +/๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ž‘๋™ํ•˜๋ ค๋ฉด ํŠน์ˆ˜ ๋ฌธ์ž ์—†์ด ์ƒˆ ID ์Œ์„ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ํ‚ค ์Œ์„ ๋งŒ๋“ค ๋•Œ๊นŒ์ง€ ์ƒˆ ํ‚ค ์Œ์„ ๋งŒ๋“ค๋ฉด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ํŠน์ˆ˜ ๋ฌธ์ž(ํŠนํžˆ +)๋Š” ~/.aws/credentials์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŠน์ˆ˜ ๋ฌธ์ž ์—†์ด ์ƒ์„ฑ๋œ ํ‚ค(ํŠนํžˆ + )๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@eikenb ์˜ ์ฃผ์„์— ๋”ฐ๋ผ ํŒŒ์ผ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๋„ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. GMT์—์„œ 6๋ถ„ ์ด์ƒ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ์‹œ์Šคํ…œ ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ๋Š” ๋„ˆ๋ฌด ๋‚ฏ์„ค๊ณ  ๊นŒ๋‹ค๋กœ์› ๋‹ค.
๋‚˜๋Š” ์ด ๋ฌธ์ œ์™€ ์”จ๋ฆ„ํ–ˆ๊ณ  ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ˆœ๊ฐ„ ๊ทธ๊ฒƒ์€ ๊ฐ‘์ž๊ธฐ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋†€๋ผ์„œ ์ƒˆ ์–‘๋™์ด๋ฅผ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ธ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋‚˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฏฟ์„ ์ˆ˜ ์—†์–ด...

์‚ฌ์šฉ aws configure ์œˆ๋„์šฐ 7 I์—์„œ bash ์‰˜์—์„œ ๋‚ด๊ฐ€ ๋‘ ์žˆ์—ˆ๋‹ค ๋ฐœ๊ฒฌ aws_secret_access_key ๋‚ด์—์„œ ๋ผ์ธ .aws/credentials ํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ค„์€ ๋‚ด๊ฐ€ ์“ฐ๋ ˆ๊ธฐ์˜ ๋ถ€ํ•˜๋ฅผ ์ž˜๋ชป-์ž…๋ ฅ ๊ฑฐ๋ผ๊ณ  ๋œ ๊ณณ . ๋‘ ๋ฒˆ์งธ ์ค„์„ ์‚ญ์ œํ•˜๊ณ  ๋ชจ๋‘ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

aws-cli/1.11.119 Python/2.7.12 Linux/4.4.0-53-generic botocore/1.5.82

๋‚ด ํ‚ค ๋˜๋Š” ๋น„๋ฐ€์— +๊ฐ€ ์—†๋Š” Linux Mint์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๋ด…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ์˜ ์ถœ๋ ฅ:

/aws-creds-test $ make test
./test-creds.sh
Testing python...
Access Key: 
Secret Access Key: 
AKID   hash: 36b0df669bfc2fa232f31ada2b40e8f58ec152b0afee875f28b21e32e2d59a30
AKID length: 20

SAK    hash: 02b21158d3ab7d2691ceef468951c3b3551704a8eea19ad4a8f59c7be38378f6
SAK  length: 40
Error making AWS request: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

Testing javasript...
Access Key: ********************
Secret Access Key: ****************************************
AKID   hash: 36b0df669bfc2fa232f31ada2b40e8f58ec152b0afee875f28b21e32e2d59a30
AKID length: 20


SAK    hash: 02b21158d3ab7d2691ceef468951c3b3551704a8eea19ad4a8f59c7be38378f6
SAK  length: 40
Error making AWS request
{ SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
    at Request.extractError (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/protocol/query.js:47:29)
    at Request.callListeners (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:683:14)
    at Request.transition (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:685:12)
    at Request.callListeners (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
  message: 'The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.',
  code: 'SignatureDoesNotMatch',
  time: 2017-09-18T20:33:23.951Z,
  requestId: '9e62c6c2-9cb0-11e7-9856-a5fd5c3e417d',
  statusCode: 403,
  retryable: false,
  retryDelay: 60.66602455065775 }
Makefile:6: recipe for target 'test' failed
make: *** [test] Error 1

awscli๋ฅผ aws-cli/1.11.154 Python/2.7.12 Linux/4.4.0-53-generic botocore/1.7.12 ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„:

$ make test
./test-creds.sh
Testing python...
Access Key: 
Secret Access Key: 
AKID   hash: 0cdf83ac8cf800ca46738682ff5a0ab35d94891a568fc6fd9115ecf13dcce542
AKID length: 20

SAK    hash: 7ae856b46f3d5cd23b94f60765adbeb13215f6c226a2953ab93eed9e26d51694
SAK  length: 40
Error making AWS request: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

Testing javasript...
Access Key: ********************
Secret Access Key: ****************************************
AKID   hash: 0cdf83ac8cf800ca46738682ff5a0ab35d94891a568fc6fd9115ecf13dcce542
AKID length: 20


SAK    hash: 7ae856b46f3d5cd23b94f60765adbeb13215f6c226a2953ab93eed9e26d51694
SAK  length: 40
Error making AWS request
{ SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
    at Request.extractError (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/protocol/query.js:47:29)
    at Request.callListeners (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:683:14)
    at Request.transition (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/request.js:685:12)
    at Request.callListeners (/home/kev/projects/external/aws-creds-test/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
  message: 'The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.',
  code: 'SignatureDoesNotMatch',
  time: 2017-09-18T20:43:21.662Z,
  requestId: '02ab939a-9cb2-11e7-a1f3-87975b0dbd52',
  statusCode: 403,
  retryable: false,
  retryDelay: 86.52138921193912 }
Makefile:6: recipe for target 'test' failed
make: *** [test] Error 1

๋ฐฉ๊ธˆ ํ‚ค๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ‚ค์—๋Š” ์—ฌ์ „ํžˆ '+'๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ ์ด์ œ cli๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์‰ฌ์šธ ์ˆ˜ ์žˆ๋‹ค

@DanAbbz92 ์‹ค์ œ๋กœ, ๋‚˜๋Š” ์ง€๊ธˆ ๊ฐ™์€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ด์ „ ํ‚ค๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด์ง€๋งŒ ์ƒˆ ํ‚ค๊ฐ€ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋ถ™์—ฌ๋„ฃ๊ธฐ ์‹œ๋„์—์„œ ๋‚ด ๋น„๋ฐ€ ํ‚ค์— ^V๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ‚ค์—์„œ ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ๊ฒ€์‚ฌํ•  ๋•Œ ๋” ๊ฐ•๋ ฅํ•œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์—์Šค์ปฌ๋ ˆ์ด์…˜์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” 2014๋…„์— ๋ณด๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ 2017๋…„ 10์›” 26์ผ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ๋‚ด ๋น„๋ฐ€์—๋Š” "+"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ~/.aws/configure์— ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.
Amazon, ์ด ๋ฒ„๊ทธ* ๋ฅผ ์ˆ˜์ •ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ ???

์˜ค๋Š˜ cli๋ฅผ ์„ค์น˜ํ•˜๊ณ  aws configure ์‹คํ–‰ํ•œ ํ›„ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ‚ค์—๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†์—ˆ์ง€๋งŒ ๋‹ค์Œ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • rm -r ~/.aws/
  • .aws ํด๋”์™€ credentials ํŒŒ์ผ์„ ๋‹ค์‹œ ๋งŒ๋“ค๊ณ  ์ž๊ฒฉ ์ฆ๋ช…์„ ์ˆ˜๋™์œผ๋กœ ๋‹ค์‹œ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

tl;dr ๊ทธ๊ฒƒ์„ ๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ์ผœ๋ฉด ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค ยฏ_(ใƒ„)_/ยฏ

Hadoop์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ฒฝ์šฐ: Hadoop 2.8.0์—์„œ ๊ด€๋ จ ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
" s3:" ์ธ์ฝ”๋”ฉ๋œ ๊ฒฝ์šฐ์—๋„ Secret Key์— ์Šฌ๋ž˜์‹œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด URL์ด ๊นจ์ง‘๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์˜ค๋Š˜ ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์žก์•˜์Šต๋‹ˆ๋‹ค.
์ƒ์ž์˜ ์‹œ๊ฐ„์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ์‹œ๊ฐ„ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ "๋‚˜๋„" ์ถ”๊ฐ€

2๊ฐœ์˜ '+' ๋ฌธ์ž๊ฐ€ ์žˆ๊ณ  ๋‚ด Windows VM์˜ ๋‚ด .aws/credentials ํŒŒ์ผ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋น„๋ฐ€ ํ‚ค(.NET ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ)๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๋‚ด MacBook Pro์˜ brew์—์„œ awscli๋ฅผ ์„ค์น˜ํ–ˆ์„ ๋•Œ , .aws ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜์—ฌ(ํŒŒ์ผ ์ธ์ฝ”๋”ฉ, ์ค„ ๋ ํ˜•์‹ ๋“ฑ ํ…Œ์ŠคํŠธ) SignatureDoesNotMatch๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋‹ค์‹œ ๋งŒ๋“ค๋ ค๊ณ  ์‹œ๋„ํ–ˆ์œผ๋ฉฐ ์ด์ œ Mac์˜ awscli์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ž๊ฒฉ ์ฆ๋ช…์„ ๋‹ค์‹œ ๋‚ด Windows ์ปดํ“จํ„ฐ๋กœ ๋ณต์‚ฌํ•˜๊ณ  .NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ์ปดํ“จํ„ฐ ๋ชจ๋‘์—์„œ ์‹œ๊ฐ„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(Mac์€ ์ด๋ฏธ NTP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ  Windows VM์€ ์‹ค์ œ ์‹œ๊ฐ„๋ณด๋‹ค ์•ฝ 12๋ถ„ ๋Šฆ๊ฒŒ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค).

brew install awscli๋กœ awscli๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ aws --version ๋ฐ˜ํ™˜: aws-cli/1.14.30 Python/3.6.4 Darwin/16.7.0 botocore/1.8.34

๊ธ€์Ž„, ๋‚˜๋Š” ์˜ค๋Š˜ ์˜คํ›„์— ๋žŒ๋‹ค์— ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ–ˆ๋‹ค(2018-02-01 15:48 EST with lambda in us-east-1).
์ด์ œ ์˜คํ›„ 6์‹œ์— ์‚ฌ๋ฌด์‹ค์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ์„œ๋ช… ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์ด ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด ๋˜๋Œ์•„๋ณด๋ฉด: ๋‚ด ์‹œ๋Œ€๋Š” ์ •ํ™•ํ•˜๊ณ , ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ž๊ฒฉ ์ฆ๋ช…์ด 1๋…„ ๋ฏธ๋งŒ์ด๋ฉฐ, ์ž์ž‘ ๋ฒ„์ „ aws-cli/1.14.30 Python/3.6.4 Darwin/17.4.0 botocore/1.8.34 ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ฆฝ๋œ ๋‚ ๋ถ€ํ„ฐ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(1.14.1์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. 2x ๋ฒ„์ „, ์‚ฌ๋ž‘ ์—†์Œ)

์ด๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ๋ง๋ผํ‚ค

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ํŠน์ˆ˜ ๋ฌธ์ž(์˜ˆ: /, + ๋“ฑ) ์—†์ด ์ƒˆ ํ‚ค ์ƒ์„ฑ์„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜๊ฒฌ ์„

๋ฐฉ๊ธˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ๋žฉํ†ฑ ์‹œ๊ณ„๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋‚˜๋Š” โ€‹โ€‹์‹œ๊ฐ„์— ๋Šฆ์—ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ–ˆ์œผ๋ฉฐ ๋‚ด ntp ํด๋ผ์ด์–ธํŠธ๊ฐ€ 10๋ถ„ ๋’ค์ณ์ง„ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ntpdate๋ฅผ ํ–ˆ๋‹ค์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋ง๋„ ์•ˆ๋˜๋Š” ๋ฒ„๊ทธ, ์™€์šฐ.

์ด๊ฒƒ์ด ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๋ฌธ์ œ์ด๋ฏ€๋กœ ํ‚ค ์žฌ๊ตฌ์ถ•๊ณผ ๊ฐ™์€ ์ž ์žฌ์  ์ˆ˜์ •์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋„๋ก ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•˜์ง€ ์•Š์„๊นŒ์š”? ๋ฌธ์ œ๊ฐ€ "์˜ˆ, ํ‚ค์— ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์žˆ์„ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!"๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ ๋Œ€์‹ .

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋ฒ„์ „:

aws-cli/1.14.58 Python/2.7.10 Darwin/17.4.0 botocore/1.9.11

๋ช…๋ น:

aws s3 ls
๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
Unknown Signature Version: s3v3.

ํ•ด๊ฒฐ์ฑ… ์—†์Œ:

๋‚ด ๋งํ† ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํŠน๋ณ„ํ•œ ์บ๋ฆญํ„ฐ ์—†์ด ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ - ๋‹ค์Œ์œผ๋กœ ์ˆ˜์ •๋จ

aws configure set default.s3.signature_version s3v4

์˜ˆ, ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚ด ๋น„๋ฐ€ ํ‚ค๋Š” + ๋ฌธ์ž๋กœ ๋๋‚ฌ๊ณ  ๋‚ด๊ฐ€ ์ฐพ์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋น„๋ฐ€ ํ‚ค ๋์— + ๊ฐ€ ์—†๋Š” ์ƒˆ ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ–ˆ์œผ๋ฉฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„๋Œ€์ฒด ์ด๊ฒŒ ์•„์ง๋„ ๋ฌธ์ œ์•ผ?

CreateMultipartUpload ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜(SignatureDoesNotMatch)๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚ค์™€ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”.
๋„์™€์ฃผ์„ธ์š”.

๋‚ด ๋น„๋ฐ€์€ + ๊ธฐํ˜ธ๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์˜ค๋Š˜๊นŒ์ง€์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€์กฐ์ฐจ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. boto3 ํŒŒ์ด์ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ s3์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์ž๊ฒฉ ์ฆ๋ช…์„ ์›์‹œ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•  ๋•Œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ configparser.RawConfigParser() ์‚ฌ์šฉํ•˜์—ฌ config.ini์—์„œ ๋ณ€์ˆ˜๋กœ ๋กœ๋“œํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋์ด๋‚˜ ์ฒ˜์Œ์— + ๊ธฐํ˜ธ ์—†์ด ์ƒˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•˜๋ฉด ์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด๊ฒƒ์ด (์–ด๋–ค ์ด์œ ๋กœ) ๊ณ ์น  ์ˆ˜ ์—†๋‹ค๋ฉด "+ ๊ธฐํ˜ธ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ์ƒˆ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜์‹ญ์‹œ์˜ค"์™€ ๊ฐ™์€ ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” osx์—์„œ aws cli๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ •ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๋น„๋ฐ€๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์›๋ณธ ํŒŒ์ผ์—๋Š” + ๋ฐ = ๊ฐ€ ์žˆ์—ˆ๊ณ  s3์— cp ํŒŒ์ผ์„ ์‹œ๋„ํ•  ๋•Œ SignatureDoesNotMatch ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ–ˆ์œผ๋ฉฐ ์ด์ œ ์ƒˆ ์•”ํ˜ธ๋Š” ์˜์ˆซ์ž ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์žฌ์ƒ์„ฑ์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๋˜ ๋‹ค๋ฅธ ํ™•์ธ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. :์•ˆ๋„ํ•˜๋Š”:

์ด๊ฒƒ์ด ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ์ด ๋ฌธ์ œ(๋น„๋ฐ€ ํ‚ค์—์„œ + ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ)๋Š” RHEL5์˜ ์ด ๋ฒ„์ „์—์„œ ์ž์ฒด์ ์œผ๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

aws-cli/1.15.25 Python/3.4.7 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.10.25

๊ทธ๋Ÿฌ๋‚˜ Ubuntu์˜ ์ด ๋ฒ„์ „์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

aws-cli/1.11.13 Python/3.5.2 Linux/4.4.0-121-generic botocore/1.4.70

2014๋…„ 1์›”์— ์‹œ์ž‘ํ•˜์—ฌ 2018๋…„ 6์›”์— ์‹œ์ž‘ํ•˜์—ฌ 4๋…„ ๋„˜๊ฒŒ SignatureDoesNotMatch ์˜ค๋ฅ˜๋กœ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•œ ์†”๋ฃจ์…˜์€ ์—ฌ๊ธฐ์˜ ๋ชจ๋“  ๋Œ€๋‹ค์ˆ˜ ์†”๋ฃจ์…˜๊ณผ ๋™์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ํ‚ค์— ์ฝœ๋ก  : ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†๋Š” ์ƒˆ ๋น„๋ฐ€ ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹œ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. WSL์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

aws-cli/1.15.27 Python/3.6.5 Linux/4.4.0-17134-Microsoft botocore/1.10.27

@gchiu๊ฐ€ 2017๋…„ 4์›”์— ๋งํ•œ ๋‚ด์šฉ ์—…๋ฐ์ดํŠธ: 2018๋…„ 6์›”์—๋„ ์Šฌ๋ž˜์‹œ(/) ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ๋น„๋ฐ€๋กœ ์ธํ•ด PHP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ œ ๊ฒฝ์šฐ์—๋Š” Windows 10์˜ PHP 7). _์„œ๋ช…์ด ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค_ ์˜ค๋ฅ˜. ์ด ์ƒํ™ฉ์—์„œ๋Š” ๋” ์•ˆ์ „ํ•œ ๋‹ค๋ฅธ ํ‚ค ์Œ์„ ์ƒ์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ๋•Œ๋ฌธ์— 30๋ถ„์ •๋„ ๋‹นํ™ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋”ฐ๋ผ ํ˜„์ง€ ์‹œ๊ฐ„ ๋“ฑ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. - ๋ชจ๋‘ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

ํ•„์‚ฌ์ ์œผ๋กœ ~/.aws/credentials ํŒŒ์ผ์— ํ•ต์„ ๋„ฃ๊ณ  ๋‹ค์‹œ ๋กœ๊ทธ์ธ(๋ณธ์งˆ์ ์œผ๋กœ ํŒŒ์ผ ์žฌ์ƒ์„ฑ)ํ•˜๋ฉด ์งœ์ž”, ๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์™œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค!

ํŽธ์ง‘ํ•˜๋‹ค:
์ œ ๊ฒฝ์šฐ์—๋Š” ๋น„๋ฐ€ ํ‚ค์™€ ๊ด€๋ จ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๋Œ€๋ถ€๋ถ„ ๋‹จ์ˆœํ•œ ๋ฌธ์ž์—ด์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ +1, ๋‚ด ํ‚ค๋Š” = . / ๋งŒ ์žˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ธ ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ฅผ " ํ‘œ์‹œ๋กœ ๋ฌถ์œผ๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์†Œ์šฉ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

AWS CLI์—์„œ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‚ด ํ‚ค์˜ /๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ๋‹ค๋Š” ๊ฒƒ์„ ๋ฏฟ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„๋‚ญ๋น„ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ฒ˜์Œ์— ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ aws cli๋ฅผ ์„ค์น˜ํ•œ ๊ฒฐ๊ณผ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ aws cli๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ํด๋”์™€ ๋ฃจํŠธ ํด๋”์— ์žˆ๋Š” .aws ํด๋”๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•œ ๋‹ค์Œ ํ˜„์žฌ ์‚ฌ์šฉ์ž๋กœ ๋‹ค์‹œ 'aws configure'๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์˜€๋‹ค.

Ubuntu์—์„œ systemd ํƒ€์ด๋จธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•  ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํƒ€์ด๋จธ๋Š” (SignatureDoesNotMatch) ์˜ค๋ฅ˜๋ฅผ ๊ณ„์† ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฃจํŠธ๋กœ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  aws ๋ช…๋ น์— ๋Œ€ํ•ด (SignatureDoesNotMatch)๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๊ณ  'aws configure'๊ฐ€ ์ œ๊ณต๋˜๋Š” ์ƒˆ ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฃจํŠธ 'su -i'๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ  'cd ~/.aws/'๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  'sudo rm -r ์ž๊ฒฉ ์ฆ๋ช…'์œผ๋กœ ๊ตฌ์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  'aws configure'๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ์œผ๋ฉฐ ์ด๋ฒˆ์—๋Š” ์ƒˆ ๊ฐ’ ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ๋‹ค์‹œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค!

์ด ๋ฌธ์ œ๊ฐ€ aws-cli/1.15.4 Python/2.7.15rc1 Linux/4.15.0-42-generic botocore/1.12.8์— ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

An error occurred (SignatureDoesNotMatch) when calling the <whatever> operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

๊ทธ๋ฆฌ๊ณ  ๋‚ด ๋น„๋ฐ€์— + ๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํšŒ์ƒํ–ˆ๊ณ  ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ์–ธ์ œ ์ด @jamesls์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋น„๋ฐ€ ํ‚ค์— + ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด aws cli์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด 2์„ผํŠธ. ๊ฐ€์† ๋์  ์†์„ฑ์— ์ง€์ •๋œ ๋Œ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์† ์ „์†ก์„ ์‚ฌ์šฉํ•˜์—ฌ s3์— ์ฝ˜ํ…์ธ ๋ฅผ ์—…๋กœ๋“œํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(๊ณผ๊ฑฐ์—๋Š” ์ž‘๋™ํ–ˆ์Œ): --endpoint-url http://imaat.s3-accelerate.amazonaws.com ( --endpoint-url http://<bucket-name>.s3-accelerate.amazonaws.com ) :
screenshot-s3 console aws amazon com-2019 01 09-17-58-00

๊ณต์‹ ๋ฌธ์„œ์˜ ์ง€์นจ์— ๋”ฐ๋ผ: https://docs.aws.amazon.com/es_es/AmazonS3/latest/dev/transfer-acceleration-examples.html ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์„ --endpoint-url http://s3-accelerate.amazonaws.com ๋กœ ๊ต์ฒดํ•˜๊ณ  ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. aws configure set s3.addressing_style virtual ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ๋™์ ์œผ๋กœ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ: https://docs.aws.amazon.com/cli/latest/topic/s3-config.html#addressing -style

์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋ฒ„ํ‚ท ์ด๋ฆ„("imaat")์—๋Š” DNS ์‹คํŒจ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†์ง€๋งŒ ์ตœ์‹  cli ์—…๋ฐ์ดํŠธ์—์„œ ์–ด๋–ค ์ด์œ ๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ํŽธ์ง‘์„ ํ†ตํ•ด ํ”„๋กœํ•„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. aws ๊ตฌ์„ฑ ์„ธํŠธ ๋ฅผ ํ†ตํ•ด ํ”„๋กœํ•„ ์•ก์„ธ์Šค ID์™€ ๋น„๋ฐ€์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ '+'๊ฐ€ ์žˆ๋Š” ๋น„๋ฐ€์šฉ์ด๋ฉฐ aws-cli/1.16.23 Python/2.7.15 Windows/10 botocore/1.12.13

@dave-miles ๋‹น์‹ ์€ ๋ญ”๊ฐ€๋ฅผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค, ์˜๊ฒฌ์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์•„๋ž˜์—์„œ ๊ท€ํ•˜์˜ ๋ฐœ๊ฒฌ์„ ํ™•์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋„์ปค ์ด๋ฏธ์ง€์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ~/.aws/credentials ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด dockerfile์—์„œ ADD๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด s3์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๊ณ  ํ•  ๋•Œ SignatureDoesNotMatch ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

dockerfile์—์„œ ADD ์ค„์„ ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ณ  ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ aws configure set aws_access_key_id <access key id goes here> ๋ฐ aws configure set aws_secret_access_key <secret access key goes here> ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด ์ปจํ…Œ์ด๋„ˆ์— ์ž๊ฒฉ ์ฆ๋ช… ์ •๋ณด๋ฅผ ์ฒ˜์Œ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค (IE ์ปจํ…Œ์ด๋„ˆ๋Š” "์‹ ์„ ํ•œ" centos ์ด๋ฏธ์ง€์˜€์Šต๋‹ˆ๋‹ค).

aws configure set ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ ํ›„ s3์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

dockerfile๊ณผ ํ•จ๊ป˜ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์€ dockerfile์—์„œ RUN ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ADD ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#!/bin/sh

aws ๊ตฌ์„ฑ ์„ธํŠธ aws_access_key_id _access-key-id-goes-here_
aws ์„ค์ • aws_secret_access_key _secret-access-key-goes-here_

@villasenor ์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ + ๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ํšŒ์ „ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด์ง€๋งŒ ์•ก์„ธ์Šค ํ‚ค๋‚˜ ๋น„๋ฐ€ ํ‚ค์—๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋™์ผํ•œ IAM ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์ƒˆ ์„ธํŠธ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๊ณ  ์ƒˆ ์„ธํŠธ๋Š” ๋ฒ„ํ‚ท์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ „ ์„ธํŠธ๋Š” ๋‚˜์—ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Š” AWS cli ๋ฐ Java SDK ํ˜ธ์ถœ ๋ชจ๋‘์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์˜ ์ž˜๋ชป์ด ์•„๋‹ˆ๋ผ๋Š” ์ฃผ์žฅ...

๋‘ ์„ธํŠธ ๋ชจ๋‘ ์•„์ง ๋ผ์ด๋ธŒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ์กด์— ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์›ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์—ฐ๋ฝํ•˜์‹ญ์‹œ์˜ค.

์ œ ๋™๋ฃŒ๋„ ๋ฐฉ๊ธˆ ์ด๊ฒƒ์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์— + ๋˜๋Š” /๊ฐ€ ์žˆ๋Š” ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ๋””๋ฒ„๊น…์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ฐ˜์„ฑํ•  ์ˆ˜๋Š” ์—†์—ˆ๋‹ค.

์ง์žฅ๋™๋ฃŒ๊ฐ€ ์ด๋Ÿฐ ๊ฒฝํ—˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์ด ๋น„๋ฐ€ ํ‚ค์— + ๋˜๋Š” /์™€ ํ•จ๊ป˜ ํŠนํžˆ Ubuntu 18.04์—์„œ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ Windows 10์„ ์‚ฌ์šฉํ•˜๋Š” ์ค‘์— ์˜ค๋Š˜ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋žฉํ†ฑ(Mac)์—์„œ ๋™์ผํ•œ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ WSL ๋‚ด์—์„œ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ด์œ ๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฉฐ aws ํ‚ค์— ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ•œ ์„ธํŠธ์˜ ์•ก์„ธ์Šค ํ‚ค์—์„œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๋‹ค๋ฅธ ์„ธํŠธ์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์—ฌ๊ธฐ ๋‚ด ํ‚ค๋Š” '/'์ž…๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์ด ๋ฌธ์ œ๋Š” RFC URI ์ธ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„ ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
์–ธ๊ธ‰๋œ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ ~/.aws ํด๋”์— ์ž˜๋ชป๋œ ์ž๊ฒฉ ์ฆ๋ช…์ด ์บ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ฑฐ๊ธฐ์—์„œ ์ฐพ๊ณ  ๋‘ ๋ฒˆ์งธ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

Git Bash๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Windows 10์—์„œ ์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Powershell๊ณผ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Python ํ˜ธ์ถœ์€ obv๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ ๋™์ผํ•œ Python ๋ฐ Python ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๋‚ด ํ‚ค์— + ๋ฐ / ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ.
๊ธฐ๋ณธ๊ฐ’ ๋Œ€์‹ :
[profilename]
aws_access_key_id = MYAWSACCESSKEYID
aws_secret_access_key = MYAWSSECRETACCESKEY
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟจ๋‹ค:
[profilename]
aws_access_key_id=MYAWSACCESSKEYID
aws_secret_access_key=MYAWSSECRETACCESKEY

= ์ฃผ์œ„์— ๊ณต๋ฐฑ์ด ์—†๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๊ณ ์ณค๊ณ  ๋‚ด ํ‚ค์—๋„ + ๋ฐ /๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ๋ฉ‹์ง„ ๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. CLI ์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์„น์…˜์— ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ์ „ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

์—ฌ๊ธฐ์— ๋งŽ์€ ๋‹ต๋ณ€์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ์ €์—๊ฒŒ๋Š” AWS Secret Access Key์˜ ํŠน์ˆ˜ ๋ฌธ์ž์˜€์Šต๋‹ˆ๋‹ค. ๊ด‘์‚ฐ์€ "=+"๋กœ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์›น ์ฝ˜์†”์—์„œ ํŠน์ˆ˜ ๋ฌธ์ž ์—†์ด ์ƒˆ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ–ˆ์„ ๋•Œ ์ฆ‰์‹œ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

Windows์˜ Ubuntu์—์„œ Zsh ์…ธ์—์„œ awscli๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

jonathan<strong i="8">@SurfaceBook</strong> ๎‚ฐ ~ ๎‚ฐ aws --version aws-cli/1.16.216 Python/2.7.12 Linux/4.4.0-17134-Microsoft botocore/1.12.206

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”
ํ™์˜ฅ

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ 4์‹œ๊ฐ„ ๋™์•ˆ ๋””๋ฒ„๊น…์— ๋ชฐ๋‘ํ–ˆ์Šต๋‹ˆ๋‹ค. s3 cli๋ฅผ ๋ฌธ์ œ ์—†์ด ๋กœ์ปฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ circleci์—์„œ ์‹คํ–‰ํ•  ๋•Œ SignatureDoesNotMatch ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‚ด ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค์— + ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ–ˆ์œผ๋ฉฐ ์ƒˆ ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ ์—†์ด๋Š” ๋””๋ฒ„๊ทธ๊ฐ€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@blbradley ๊ฐ์‚ฌ

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” AWS ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ Windows ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Python3 boto3์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ด‘์‚ฐ์€ =/

ํ˜ธ์ŠคํŠธ Time&Region์„ ๊ฒŒ์ŠคํŠธ Time&Region๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ํ‚ค์—์„œ๋„ ์ด๊ฒƒ์ด ๋‚˜์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์ณค๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ ์ขŒ์ ˆ ๋์— ์—ฌ๊ธฐ์— ์ฐฉ๋ฅ™ํ–ˆ๊ณ  ํ‚ค์—์„œ / ์— ๋Œ€ํ•œ ์–ธ๊ธ‰์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•—?!

์ด ๋ฌธ์ œ๊ฐ€ 2014๋…„์— ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฏฟ๊ธฐ์ง€ ์•Š๊ณ  ์—ฌ์ „ํžˆ ์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋กœ ์ธํ•ด ์ƒˆ๋กœ์šด AWS ์ž๊ฒฉ ์ฆ๋ช… ์„ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. '/' ์ธ์ฝ”๋”ฉ๋„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.(

"/"๋กœ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ์„ ์ง€์ ํ•ด ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ง€๊ธˆ 2020๋…„์— ์ด๋งŒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋น„๋ฐ€ ํ‚ค์—๋Š” '+'๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

aws-cli โ€” aws ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœ โ€” ์œ ํšจํ•œ aws ํ‚ค๋กœ ์‹คํŒจ... 6๋…„ ๋™์•ˆ?

2020๋…„ 1์›”์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ฐ€ ํ‚ค์—๋Š” "/" ์Šฌ๋ž˜์‹œ ๋ฌธ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

AWS IAM ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ์ž๊ฒฉ ์ฆ๋ช… ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋น„๋ฐ€ ํ‚ค๊ฐ€ ๋ชจ๋‘ ์˜์ˆซ์ž์ธ์ง€, "/", "+"๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ~/.aws/credentials ํŒŒ์ผ์—์„œ ์ด์ „ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์ƒˆ ๋น„๋ฐ€ ํ‚ค๋กœ ๊ต์ฒดํ•œ ๋‹ค์Œ ๋‹ค์‹œ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

2020๋…„์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜์ˆซ์ž๋Š” ๋‚ด ์ž๊ฒฉ ์ฆ๋ช… ์ž์ฒด์˜ ์ผ๋ถ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ œ๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์บ๋ฆญํ„ฐ๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ๊นŒ์ง€ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋‹ค์‹œ ์ƒ์„ฑํ•˜์‹ญ์‹œ์˜ค. ๋ณดํ†ต ํ•œ๋‘ ๋ฒˆ๋งŒ ๋” ์‹œ๋„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฆฌ์ธ 

๋ณด๋‚ธ ์‚ฌ๋žŒ: columb1a [email protected]
๋ณด๋‚ธ ๋‚ ์งœ: 2020๋…„ 1์›” 21์ผ ํ™”์š”์ผ ์˜คํ›„ 1:47
๋ฐ›๋Š” ์‚ฌ๋žŒ: aws/aws-cli [email protected]
์ฐธ์กฐ: Maurice Bizzarri [email protected] ; ๋Œ“๊ธ€ [email protected]
์ œ๋ชฉ: Re: [aws/aws-cli] SignatureDoesNotMatch ์˜ค๋ฅ˜(#602)

2020๋…„์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜์ˆซ์ž๋Š” ๋‚ด ์ž๊ฒฉ ์ฆ๋ช… ์ž์ฒด์˜ ์ผ๋ถ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ œ๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faws%2Faws-cli%2Fissues%2F602%3Femail_source%3Dnotifications์—์„œ ํ™•์ธํ•˜์„ธ์š”. 26email_token % % % 3DAAAXXM3CF63PVTWMVHJN2FTQ65UMRA5CNFSM4ALOPGL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJRMFFA 23issuecomment-576,897,684 ๋ฐ ๋ฐ์ดํ„ฐ = 02% 7C01 % 7Cmaurice % 40bizzarrisoftware.com % 7Cf6f2e8a571954134b76b08d79ebb6bee % 7C9aa15552370449f5ac56c2850c165d32 % 7C1 % 7C0 % 7C637152400117352225 ๋ฐ SDATA = 2Z6PQRSvKD0P8Eu0yrs15Ypi6GgtFvaDi7qewAq5yH4 % 3D ๋ฐ ์˜ˆ์•ฝ = 0 ๋˜๋Š” ๊ฑฐ๋ถ€ https://nam04.safelinks.protection.outlook.com /?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAAAXXM34MIXB32H3RMQL2FTQ65UMRANCNFSM4ALOPGLQ&data=02%7C01%7Cmaurice%40bizzarrisoftware.com%7Cf6f2e8a571954134b76b08d79ebb6bee%7C9aa15552370449f5ac56c2850c165d32%7C1%7C0%7C637152400117362212&sdata=53%2F78BXqn3FRxlkfzXYHnJPEEbs7Ta1XmJhW%2BZdBjXo%3D&reserved= 0 .

์ฒ˜์Œ์—๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  awscli๋ฅผ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. 6๋…„์ด๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ...

๋˜ํ•œ gitlab์„ ํ†ตํ•ด AWS S3 ๋ฒ„ํ‚ท์— Vue.js ์•ฑ์„ ๋ฐฐํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
msg:์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜: ListObjectsV2 ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(SignatureDoesNotMatch): ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚ค์™€ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”.

์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ์—†์—ˆ์ง€๋งŒ ๋‹จ์ผ ํ”„๋กœํ•„์— ๋Œ€ํ•ด ํ”„๋กœํ•„ ์ž‘์—…์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋‹ค์‹œ ์ƒ์„ฑํ–ˆ๊ณ  ์ƒˆ ์ž๊ฒฉ ์ฆ๋ช…์ด ๋ฐฉ๊ธˆ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚ ์—๋„ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ํŠน์ˆ˜ ๋ฌธ์ž('+' ๋˜๋Š” '/') ์—†์ด ์ž๊ฒฉ ์ฆ๋ช…์„ ์žฌ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๊ฐ‘์ž๊ธฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Get ๋ฐ Put ์ž‘์—…์œผ๋กœ ์ž‘์—…ํ•˜๋Š”๋ฐ ํ•˜๋‚˜๋Š” ์ž‘๋™ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋‚ด ๋น„๋ฐ€ ํ‚ค์—๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋„์›€์ด? ๋จผ์ € getIntent(amazon lex ๋ชจ๋ธ API)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ธํ…ํŠธ ์ฒดํฌ์„ฌ์„ ๊ฒ€์ƒ‰ํ•œ ๋‹ค์Œ putIntent๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๋‹น ์ธํ…ํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. Get ๋ฉ”์„œ๋“œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ(ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹˜) put ๋ฉ”์„œ๋“œ๋Š” ๋™์ผํ•œ ์„œ๋ช… ๋ฌธ์ œ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฐ˜๋ฉด, ์ฝ”๋“œ์—์„œ Get ๋ฉ”์„œ๋“œ API๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด Put ๋ฉ”์„œ๋“œ๋Š” 3๋ฒˆ ์ค‘ 2๋ฒˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
aws ํ”„๋กœํ•„์„ ๋‹ค์‹œ ๊ตฌ์„ฑํ•˜์‹ญ์‹œ์˜ค.

AWS ๊ตฌ์„ฑ

AWS ์•ก์„ธ์Šค ํ‚ค ID [ * * * * QD5E]: AWS_ACCESS_KEY_ID
AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค [ * * * * ANjA]: AWS_SECRET_ACCESS_KEY
๊ธฐ๋ณธ ๋ฆฌ์ „ ์ด๋ฆ„ [eu-west-3]: AWS_REGION
๊ธฐ๋ณธ ์ถœ๋ ฅ ํ˜•์‹[json]: OUTPUT_FORMAT

์•ˆ๋…• !

๋‚ด ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜๋œ ๋ฏธ๋ฆฌ ์„œ๋ช…๋œ URL์„ ์‚ฌ์šฉํ•  ๋•Œ ์ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
URL์€ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(์ œํ•œ๋œ ์‹œ๊ฐ„ ๋™์•ˆ). ์„œ๋ฒ„๋Š” python์ด๊ณ  ๊ฑฐ๊ธฐ์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” JS์ž…๋‹ˆ๋‹ค. URL๋งŒ ๊ฐ€์ ธ์™€์„œ ์—ฝ๋‹ˆ๋‹ค. URL์˜ ์ผ๋ถ€๋Š” ์ด ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์ƒ์„ฑ๋œ ์ž๊ฒฉ ์ฆ๋ช…์ž…๋‹ˆ๋‹ค)

์ด ์˜ค๋ฅ˜๋Š” ์ผœ์ง ๋ฐ ๊บผ์ง์ด๋ฏ€๋กœ ์ž๊ฒฉ ์ฆ๋ช…์˜ ํŠน์ˆ˜ ํ‚ค์— ๋Œ€ํ•ด ์—ฌ๊ธฐ์—์„œ ๋งํ•œ ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ๋“  ํŠน์ˆ˜ ํ‚ค๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๊นŒ?

์•ˆ๋…• !

๋‚ด ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜๋œ ๋ฏธ๋ฆฌ ์„œ๋ช…๋œ URL์„ ์‚ฌ์šฉํ•  ๋•Œ ์ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
URL์€ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(์ œํ•œ๋œ ์‹œ๊ฐ„ ๋™์•ˆ). ์„œ๋ฒ„๋Š” python์ด๊ณ  ๊ฑฐ๊ธฐ์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” JS์ž…๋‹ˆ๋‹ค. URL๋งŒ ๊ฐ€์ ธ์™€์„œ ์—ฝ๋‹ˆ๋‹ค. URL์˜ ์ผ๋ถ€๋Š” ์ด ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์ƒ์„ฑ๋œ ์ž๊ฒฉ ์ฆ๋ช…์ž…๋‹ˆ๋‹ค)

์ด ์˜ค๋ฅ˜๋Š” ์ผœ์ง ๋ฐ ๊บผ์ง์ด๋ฏ€๋กœ ์ž๊ฒฉ ์ฆ๋ช…์˜ ํŠน์ˆ˜ ํ‚ค์— ๋Œ€ํ•ด ์—ฌ๊ธฐ์—์„œ ๋งํ•œ ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ๋“  ํŠน์ˆ˜ ํ‚ค๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๊นŒ?

@maya-harel IAM์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -> ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์„ ํƒํ•˜๊ณ  ๋น„๋ฐ€ ํ‚ค ๋ณด์•ˆ ์ž๊ฒฉ ์ฆ๋ช… ํƒญ์„ ๋‹ค์‹œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฝ”๋“œ์˜ ํƒ€์ด๋ฐ์€ ์ •๋ง ์น˜๋ช…์ ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด ํ—ค๋”์—์„œ ์„œ๋ช…์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ํ˜„์žฌ ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ œ์ณ๋‘๊ณ , ์˜ต์…˜์ด ์•„๋‹ˆ๋ผ๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ๋งํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ธ”๋ผ์ธ๋“œ "IAM ์ž๊ฒฉ ์ฆ๋ช… ์žฌ์ƒ์„ฑ" ์ œ์•ˆ์ด ๋งŽ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ด๊ฒƒ์ด ์œ ํšจํ•œ IAM ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” aws-cli ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ„์† ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์•Œ๋ ค์ง„ ๋ฒ„๊ทธ๋ผ๋Š” ์‚ฌ์‹ค์„ ์‚ฐ๋งŒํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ ๋˜ํ•œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
$ aws --๋ฒ„์ „
aws-cli/1.16.300 Python/2.7.16 Linux/4.14.152-127.182.amzn2.x86_64 botocore/1.13.36

๋‚ด ํ‚ค๋Š” ์™„์ „ํžˆ ์˜์ˆซ์ž์ด๋ฉฐ ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ์—†์Šต๋‹ˆ๋‹ค.

ํ‚ค๋Š” ์…ธ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ Makefile ๋Œ€์ƒ์—์„œ Jenkins๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ๋น„๋ฐ€ ํ‚ค์—๋Š” / ๋ฐ + ๊ฐ€ ๋ชจ๋‘ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋‹ค์Œ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํŠธ๋กœํ”„ aws-cli > aws iam get-user ( ~/.aws/credentials ํŒŒ์ผ ์‚ฌ์šฉ)
  • boto3(ํŒŒ์ด์ฌ 3.6.8์„ ํ†ตํ•ด)

    • ํ•˜๋“œ์ฝ”๋”ฉ๋œ ํ‚ค

    • ํ™˜๊ฒฝ๋ณ€์ˆ˜

    • boto3.Session(profile_name=PROFILE) ์ธ์ˆ˜(~/.aws/credentials์—์„œ ๊ฐ€์ ธ์˜ด)

์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ฒฐ๊ณผ๋Š” SignatureDoesNotMatch ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ Cyberduck(https://cyberduck.io/)์—์„œ S3 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ๋‹ˆ?

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋งŒ๋‚œ ๊ฐ€์žฅ ์‹ค๋ง์Šค๋Ÿฌ์šด ๋ฒ„๊ทธ ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•˜๋ฉฐ ์•„์ง ์ˆ˜์ •๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์‚ฌ์‹ค์ด ์•ˆํƒ€๊นŒ์šธ ๋ฟ์ž…๋‹ˆ๋‹ค. CircleCI์—์„œ "+" ์—†์ด ํฌ๋ ˆ๋”ง์„ ๋ฐ›๋Š” ๊ฒƒ์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ถฉ๋Œํ•ฉ๋‹ˆ๊นŒ? ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜์—ฌ ์™€์šฐ ๋‚˜๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ...

๋„ค, ๋‹ต๋‹ตํ•ฉ๋‹ˆ๋‹ค. + ๊ฐ€ ์žˆ๋Š” ๋‚ด ๋น„๋ฐ€ ํ‚ค๋Š” Jenkins ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ / ๋ช‡ ๊ฐœ๋งŒ ์žˆ๋Š” ์ƒˆ ์•”ํ˜ธ๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

Ubuntu 16.04์—์„œ ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฒ„์ „์˜ awscli์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. awscli๋ฅผ python pip ํŒจํ‚ค์ง€๋กœ ์„ค์น˜ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์ง€์นจ์€ Python PIP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AWS CLI ์„ค์น˜ ์„น์…˜์—์„œ ์ด ๋งํฌ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

_ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ _

1) ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์žฌ์ƒ์„ฑํ•œ ํ›„ InvalidSignatureException ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
2) ๋ถ€๋ถ„ ์˜ค๋ฅ˜ ๋กœ๊ทธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ python SetupAWS.py list_things
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "SetupAWS.py", 222ํ–‰,
list_things()
list_things์˜ ํŒŒ์ผ "SetupAWS.py", 182ํ–‰
์‚ฌ๋ฌผ = client.list_things()['์‚ฌ๋ฌผ']
ํŒŒ์ผ "c:Program Files (x86)Python38-32libsite-packagesbotocore-1.16.6-py3.8.eggbotocoreclient.py", 316ํ–‰, _api_call
๋ฐ˜ํ™˜ self._make_api_call(operation_name, kwargs)
ํŒŒ์ผ "c:Program Files (x86)Python38-32libsite-packagesbotocore-1.16.6-py3.8.eggbotocoreclient.py", 626ํ–‰, _make_api_call
error_class(parsed_response, operation_name) ์˜ฌ๋ฆฌ๊ธฐ
botocore.exceptions.ClientError: ListThings ์ž‘์—…์„ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(InvalidSignatureException): ๊ณ„์‚ฐํ•œ ์š”์ฒญ ์„œ๋ช…์ด ์ œ๊ณตํ•œ ์„œ๋ช…๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AWS ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๋ฐ ์„œ๋ช… ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋น„์Šค ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

_ ๊ทผ๋ณธ ์›์ธ ๋ถ„์„ _

1) ์œ„์˜ ๋งŽ์€ ์˜๊ฒฌ์—์„œ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‚ด ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค ์— "+" ๊ฐ€ ์žˆ์œผ๋ฉด ์œ„์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

_ ํ•ด์ƒ๋„ _

1) IAM ์‚ฌ์šฉ์ž๋กœ ์ƒˆ ์•ก์„ธ์Šค ํ‚ค ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒˆ ๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค ๊ฐ€ ๋ฌธ์ž์—ด ๋‚ด์— "+"๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
2) aws configure ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ์ƒˆ ๊ฐ’์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
3) ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚ด ๋ฌผ๊ฑด์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋‚˜์—ดํ•œ python SetupAWS.py list_things ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ python SetupAWS.py list_things
[{'thingName': 'myThingName', 'thingArn': 'myThingArn', '์†์„ฑ': {}, '๋ฒ„์ „': 1}]

์ด ํ˜ธ๋Š” 6๋…„ ๋™์•ˆ ๊ณต๊ฐœ๋˜์—ˆ์œผ๋ฉฐ ๊ท€ํ•˜์˜ ์ธ๋‚ด, ๋ˆ๊ธฐ ๋ฐ ์ œ๊ณตํ•œ ์ •๋ณด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๊ทผ๋ณธ์ ์ธ ์›์ธ์€ ๊ท€ํ•˜์˜ ์˜๊ฒฌ(https://github.com/aws/aws-cli/issues/602#issuecomment-520469209)์„ ํ†ตํ•ด ํ™•์ธ๋˜์—ˆ์œผ๋ฉฐ ๋ช…๋ น์ค„ ์‚ฌ์šฉ ์„ค๋ช…์„œ ์˜ค๋ฅ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์žฅ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์›์ธ์—๋Š” ์‹œ๊ณ„ ์™œ๊ณก ๋ฐ ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ํ‚ค๋ฅผ ์ž˜๋ชป ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ๋ถ€ ์šด์˜ ์ฒด์ œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ์žฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. Python 3.6.8 ๋ฐ 3.8.3๊ณผ ํ•จ๊ป˜ Ubuntu 16.04, Ubuntu 18.04 ๋ฐ Amazon Linux 2๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋Œ“๊ธ€ ์ž‘์„ฑ์ž๊ฐ€ Python 2๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์žฌํ˜„์„ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ˜ธ์—์„œ ์–ธ๊ธ‰ํ•œ ์ตœ์‹  v1 aws-cli(์ž‘์„ฑ ๋‹น์‹œ 1.18.80)์™€ ์ด์ „ ๋ฒ„์ „(1.11.78)์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. @jamesls์—์„œ ์ œ๊ณตํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ(https://github.com/aws/aws-cli/issues/602#issuecomment-281866173)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ์ž๊ฒฉ ์ฆ๋ช… ์Œ์„ ์ƒ์„ฑํ•˜๊ณ  ์ตœ๋Œ€ ๊ฐ๊ฐ 1์‹œ๊ฐ„. SignatureDoesNotMatch ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. describe-instances ๋ช…๋ น์—์„œ ๊ฐ€๋” AuthFailure ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์‹ ํ–ˆ์ง€๋งŒ ๋™์ผํ•œ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ๋ช…๋ น์„ ์žฌ์‹œ๋„ํ•˜๋ฉด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์ˆ˜์˜ ๋Œ“๊ธ€๋กœ ์ธํ•ด ์ด ๋ฌธ์ œ๋ฅผ ์ฐพ๋Š” ์‹ ๊ทœ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ œ์•ˆ์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์ž ํŒ€์˜ ์š”์ฒญ์„ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŒ€๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ด ์˜ค๋ฅ˜์˜ ์›์ธ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ง€์นจ ๋ฐ ์„ค๋ช… ์š”๊ตฌ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ํŠน์ • GitHub ๋ฌธ์ œ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฌธ์ œ ํƒญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ "์ƒˆ ๋ฌธ์ œ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  SignatureDoesNotMatch ์˜ค๋ฅ˜ ๋ณด๊ณ ์„œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค(๋˜๋Š” ์•„๋ž˜ ๋งํฌ ์‚ฌ์šฉ).

์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์˜ ์ฐจ์ด๋กœ ์ธํ•ด ๊ธฐ์กด ๋ฌธ์ œ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ธฐ ๋ณด๋‹ค๋Š” ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

SignatureDoesNotMatch ์˜ค๋ฅ˜ ๋ณด๊ณ ์„œ๋ฅผ ์ œ์ถœํ•˜๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค.

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