AWS Lambda Rest API: A sibling ({id}) of this resource already has a variable path part -- only one is allowed Unable to create resource at path

Viewed 7189

I'm particular new to Lambda and to AWS in general. I'm trying to setup a simple REST API Service with Lambda. I've used CloudFormat and CodePipeline to have a simple Express app. I'm trying to figure out why during the deployment phase, during ExecuteChangeSet I have this error:

Errors found during import: Unable to create resource at path '/stations/{stationId}/allowedUsers': A sibling ({id}) of this resource already has a variable path part -- only one is allowed Unable to create resource at path '/stations/{stationId}/allowedUsers/{userId}': A sibling ({id}) of this resource already has a variable path part -- only one is allowed

This is what I have inside the template.yml

      Events:
      AllowedUsers:
        Type: Api
        Properties:
          Path: /stations/{stationId}/allowedUsers
          Method: get
      AddAllowedUsers:
        Type: Api
        Properties:
          Path: /stations/{stationId}/allowedUsers
          Method: post    
      DeleteAllowedUsers:
        Type: Api
        Properties:
          Path: /stations/{stationId}/allowedUsers/{userId}
          Method: delete
      GetAllowedUser:
        Type: Api
        Properties:
          Path: /stations/{stationId}/allowedUsers/{userId}
          Method: get

I searched a bit for this error but I'm not sure how to solve it.

1 Answers

For me, the issue was different from what is described in the GitHub issue Bryan mentioned.

I was using two different parameter names. Finishing the refactoring and using a single id name fixed the issue.

Example:

DeleteAllowedUsers:
  Type: Api
    Properties:
      Path: /stations/{stationId}/allowedUsers/{id}
      Method: delete
GetAllowedUser:
  Type: Api
    Properties:
      Path: /stations/{stationId}/allowedUsers/{userId}
      Method: get
Related