Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions managed-route53/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@

ifdef ACCOUNTS
else
ACCOUNTS := 442294194136
endif

TEST := false

ifdef AWS_REGION
else
AWS_REGION := us-east-1
endif

build: setup

buildlambda: upload update

upload:
npm install
cd build.f; node run_upload_code;

update:
npm install
cd build.f; node run_update_code;

setup:
cd build.f/particles-initial; npm install; ./node_modules/.bin/gulp condensation:build; ./node_modules/.bin/gulp condensation:deploy;

clean:
23 changes: 23 additions & 0 deletions managed-route53/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

# Route53

AWS micro service to Manage AWS Route53.


## How To Setup

$ make \
-e AWS_REGION=<region> \
-e ACCOUNTS="<accounts whose config policy will be monitored separated by spaces>"


## How To Update Lambda Function Codes

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this needed?


$ make buildlambda


## How To Remove Service

$ make clean -e AWS_REGION=<region>


4 changes: 4 additions & 0 deletions managed-route53/build.f/particles-initial/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
condensation_errors
config/local.js
dist
node_modules
21 changes: 21 additions & 0 deletions managed-route53/build.f/particles-initial/condensation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
var git = require('gulp-git'),
gulp = require('gulp'),
vfs = require('vinyl-fs'),
zip = require('gulp-zip'),
exec = require('child_process').exec;

module.exports.initialize = function(cb) {
var child = exec('npm install', function(error, stdout, stderr) {
if (error) return cb(error);
});

vfs.src(["managed-route53/index_*.js", "managed-route53/json/*.json", "lib/flow_controller.js", "lib/aws/*.js"],{cwd:'../../..', base:'../../..'})
.pipe(zip('managed-route53.zip'))
.pipe(gulp.dest('./particles/assets'))
.on('end', function(err, data) {
vfs.src(['cloudformation/*.js'],{cwd:'../../..', base:'../../..'})
.pipe(zip('cloudformation_builder.zip'))
.pipe(gulp.dest('./particles/assets'))
.on('end', cb);
});
};
16 changes: 16 additions & 0 deletions managed-route53/build.f/particles-initial/config/default.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
var config = {
s3: [
{
aws: {
region: 'us-east-1',
bucket: 'sgas.particles-managed-route53.442294194136.us-east-1'
},
clean: true,
validate: true,
create: true
}
],
dist: 'dist'
};

module.exports = config;
7 changes: 7 additions & 0 deletions managed-route53/build.f/particles-initial/gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var gulp = require('gulp'),
config = require('config');

// Will add necessary gulp tasks to build, compile and validate
// CloudFormation templates

require('condensation').buildTasks(gulp,config);
33 changes: 33 additions & 0 deletions managed-route53/build.f/particles-initial/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "managed-route53",
"version": "0.0.1",
"description": "Condensation particles for building AWS Route53 CloudFormation templates.",
"scripts": {
"test": "./node_modules/.bin/mocha",
"build": "./node_modules/.bin/gulp condensation:build",
"deploy": "./node_modules/.bin/gulp condensation:deploy",
"gulp": "./node_modules/.bin/gulp"
},
"license": "Apache-2.0",
"keywords": [
"condensation-particles",
"aws",
"cloudformation",
"cloud",
"formation",
"aws",
"vpc"
],
"dependencies": {
"condensation": "^0.5.5",
"config": "^1.21.0",
"gulp": "^3.9.1",
"particles-core": "^0.4.5",
"particles-vpc": "^0.5.1",
"particles-nat-gateway": "^0.2.2"
},
"devDependencies": {
"condensation-particle-tests": "^0.5.2",
"mocha": "^2.5.3"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{{#layout templateDescription="This template creates Route53 Hosted Zone"}}
{{set "hostedzone"}}

{{/layout}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{{#layout templateDescription="This template creates Route53 Record Set"}}

{{set "recordset"}}
{{/layout}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
description: "Optional input for Route53"
---
{{
parameter "m:core" "base"
type="String"
optional=true
}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
description: "Required input for Route53"
---
{{
parameter "m:core" "base"
type="String"
}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{{#resource "m:core" "base" type="AWS::Route53::HostedZone"}}
{{#helper "m:core" "properties"}}
{{helper "m:core" "property" "Name"}}
{{helper "m:core" "property" "Comment" optional=true}}
{{/helper}}
{{/resource}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{{#resource "m:core" "base" type="AWS::Route53::RecordSet"}}
{{#helper "m:core" "properties"}}
{{helper "m:core" "property" "HostedZoneId"}}
{{helper "m:core" "property" "Name"}}
{{helper "m:core" "property" "Type"}}
{{helper "m:core" "property" "TTL"}}
{{helper "m:core" "property" "ResourceRecords"}}
{{/helper}}
{{/resource}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{parameter "requiredString" logicalId="RouteHostName"}}
{{parameter "optionalString" logicalId="RouteHostComment"}}

{{#resource "route53HostedZone" logicalId="Route53HostedZone" }}
"Properties": {
"Name": {{ref "RouteHostName"}},
"HostedZoneConfig": {
"Comment": {{ref "RouteHostComment"}}
}
}
{{/resource}}

{{output "m:core" "base" logicalId="Route53HostZoneID" value=(ref "Route53HostedZone")}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{parameter "requiredString" logicalId="HostedZoneId" description="Hosted Zone Id"}}
{{parameter "requiredString" logicalId="RecordSetName" description="Name of Record Set"}}
{{parameter "requiredString" logicalId="RecordSetType" description="Type of Record Set, eg: A, CNAME, MX, AAAA, TXT, PTR, SRV, SPF, NAPTR"}}
{{parameter "requiredString" logicalId="ResourceRecord" description="Value for the record set"}}
{{parameter "requiredString" logicalId="TTLValue" description="TTL in seconds"}}
{{parameter "requiredString" logicalId="ResourceRecord" description="Value for Record Set Type" type="CommaDelimitedList"}}

{{#resource logicalId="Route53RecordSet"}}
"Type": "AWS::Route53::RecordSet",
"Properties": {
"HostedZoneId": {{ref "HostedZoneId"}},
"Name": {{ref "RecordSetName"}},
"Type": {{ref "RecordSetType"}},
"TTL": {{ref "TTLValue"}},
"ResourceRecords": {{ref "ResourceRecord"}}
}
{{/resource}}

{{output "m:core" "base" logicalId="Route53RecordSetDomainName" value=(ref "Route53RecordSet")}}
48 changes: 48 additions & 0 deletions managed-route53/build.f/run_stack.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

var argv = require('minimist')(process.argv.slice(2));
var action = argv._[0];
var region = argv['region'];
var name = argv['name'];
var particles = argv['particles'];
if (!region || !action || (action != 'launch' && action != 'drop') || !name) {
console.log("Usage : node run_stack launch/drop --region <region> --name <stack name> [--parameters <parameter json str>] [--particles <particles folder name without 'particles-'>]");
return;
}
console.log('action = ' + action);
console.log('region = ' + region);
console.log('name = ' + name);
console.log('particles Folder = ' + particles);

var templateStr = null;
if (particles) {
var fs = require("fs");
templateStr = fs.readFileSync(__dirname + '/particles-' + particles + "/dist/0/particles/cftemplates/template.json", {encoding:'utf8'});
}
var input = {
region: region,
stackName: name
}
if (templateStr) input.templateStr = templateStr;
console.log(input);

var stack_builder = new (require('../../lib/stack_builder'))();
stack_builder[action](input, function(err, data) {
if(err) {
if (action == 'launch') {
console.log("Error occurred during " + action + " : " + err);
process.exit(1);
}
else if (action == 'drop') {
console.log("stack was already removed");
process.exit(0);
}
}
else if(data) {
console.log("Successfully completed to " + action + " stack");
process.exit(0);
}
else {
console.log("Failed to " + action + " stack");
process.exit(1);
}
});
33 changes: 33 additions & 0 deletions managed-route53/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "managed-route53",
"version": "0.0.1",
"description": "Condensation particles for building AWS Route53 CloudFormation templates.",
"scripts": {
"test": "./node_modules/.bin/mocha",
"build": "./node_modules/.bin/gulp condensation:build",
"deploy": "./node_modules/.bin/gulp condensation:deploy",
"gulp": "./node_modules/.bin/gulp"
},
"license": "Apache-2.0",
"keywords": [
"condensation-particles",
"aws",
"cloudformation",
"cloud",
"formation",
"aws",
"vpc"
],
"dependencies": {
"condensation": "^0.5.5",
"config": "^1.21.0",
"gulp": "^3.9.1",
"particles-core": "^0.4.5",
"particles-vpc": "^0.5.1",
"particles-nat-gateway": "^0.2.2"
},
"devDependencies": {
"condensation-particle-tests": "^0.5.2",
"mocha": "^2.5.3"
}
}