Infarep is an infastruture orchestration tool. Find out more.
This module provides the following Service Instance Types.
- elastiCacheCluster
- elastiCacheSubnetGroup
- httpEndpoint: Abstraction over API Gateway for easy endpoint creation.
- iamPolicy
- iamRole
- lambdaFunction
- rdsDbCluster
- rdsDbSubnetGroup
- secret
With only a few exceptions, most of the Server Instance Types expect a configuration that is identical to the configuration
object expected by Amazon's aws-sdk
package.
- httpEndpoint only accepts three properties
-
path
: '/path/to/endpoint' -
method
: 'POST' -
handler
: 'arn for the lambda function that will handle traffic to this endpoint'
-
- iamRole accepts one extra property:
policies
. This should be an array of policy ARNs that you would like to attach to the role.
This module is built on top of Amazon's aws-sdk. The properties exposed by each Service Instance Type are the same properties
returned by aws-sdk. Just check Amazon's documentation to determine what properties you have to work with. The one exception
to this rule is httpEndpoint which only exposes one property: url
.
Different parts of the AWS SDK use different naming conventions. As a convenience to you, each Service Instance Type also exposes the resource's ARN in the arn
property.
require('infarep').injectAll(); // npm --save install infarep
const awsSdk = require('aws-sdk'); // npm --save install aws-sdk
const fs = require('fs');
// Centralize project info in package.json.
defineProjectMetadata(JSON.parse(fs.readFileSync('./package.json').toString()));
defineProjectInstances({
dev: {
stateStore: require('infarep/localStateStore'),
awsSdkConfig: {
credentials: new awsSdk.SharedIniFileCredentials({ profile: 'personal' }),
region: 'us-east-1'
}
}
});
// This variable will hold the Service Instance Types that infarep-aws provides.
const aws = (() => {
// Get the AWS SDK config for the current project instance.
const { awsSdkConfig } = getCurrentProjectInstance();
// Pass the configuration to infarep-aws.
const serviceInstanceTypesProvider = require('infarep-aws')(awsSdkConfig);
// Register types & create upserters
return registerServiceInstanceTypes(serviceInstanceTypesProvider);
})();
defineProjectInfastructure(async () => {
// AWS Service Instances go here
})