initial commit
parent
7af8e5e892
commit
f268dc2514
@ -0,0 +1,10 @@
|
||||
*.swp
|
||||
package-lock.json
|
||||
__pycache__
|
||||
.pytest_cache
|
||||
.venv
|
||||
*.egg-info
|
||||
|
||||
# CDK asset staging directory
|
||||
.cdk.staging
|
||||
cdk.out
|
@ -0,0 +1,12 @@
|
||||
|
||||
# Science Fair CDK app
|
||||
|
||||
# Setup
|
||||
|
||||
1. Install [nvm](https://github.com/nvm-sh/nvm)
|
||||
2. `npm install -g aws-cdk`
|
||||
|
||||
# Deploy
|
||||
|
||||
`cdk bootstrap`
|
||||
`cdk deploy --all`
|
@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import aws_cdk as cdk
|
||||
from sfec2.sci_stack import SciInstancesStack
|
||||
from sfec2.sci_stack import VpcBasisStack
|
||||
|
||||
app = cdk.App()
|
||||
|
||||
cdkEnv = cdk.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'),
|
||||
region="us-east-2")
|
||||
|
||||
vpcStack = VpcBasisStack(app, "basis", env=cdkEnv )
|
||||
|
||||
deployList = [ "a", "b", "c" ]
|
||||
|
||||
for thing in deployList:
|
||||
SciInstancesStack(vpcStack, f"i-{thing}-s", thing=thing, env=cdkEnv )
|
||||
|
||||
app.synth()
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"availability-zones:account=096320175891:region=us-east-2": [
|
||||
"us-east-2a",
|
||||
"us-east-2b",
|
||||
"us-east-2c"
|
||||
]
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
{
|
||||
"app": "python3 app.py",
|
||||
"watch": {
|
||||
"include": [
|
||||
"**"
|
||||
],
|
||||
"exclude": [
|
||||
"README.md",
|
||||
"cdk*.json",
|
||||
"requirements*.txt",
|
||||
"source.bat",
|
||||
"**/__init__.py",
|
||||
"python/__pycache__",
|
||||
"tests"
|
||||
]
|
||||
},
|
||||
"context": {
|
||||
"@aws-cdk/aws-lambda:recognizeLayerVersion": true,
|
||||
"@aws-cdk/core:checkSecretUsage": true,
|
||||
"@aws-cdk/core:target-partitions": [
|
||||
"aws",
|
||||
"aws-cn"
|
||||
],
|
||||
"@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true,
|
||||
"@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true,
|
||||
"@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true,
|
||||
"@aws-cdk/aws-iam:minimizePolicies": true,
|
||||
"@aws-cdk/core:validateSnapshotRemovalPolicy": true,
|
||||
"@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": true,
|
||||
"@aws-cdk/aws-s3:createDefaultLoggingPolicy": true,
|
||||
"@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": true,
|
||||
"@aws-cdk/aws-apigateway:disableCloudWatchRole": true,
|
||||
"@aws-cdk/core:enablePartitionLiterals": true,
|
||||
"@aws-cdk/aws-events:eventsTargetQueueSameAccount": true,
|
||||
"@aws-cdk/aws-iam:standardizedServicePrincipals": true,
|
||||
"@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": true
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
aws-cdk-lib==2.57.0
|
||||
constructs>=10.0.0,<11.0.0
|
@ -0,0 +1,53 @@
|
||||
import os
|
||||
import aws_cdk as cdk
|
||||
import aws_cdk.aws_ec2 as ec2
|
||||
import aws_cdk.aws_iam as iam
|
||||
from constructs import Construct
|
||||
|
||||
class SciInstancesStack(cdk.Stack):
|
||||
|
||||
def __init__(self, vpcStack: Construct, construct_id:
|
||||
str, thing: str, env: cdk.Environment, **kwargs) -> None:
|
||||
super().__init__(vpcStack, construct_id, env=env, **kwargs)
|
||||
|
||||
thisVpc = vpcStack.vpc
|
||||
ec2instance = ec2.Instance(self, f"i-{thing}",
|
||||
vpc=vpcStack.vpc,
|
||||
instance_type=ec2.InstanceType("t2.nano"),
|
||||
machine_image=ec2.AmazonLinuxImage(),
|
||||
block_devices=[ec2.BlockDevice(
|
||||
device_name="/dev/sda1",
|
||||
volume=ec2.BlockDeviceVolume.ebs(50),
|
||||
)
|
||||
],
|
||||
security_group = vpcStack.SciSG,
|
||||
)
|
||||
|
||||
class VpcBasisStack(cdk.Stack):
|
||||
|
||||
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
|
||||
super().__init__(scope, construct_id, **kwargs)
|
||||
|
||||
self.vpc = ec2.Vpc(self, 'out-vpc',
|
||||
cidr = "172.17.0.0/18",
|
||||
max_azs = 3,
|
||||
subnet_configuration=[
|
||||
ec2.SubnetConfiguration(
|
||||
name = 'pub',
|
||||
subnet_type = ec2.SubnetType.PUBLIC,
|
||||
cidr_mask = 26
|
||||
),
|
||||
ec2.SubnetConfiguration(
|
||||
name = 'pri',
|
||||
subnet_type = ec2.SubnetType.PRIVATE_WITH_NAT,
|
||||
cidr_mask = 20
|
||||
)
|
||||
],
|
||||
nat_gateways = 3
|
||||
)
|
||||
|
||||
# Create standard Security Group for all EC2 instances
|
||||
self.SciSG = ec2.SecurityGroup(self, 'Sci-sg', vpc=self.vpc,
|
||||
allow_all_outbound=True, security_group_name='Sci-sg' );
|
||||
|
||||
app = cdk.App()
|
Loading…
Reference in New Issue