Package Exports
- aws-architect
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (aws-architect) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
AWS Architect
It should be easy, and it also should be automated. But both of those things usually aren't free. The ideal world has magic AI which can communicate with each other to a such a degree which doesn't require software architects to think about what the global picture has to be before an organization and deliver something of value. The AWS Architect, attempts to eliminate the burden of projecting your vision of software to AWS. AWS Architects your service using Microservices.
Usage
Creating microservice init
This will also configure your aws account to allow your build system to automatically deploy to AWS. It does this by creating a deployer role, which will have access to modifying the necessary resources.
- Create git repository and clone locally
sudo npm install aws-architect -g
aws-architect init
npm install
- Update:
package.json
: package namemake.js
: publish command, and database structure to match your service requirements
API Sample
var aws = require('aws-sdk');
var Api = require('openapi-factory');
var api = new Api();
module.exports = api;
api.get('/sample', (request) => {
return {'Value': 1};
});
Lambda with no API sample
exports.handler = (event, context, callback) => {
console.log(`event: ${JSON.stringify(event, null, 2)}`);
console.log(`context: ${JSON.stringify(context, null, 2)}`);
callback(null, {Event: event, Context: context});
};
Set a custom authorizer
api.SetAuthorizer((authorizationTokenInfo, methodArn) => {
return {
principalId: 'computed-authorized-principal-id',
policyDocument: {
Version: '2012-10-17',
Statement: [
{
Action: 'execute-api:Invoke',
Effect: 'Deny',
Resource: methodArn //'arn:aws:execute-api:*:*:*'
}
]
}
}
});
S3 Website Deployment
Specify bucket
in the configuration options for contentOptions
, and configure the PublishWebsite
function in the make.js file.
awsArchitect.PublishWebsite('deadc0de-1')
.then((result) => console.log(`${JSON.stringify(result, null, 2)}`))
.catch((failure) => console.log(`Failed to upload website ${failure} - ${JSON.stringify(failure, null, 2)}`));
awsArchitect.PromoteToStage('deadc0de-1', 'production')
.then((result) => console.log(`${JSON.stringify(result, null, 2)}`))
.catch((failure) => console.log(`Failed copying stage to production ${failure} - ${JSON.stringify(failure, null, 2)}`));
Built-in functionality
- Authorization flow created in index.html for the website (static content)
- conventioned based static S3 website using the
/content
directory - conventioned based lambda functions specified as an argument to the associated functions.
- Creates a ServiceRole to execute Lambda functions.
- Lambda/API Gateway setup for seemless integration.
- Automatic creation of AWS resources when using
AwsArchitect.PublishPromise()
. Including:- Lambda functions
- API Gateway resources
- Environments for managing resources in AWS
- Local user testing platform, to run lambdas and static content as a local express Node.js service.
Service Configuration
See template service documentation for how individual parts of the service are configured.