project | Opinionated CDK "framework" for managing configuration, naming, tagging, etc
kandi X-RAY | project Summary
kandi X-RAY | project Summary
project is a TypeScript library. project has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.
Work-in-Progress: Breaking changes may occur at any given point durin v0.x.
Work-in-Progress: Breaking changes may occur at any given point durin v0.x.
Support
Quality
Security
License
Reuse
Support
project has a low active ecosystem.
It has 2 star(s) with 0 fork(s). There are 3 watchers for this library.
It had no major release in the last 12 months.
project has no issues reported. There are no pull requests.
It has a neutral sentiment in the developer community.
The latest version of project is v0.0.21
Quality
project has no bugs reported.
Security
project has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
License
project is licensed under the Apache-2.0 License. This license is Permissive.
Permissive licenses have the least restrictions, and you can use them in most projects.
Reuse
project releases are available to install and integrate.
Installation instructions, examples and code snippets are available.
Top functions reviewed by kandi - BETA
kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of project
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of project
project Key Features
No Key Features are available at this moment for project.
project Examples and Code Snippets
No Code Snippets are available at this moment for project.
Community Discussions
No Community Discussions are available at this moment for project.Refer to stack overflow page for discussions.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install project
Steps required to define a environmental project resources; At first, it might seem complex but once you get into the habbit of defining your projects this way it starts to make sense:.
Choose your Account Strategy
Initialize a new Project instead of cdk.App: // bin/app.ts import { Project, AccountStrategy } from '@alma-cdk/project'; const project = new Project({ // Basic info, you could also read these from package.json if you want name: 'my-cool-project', author: { organization: 'Acme Corp', name: 'Mad Scientists', email: 'mad.scientists@acme.example.com', }, // If not set, defaults to one of: $CDK_DEFAULT_REGION, $AWS_REGION or us-east-1 defaultRegion: 'eu-west-1', // Configures the project to use 2 AWS accounts (recommended) accounts: AccountStrategy.two({ dev: { id: '111111111111', config: { // whatever you want here as [string]: any baseDomain: 'example.net', }, }, prod: { id: '222222222222', config: { // whatever you want here as [string]: any baseDomain: 'example.com', }, }, }), })
Define a stack which extends SmartStack with resources: // lib/my-stack.ts import { Construct } from 'constructs'; import { StackProps, RemovalPolicy } from 'aws-cdk-lib'; import { SmartStack, Name, UrlName, PathName, EC } from '@alma-cdk/project'; export class MyStack extends SmartStack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new dynamodb.Table(this, 'Table', { removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY, tableName: Name.it(this, 'MyTable'), partitionKey: { type: dynamodb.AttributeType.STRING, name: 'pk', }, // StagingMyTable }); new events.EventBus(this, 'EventBus', { eventBusName: Name.withProject(this, 'MyEventBus'), // MyCoolProjectStagingMyEventBus }); new s3.Bucket(this, 'Bucket', { removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY, autoDeleteObjects: EC.isStable(this) ? false : true, bucketName: UrlName.globally(this, 'MyBucket'), // acme-corp-my-cool-project-feature-foo-bar-my-bucket }); new ssm.StringParameter(this, 'Parameter', { stringValue: 'Foo', tier: ssm.ParameterTier.ADVANCED, parameterName: PathName.withProject(this, 'MyNamespace/MyParameter'), // /MyCoolProject/Staging/MyNamespace/MyParameter }); } }
Define a new environmental which extends EnvironmentWrapper and initialize all your environmental SmartStack stacks within: // lib/environment.ts import { EnvironmentWrapper } from '@alma-cdk/project'; import { MyStack } from './my-stack'; export class Environment extends EnvironmentWrapper { constructor(scope: Construct) { super(scope); new MyStack(this, 'MyStack', { description: 'This is required' }); } } Resulting Stack properties (given environment=staging): Property Example value stackName "MyCoolProject-Environment-Staging-MyExampleStack" terminationProtection true env.account "111111111111" env.region "eu-west-1" Resulting Tags for the Stack and its resources (given environment=staging): Property Example value Account dev Environment staging Project my-cool-project Author Mad Scientists Organization Acme Corp Contact mad.scientists@acme.example.com
Finally initialize the environment with the Project scope: // bin/app.ts import { Project, Accounts } from '@alma-cdk/project'; import { Environment } from '../lib/environment'; const project = new Project({/* removed for brevity, see step 1 */}) new Environment(project);
Choose your Account Strategy
Initialize a new Project instead of cdk.App: // bin/app.ts import { Project, AccountStrategy } from '@alma-cdk/project'; const project = new Project({ // Basic info, you could also read these from package.json if you want name: 'my-cool-project', author: { organization: 'Acme Corp', name: 'Mad Scientists', email: 'mad.scientists@acme.example.com', }, // If not set, defaults to one of: $CDK_DEFAULT_REGION, $AWS_REGION or us-east-1 defaultRegion: 'eu-west-1', // Configures the project to use 2 AWS accounts (recommended) accounts: AccountStrategy.two({ dev: { id: '111111111111', config: { // whatever you want here as [string]: any baseDomain: 'example.net', }, }, prod: { id: '222222222222', config: { // whatever you want here as [string]: any baseDomain: 'example.com', }, }, }), })
Define a stack which extends SmartStack with resources: // lib/my-stack.ts import { Construct } from 'constructs'; import { StackProps, RemovalPolicy } from 'aws-cdk-lib'; import { SmartStack, Name, UrlName, PathName, EC } from '@alma-cdk/project'; export class MyStack extends SmartStack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new dynamodb.Table(this, 'Table', { removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY, tableName: Name.it(this, 'MyTable'), partitionKey: { type: dynamodb.AttributeType.STRING, name: 'pk', }, // StagingMyTable }); new events.EventBus(this, 'EventBus', { eventBusName: Name.withProject(this, 'MyEventBus'), // MyCoolProjectStagingMyEventBus }); new s3.Bucket(this, 'Bucket', { removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY, autoDeleteObjects: EC.isStable(this) ? false : true, bucketName: UrlName.globally(this, 'MyBucket'), // acme-corp-my-cool-project-feature-foo-bar-my-bucket }); new ssm.StringParameter(this, 'Parameter', { stringValue: 'Foo', tier: ssm.ParameterTier.ADVANCED, parameterName: PathName.withProject(this, 'MyNamespace/MyParameter'), // /MyCoolProject/Staging/MyNamespace/MyParameter }); } }
Define a new environmental which extends EnvironmentWrapper and initialize all your environmental SmartStack stacks within: // lib/environment.ts import { EnvironmentWrapper } from '@alma-cdk/project'; import { MyStack } from './my-stack'; export class Environment extends EnvironmentWrapper { constructor(scope: Construct) { super(scope); new MyStack(this, 'MyStack', { description: 'This is required' }); } } Resulting Stack properties (given environment=staging): Property Example value stackName "MyCoolProject-Environment-Staging-MyExampleStack" terminationProtection true env.account "111111111111" env.region "eu-west-1" Resulting Tags for the Stack and its resources (given environment=staging): Property Example value Account dev Environment staging Project my-cool-project Author Mad Scientists Organization Acme Corp Contact mad.scientists@acme.example.com
Finally initialize the environment with the Project scope: // bin/app.ts import { Project, Accounts } from '@alma-cdk/project'; import { Environment } from '../lib/environment'; const project = new Project({/* removed for brevity, see step 1 */}) new Environment(project);
Support
For any new features, suggestions and bugs create an issue on GitHub.
If you have any questions check and ask questions on community page Stack Overflow .
Find more information at:
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page