@@ -5,8 +5,10 @@ import (
5
5
"log"
6
6
7
7
"github.com/aws/aws-sdk-go/aws"
8
+ "github.com/aws/aws-sdk-go/aws/arn"
8
9
"github.com/aws/aws-sdk-go/service/ses"
9
10
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
11
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
10
12
)
11
13
12
14
func resourceAwsSesReceiptRuleSet () * schema.Resource {
@@ -19,10 +21,15 @@ func resourceAwsSesReceiptRuleSet() *schema.Resource {
19
21
},
20
22
21
23
Schema : map [string ]* schema.Schema {
22
- "rule_set_name " : {
24
+ "arn " : {
23
25
Type : schema .TypeString ,
24
- Required : true ,
25
- ForceNew : true ,
26
+ Computed : true ,
27
+ },
28
+ "rule_set_name" : {
29
+ Type : schema .TypeString ,
30
+ Required : true ,
31
+ ForceNew : true ,
32
+ ValidateFunc : validation .StringLenBetween (1 , 64 ),
26
33
},
27
34
},
28
35
}
@@ -39,7 +46,7 @@ func resourceAwsSesReceiptRuleSetCreate(d *schema.ResourceData, meta interface{}
39
46
40
47
_ , err := conn .CreateReceiptRuleSet (createOpts )
41
48
if err != nil {
42
- return fmt .Errorf ("Error creating SES rule set: %s " , err )
49
+ return fmt .Errorf ("error creating SES rule set: %w " , err )
43
50
}
44
51
45
52
d .SetId (ruleSetName )
@@ -54,7 +61,7 @@ func resourceAwsSesReceiptRuleSetRead(d *schema.ResourceData, meta interface{})
54
61
RuleSetName : aws .String (d .Id ()),
55
62
}
56
63
57
- _ , err := conn .DescribeReceiptRuleSet (input )
64
+ resp , err := conn .DescribeReceiptRuleSet (input )
58
65
59
66
if isAWSErr (err , ses .ErrCodeRuleSetDoesNotExistException , "" ) {
60
67
log .Printf ("[WARN] SES Receipt Rule Set (%s) not found, removing from state" , d .Id ())
@@ -63,10 +70,25 @@ func resourceAwsSesReceiptRuleSetRead(d *schema.ResourceData, meta interface{})
63
70
}
64
71
65
72
if err != nil {
66
- return fmt .Errorf ("error describing SES Receipt Rule Set (%s): %s" , d .Id (), err )
73
+ return fmt .Errorf ("error describing SES Receipt Rule Set (%s): %w" , d .Id (), err )
74
+ }
75
+
76
+ if resp .Metadata == nil {
77
+ log .Print ("[WARN] No Receipt Rule Set found" )
78
+ d .SetId ("" )
79
+ return nil
67
80
}
68
81
69
- d .Set ("rule_set_name" , d .Id ())
82
+ name := aws .StringValue (resp .Metadata .Name )
83
+ d .Set ("rule_set_name" , name )
84
+ arn := arn.ARN {
85
+ Partition : meta .(* AWSClient ).partition ,
86
+ Service : "ses" ,
87
+ Region : meta .(* AWSClient ).region ,
88
+ AccountID : meta .(* AWSClient ).accountid ,
89
+ Resource : fmt .Sprintf ("receipt-rule-set/%s" , name ),
90
+ }.String ()
91
+ d .Set ("arn" , arn )
70
92
71
93
return nil
72
94
}
@@ -75,9 +97,12 @@ func resourceAwsSesReceiptRuleSetDelete(d *schema.ResourceData, meta interface{}
75
97
conn := meta .(* AWSClient ).sesconn
76
98
77
99
log .Printf ("[DEBUG] SES Delete Receipt Rule Set: %s" , d .Id ())
78
- _ , err := conn . DeleteReceiptRuleSet ( & ses.DeleteReceiptRuleSetInput {
100
+ input := & ses.DeleteReceiptRuleSetInput {
79
101
RuleSetName : aws .String (d .Id ()),
80
- })
102
+ }
103
+ if _ , err := conn .DeleteReceiptRuleSet (input ); err != nil {
104
+ return fmt .Errorf ("error deleting SES Receipt Rule Set (%s): %w" , d .Id (), err )
105
+ }
81
106
82
- return err
107
+ return nil
83
108
}
0 commit comments