Atlassian Connect Amazon Serverless API

We achieved deploy on Heroku our test addon according to atlassian connect express. With express, database created only with configuration for jwt.

But we are planning to use Amazon Lambda + S3 + DynamoDB + Api Gateway for production because of cost.

Are there similar way to deploy connect plugin to Amazon

1 Like

Hi Mert,

Great question. With Heroku, Git is how they manage app deployments; however, deploying to AWS Lambda + API Gateway is a bit different.

I did just try bundling up an Atlassian Connect Express sample app, and uploaded it to Lambda (and configured it to trigger with AWS API Gateway), but it didn’t work on this attempt (TypeError in at module.exports in node_modules/atlassian-connect-express/lib/internal/util.js). So out of the box, no, I couldn’t get it to work.

Come to think of it, I don’t think that I’ve ever tried to deploy a whole Express framework app to Lambda before. If you’re up to the task – here are a couple of things that I’m likely to give a try next:

  • AWS Labs Serverless Express - library and sample app to run Express app on Lambda+API Gateway
  • Claudia.js - library that lets you just build, and not deal with complexities of config/deployment – looks very cool

Would love to hear from other folks in community that are running apps/services in prod on Lambda + API Gateway.

Thanks,
Neil

@mkaradagli have you seen this talk from AtlasCamp 2017?

Maybe that’s a good starter.

2 Likes

That looks interesting!

I have looked at https://bitbucket.org/pstreule/bb-activity-graph, and noticed (in the video also) that it declares authentication: none in add-on descriptor, however JWT is still passed in initial request and thus could be used for authentication on serverless backend.

Wonder if it is expected behaviour of Bitbucket only? Or this is something unexpected and actually useless, as I don’t see ACE used in servlerless backend, so no authentication is performed actually.

I’m using AWS Lamba + API Gateway + DynamoDB for my Git Flow Chart add-on for BitBucket. As the project does not require much handlers, I decided to roll my own deployment using gulp-awslambda and gulp-awspublish (statics go to S3). This automates the deployment of Lambda functions, not the API gateway. This part is still manual, but as the API endpoints don’t change much, this is very acceptable.

Either way, you should definitely look into GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!

1 Like

Hey @nmansilla (and everybody else interested in ACE+lambda),

I’m experimenting with a similar setup (SST + ACE to run a Connect app on Lambda) and ran into the exact same issue with utils.js. After some hours knee-deep in esbuild, I found the issue and created a pull request to the ACE project that fixes it. Details can be found in the pull request: https://bitbucket.org/atlassian/atlassian-connect-express/pull-requests/462

Even if the pull request is not accepted, you can simply apply that one line (!) and ACE runs beautifully on Lambda.

Cheers,
Steffen

3 Likes