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
لدي هذا الخطأ أيضا. عندما أقوم بتشغيل "الإزالة بدون خادم" ، ثم "النشر بدون خادم -v" ، لم يتم حل المشكلة. هذه مشكلة نظرًا لأن لديّ واجهة برمجة تطبيقات عادية تتبع تنسيق CRUD القياسي (مثل إطار عمل django-rest أو مورد AngularJS. أريد الحصول على عناوين 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.