1.0.0-๋ฒ ํ.2
OSX 10.11.6
๋ค์ ๊ตฌ์ฑ์ด ์๊ณ ํ ๊ฐ์ง ๋ฐฉ๋ฒ GET user/profile
$์ด๊ณ ๋ค๋ฅธ ํ๋๋ POST user/profile
์ด๋ฉฐ ๋ฐฐํฌ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
functions:
getProfile:
handler: handler.getProfile
events:
- http:
path: user/profile
method: get
updateProfile:
handler: handler.updateProfile
events:
- http:
path: user/profile
method: post
$ sls deploy
Serverless: Zipping service...
Serverless: Removing old service versions...
Serverless: Uploading .zip file to S3...
Serverless: Updating Stack...
Serverless: Checking stack update progress...
..
Serverless Error ---------------------------------------
An error occurred while provisioning your cloudformation:
The following resource(s) failed to create: [ResourceApigEventGetprofileUserProfile].
์ด๊ฒ์ ๋ํ ์คํ์ ๋ค์ ์์ฑํ์ฌ ์์ฒด์ ์ผ๋ก ํด๊ฒฐ๋์์ต๋๋ค. #1908
๋๋์ด ์ค๋ฅ๊ฐ ์์ต๋๋ค. "serverless remove"๋ฅผ ์คํํ ๋ค์ "serverless deploy -v"๋ฅผ ์คํํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค. ์ด๊ฒ์ CRUD ํ์ค ํ์(django-rest-framework ๋๋ AngularJS Resource์ ๊ฐ์)์ ๋ฐ๋ฅด๋ ์ผ๋ฐ API๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ URL์ ๊ฐ๊ณ ์ถ์ต๋๋ค.
POST http://blahblah/task/ # Creates a new task
GET http://blahblah/task/ # Gets all tasks
GET http://blahblah/task/{taskId} # Gets a specific task
PUT http://blahblah/task/{taskId} # Updates a specific task
DELETE http://blahblah/task/{taskId} # Deletes a specific task
๋๋ ์ด๊ฒ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ด๊ตญ์ ์ธ ์ผ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋๋ ๋จ์ง ์ด URL ํ์์ ์ํฉ๋๋ค.
๋ด๊ฐ ์ป๋ ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Serverless: Deployment failed!
Serverless Error ---------------------------------------
An error occurred while provisioning your stack: ApiGatewayResourceTasksParenttaskidVar
- A sibling ({taskId}) of this resource already has
a variable path part -- only one is allowed.
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Your Environment Information -----------------------------
OS: win32
Node Version: 7.0.0
Serverless Version: 1.7.0
์๋ ๊ธฐ๋ค๋ ค! ์ทจ์ํด! ๊ทธ๊ฒ์ ์๋ชป๋ ํํ์ ์ฝ๊ฐ์ ์ค๋ฅ์ผ ๋ฟ์ ๋๋ค! ๋ฏธ๋์ ์ฌ๋๋ค! ๋ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ ๋ณธ์ง์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ๊ฒฝ๋ก์ ํจ๊ป ์๋์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
path: tasks/{taskId}
path: tasks/{taskToUpdate}
๊ทธ๋ฆฌ๊ณ ๋ ๊ฒฝ๋ก ๋ชจ๋ ๋์ผํ ํค๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ {taskId}๋ฅผ ๋ ๋ฒ ๋ชจ๋ ์ฌ์ฉํด์ผ ํ์ต๋๋ค!
์ด๊ฒ์ ๋ณด๋ ๊ฐ๋ฐ์์ ๋ํ ์ ์ผํ ์์ฒญ์ AWS๊ฐ ์ ๊ณตํ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
functions:
updateTask:
handler: lib/endpoints.createTask
events:
- http:
path: tasks/{taskToUpdate}
method: put
cors: true
deleteTask:
handler: lib/endpoints.deleteTask
events:
- http:
path: tasks/{taskId}
method: delete
cors: true
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ๊ธฐ๋ค๋ ค! ์ทจ์ํด! ๊ทธ๊ฒ์ ์๋ชป๋ ํํ์ ์ฝ๊ฐ์ ์ค๋ฅ์ผ ๋ฟ์ ๋๋ค! ๋ฏธ๋์ ์ฌ๋๋ค! ๋ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
http://forum.serverless.com/t/deployment-error-a-sibling-did-of-this-resource-already-has-a-variable-path-part-only-one-is-allowed/795
๋ฐ๋ผ์ ๋ณธ์ง์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ๊ฒฝ๋ก์ ํจ๊ป ์๋์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๊ฒฝ๋ก ๋ชจ๋ ๋์ผํ ํค๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ {taskId}๋ฅผ ๋ ๋ฒ ๋ชจ๋ ์ฌ์ฉํด์ผ ํ์ต๋๋ค!
์ด๊ฒ์ ๋ณด๋ ๊ฐ๋ฐ์์ ๋ํ ์ ์ผํ ์์ฒญ์ AWS๊ฐ ์ ๊ณตํ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.