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

Commit 295ea40

Browse files
authored
Merge pull request #178 from bashtoni/inline-iam-profiles
Add resource IAMRolePolicy to allow deletion of inline policies on roles
2 parents a5e4c8f + 6574c3a commit 295ea40

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

resources/iam-role-policy.go

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package resources
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/aws/aws-sdk-go/aws/session"
7+
"github.com/aws/aws-sdk-go/service/iam"
8+
)
9+
10+
type IAMRolePolicy struct {
11+
svc *iam.IAM
12+
roleName string
13+
policyName string
14+
}
15+
16+
func init() {
17+
register("IAMRolePolicy", ListIAMRolePolicies)
18+
}
19+
20+
func ListIAMRolePolicies(sess *session.Session) ([]Resource, error) {
21+
svc := iam.New(sess)
22+
23+
roles, err := svc.ListRoles(nil)
24+
if err != nil {
25+
return nil, err
26+
}
27+
28+
resources := make([]Resource, 0)
29+
for _, role := range roles.Roles {
30+
policies, err := svc.ListRolePolicies(&iam.ListRolePoliciesInput{
31+
RoleName: role.RoleName,
32+
})
33+
if err != nil {
34+
return nil, err
35+
}
36+
37+
for _, policyName := range policies.PolicyNames {
38+
resources = append(resources, &IAMRolePolicy{
39+
svc: svc,
40+
policyName: *policyName,
41+
roleName: *role.RoleName,
42+
})
43+
}
44+
}
45+
46+
return resources, nil
47+
}
48+
49+
func (e *IAMRolePolicy) Remove() error {
50+
_, err := e.svc.DeleteRolePolicy(
51+
&iam.DeleteRolePolicyInput{
52+
RoleName: &e.roleName,
53+
PolicyName: &e.policyName,
54+
})
55+
if err != nil {
56+
return err
57+
}
58+
59+
return nil
60+
}
61+
62+
func (e *IAMRolePolicy) String() string {
63+
return fmt.Sprintf("%s -> %s", e.roleName, e.policyName)
64+
}

0 commit comments

Comments
 (0)