cdk-factory 0.8.8__py3-none-any.whl → 0.9.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
cdk_factory/app.py CHANGED
@@ -25,14 +25,51 @@ class CdkAppFactory:
25
25
  config_path: str | None = None,
26
26
  outdir: str | None = None,
27
27
  add_env_context: bool = True,
28
+ auto_detect_project_root: bool = True,
29
+ is_pipeline: bool = False,
28
30
  ) -> None:
29
31
 
30
32
  self.args = args or CommandlineArgs()
31
- self.outdir = outdir or self.args.outdir
32
- self.app: aws_cdk.App = aws_cdk.App()
33
33
  self.runtime_directory = runtime_directory or str(Path(__file__).parent)
34
34
  self.config_path: str | None = config_path
35
35
  self.add_env_context = add_env_context
36
+ self._is_pipeline = is_pipeline
37
+
38
+ # Auto-detect outdir for CodeBuild compatibility
39
+ if outdir is None and self.args.outdir is None and auto_detect_project_root:
40
+ # Check if we're in CodeBuild or building a pipeline
41
+ in_codebuild = bool(os.getenv('CODEBUILD_SRC_DIR'))
42
+
43
+ # Auto-detect if this is a pipeline deployment by checking config
44
+ is_pipeline_deployment = is_pipeline or self._check_if_pipeline_deployment(config_path)
45
+
46
+ if in_codebuild or is_pipeline_deployment:
47
+ # For pipelines/CodeBuild: calculate relative path to project_root/cdk.out
48
+ # This ensures cdk.out is at project root and works in CodeBuild
49
+ project_root = self._detect_project_root()
50
+ runtime_path = Path(self.runtime_directory).resolve()
51
+ project_path = Path(project_root).resolve()
52
+ cdk_out_path = project_path / 'cdk.out'
53
+
54
+ try:
55
+ # Calculate relative path from runtime directory to project_root/cdk.out
56
+ relative_path = os.path.relpath(cdk_out_path, runtime_path)
57
+ self.outdir = relative_path
58
+ if in_codebuild:
59
+ print(f"📦 CodeBuild detected: using relative path '{relative_path}'")
60
+ else:
61
+ print(f"📦 Pipeline deployment detected: using relative path '{relative_path}'")
62
+ except ValueError:
63
+ # If paths are on different drives (Windows), fallback to absolute
64
+ self.outdir = str(cdk_out_path)
65
+ else:
66
+ # For local dev: use CDK default (./cdk.out in current directory)
67
+ # This allows CDK CLI to find it when running from any directory
68
+ self.outdir = None
69
+ else:
70
+ self.outdir = outdir or self.args.outdir
71
+
72
+ self.app: aws_cdk.App = aws_cdk.App(outdir=self.outdir)
36
73
 
37
74
  def synth(
38
75
  self,
@@ -84,6 +121,98 @@ class CdkAppFactory:
84
121
 
85
122
  return assembly
86
123
 
124
+ def _detect_project_root(self) -> str:
125
+ """
126
+ Detect project root directory for proper cdk.out placement
127
+
128
+ Priority:
129
+ 1. CODEBUILD_SRC_DIR (CodeBuild environment)
130
+ 2. Find project markers (pyproject.toml, package.json, .git, etc.)
131
+ 3. Assume devops/cdk-iac structure (go up 2 levels)
132
+ 4. Fallback to runtime_directory
133
+
134
+ Returns:
135
+ str: Absolute path to project root
136
+ """
137
+ # Priority 1: CodeBuild environment (most reliable)
138
+ codebuild_src = os.getenv("CODEBUILD_SRC_DIR")
139
+ if codebuild_src:
140
+ return str(Path(codebuild_src).resolve())
141
+
142
+ # Priority 2: Look for project root markers
143
+ # CodeBuild often gets zip without .git, so check multiple markers
144
+ current = Path(self.runtime_directory).resolve()
145
+
146
+ # Walk up the directory tree looking for root markers
147
+ for parent in [current] + list(current.parents):
148
+ # Check for common project root indicators
149
+ root_markers = [
150
+ ".git", # Git repo (local dev)
151
+ "pyproject.toml", # Python project root
152
+ "package.json", # Node project root
153
+ "Cargo.toml", # Rust project root
154
+ ".gitignore", # Often at root
155
+ "README.md", # Often at root
156
+ "requirements.txt", # Python dependencies
157
+ ]
158
+
159
+ # If we find multiple markers at this level, it's likely the root
160
+ markers_found = sum(
161
+ 1 for marker in root_markers if (parent / marker).exists()
162
+ )
163
+ if markers_found >= 2 and parent != current:
164
+ return str(parent)
165
+
166
+ # Priority 3: Assume devops/cdk-iac structure
167
+ # If runtime_directory ends with devops/cdk-iac, go up 2 levels
168
+ parts = current.parts
169
+ if len(parts) >= 2 and parts[-2:] == ("devops", "cdk-iac"):
170
+ return str(current.parent.parent)
171
+
172
+ # Also try just 'cdk-iac' or 'devops'
173
+ if len(parts) >= 1 and parts[-1] in (
174
+ "cdk-iac",
175
+ "devops",
176
+ "infrastructure",
177
+ "iac",
178
+ ):
179
+ # Go up until we're not in these directories
180
+ potential_root = current.parent
181
+ while potential_root.name in ("devops", "cdk-iac", "infrastructure", "iac"):
182
+ potential_root = potential_root.parent
183
+ return str(potential_root)
184
+
185
+ # Priority 4: Fallback to runtime_directory
186
+ return str(current)
187
+
188
+ def _check_if_pipeline_deployment(self, config_path: str | None) -> bool:
189
+ """
190
+ Check if the configuration includes pipeline deployments with CI/CD enabled.
191
+ Returns True if pipelines are detected, False otherwise.
192
+ """
193
+ if not config_path or not os.path.exists(config_path):
194
+ return False
195
+
196
+ try:
197
+ import json
198
+ with open(config_path, 'r') as f:
199
+ config = json.load(f)
200
+
201
+ # Check for workload.deployments with CI/CD enabled
202
+ workload = config.get('workload', {})
203
+ deployments = workload.get('deployments', [])
204
+
205
+ for deployment in deployments:
206
+ devops = deployment.get('devops', {})
207
+ ci_cd = devops.get('ci_cd', {})
208
+ if ci_cd.get('enabled', False):
209
+ return True
210
+
211
+ return False
212
+ except:
213
+ # If we can't read/parse the config, assume not a pipeline
214
+ return False
215
+
87
216
 
88
217
  if __name__ == "__main__":
89
218
  # deploy_test()
cdk_factory/cli.py ADDED
@@ -0,0 +1,200 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ CDK Factory CLI
4
+
5
+ Provides convenience commands for initializing and managing cdk-factory projects.
6
+ """
7
+
8
+ import argparse
9
+ import os
10
+ import shutil
11
+ from pathlib import Path
12
+ from typing import Optional
13
+
14
+
15
+ class CdkFactoryCLI:
16
+ """CLI for cdk-factory project management"""
17
+
18
+ def __init__(self):
19
+ self.package_root = Path(__file__).parent.resolve()
20
+ self.templates_dir = self.package_root / "templates"
21
+
22
+ # Verify templates directory exists
23
+ if not self.templates_dir.exists():
24
+ raise RuntimeError(
25
+ f"Templates directory not found at {self.templates_dir}. "
26
+ "Please ensure cdk-factory is properly installed."
27
+ )
28
+
29
+ def init_project(
30
+ self,
31
+ target_dir: str,
32
+ workload_name: Optional[str] = None,
33
+ environment: Optional[str] = None,
34
+ ) -> None:
35
+ """
36
+ Initialize a new cdk-factory project
37
+
38
+ Args:
39
+ target_dir: Directory to initialize (e.g., devops/cdk-iac)
40
+ workload_name: Name of the workload (optional)
41
+ environment: Environment name (optional)
42
+ """
43
+ target_path = Path(target_dir).resolve()
44
+
45
+ if not target_path.exists():
46
+ target_path.mkdir(parents=True, exist_ok=True)
47
+ print(f"✅ Created directory: {target_path}")
48
+
49
+ # Copy app.py template
50
+ app_template = self.templates_dir / "app.py.template"
51
+ app_dest = target_path / "app.py"
52
+
53
+ if app_dest.exists():
54
+ response = input(f"⚠️ {app_dest} already exists. Overwrite? (y/N): ")
55
+ if response.lower() != 'y':
56
+ print("Skipped app.py")
57
+ else:
58
+ shutil.copy(app_template, app_dest)
59
+ print(f"✅ Created {app_dest}")
60
+ else:
61
+ shutil.copy(app_template, app_dest)
62
+ print(f"✅ Created {app_dest}")
63
+
64
+ # Copy cdk.json template
65
+ cdk_json_template = self.templates_dir / "cdk.json.template"
66
+ cdk_json_dest = target_path / "cdk.json"
67
+
68
+ if cdk_json_dest.exists():
69
+ print(f"⚠️ {cdk_json_dest} already exists. Skipping.")
70
+ else:
71
+ shutil.copy(cdk_json_template, cdk_json_dest)
72
+ print(f"✅ Created {cdk_json_dest}")
73
+
74
+ # Create minimal config.json
75
+ config_dest = target_path / "config.json"
76
+ if config_dest.exists():
77
+ print(f"⚠️ {config_dest} already exists. Skipping.")
78
+ else:
79
+ self._create_minimal_config(
80
+ config_dest,
81
+ workload_name=workload_name,
82
+ environment=environment
83
+ )
84
+ print(f"✅ Created {config_dest}")
85
+
86
+ # Create .gitignore
87
+ gitignore_dest = target_path / ".gitignore"
88
+ if not gitignore_dest.exists():
89
+ gitignore_dest.write_text("cdk.out/\n*.swp\n.DS_Store\n__pycache__/\n")
90
+ print(f"✅ Created {gitignore_dest}")
91
+
92
+ print("\n✨ Project initialized successfully!")
93
+ print(f"\nNext steps:")
94
+ print(f"1. cd {target_path}")
95
+ print(f"2. Edit config.json to configure your infrastructure")
96
+ print(f"3. Run: cdk synth")
97
+ print(f"4. Run: cdk deploy")
98
+
99
+ def _create_minimal_config(
100
+ self,
101
+ path: Path,
102
+ workload_name: Optional[str] = None,
103
+ environment: Optional[str] = None
104
+ ) -> None:
105
+ """Create a minimal config.json template"""
106
+ config = {
107
+ "cdk": {
108
+ "parameters": [
109
+ {
110
+ "placeholder": "{{ENVIRONMENT}}",
111
+ "env_var_name": "ENVIRONMENT",
112
+ "cdk_parameter_name": "Environment"
113
+ },
114
+ {
115
+ "placeholder": "{{WORKLOAD_NAME}}",
116
+ "env_var_name": "WORKLOAD_NAME",
117
+ "cdk_parameter_name": "WorkloadName"
118
+ },
119
+ {
120
+ "placeholder": "{{AWS_ACCOUNT}}",
121
+ "env_var_name": "AWS_ACCOUNT",
122
+ "cdk_parameter_name": "AccountNumber"
123
+ },
124
+ {
125
+ "placeholder": "{{AWS_REGION}}",
126
+ "env_var_name": "AWS_REGION",
127
+ "cdk_parameter_name": "AccountRegion"
128
+ }
129
+ ]
130
+ },
131
+ "workload": {
132
+ "name": workload_name or "{{WORKLOAD_NAME}}",
133
+ "environment": environment or "{{ENVIRONMENT}}",
134
+ "deployments": []
135
+ }
136
+ }
137
+
138
+ import json
139
+ path.write_text(json.dumps(config, indent=2))
140
+
141
+ def list_templates(self) -> None:
142
+ """List available templates"""
143
+ print("Available templates:")
144
+ if self.templates_dir.exists():
145
+ for template in self.templates_dir.glob("*.template"):
146
+ print(f" - {template.name}")
147
+ else:
148
+ print(" No templates found")
149
+
150
+
151
+ def main():
152
+ """CLI entry point"""
153
+ parser = argparse.ArgumentParser(
154
+ description="CDK Factory CLI - Initialize and manage cdk-factory projects"
155
+ )
156
+
157
+ subparsers = parser.add_subparsers(dest="command", help="Available commands")
158
+
159
+ # Init command
160
+ init_parser = subparsers.add_parser(
161
+ "init",
162
+ help="Initialize a new cdk-factory project"
163
+ )
164
+ init_parser.add_argument(
165
+ "directory",
166
+ help="Target directory (e.g., devops/cdk-iac)"
167
+ )
168
+ init_parser.add_argument(
169
+ "--workload-name",
170
+ help="Workload name"
171
+ )
172
+ init_parser.add_argument(
173
+ "--environment",
174
+ help="Environment (dev, prod, etc.)"
175
+ )
176
+
177
+ # List templates command
178
+ subparsers.add_parser(
179
+ "list-templates",
180
+ help="List available templates"
181
+ )
182
+
183
+ args = parser.parse_args()
184
+
185
+ cli = CdkFactoryCLI()
186
+
187
+ if args.command == "init":
188
+ cli.init_project(
189
+ args.directory,
190
+ workload_name=args.workload_name,
191
+ environment=args.environment
192
+ )
193
+ elif args.command == "list-templates":
194
+ cli.list_templates()
195
+ else:
196
+ parser.print_help()
197
+
198
+
199
+ if __name__ == "__main__":
200
+ main()
@@ -3,6 +3,7 @@ Geek Cafe Pipeline
3
3
  """
4
4
 
5
5
  import os
6
+ from pathlib import Path
6
7
  from typing import List, Dict, Any
7
8
 
8
9
  import aws_cdk as cdk
@@ -359,9 +360,17 @@ class PipelineFactoryStack(cdk.Stack):
359
360
  build_commands = self._get_build_commands()
360
361
 
361
362
  cdk_out_directory = self.workload.output_directory
363
+
364
+ # CdkAppFactory already provides the correct path:
365
+ # - For pipelines: relative path (e.g., "../../cdk.out" or "cdk.out")
366
+ # - For local: absolute path (but this code only runs for pipelines)
367
+ # If somehow we get an absolute path, convert it to just the basename
368
+ if cdk_out_directory and os.path.isabs(cdk_out_directory):
369
+ # Fallback: just use the last component
370
+ cdk_out_directory = os.path.basename(cdk_out_directory)
362
371
 
363
372
  build_commands.append(f"echo 👉 cdk_directory: {cdk_directory}")
364
- build_commands.append(f"echo 👉 cdk_out_directory: {cdk_out_directory}")
373
+ build_commands.append(f"echo 👉 cdk_out_directory (relative): {cdk_out_directory}")
365
374
  build_commands.append("echo 👉 PWD from synth shell step: ${PWD}")
366
375
 
367
376
  shell = pipelines.ShellStep(
@@ -0,0 +1,99 @@
1
+ # CDK Factory Templates
2
+
3
+ This directory contains templates for initializing new cdk-factory projects.
4
+
5
+ ## Available Templates
6
+
7
+ - **`app.py.template`** - Standard application entry point
8
+ - **`cdk.json.template`** - CDK configuration file
9
+
10
+ ## Usage
11
+
12
+ ### Method 1: Using the CLI (Recommended)
13
+
14
+ ```bash
15
+ # Install cdk-factory with CLI support
16
+ pip install cdk-factory
17
+
18
+ # Initialize a new project
19
+ cdk-factory init devops/cdk-iac --workload-name my-app --environment dev
20
+
21
+ # This creates:
22
+ # - devops/cdk-iac/app.py
23
+ # - devops/cdk-iac/cdk.json
24
+ # - devops/cdk-iac/config.json (minimal template)
25
+ # - devops/cdk-iac/.gitignore
26
+ ```
27
+
28
+ ### Method 2: Manual Copy
29
+
30
+ ```bash
31
+ # Copy templates manually
32
+ cp templates/app.py.template your-project/devops/cdk-iac/app.py
33
+ cp templates/cdk.json.template your-project/devops/cdk-iac/cdk.json
34
+
35
+ # Create config.json (see examples/)
36
+ ```
37
+
38
+ ## Template Variables
39
+
40
+ The templates use minimal configuration. All settings are driven by:
41
+
42
+ 1. **Environment Variables** - `AWS_ACCOUNT`, `AWS_REGION`, `WORKLOAD_NAME`, etc.
43
+ 2. **CDK Context** - Pass via `-c` flag: `cdk deploy -c WorkloadName=my-app`
44
+ 3. **config.json** - Your infrastructure configuration
45
+
46
+ ## Project Structure
47
+
48
+ After initialization, your project should look like:
49
+
50
+ ```
51
+ your-project/
52
+ ├── devops/
53
+ │ └── cdk-iac/
54
+ │ ├── app.py # Entry point (from template)
55
+ │ ├── cdk.json # CDK config (from template)
56
+ │ ├── config.json # Your infrastructure config
57
+ │ ├── .gitignore # Generated
58
+ │ └── commands/ # Your build scripts (optional)
59
+ │ ├── docker-build.sh
60
+ │ └── docker-build.py
61
+ ├── src/ # Your application code
62
+ └── Dockerfile # Your docker config
63
+ ```
64
+
65
+ ## Customization
66
+
67
+ The templates are intentionally minimal. You can:
68
+
69
+ 1. ✅ Add custom environment variables
70
+ 2. ✅ Modify config.json structure
71
+ 3. ✅ Add project-specific initialization in app.py
72
+ 4. ❌ Don't modify core path resolution logic (it's environment-agnostic)
73
+
74
+ ## Integration with pyproject.toml
75
+
76
+ To enable the CLI, update `pyproject.toml`:
77
+
78
+ ```toml
79
+ [project.scripts]
80
+ cdk-factory = "cdk_factory.cli:main"
81
+ ```
82
+
83
+ Or in `setup.py`:
84
+
85
+ ```python
86
+ entry_points={
87
+ 'console_scripts': [
88
+ 'cdk-factory=cdk_factory.cli:main',
89
+ ],
90
+ }
91
+ ```
92
+
93
+ ## Benefits
94
+
95
+ ✅ **No boilerplate** - Standard entry point across all projects
96
+ ✅ **Environment-agnostic** - Works locally and in CI/CD
97
+ ✅ **Consistent** - All projects follow same pattern
98
+ ✅ **Maintainable** - Updates to template benefit all projects
99
+ ✅ **Simple** - Just 30 lines of code in app.py
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ CDK Factory Application Entry Point
4
+
5
+ This is the standard entry point for any cdk-factory based project.
6
+ All configuration is driven by environment variables and CDK context.
7
+
8
+ To use this template:
9
+ 1. Copy to your project's CDK directory (e.g., devops/cdk-iac/app.py)
10
+ 2. Update cdk.json to reference this file: "app": "python app.py"
11
+ 3. Create your config.json
12
+ 4. Run: cdk synth
13
+
14
+ Note: cdk.out is automatically placed at project root for CodeBuild compatibility.
15
+ """
16
+
17
+ import os
18
+ from pathlib import Path
19
+ from cdk_factory.app import CdkAppFactory
20
+
21
+
22
+ if __name__ == "__main__":
23
+ # Runtime directory (where this file lives)
24
+ runtime_dir = str(Path(__file__).parent.resolve())
25
+
26
+ # Configuration (Priority: ENV > CDK Context > default)
27
+ config_path = os.getenv('CDK_CONFIG_PATH', 'config.json')
28
+
29
+ # Create and synth
30
+ # outdir is automatically set to project_root/cdk.out
31
+ factory = CdkAppFactory(
32
+ config_path=config_path,
33
+ runtime_directory=runtime_dir
34
+ )
35
+
36
+ factory.synth(cdk_app_file=__file__)
@@ -0,0 +1,73 @@
1
+ {
2
+ "app": "python app.py",
3
+ "watch": {
4
+ "include": [
5
+ "**"
6
+ ],
7
+ "exclude": [
8
+ "README.md",
9
+ "cdk*.json",
10
+ "requirements*.txt",
11
+ "source.bat",
12
+ "**/__init__.py",
13
+ "**/__pycache__",
14
+ "**/.pytest_cache",
15
+ ".git",
16
+ ".venv"
17
+ ]
18
+ },
19
+ "context": {
20
+ "@aws-cdk/aws-lambda:recognizeLayerVersion": true,
21
+ "@aws-cdk/core:checkSecretUsage": true,
22
+ "@aws-cdk/core:target-partitions": [
23
+ "aws",
24
+ "aws-cn"
25
+ ],
26
+ "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true,
27
+ "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true,
28
+ "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true,
29
+ "@aws-cdk/aws-iam:minimizePolicies": true,
30
+ "@aws-cdk/core:validateSnapshotRemovalPolicy": true,
31
+ "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": true,
32
+ "@aws-cdk/aws-s3:createDefaultLoggingPolicy": true,
33
+ "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": true,
34
+ "@aws-cdk/aws-apigateway:disableCloudWatchRole": true,
35
+ "@aws-cdk/core:enablePartitionLiterals": true,
36
+ "@aws-cdk/aws-events:eventsTargetQueueSameAccount": true,
37
+ "@aws-cdk/aws-iam:standardizedServicePrincipals": true,
38
+ "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": true,
39
+ "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": true,
40
+ "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": true,
41
+ "@aws-cdk/aws-route53-patters:useCertificate": true,
42
+ "@aws-cdk/customresources:installLatestAwsSdkDefault": false,
43
+ "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": true,
44
+ "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": true,
45
+ "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": true,
46
+ "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": true,
47
+ "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": true,
48
+ "@aws-cdk/aws-redshift:columnId": true,
49
+ "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": true,
50
+ "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": true,
51
+ "@aws-cdk/aws-apigateway:requestValidatorUniqueId": true,
52
+ "@aws-cdk/aws-kms:aliasNameRef": true,
53
+ "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true,
54
+ "@aws-cdk/core:includePrefixInUniqueNameGeneration": true,
55
+ "@aws-cdk/aws-efs:denyAnonymousAccess": true,
56
+ "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true,
57
+ "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true,
58
+ "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": true,
59
+ "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": true,
60
+ "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": true,
61
+ "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": true,
62
+ "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": true,
63
+ "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": true,
64
+ "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": true,
65
+ "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": true,
66
+ "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": true,
67
+ "@aws-cdk/aws-eks:nodegroupNameAttribute": true,
68
+ "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": true,
69
+ "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": true,
70
+ "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": false,
71
+ "@aws-cdk/aws-s3:keepNotificationInImportedBucket": false
72
+ }
73
+ }
cdk_factory/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.8.8"
1
+ __version__ = "0.9.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdk_factory
3
- Version: 0.8.8
3
+ Version: 0.9.1
4
4
  Summary: CDK Factory. A QuickStarter and best practices setup for CDK projects
5
5
  Author-email: Eric Wilson <eric.wilson@geekcafe.com>
6
6
  License: MIT License
@@ -1,7 +1,8 @@
1
1
  cdk_factory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- cdk_factory/app.py,sha256=xv863N7O6HPKznB68_t7O4la9JacrkG87t9TjoDUk7s,2827
2
+ cdk_factory/app.py,sha256=OXySeuN9YYwZmNkc9oKIAnwZSw8Vpta5MIWfwhMkmPY,8444
3
3
  cdk_factory/cdk.json,sha256=SKZKhJ2PBpFH78j-F8S3VDYW-lf76--Q2I3ON-ZIQfw,3106
4
- cdk_factory/version.py,sha256=S5bBAK8bL7bybaXGJQuNE98fa3H65zGjTASMiyKGJGw,22
4
+ cdk_factory/cli.py,sha256=FGbCTS5dYCNsfp-etshzvFlGDCjC28r6rtzYbe7KoHI,6407
5
+ cdk_factory/version.py,sha256=UwJXM8JY2T3tE2id0K2k_lEaVThbRTrGO1mNibyzIz8,22
5
6
  cdk_factory/builds/README.md,sha256=9BBWd7bXpyKdMU_g2UljhQwrC9i5O_Tvkb6oPvndoZk,90
6
7
  cdk_factory/commands/command_loader.py,sha256=QbLquuP_AdxtlxlDy-2IWCQ6D-7qa58aphnDPtp_uTs,3744
7
8
  cdk_factory/configurations/base_config.py,sha256=JKjhNsy0RCUZy1s8n5D_aXXI-upR9izaLtCTfKYiV9k,9624
@@ -63,7 +64,7 @@ cdk_factory/interfaces/istack.py,sha256=bhTBs-o9FgKwvJMSuwxjUV6D3nUlvZHVzfm27jP9
63
64
  cdk_factory/interfaces/live_ssm_resolver.py,sha256=3FIr9a02SXqZmbFs3RT0WxczWEQR_CF7QSt7kWbDrVE,8163
64
65
  cdk_factory/interfaces/ssm_parameter_mixin.py,sha256=uA2j8HmAOpuEA9ynRj51s0WjUHMVLsbLQN-QS9NKyHA,12089
65
66
  cdk_factory/lambdas/health_handler.py,sha256=dd40ykKMxWCFEIyp2ZdQvAGNjw_ylI9CSm1N24Hp2ME,196
66
- cdk_factory/pipeline/pipeline_factory.py,sha256=OuL1pOWjThIMDYqZEBbqLzg8KK9A84qtjRMPJwnX-kk,15956
67
+ cdk_factory/pipeline/pipeline_factory.py,sha256=NSyuADuVPsmNeo7-uoRZJrnn_KVdHzwXjLKLUcsJwRA,16480
67
68
  cdk_factory/pipeline/stage.py,sha256=Be7ExMB9A-linRM18IQDOzQ-cP_I2_ThRNzlT4FIrUg,437
68
69
  cdk_factory/pipeline/security/policies.py,sha256=H3-S6nipz3UtF9Pc5eJYr4-aREUTCaJWMjOUyd6Rdv4,4406
69
70
  cdk_factory/pipeline/security/roles.py,sha256=ZB_O5H_BXgotvVspS2kVad9EMcY-a_-vU7Nm1_Z5MB8,4985
@@ -103,6 +104,9 @@ cdk_factory/stack_library/vpc/__init__.py,sha256=7pIqP97Gf2AJbv9Ebp1WbQGHYhgEbWJ
103
104
  cdk_factory/stack_library/vpc/vpc_stack.py,sha256=zdDiGilf03esxuya5Z8zVYSVMAIuZBeD-ZKgfnEd6aw,10077
104
105
  cdk_factory/stack_library/websites/static_website_stack.py,sha256=KBQiV6PI09mpHGtH-So5Hk3uhfFLDepoXInGbfin0cY,7938
105
106
  cdk_factory/stages/websites/static_website_stage.py,sha256=X4fpKXkhb0zIbSHx3QyddBhVSLBryb1vf1Cg2fMTqog,755
107
+ cdk_factory/templates/README.md,sha256=ATBEjG6beYvbEAdLtZ_8xnxgFD5X0cgZoI_6pToqH90,2679
108
+ cdk_factory/templates/app.py.template,sha256=aM60x0nNV80idtCL8jm1EddY63F5tDITYOlavg-BPMU,1069
109
+ cdk_factory/templates/cdk.json.template,sha256=SuGz4Y6kCVMDRpJrA_AJlp0kwdENiJPVngIv1xP5bwI,3526
106
110
  cdk_factory/utilities/api_gateway_integration_utility.py,sha256=yblKiMIHGXqKb7JK5IbzGM_TXjX9j893BMqgqBT44DE,63449
107
111
  cdk_factory/utilities/commandline_args.py,sha256=0FiNEJFbWVN8Ct7r0VHnJEx7rhUlaRKT7R7HMNJBSTI,2216
108
112
  cdk_factory/utilities/configuration_loader.py,sha256=z0ZdGLNbTO4_yfluB9zUh_i_Poc9qj-7oRyjMRlNkN8,1522
@@ -115,7 +119,8 @@ cdk_factory/utilities/lambda_function_utilities.py,sha256=S1GvBsY_q2cyUiaud3HORJ
115
119
  cdk_factory/utilities/os_execute.py,sha256=5Op0LY_8Y-pUm04y1k8MTpNrmQvcLmQHPQITEP7EuSU,1019
116
120
  cdk_factory/utils/api_gateway_utilities.py,sha256=If7Xu5s_UxmuV-kL3JkXxPLBdSVUKoLtohm0IUFoiV8,4378
117
121
  cdk_factory/workload/workload_factory.py,sha256=yBUDGIuB8-5p_mGcVFxsD2ZoZIziak3yh3LL3JvS0M4,5903
118
- cdk_factory-0.8.8.dist-info/METADATA,sha256=snclFyCZwqRqLmxauiDny56lUUnERMnVSNYvMGKZWG8,2450
119
- cdk_factory-0.8.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
120
- cdk_factory-0.8.8.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
121
- cdk_factory-0.8.8.dist-info/RECORD,,
122
+ cdk_factory-0.9.1.dist-info/METADATA,sha256=ROeQUXNIHdxp8W7V8J-b-VjAafq9N0CHLNHSUmP9f0c,2450
123
+ cdk_factory-0.9.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
124
+ cdk_factory-0.9.1.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
125
+ cdk_factory-0.9.1.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
126
+ cdk_factory-0.9.1.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ cdk-factory = cdk_factory.cli:main