-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.ts
74 lines (64 loc) · 2.02 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { Construct } from 'constructs';
import { App, TerraformStack, TerraformOutput } from 'cdktf';
import { AwsProvider, DynamodbTable } from'./.gen/providers/aws';
import { Lambda } from './.gen/modules/terraform-aws-modules/lambda/aws';
import { ApigatewayV2 } from './.gen/modules/terraform-aws-modules/apigateway-v2/aws';
class MyStack extends TerraformStack {
constructor(scope: Construct, name: string) {
super(scope, name);
new AwsProvider(this, 'aws', {
region: "us-west-2"
})
// dynamodb
const table = new DynamodbTable(this, 'ddb', {
name: "cdktf",
hashKey: "temp",
attribute: [
{ name: "path", type: "S" }
],
billingMode: "PAY_PER_REQUEST"
})
table.addOverride('hash_key', 'path')
table.addOverride('lifecycle', { create_before_destroy: true })
// http api
const api = new ApigatewayV2(this, 'api', {
name: "cdktf",
domainName: "api.greengocloud.com",
domainNameCertificateArn: "ENTER CERT ARN",
// integrations:
// { "$default":
// {lambda_arn: lambda.thisLambdaFunctionArnOutput}
// }
})
// lambda
new Lambda(this, 'lambda', {
functionName: "cdktf",
sourcePath: "../lambda",
handler: "lambda.handler",
runtime: "nodejs12.x",
attachPolicies: true,
policies: ["arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess"],
allowedTriggers:
{ APIGatewayAny:
{service: "apigateway", arn: api.thisApigatewayv2ApiArnOutput }
},
environmentVariables:
{ HITS_TABLE_NAME: table.name }
})
new TerraformOutput(this, 'api_url', {
value: api.thisApigatewayv2ApiApiEndpointOutput
})
}
}
const app = new App();
const stack = new MyStack(app, 'cdktf-typescript-aws-webservice');
stack.addOverride('terraform.backend', {
remote: {
hostname: 'app.terraform.io',
organization: 'GreengoCloud',
workspaces: {
name: 'cdktf-typescript-aws-webservice'
}
}
});
app.synth();