1.0.0-beta.2
OS X 10.11.6
Tenga la siguiente configuración, un método GET user/profile
otro POST user/profile
y reciba un error en la implementación.
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].
Esto también se resolvió al volver a crear la pila. #1908
Tengo este error también. Sin embargo, cuando ejecuto "eliminación sin servidor", luego "implementación sin servidor -v", no resolvió el problema. Esto es un problema ya que tengo una API normal que sigue el formato estándar CRUD (como django-rest-framework o AngularJS Resource. Quiero tener URL como:
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
Estoy de acuerdo con hacer cosas exóticas para lograr esto, solo quiero este formato de URL.
Aquí está el error que obtengo:
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
¡Espera no! ¡Cancela esto! ¡Es solo un pequeño error mal expresado! Gente del futuro! Aquí estaba mi problema:
Entonces, esencialmente, tenía dos funciones como se muestra a continuación, con dos caminos como este:
path: tasks/{taskId}
path: tasks/{taskToUpdate}
¡Y ambas rutas necesitaban la misma clave, por lo que debería haber usado {taskId} en ambas ocasiones!
La única solicitud que tengo para un desarrollador que ve esto es quizás dar un mejor mensaje de error que el que da 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
Comentario más útil
¡Espera no! ¡Cancela esto! ¡Es solo un pequeño error mal expresado! Gente del futuro! Aquí estaba mi problema:
http://forum.serverless.com/t/deployment-error-a-sibling-did-of-this-resource-ya-has-a-variable-path-part-only-one-is-allowed/795
Entonces, esencialmente, tenía dos funciones como se muestra a continuación, con dos caminos como este:
¡Y ambas rutas necesitaban la misma clave, por lo que debería haber usado {taskId} en ambas ocasiones!
La única solicitud que tengo para un desarrollador que ve esto es quizás dar un mejor mensaje de error que el que da AWS.