github.com/darmach/terratest@v0.34.8-0.20210517103231-80931f95e3ff/modules/aws/sns.go (about) 1 package aws 2 3 import ( 4 "github.com/aws/aws-sdk-go/aws" 5 "github.com/aws/aws-sdk-go/service/sns" 6 "github.com/gruntwork-io/terratest/modules/logger" 7 "github.com/gruntwork-io/terratest/modules/testing" 8 ) 9 10 // CreateSnsTopic creates an SNS Topic and return the ARN. 11 func CreateSnsTopic(t testing.TestingT, region string, snsTopicName string) string { 12 out, err := CreateSnsTopicE(t, region, snsTopicName) 13 if err != nil { 14 t.Fatal(err) 15 } 16 return out 17 } 18 19 // CreateSnsTopicE creates an SNS Topic and return the ARN. 20 func CreateSnsTopicE(t testing.TestingT, region string, snsTopicName string) (string, error) { 21 logger.Logf(t, "Creating SNS topic %s in %s", snsTopicName, region) 22 23 snsClient, err := NewSnsClientE(t, region) 24 if err != nil { 25 return "", err 26 } 27 28 createTopicInput := &sns.CreateTopicInput{ 29 Name: &snsTopicName, 30 } 31 32 output, err := snsClient.CreateTopic(createTopicInput) 33 if err != nil { 34 return "", err 35 } 36 37 return aws.StringValue(output.TopicArn), err 38 } 39 40 // DeleteSNSTopic deletes an SNS Topic. 41 func DeleteSNSTopic(t testing.TestingT, region string, snsTopicArn string) { 42 err := DeleteSNSTopicE(t, region, snsTopicArn) 43 if err != nil { 44 t.Fatal(err) 45 } 46 } 47 48 // DeleteSNSTopicE deletes an SNS Topic. 49 func DeleteSNSTopicE(t testing.TestingT, region string, snsTopicArn string) error { 50 logger.Logf(t, "Deleting SNS topic %s in %s", snsTopicArn, region) 51 52 snsClient, err := NewSnsClientE(t, region) 53 if err != nil { 54 return err 55 } 56 57 deleteTopicInput := &sns.DeleteTopicInput{ 58 TopicArn: aws.String(snsTopicArn), 59 } 60 61 _, err = snsClient.DeleteTopic(deleteTopicInput) 62 return err 63 } 64 65 // NewSnsClient creates a new SNS client. 66 func NewSnsClient(t testing.TestingT, region string) *sns.SNS { 67 client, err := NewSnsClientE(t, region) 68 if err != nil { 69 t.Fatal(err) 70 } 71 return client 72 } 73 74 // NewSnsClientE creates a new SNS client. 75 func NewSnsClientE(t testing.TestingT, region string) (*sns.SNS, error) { 76 sess, err := NewAuthenticatedSession(region) 77 if err != nil { 78 return nil, err 79 } 80 81 return sns.New(sess), nil 82 }