serverless / compose

Orchestrate Serverless Framework in monorepos
https://serverless.com/framework/docs/guides/compose
MIT License
111 stars 15 forks source link

Can't deploy single function: Unrecognized CLI options: "--function" #123

Closed mkarsene closed 2 years ago

mkarsene commented 2 years ago

Are you certain it's a bug?

Are you using the latest version?

Is there an existing issue for this?

Issue description

When I run serverless deploy --service my-service --function myFunction I get the following: Unrecognized CLI options: "--function". I have also tried serverless my-service:deploy --function=myFunction

Service configuration (serverless-compose.yml) content

import {appConfig} from './src/utils/params'
import {exportComposeParam} from './src/utils/functions'
const {stacks} = appConfig

const serverlessCompose = {
  services: {
    [stacks.root.name]: {
      path: 'src/services/_root',
    },
    [stacks.auth.name]: {
      path: 'src/services/authentication',
      dependsOn: [stacks.root.name],
      params: {
        [stacks.root.stackOutputNames.DynamoDbTableArn]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableArn,
        ),
        [stacks.root.stackOutputNames.DynamoDbTableName]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableName,
        ),
        [stacks.root.stackOutputNames.PhotoBucketName]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.PhotoBucketName,
        ),
        [stacks.root.stackOutputNames.AssetBucketName]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.AssetBucketName,
        ),
      },
    },

    [stacks.longRunning.name]: {
      path: 'src/services/long-running-tasks',
      dependsOn: [stacks.root.name],
      params: {
        [stacks.root.stackOutputNames.DynamoDbTableArn]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableArn,
        ),
        [stacks.root.stackOutputNames.DynamoDbTableName]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableName,
        ),
      },
    },
    [stacks.notifications.name]: {
      path: 'src/services/notifications',
      dependsOn: [stacks.root.name],
      params: {
        [stacks.root.stackOutputNames.DynamoDbTableArn]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableArn,
        ),
        [stacks.root.stackOutputNames.DynamoDbTableName]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableName,
        ),
        [stacks.root.stackOutputNames.AssetBucketName]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.AssetBucketName,
        ),
      },
    },
    [stacks.realTime.name]: {
      path: 'src/services/real-time',
      dependsOn: [stacks.root.name],
      params: {
        [stacks.root.stackOutputNames.DynamoDbTableArn]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableArn,
        ),
        [stacks.root.stackOutputNames.DynamoDbTableName]: exportComposeParam(
          stacks.root.name,
          stacks.root.stackOutputNames.DynamoDbTableName,
        ),
      },
    },
    [stacks.appsync.name]: {
      path: 'src/services/api',
      dependsOn: [stacks.root.name],
      params: {
        [stacks.auth.stackOutputNames.CustomerUserPoolId]: exportComposeParam(
          stacks.auth.name,
          stacks.auth.stackOutputNames.CustomerUserPoolId,
        ),
        [stacks.auth.stackOutputNames.PartnerUserPoolId]: exportComposeParam(
          stacks.auth.name,
          stacks.auth.stackOutputNames.PartnerUserPoolId,
        ),
      },
    },
  },
}

module.exports = serverlessCompose

Command name and used flags

N/A

Command output

N/A
pgrzesik commented 2 years ago

Hello @mkarsene - you need to use full command name so deploy function --function <functionName>. In your case, such syntax should work:

serverless deploy function --service my-service --function myFunction
mkarsene commented 2 years ago

Yes that's right! My bad :P

pgrzesik commented 2 years ago

No worries @mkarsene 🙌