Skip to content

Commit fc016af

Browse files
authored
Merge pull request #39535 from trutled3/f-lambda_event_source_mapping_lambda_code_signing_config_tagging
resource/aws_lambda_event_source_mapping & resource/aws_lambda_code_signing_config: Add tags support
2 parents 23a2b23 + ac587b6 commit fc016af

9 files changed

+367
-100
lines changed

.changelog/39535.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:enhancement
2+
resource/aws_lambda_event_source_mapping: Add `tags` argument and `tags_all` attribute
3+
```
4+
5+
```release-note:enhancement
6+
resource/aws_lambda_event_source_mapping: Add `arn` attribute
7+
```
8+
9+
```release-note:enhancement
10+
resource/aws_lambda_code_signing_config: Add `tags` argument and `tags_all` attribute
11+
```

internal/service/lambda/code_signing_config.go

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/aws/aws-sdk-go-v2/service/lambda"
1212
awstypes "github.com/aws/aws-sdk-go-v2/service/lambda/types"
1313
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
14+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
1415
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
1516
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1617
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -19,12 +20,15 @@ import (
1920
"github.com/hashicorp/terraform-provider-aws/internal/errs"
2021
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
2122
"github.com/hashicorp/terraform-provider-aws/internal/flex"
23+
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
2224
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
2325
"github.com/hashicorp/terraform-provider-aws/internal/verify"
2426
"github.com/hashicorp/terraform-provider-aws/names"
2527
)
2628

2729
// @SDKResource("aws_lambda_code_signing_config", name="Code Signing Config")
30+
// @Tags(identifierAttribute="arn")
31+
// @Testing(tagsTest=false)
2832
func resourceCodeSigningConfig() *schema.Resource {
2933
return &schema.Resource{
3034
CreateWithoutTimeout: resourceCodeSigningConfigCreate,
@@ -88,7 +92,13 @@ func resourceCodeSigningConfig() *schema.Resource {
8892
},
8993
},
9094
},
95+
names.AttrTags: tftags.TagsSchema(),
96+
names.AttrTagsAll: tftags.TagsSchemaComputed(),
9197
},
98+
99+
CustomizeDiff: customdiff.Sequence(
100+
verify.SetTagsDiff,
101+
),
92102
}
93103
}
94104

@@ -99,6 +109,7 @@ func resourceCodeSigningConfigCreate(ctx context.Context, d *schema.ResourceData
99109
input := &lambda.CreateCodeSigningConfigInput{
100110
AllowedPublishers: expandAllowedPublishers(d.Get("allowed_publishers").([]interface{})),
101111
Description: aws.String(d.Get(names.AttrDescription).(string)),
112+
Tags: getTagsIn(ctx),
102113
}
103114

104115
if v, ok := d.GetOk("policies"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil {
@@ -153,31 +164,33 @@ func resourceCodeSigningConfigUpdate(ctx context.Context, d *schema.ResourceData
153164
var diags diag.Diagnostics
154165
conn := meta.(*conns.AWSClient).LambdaClient(ctx)
155166

156-
input := &lambda.UpdateCodeSigningConfigInput{
157-
CodeSigningConfigArn: aws.String(d.Id()),
158-
}
167+
if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) {
168+
input := &lambda.UpdateCodeSigningConfigInput{
169+
CodeSigningConfigArn: aws.String(d.Id()),
170+
}
159171

160-
if d.HasChange("allowed_publishers") {
161-
input.AllowedPublishers = expandAllowedPublishers(d.Get("allowed_publishers").([]interface{}))
162-
}
172+
if d.HasChange("allowed_publishers") {
173+
input.AllowedPublishers = expandAllowedPublishers(d.Get("allowed_publishers").([]interface{}))
174+
}
163175

164-
if d.HasChange(names.AttrDescription) {
165-
input.Description = aws.String(d.Get(names.AttrDescription).(string))
166-
}
176+
if d.HasChange(names.AttrDescription) {
177+
input.Description = aws.String(d.Get(names.AttrDescription).(string))
178+
}
167179

168-
if d.HasChange("policies") {
169-
if v, ok := d.GetOk("policies"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil {
170-
tfMap := v.([]interface{})[0].(map[string]interface{})
171-
input.CodeSigningPolicies = &awstypes.CodeSigningPolicies{
172-
UntrustedArtifactOnDeployment: awstypes.CodeSigningPolicy(tfMap["untrusted_artifact_on_deployment"].(string)),
180+
if d.HasChange("policies") {
181+
if v, ok := d.GetOk("policies"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil {
182+
tfMap := v.([]interface{})[0].(map[string]interface{})
183+
input.CodeSigningPolicies = &awstypes.CodeSigningPolicies{
184+
UntrustedArtifactOnDeployment: awstypes.CodeSigningPolicy(tfMap["untrusted_artifact_on_deployment"].(string)),
185+
}
173186
}
174187
}
175-
}
176188

177-
_, err := conn.UpdateCodeSigningConfig(ctx, input)
189+
_, err := conn.UpdateCodeSigningConfig(ctx, input)
178190

179-
if err != nil {
180-
return sdkdiag.AppendErrorf(diags, "updating Lambda Code Signing Config (%s): %s", d.Id(), err)
191+
if err != nil {
192+
return sdkdiag.AppendErrorf(diags, "updating Lambda Code Signing Config (%s): %s", d.Id(), err)
193+
}
181194
}
182195

183196
return append(diags, resourceCodeSigningConfigRead(ctx, d, meta)...)

internal/service/lambda/code_signing_config_data_source_test.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ func TestAccLambdaCodeSigningConfigDataSource_basic(t *testing.T) {
1515
ctx := acctest.Context(t)
1616
dataSourceName := "data.aws_lambda_code_signing_config.test"
1717
resourceName := "aws_lambda_code_signing_config.test"
18+
1819
resource.ParallelTest(t, resource.TestCase{
19-
PreCheck: func() { acctest.PreCheck(ctx, t) },
20+
PreCheck: func() {
21+
acctest.PreCheck(ctx, t)
22+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
23+
},
2024
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
2125
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
2226
Steps: []resource.TestStep{
@@ -35,8 +39,12 @@ func TestAccLambdaCodeSigningConfigDataSource_policyID(t *testing.T) {
3539
ctx := acctest.Context(t)
3640
dataSourceName := "data.aws_lambda_code_signing_config.test"
3741
resourceName := "aws_lambda_code_signing_config.test"
42+
3843
resource.ParallelTest(t, resource.TestCase{
39-
PreCheck: func() { acctest.PreCheck(ctx, t) },
44+
PreCheck: func() {
45+
acctest.PreCheck(ctx, t)
46+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
47+
},
4048
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
4149
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
4250
Steps: []resource.TestStep{
@@ -57,8 +65,12 @@ func TestAccLambdaCodeSigningConfigDataSource_description(t *testing.T) {
5765
ctx := acctest.Context(t)
5866
dataSourceName := "data.aws_lambda_code_signing_config.test"
5967
resourceName := "aws_lambda_code_signing_config.test"
68+
6069
resource.ParallelTest(t, resource.TestCase{
61-
PreCheck: func() { acctest.PreCheck(ctx, t) },
70+
PreCheck: func() {
71+
acctest.PreCheck(ctx, t)
72+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
73+
},
6274
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
6375
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
6476
Steps: []resource.TestStep{

internal/service/lambda/code_signing_config_test.go

Lines changed: 107 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"testing"
1010

1111
awstypes "github.com/aws/aws-sdk-go-v2/service/lambda/types"
12+
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
1213
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1314
"github.com/hashicorp/terraform-plugin-testing/terraform"
1415
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
@@ -26,7 +27,10 @@ func TestAccLambdaCodeSigningConfig_basic(t *testing.T) {
2627
var conf awstypes.CodeSigningConfig
2728

2829
resource.ParallelTest(t, resource.TestCase{
29-
PreCheck: func() { acctest.PreCheck(ctx, t) },
30+
PreCheck: func() {
31+
acctest.PreCheck(ctx, t)
32+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
33+
},
3034
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
3135
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
3236
CheckDestroy: testAccCheckCodeSigningConfigDestroy(ctx),
@@ -57,7 +61,10 @@ func TestAccLambdaCodeSigningConfig_disappears(t *testing.T) {
5761
var conf awstypes.CodeSigningConfig
5862

5963
resource.ParallelTest(t, resource.TestCase{
60-
PreCheck: func() { acctest.PreCheck(ctx, t) },
64+
PreCheck: func() {
65+
acctest.PreCheck(ctx, t)
66+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
67+
},
6168
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
6269
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
6370
CheckDestroy: testAccCheckCodeSigningConfigDestroy(ctx),
@@ -74,13 +81,65 @@ func TestAccLambdaCodeSigningConfig_disappears(t *testing.T) {
7481
})
7582
}
7683

84+
func TestAccLambdaCodeSigningConfig_tags(t *testing.T) {
85+
ctx := acctest.Context(t)
86+
resourceName := "aws_lambda_code_signing_config.code_signing_config"
87+
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
88+
var conf awstypes.CodeSigningConfig
89+
90+
resource.ParallelTest(t, resource.TestCase{
91+
PreCheck: func() {
92+
acctest.PreCheck(ctx, t)
93+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
94+
},
95+
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
96+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
97+
CheckDestroy: testAccCheckCodeSigningConfigDestroy(ctx),
98+
Steps: []resource.TestStep{
99+
{
100+
Config: testAccCodeSigningConfigConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1),
101+
Check: resource.ComposeTestCheckFunc(
102+
testAccCheckCodeSigningConfigExists(ctx, resourceName, &conf),
103+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, acctest.Ct1),
104+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1),
105+
),
106+
},
107+
{
108+
ResourceName: resourceName,
109+
ImportState: true,
110+
ImportStateVerify: true,
111+
},
112+
{
113+
Config: testAccCodeSigningConfigConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2),
114+
Check: resource.ComposeTestCheckFunc(
115+
testAccCheckCodeSigningConfigExists(ctx, resourceName, &conf),
116+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, acctest.Ct2),
117+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated),
118+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2),
119+
),
120+
},
121+
{
122+
Config: testAccCodeSigningConfigConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2),
123+
Check: resource.ComposeTestCheckFunc(
124+
testAccCheckCodeSigningConfigExists(ctx, resourceName, &conf),
125+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, acctest.Ct1),
126+
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2),
127+
),
128+
},
129+
},
130+
})
131+
}
132+
77133
func TestAccLambdaCodeSigningConfig_updatePolicy(t *testing.T) {
78134
ctx := acctest.Context(t)
79135
resourceName := "aws_lambda_code_signing_config.code_signing_config"
80136
var conf awstypes.CodeSigningConfig
81137

82138
resource.ParallelTest(t, resource.TestCase{
83-
PreCheck: func() { acctest.PreCheck(ctx, t) },
139+
PreCheck: func() {
140+
acctest.PreCheck(ctx, t)
141+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
142+
},
84143
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
85144
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
86145
CheckDestroy: testAccCheckCodeSigningConfigDestroy(ctx),
@@ -117,7 +176,10 @@ func TestAccLambdaCodeSigningConfig_updatePublishers(t *testing.T) {
117176
var conf awstypes.CodeSigningConfig
118177

119178
resource.ParallelTest(t, resource.TestCase{
120-
PreCheck: func() { acctest.PreCheck(ctx, t) },
179+
PreCheck: func() {
180+
acctest.PreCheck(ctx, t)
181+
acctest.PreCheckPartitionNot(t, names.USGovCloudPartitionID)
182+
},
121183
ErrorCheck: acctest.ErrorCheck(t, names.LambdaServiceID),
122184
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
123185
CheckDestroy: testAccCheckCodeSigningConfigDestroy(ctx),
@@ -222,6 +284,47 @@ resource "aws_lambda_code_signing_config" "code_signing_config" {
222284
}`
223285
}
224286

287+
func testAccCodeSigningConfigConfig_tags1(rName, tagKey1, tagValue1 string) string {
288+
return fmt.Sprintf(`
289+
resource "aws_signer_signing_profile" "test" {
290+
platform_id = "AWSLambda-SHA384-ECDSA"
291+
}
292+
293+
resource "aws_lambda_code_signing_config" "code_signing_config" {
294+
allowed_publishers {
295+
signing_profile_version_arns = [
296+
aws_signer_signing_profile.test.version_arn,
297+
]
298+
}
299+
300+
tags = {
301+
%[2]q = %[3]q
302+
}
303+
}
304+
`, rName, tagKey1, tagValue1)
305+
}
306+
307+
func testAccCodeSigningConfigConfig_tags2(rName, tagKey1, tagValue1, tagKey2, tagValue2 string) string {
308+
return fmt.Sprintf(`
309+
resource "aws_signer_signing_profile" "test" {
310+
platform_id = "AWSLambda-SHA384-ECDSA"
311+
}
312+
313+
resource "aws_lambda_code_signing_config" "code_signing_config" {
314+
allowed_publishers {
315+
signing_profile_version_arns = [
316+
aws_signer_signing_profile.test.version_arn,
317+
]
318+
}
319+
320+
tags = {
321+
%[2]q = %[3]q
322+
%[4]q = %[5]q
323+
}
324+
}
325+
`, rName, tagKey1, tagValue1, tagKey2, tagValue2)
326+
}
327+
225328
func testAccCodeSigningConfigConfig_updatePublishers() string {
226329
return `
227330
resource "aws_signer_signing_profile" "test1" {

0 commit comments

Comments
 (0)