Developer Workflow

An abstract view of the steps in the collaborative development process looks like this:

Important: Reviewing a PR Stack

To review a Pull Request Stack, you need to know how to connect to it. With that in mind, the CI/CD pipeline that creates the PR Stack also generates and adds a AwsSettings.json file to the PR branch in the repository. This file is usually found at Stacks/Test/AwsSettings.json. For more information on AwsSettings.json file, click here . The LazyStack Tutorial covers the use of AwsSettings.json files, see Configure PetStoreTests Project.

Collaborative Process Implementation

A concrete implementation of the collaborative development process using Visual Studio IDE integration with GitHub looks like this:

In the diagram above, developers publish serverless stacks to their own AWS Account for rapid prototyping and testing, but have no direct connection to a Test or Production account. Instead, each serverless stack has its own GitHub repository and updates to serverless stacks in the Test and Production accounts are based on Pull Requests in that GitHub repository; more on that later.

The developer is free to code serverless stack features and publish that stack in their AWS Account frequently and without fear they will affect anyone else on the team. This freedom is key to rapid prototyping and development. AWS provides three tools for publishing serverless stacks:

  • AWS CLI using CloudFormation commands
  • AWS Visual Studio IDE Extension

We focus on and recommend using the AWS SAM CLI for command line work and in shell scripts. We also recommend using the AWS Visual Studio IDE Extension. There is no advantage to using the AWS CLI cloudformation commands if you have AWS SAM CLI installed. The AWS CLI is super helpful for lots of other uses, but publishing serverless stacks is easier with the AWS SAM CLI.

The LazyStack developer tools, described in the User Guide Developer Tools section, generate serverless stack code and configurations. The tools also include an AWS Settings generator that calls a published stack and retrieves the information necessary to configure a client app to successfully call that stack in a secure way.