@dga-itc/aws-cdk-constructs 1.0.0
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.
- package/README.md +219 -0
- package/dist/aws-cdk/constructs/acm.d.ts +28 -0
- package/dist/aws-cdk/constructs/acm.js +239 -0
- package/dist/aws-cdk/constructs/alb.d.ts +28 -0
- package/dist/aws-cdk/constructs/alb.js +304 -0
- package/dist/aws-cdk/constructs/bastion.d.ts +46 -0
- package/dist/aws-cdk/constructs/bastion.js +332 -0
- package/dist/aws-cdk/constructs/cloudfront.d.ts +45 -0
- package/dist/aws-cdk/constructs/cloudfront.js +261 -0
- package/dist/aws-cdk/constructs/ecr.d.ts +17 -0
- package/dist/aws-cdk/constructs/ecr.js +143 -0
- package/dist/aws-cdk/constructs/ecs-cluster.d.ts +21 -0
- package/dist/aws-cdk/constructs/ecs-cluster.js +124 -0
- package/dist/aws-cdk/constructs/ecs-service.d.ts +72 -0
- package/dist/aws-cdk/constructs/ecs-service.js +682 -0
- package/dist/aws-cdk/constructs/efs.d.ts +31 -0
- package/dist/aws-cdk/constructs/efs.js +241 -0
- package/dist/aws-cdk/constructs/elasticache.d.ts +35 -0
- package/dist/aws-cdk/constructs/elasticache.js +210 -0
- package/dist/aws-cdk/constructs/nacl.d.ts +37 -0
- package/dist/aws-cdk/constructs/nacl.js +88 -0
- package/dist/aws-cdk/constructs/nlb.d.ts +39 -0
- package/dist/aws-cdk/constructs/nlb.js +276 -0
- package/dist/aws-cdk/constructs/rds.d.ts +40 -0
- package/dist/aws-cdk/constructs/rds.js +320 -0
- package/dist/aws-cdk/constructs/self-signed-cert.d.ts +83 -0
- package/dist/aws-cdk/constructs/self-signed-cert.js +215 -0
- package/dist/aws-cdk/constructs/sqs.d.ts +30 -0
- package/dist/aws-cdk/constructs/sqs.js +268 -0
- package/dist/aws-cdk/constructs/vpc.d.ts +30 -0
- package/dist/aws-cdk/constructs/vpc.js +423 -0
- package/dist/aws-cdk/constructs/waf.d.ts +37 -0
- package/dist/aws-cdk/constructs/waf.js +350 -0
- package/dist/aws-cdk/interfaces/account-config.d.ts +18 -0
- package/dist/aws-cdk/interfaces/account-config.js +2 -0
- package/dist/aws-cdk/interfaces/acm-config.d.ts +94 -0
- package/dist/aws-cdk/interfaces/acm-config.js +14 -0
- package/dist/aws-cdk/interfaces/alb-config.d.ts +72 -0
- package/dist/aws-cdk/interfaces/alb-config.js +2 -0
- package/dist/aws-cdk/interfaces/bastion-config.d.ts +77 -0
- package/dist/aws-cdk/interfaces/bastion-config.js +10 -0
- package/dist/aws-cdk/interfaces/cloudfront-config.d.ts +154 -0
- package/dist/aws-cdk/interfaces/cloudfront-config.js +15 -0
- package/dist/aws-cdk/interfaces/ecr-config.d.ts +40 -0
- package/dist/aws-cdk/interfaces/ecr-config.js +2 -0
- package/dist/aws-cdk/interfaces/ecs-cluster-config.d.ts +30 -0
- package/dist/aws-cdk/interfaces/ecs-cluster-config.js +2 -0
- package/dist/aws-cdk/interfaces/ecs-service-config.d.ts +237 -0
- package/dist/aws-cdk/interfaces/ecs-service-config.js +2 -0
- package/dist/aws-cdk/interfaces/efs-config.d.ts +56 -0
- package/dist/aws-cdk/interfaces/efs-config.js +7 -0
- package/dist/aws-cdk/interfaces/elasticache-config.d.ts +56 -0
- package/dist/aws-cdk/interfaces/elasticache-config.js +7 -0
- package/dist/aws-cdk/interfaces/nacl-config.d.ts +1 -0
- package/dist/aws-cdk/interfaces/nacl-config.js +3 -0
- package/dist/aws-cdk/interfaces/nlb-config.d.ts +69 -0
- package/dist/aws-cdk/interfaces/nlb-config.js +2 -0
- package/dist/aws-cdk/interfaces/rds-config.d.ts +84 -0
- package/dist/aws-cdk/interfaces/rds-config.js +7 -0
- package/dist/aws-cdk/interfaces/sqs-config.d.ts +145 -0
- package/dist/aws-cdk/interfaces/sqs-config.js +12 -0
- package/dist/aws-cdk/interfaces/tag-config.d.ts +18 -0
- package/dist/aws-cdk/interfaces/tag-config.js +2 -0
- package/dist/aws-cdk/interfaces/vpc-config.d.ts +72 -0
- package/dist/aws-cdk/interfaces/vpc-config.js +2 -0
- package/dist/aws-cdk/interfaces/waf-config.d.ts +180 -0
- package/dist/aws-cdk/interfaces/waf-config.js +2 -0
- package/dist/aws-cdk/utils/priority-tracker.d.ts +60 -0
- package/dist/aws-cdk/utils/priority-tracker.js +131 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +55 -0
- package/dist/terraform-cdk/constructs/alb-listener-rule.d.ts +33 -0
- package/dist/terraform-cdk/constructs/alb-listener-rule.js +81 -0
- package/dist/terraform-cdk/constructs/ecs-service.d.ts +29 -0
- package/dist/terraform-cdk/constructs/ecs-service.js +238 -0
- package/dist/terraform-cdk/interfaces/ecs-service-config.d.ts +53 -0
- package/dist/terraform-cdk/interfaces/ecs-service-config.js +25 -0
- package/dist/terraform-cdk/interfaces/infrastructure-refs.d.ts +16 -0
- package/dist/terraform-cdk/interfaces/infrastructure-refs.js +8 -0
- package/dist/terraform-cdk/utils/priority-tracker.d.ts +60 -0
- package/dist/terraform-cdk/utils/priority-tracker.js +131 -0
- package/package.json +46 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
3
|
+
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
4
|
+
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
5
|
+
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
6
|
+
import { EcsServiceConfig } from '../interfaces/ecs-service-config';
|
|
7
|
+
import { VpcConstruct } from './vpc';
|
|
8
|
+
import { EcsClusterConstruct } from './ecs-cluster';
|
|
9
|
+
import { AlbConstruct } from './alb';
|
|
10
|
+
import { EfsConstruct } from './efs';
|
|
11
|
+
import { RdsConstruct } from './rds';
|
|
12
|
+
import { ElastiCacheConstruct } from './elasticache';
|
|
13
|
+
export interface EcsServiceConstructProps {
|
|
14
|
+
config: EcsServiceConfig;
|
|
15
|
+
vpcConstruct: VpcConstruct;
|
|
16
|
+
ecsClusterConstruct: EcsClusterConstruct;
|
|
17
|
+
/** Required for web mode */
|
|
18
|
+
albConstruct?: AlbConstruct;
|
|
19
|
+
/** EFS construct - เปิด NFS port 2049 ที่ EFS SG */
|
|
20
|
+
efsConstruct?: EfsConstruct;
|
|
21
|
+
/** RDS construct - เปิด DB port ที่ RDS SG */
|
|
22
|
+
rdsConstruct?: RdsConstruct;
|
|
23
|
+
/** ElastiCache construct - เปิด Redis port ที่ Redis SG */
|
|
24
|
+
elastiCacheConstruct?: ElastiCacheConstruct;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* ECS Service Construct - สร้าง Fargate Service + SecurityGroup + LogGroup + TargetGroup
|
|
28
|
+
*
|
|
29
|
+
* Modes:
|
|
30
|
+
* - web: สร้าง TargetGroup + ListenerRule ที่ ALB
|
|
31
|
+
* - worker: สร้างแค่ Service (ไม่มี ALB integration)
|
|
32
|
+
*
|
|
33
|
+
* อ้างอิง VpcConstruct, EcsClusterConstruct, AlbConstruct จาก stacks อื่น
|
|
34
|
+
*/
|
|
35
|
+
export declare class EcsServiceConstruct extends Construct {
|
|
36
|
+
readonly service: ecs.FargateService;
|
|
37
|
+
readonly securityGroup: ec2.SecurityGroup;
|
|
38
|
+
readonly targetGroup?: elbv2.ApplicationTargetGroup;
|
|
39
|
+
readonly logGroup: logs.LogGroup;
|
|
40
|
+
readonly isWorkerMode: boolean;
|
|
41
|
+
private readonly removalPolicy;
|
|
42
|
+
constructor(scope: Construct, id: string, props: EcsServiceConstructProps);
|
|
43
|
+
/**
|
|
44
|
+
* เพิ่ม ingress rule ที่ EFS/RDS/Redis SG ให้ ECS SG เข้าถึงได้
|
|
45
|
+
* ใช้ CfnSecurityGroupIngress เพื่อหลีกเลี่ยง cyclic dependency
|
|
46
|
+
*/
|
|
47
|
+
private setupUpstreamSecurityAccess;
|
|
48
|
+
private resolveVpc;
|
|
49
|
+
private createSecurityGroup;
|
|
50
|
+
private resolveIamRoles;
|
|
51
|
+
/**
|
|
52
|
+
* Apply preset policies ให้ Task Role
|
|
53
|
+
* ใช้ AWS Managed Policies เป็นหลัก, fallback เป็น inline สำหรับ services ที่ไม่มี managed policy ที่เหมาะสม
|
|
54
|
+
*/
|
|
55
|
+
private applyTaskRolePresets;
|
|
56
|
+
/**
|
|
57
|
+
* Apply preset policies ให้ Execution Role
|
|
58
|
+
*/
|
|
59
|
+
private applyExecutionRolePresets;
|
|
60
|
+
private createLogGroup;
|
|
61
|
+
private createTaskDefinition;
|
|
62
|
+
/**
|
|
63
|
+
* ถ้า image URL เป็น ECR pattern (*.dkr.ecr.*.amazonaws.com/repo:tag)
|
|
64
|
+
* ใช้ fromEcrRepository เพื่อให้ CDK auto-grant ECR pull policy
|
|
65
|
+
* ไม่งั้นใช้ fromRegistry ปกติ (Docker Hub, public ECR, etc.)
|
|
66
|
+
*/
|
|
67
|
+
private resolveContainerImage;
|
|
68
|
+
private createFargateService;
|
|
69
|
+
private createTargetGroup;
|
|
70
|
+
private createListenerRule;
|
|
71
|
+
private createOutputs;
|
|
72
|
+
}
|