Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Commit 5afda98

Browse files
committed
Add SSM Support
1 parent d7697a9 commit 5afda98

7 files changed

+438
-0
lines changed

resources/ssm-activations.go

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package resources
2+
3+
import (
4+
"github.com/aws/aws-sdk-go/aws"
5+
"github.com/aws/aws-sdk-go/aws/session"
6+
"github.com/aws/aws-sdk-go/service/ssm"
7+
)
8+
9+
type SSMActivation struct {
10+
svc *ssm.SSM
11+
ID *string
12+
}
13+
14+
func init() {
15+
register("SSMActivation", ListSSMActivations)
16+
}
17+
18+
func ListSSMActivations(sess *session.Session) ([]Resource, error) {
19+
svc := ssm.New(sess)
20+
resources := []Resource{}
21+
22+
params := &ssm.DescribeActivationsInput{
23+
MaxResults: aws.Int64(50),
24+
}
25+
26+
for {
27+
output, err := svc.DescribeActivations(params)
28+
if err != nil {
29+
return nil, err
30+
}
31+
32+
for _, activation := range output.ActivationList {
33+
resources = append(resources, &SSMActivation{
34+
svc: svc,
35+
ID: activation.ActivationId,
36+
})
37+
}
38+
39+
if output.NextToken == nil {
40+
break
41+
}
42+
43+
params.NextToken = output.NextToken
44+
}
45+
46+
return resources, nil
47+
}
48+
49+
func (f *SSMActivation) Remove() error {
50+
51+
_, err := f.svc.DeleteActivation(&ssm.DeleteActivationInput{
52+
ActivationId: f.ID,
53+
})
54+
55+
return err
56+
}
57+
58+
func (f *SSMActivation) String() string {
59+
return *f.ID
60+
}

resources/ssm-associations.go

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package resources
2+
3+
import (
4+
"github.com/aws/aws-sdk-go/aws"
5+
"github.com/aws/aws-sdk-go/aws/session"
6+
"github.com/aws/aws-sdk-go/service/ssm"
7+
)
8+
9+
type SSMAssociation struct {
10+
svc *ssm.SSM
11+
associationID *string
12+
instanceID *string
13+
}
14+
15+
func init() {
16+
register("SSMAssociation", ListSSMAssociations)
17+
}
18+
19+
func ListSSMAssociations(sess *session.Session) ([]Resource, error) {
20+
svc := ssm.New(sess)
21+
resources := []Resource{}
22+
23+
params := &ssm.ListAssociationsInput{
24+
MaxResults: aws.Int64(50),
25+
}
26+
27+
for {
28+
output, err := svc.ListAssociations(params)
29+
if err != nil {
30+
return nil, err
31+
}
32+
33+
for _, association := range output.Associations {
34+
resources = append(resources, &SSMAssociation{
35+
svc: svc,
36+
associationID: association.AssociationId,
37+
instanceID: association.InstanceId,
38+
})
39+
}
40+
41+
if output.NextToken == nil {
42+
break
43+
}
44+
45+
params.NextToken = output.NextToken
46+
}
47+
48+
return resources, nil
49+
}
50+
51+
func (f *SSMAssociation) Remove() error {
52+
53+
_, err := f.svc.DeleteAssociation(&ssm.DeleteAssociationInput{
54+
AssociationId: f.associationID,
55+
})
56+
57+
return err
58+
}
59+
60+
func (f *SSMAssociation) String() string {
61+
return *f.associationID
62+
}

resources/ssm-documents.go

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package resources
2+
3+
import (
4+
"github.com/aws/aws-sdk-go/aws"
5+
"github.com/aws/aws-sdk-go/aws/session"
6+
"github.com/aws/aws-sdk-go/service/ssm"
7+
)
8+
9+
type SSMDocument struct {
10+
svc *ssm.SSM
11+
name *string
12+
}
13+
14+
func init() {
15+
register("SSMDocument", ListSSMDocuments)
16+
}
17+
18+
func ListSSMDocuments(sess *session.Session) ([]Resource, error) {
19+
svc := ssm.New(sess)
20+
resources := []Resource{}
21+
22+
documentKeyFilter := []*ssm.DocumentKeyValuesFilter{
23+
{
24+
Key: aws.String("Owner"),
25+
Values: []*string{aws.String("Self")},
26+
},
27+
}
28+
29+
params := &ssm.ListDocumentsInput{
30+
MaxResults: aws.Int64(50),
31+
Filters: documentKeyFilter,
32+
}
33+
34+
for {
35+
output, err := svc.ListDocuments(params)
36+
if err != nil {
37+
return nil, err
38+
}
39+
40+
for _, documentIdentifier := range output.DocumentIdentifiers {
41+
resources = append(resources, &SSMDocument{
42+
svc: svc,
43+
name: documentIdentifier.Name,
44+
})
45+
}
46+
47+
if output.NextToken == nil {
48+
break
49+
}
50+
51+
params.NextToken = output.NextToken
52+
}
53+
54+
return resources, nil
55+
}
56+
57+
func (f *SSMDocument) Remove() error {
58+
59+
_, err := f.svc.DeleteDocument(&ssm.DeleteDocumentInput{
60+
Name: f.name,
61+
})
62+
63+
return err
64+
}
65+
66+
func (f *SSMDocument) String() string {
67+
return *f.name
68+
}

resources/ssm-maintenancewindows.go

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package resources
2+
3+
import (
4+
"github.com/aws/aws-sdk-go/aws"
5+
"github.com/aws/aws-sdk-go/aws/session"
6+
"github.com/aws/aws-sdk-go/service/ssm"
7+
)
8+
9+
type SSMMaintenanceWindow struct {
10+
svc *ssm.SSM
11+
ID *string
12+
}
13+
14+
func init() {
15+
register("SSMMaintenanceWindow", ListSSMMaintenanceWindows)
16+
}
17+
18+
func ListSSMMaintenanceWindows(sess *session.Session) ([]Resource, error) {
19+
svc := ssm.New(sess)
20+
resources := []Resource{}
21+
22+
params := &ssm.DescribeMaintenanceWindowsInput{
23+
MaxResults: aws.Int64(50),
24+
}
25+
26+
for {
27+
output, err := svc.DescribeMaintenanceWindows(params)
28+
if err != nil {
29+
return nil, err
30+
}
31+
32+
for _, windowIdentity := range output.WindowIdentities {
33+
resources = append(resources, &SSMMaintenanceWindow{
34+
svc: svc,
35+
ID: windowIdentity.WindowId,
36+
})
37+
}
38+
39+
if output.NextToken == nil {
40+
break
41+
}
42+
43+
params.NextToken = output.NextToken
44+
}
45+
46+
return resources, nil
47+
}
48+
49+
func (f *SSMMaintenanceWindow) Remove() error {
50+
51+
_, err := f.svc.DeleteMaintenanceWindow(&ssm.DeleteMaintenanceWindowInput{
52+
WindowId: f.ID,
53+
})
54+
55+
return err
56+
}
57+
58+
func (f *SSMMaintenanceWindow) String() string {
59+
return *f.ID
60+
}

resources/ssm-parameters.go

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package resources
2+
3+
import (
4+
"github.com/aws/aws-sdk-go/aws"
5+
"github.com/aws/aws-sdk-go/aws/session"
6+
"github.com/aws/aws-sdk-go/service/ssm"
7+
)
8+
9+
type SSMParameter struct {
10+
svc *ssm.SSM
11+
name *string
12+
}
13+
14+
func init() {
15+
register("SSMParameter", ListSSMParameters)
16+
}
17+
18+
func ListSSMParameters(sess *session.Session) ([]Resource, error) {
19+
svc := ssm.New(sess)
20+
resources := []Resource{}
21+
22+
params := &ssm.DescribeParametersInput{
23+
MaxResults: aws.Int64(50),
24+
}
25+
26+
for {
27+
output, err := svc.DescribeParameters(params)
28+
if err != nil {
29+
return nil, err
30+
}
31+
32+
for _, parameter := range output.Parameters {
33+
resources = append(resources, &SSMParameter{
34+
svc: svc,
35+
name: parameter.Name,
36+
})
37+
}
38+
39+
if output.NextToken == nil {
40+
break
41+
}
42+
43+
params.NextToken = output.NextToken
44+
}
45+
46+
return resources, nil
47+
}
48+
49+
func (f *SSMParameter) Remove() error {
50+
51+
_, err := f.svc.DeleteParameter(&ssm.DeleteParameterInput{
52+
Name: f.name,
53+
})
54+
55+
return err
56+
}
57+
58+
func (f *SSMParameter) String() string {
59+
return *f.name
60+
}

resources/ssm-patchbaselines.go

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package resources
2+
3+
import (
4+
"github.com/aws/aws-sdk-go/aws"
5+
"github.com/aws/aws-sdk-go/aws/session"
6+
"github.com/aws/aws-sdk-go/service/ssm"
7+
)
8+
9+
type SSMPatchBaseline struct {
10+
svc *ssm.SSM
11+
ID *string
12+
}
13+
14+
func init() {
15+
register("SSMPatchBaseline", ListSSMPatchBaselines)
16+
}
17+
18+
func ListSSMPatchBaselines(sess *session.Session) ([]Resource, error) {
19+
svc := ssm.New(sess)
20+
resources := []Resource{}
21+
22+
patchBaselineFilter := []*ssm.PatchOrchestratorFilter{
23+
{
24+
Key: aws.String("OWNER"),
25+
Values: []*string{aws.String("Self")},
26+
},
27+
}
28+
29+
params := &ssm.DescribePatchBaselinesInput{
30+
MaxResults: aws.Int64(50),
31+
Filters: patchBaselineFilter,
32+
}
33+
34+
for {
35+
output, err := svc.DescribePatchBaselines(params)
36+
if err != nil {
37+
return nil, err
38+
}
39+
40+
for _, baselineIdentity := range output.BaselineIdentities {
41+
resources = append(resources, &SSMPatchBaseline{
42+
svc: svc,
43+
ID: baselineIdentity.BaselineId,
44+
})
45+
}
46+
47+
if output.NextToken == nil {
48+
break
49+
}
50+
51+
params.NextToken = output.NextToken
52+
}
53+
54+
return resources, nil
55+
}
56+
57+
func (f *SSMPatchBaseline) Remove() error {
58+
59+
_, err := f.svc.DeletePatchBaseline(&ssm.DeletePatchBaselineInput{
60+
BaselineId: f.ID,
61+
})
62+
63+
return err
64+
}
65+
66+
func (f *SSMPatchBaseline) String() string {
67+
return *f.ID
68+
}

0 commit comments

Comments
 (0)