github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/aws/resource_aws_ses_domain_identity.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/ses" 9 "github.com/hashicorp/terraform/helper/schema" 10 ) 11 12 func resourceAwsSesDomainIdentity() *schema.Resource { 13 return &schema.Resource{ 14 Create: resourceAwsSesDomainIdentityCreate, 15 Read: resourceAwsSesDomainIdentityRead, 16 Delete: resourceAwsSesDomainIdentityDelete, 17 Importer: &schema.ResourceImporter{ 18 State: schema.ImportStatePassthrough, 19 }, 20 21 Schema: map[string]*schema.Schema{ 22 "arn": { 23 Type: schema.TypeString, 24 Computed: true, 25 }, 26 "domain": { 27 Type: schema.TypeString, 28 Required: true, 29 ForceNew: true, 30 }, 31 "verification_token": { 32 Type: schema.TypeString, 33 Computed: true, 34 }, 35 }, 36 } 37 } 38 39 func resourceAwsSesDomainIdentityCreate(d *schema.ResourceData, meta interface{}) error { 40 conn := meta.(*AWSClient).sesConn 41 42 domainName := d.Get("domain").(string) 43 44 createOpts := &ses.VerifyDomainIdentityInput{ 45 Domain: aws.String(domainName), 46 } 47 48 _, err := conn.VerifyDomainIdentity(createOpts) 49 if err != nil { 50 return fmt.Errorf("Error requesting SES domain identity verification: %s", err) 51 } 52 53 d.SetId(domainName) 54 55 return resourceAwsSesDomainIdentityRead(d, meta) 56 } 57 58 func resourceAwsSesDomainIdentityRead(d *schema.ResourceData, meta interface{}) error { 59 conn := meta.(*AWSClient).sesConn 60 61 domainName := d.Id() 62 d.Set("domain", domainName) 63 64 readOpts := &ses.GetIdentityVerificationAttributesInput{ 65 Identities: []*string{ 66 aws.String(domainName), 67 }, 68 } 69 70 response, err := conn.GetIdentityVerificationAttributes(readOpts) 71 if err != nil { 72 log.Printf("[WARN] Error fetching identity verification attributes for %s: %s", d.Id(), err) 73 return err 74 } 75 76 verificationAttrs, ok := response.VerificationAttributes[domainName] 77 if !ok { 78 log.Printf("[WARN] Domain not listed in response when fetching verification attributes for %s", d.Id()) 79 d.SetId("") 80 return nil 81 } 82 83 d.Set("arn", fmt.Sprintf("arn:%s:ses:%s:%s:identity/%s", meta.(*AWSClient).partition, meta.(*AWSClient).region, meta.(*AWSClient).accountid, d.Id())) 84 d.Set("verification_token", verificationAttrs.VerificationToken) 85 return nil 86 } 87 88 func resourceAwsSesDomainIdentityDelete(d *schema.ResourceData, meta interface{}) error { 89 conn := meta.(*AWSClient).sesConn 90 91 domainName := d.Get("domain").(string) 92 93 deleteOpts := &ses.DeleteIdentityInput{ 94 Identity: aws.String(domainName), 95 } 96 97 _, err := conn.DeleteIdentity(deleteOpts) 98 if err != nil { 99 return fmt.Errorf("Error deleting SES domain identity: %s", err) 100 } 101 102 return nil 103 }