Skip to content

Simple and clean Promise based AWS Elastic Beanstalk automation

Notifications You must be signed in to change notification settings

liamqma/beanstalkify

Repository files navigation

AWS Elastic Beanstalk automation. This is the node version of Ruby Beanstalkify

Build Status Coverage Status

Prerequisites

  • Node.js: Requires Node.js version 18 or higher. Make sure to have the appropriate version installed before using Beanstalkify.
node --version
  • ts-node: Necessary for running the acceptance tests. Ensure you have ts-node installed globally or as a development dependency.
npm install -g ts-node

OR

npm install ts-node --save-dev

Install

npm install beanstalkify

Usage

import Beanstalkify from 'beanstalkify';

const beanstalkify = new Beanstalkify({
  credentials: {
    accessKeyId: 'YOUR_ACCESS_KEY',
    secretAccessKey: 'YOUR_SECRET_KEY'
  },
  region: 'ap-southeast-2'
});

// Deploy configuration
const deployConfig = {
  archiveFilePath: 'PATH_TO_YOUR_ZIP_FILE',
  environmentName: 'YOUR_ENVIRONMENT_NAME',
  awsStackName: '64bit Amazon Linux 2023 v6.0.1 running Node.js 18',
  tags: [
    {
      Key: 'YOUR_TAG_KEY',
      Value: 'YOUR_TAG_VALUE'
    },
    // ... additional tags as needed
  ]
};

// Deploy using async/await
async function deployApp() {
  try {
    const data = await beanstalkify.deploy(deployConfig);
    /*
    Outputs:
    {
      appName: 'test-website',
      appVersion: 'foo',
      envName: 'test-website-prod',
      envUrl: 'tech-website-12345.ap-southeast-2.elasticbeanstalk.com'
    }
    */
    console.log(data);
  } catch (error) {
    console.error('Error during deployment:', error);
  }
}

deployApp();

Unit test

npm run test

Acceptance test

  • Create credentials.json within folder acceptance
{
  "credentials": {
    "accessKeyId": "XXX",
    "secretAccessKey": "XXX"
  },
  "region": "ap-southeast-2"
}
  • Run ts-node acceptance/index.ts
  • It should create automatically two random elasticbeanstalk environments

Change Log

This project adheres to Semantic Versioning. Every release, along with the migration instructions, is documented on the Github Releases page.

Contributors

liamqmalucascanavanMaxwell2022joshhunt