github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/sns/adapt.go (about) 1 package sns 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/sns" 5 "github.com/khulnasoft-lab/defsec/pkg/terraform" 6 "github.com/khulnasoft-lab/defsec/pkg/types" 7 ) 8 9 func Adapt(modules terraform.Modules) sns.SNS { 10 return sns.SNS{ 11 Topics: adaptTopics(modules), 12 } 13 } 14 15 func adaptTopics(modules terraform.Modules) []sns.Topic { 16 var topics []sns.Topic 17 for _, module := range modules { 18 for _, resource := range module.GetResourcesByType("aws_sns_topic") { 19 topics = append(topics, adaptTopic(resource)) 20 } 21 } 22 return topics 23 } 24 25 func adaptTopic(resourceBlock *terraform.Block) sns.Topic { 26 return sns.Topic{ 27 Metadata: resourceBlock.GetMetadata(), 28 ARN: types.StringDefault("", resourceBlock.GetMetadata()), 29 Encryption: adaptEncryption(resourceBlock), 30 } 31 } 32 33 func adaptEncryption(resourceBlock *terraform.Block) sns.Encryption { 34 return sns.Encryption{ 35 Metadata: resourceBlock.GetMetadata(), 36 KMSKeyID: resourceBlock.GetAttribute("kms_master_key_id").AsStringValueOrDefault("", resourceBlock), 37 } 38 }