Skip to content

Commit c7f9a88

Browse files
authored
Merge pull request #17611 from DrFaust92/r/ses_receipt_rule_set_arn2
r/ses_receipt_rule_set - add `arn` attribute
2 parents 9bde60a + 018fee1 commit c7f9a88

4 files changed

+52
-12
lines changed

.changelog/17611.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:enhancement
2+
resource/ses_receipt_rule_set: Add `arn` attribute
3+
```
4+
5+
```release-note:enhancement
6+
resource/ses_receipt_rule_set: Add plan time validation to `name`
7+
```

aws/resource_aws_ses_receipt_rule_set.go

+35-10
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import (
55
"log"
66

77
"github.com/aws/aws-sdk-go/aws"
8+
"github.com/aws/aws-sdk-go/aws/arn"
89
"github.com/aws/aws-sdk-go/service/ses"
910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
11+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1012
)
1113

1214
func resourceAwsSesReceiptRuleSet() *schema.Resource {
@@ -19,10 +21,15 @@ func resourceAwsSesReceiptRuleSet() *schema.Resource {
1921
},
2022

2123
Schema: map[string]*schema.Schema{
22-
"rule_set_name": {
24+
"arn": {
2325
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),
2633
},
2734
},
2835
}
@@ -39,7 +46,7 @@ func resourceAwsSesReceiptRuleSetCreate(d *schema.ResourceData, meta interface{}
3946

4047
_, err := conn.CreateReceiptRuleSet(createOpts)
4148
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)
4350
}
4451

4552
d.SetId(ruleSetName)
@@ -54,7 +61,7 @@ func resourceAwsSesReceiptRuleSetRead(d *schema.ResourceData, meta interface{})
5461
RuleSetName: aws.String(d.Id()),
5562
}
5663

57-
_, err := conn.DescribeReceiptRuleSet(input)
64+
resp, err := conn.DescribeReceiptRuleSet(input)
5865

5966
if isAWSErr(err, ses.ErrCodeRuleSetDoesNotExistException, "") {
6067
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{})
6370
}
6471

6572
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
6780
}
6881

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)
7092

7193
return nil
7294
}
@@ -75,9 +97,12 @@ func resourceAwsSesReceiptRuleSetDelete(d *schema.ResourceData, meta interface{}
7597
conn := meta.(*AWSClient).sesconn
7698

7799
log.Printf("[DEBUG] SES Delete Receipt Rule Set: %s", d.Id())
78-
_, err := conn.DeleteReceiptRuleSet(&ses.DeleteReceiptRuleSetInput{
100+
input := &ses.DeleteReceiptRuleSetInput{
79101
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+
}
81106

82-
return err
107+
return nil
83108
}

aws/resource_aws_ses_receipt_rule_set_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ func TestAccAWSSESReceiptRuleSet_basic(t *testing.T) {
9494
Check: resource.ComposeTestCheckFunc(
9595
testAccCheckAwsSESReceiptRuleSetExists(resourceName),
9696
resource.TestCheckResourceAttr(resourceName, "rule_set_name", rName),
97+
testAccCheckResourceAttrRegionalARN(resourceName, "arn", "ses", fmt.Sprintf("receipt-rule-set/%s", rName)),
9798
),
9899
},
99100
{

website/docs/r/ses_receipt_rule_set.html.markdown

+9-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ description: |-
88

99
# Resource: aws_ses_receipt_rule_set
1010

11-
Provides an SES receipt rule set resource
11+
Provides an SES receipt rule set resource.
1212

1313
## Example Usage
1414

@@ -22,7 +22,14 @@ resource "aws_ses_receipt_rule_set" "main" {
2222

2323
The following arguments are supported:
2424

25-
* `rule_set_name` - (Required) The name of the rule set
25+
* `rule_set_name` - (Required) Name of the rule set.
26+
27+
## Attributes Reference
28+
29+
In addition to the arguments, which are exported, the following attributes are exported:
30+
31+
* `arn` - SES receipt rule set ARN.
32+
* `id` - SES receipt rule set name.
2633

2734
## Import
2835

0 commit comments

Comments
 (0)