pythonamazon-web-servicesterraformaws-security-groupterraform-cdk

How to parse ingress object in cdktf security group?


Problem Unable to create security group rules in aws using CDKTF

Code

import cdktf_cdktf_provider_aws.security_group as SecurityGroup_
self.security_group_ = SecurityGroup_.SecurityGroup(self.scope_object, id_=self.id, name=self.name, vpc_id=self.vpc_id, ingress=[{"from_port":"3306","to_port":"3306"}])


Error

   29:         "ingress": [
   30:           {
   31:             "cidr_blocks": null,
   32:             "description": "smartstack_dependency",
   33:             "from_port": null,
   34:             "ipv6_cidr_blocks": null,
   35:             "prefix_list_ids": null,
   36:             "protocol": "tcp",
   37:             "security_groups": null,
   38:             "self": null,
   39:             "to_port": null
   40:           }
   41:         ],

 The argument "ingress.0.to_port" is required, but no definition was found.

Tried the following code-

import cdktf_cdktf_provider_aws.security_group as SecurityGroup_
self.security_group_ = SecurityGroup_.SecurityGroup(self.scope_object, id_=self.id, name=self.name, vpc_id=self.vpc_id, ingress=[{"from_port":"3306","to_port":"3306"}])

Solution

  • Change the code to

    self.security_group_ = SecurityGroup_.SecurityGroup(
    self.scope_object, 
    id_=self.id, 
    name=self.name, 
    vpc_id=self.vpc_id, 
    ingress=[SecurityGroup_.SecurityGroupIngress(from_port=3306,to_port=3306, "security_groups":['test-sg'])])
    

    Ingress takes a list of class obj SecurityGroupIngress