Skip to content

Commit 4e41a7f

Browse files
authored
Add CloudFront Function (rebuy-de#1027) (rebuy-de#1031)
* Add CloudFront Function (rebuy-de#1027) * Add missing pagination
1 parent d5c6a0d commit 4e41a7f

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

resources/cloudfront-function.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package resources
2+
3+
import (
4+
"github.com/aws/aws-sdk-go/aws/session"
5+
"github.com/aws/aws-sdk-go/service/cloudfront"
6+
"github.com/rebuy-de/aws-nuke/v2/pkg/types"
7+
)
8+
9+
type CloudFrontFunction struct {
10+
svc *cloudfront.CloudFront
11+
name *string
12+
stage *string
13+
}
14+
15+
func init() {
16+
register("CloudFrontFunction", ListCloudFrontFunctions)
17+
}
18+
19+
func ListCloudFrontFunctions(sess *session.Session) ([]Resource, error) {
20+
svc := cloudfront.New(sess)
21+
resources := []Resource{}
22+
params := &cloudfront.ListFunctionsInput{}
23+
24+
for {
25+
resp, err := svc.ListFunctions(params)
26+
if err != nil {
27+
return nil, err
28+
}
29+
30+
for _, item := range resp.FunctionList.Items {
31+
resources = append(resources, &CloudFrontFunction{
32+
svc: svc,
33+
name: item.Name,
34+
stage: item.FunctionMetadata.Stage,
35+
})
36+
}
37+
38+
if resp.FunctionList.NextMarker == nil {
39+
break
40+
}
41+
42+
params.Marker = resp.FunctionList.NextMarker
43+
44+
}
45+
return resources, nil
46+
}
47+
48+
func (f *CloudFrontFunction) Remove() error {
49+
resp, err := f.svc.GetFunction(&cloudfront.GetFunctionInput{
50+
Name: f.name,
51+
Stage: f.stage,
52+
})
53+
if err != nil {
54+
return err
55+
}
56+
57+
_, err = f.svc.DeleteFunction(&cloudfront.DeleteFunctionInput{
58+
Name: f.name,
59+
IfMatch: resp.ETag,
60+
})
61+
62+
return err
63+
}
64+
65+
func (f *CloudFrontFunction) Properties() types.Properties {
66+
properties := types.NewProperties()
67+
properties.Set("name", f.name)
68+
properties.Set("stage", f.stage)
69+
return properties
70+
}

0 commit comments

Comments
 (0)