diff --git a/iam/iam.go b/iam/iam.go
index a25ac465..4aa2bcc0 100644
--- a/iam/iam.go
+++ b/iam/iam.go
@@ -134,6 +134,28 @@ func (iam *IAM) CreateUser(name, path string) (*CreateUserResp, error) {
return resp, nil
}
+// UsersResp Response to a ListUsers request.
+//
+// See http://goo.gl/iBxBBb for more details.
+type UsersResp struct {
+ Users []User `xml:"ListUsersResult>Users>member"`
+ RequestId string `xml:"ResponseMetadata>RequestId"`
+}
+
+// Users list all the users.
+//
+// See http://goo.gl/iBxBBb for more details.
+func (iam *IAM) Users() (*UsersResp, error) {
+ params := map[string]string{
+ "Action": "ListUsers",
+ }
+ resp := new(UsersResp)
+ if err := iam.query(params, resp); err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
// Response for GetUser requests.
//
// See http://goo.gl/ZnzRN for more details.
diff --git a/iam/iam_test.go b/iam/iam_test.go
index 719a0182..b222af25 100644
--- a/iam/iam_test.go
+++ b/iam/iam_test.go
@@ -163,6 +163,30 @@ func (s *S) TestListGroupsWithoutPathPrefix(c *C) {
c.Assert(ok, Equals, false)
}
+func (s *S) TestListUsers(c *C) {
+ testServer.Response(200, nil, ListUsersExample)
+ resp, err := s.iam.Users()
+ values := testServer.WaitRequest().URL.Query()
+ c.Assert(values.Get("Action"), Equals, "ListUsers")
+ c.Assert(err, IsNil)
+ c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
+ expected := []iam.User{
+ {
+ Path: "/division_abc/subdivision_xyz/engineering/",
+ Name: "Andrew",
+ Id: "AID2MAB8DPLSRHEXAMPLE",
+ Arn: "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/engineering/Andrew",
+ },
+ {
+ Path: "/division_abc/subdivision_xyz/engineering/",
+ Name: "Jackie",
+ Id: "AIDIODR4TAW7CSEXAMPLE",
+ Arn: "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/engineering/Jackie",
+ },
+ }
+ c.Assert(resp.Users, DeepEquals, expected)
+}
+
func (s *S) TestCreateAccessKey(c *C) {
testServer.Response(200, nil, CreateAccessKeyExample)
resp, err := s.iam.CreateAccessKey("Bob")
diff --git a/iam/responses_test.go b/iam/responses_test.go
index 97335901..41a592b3 100644
--- a/iam/responses_test.go
+++ b/iam/responses_test.go
@@ -91,6 +91,35 @@ var ListGroupsExample = `
`
+var ListUsersExample = `
+
+
+
+
+ AID2MAB8DPLSRHEXAMPLE
+ /division_abc/subdivision_xyz/engineering/
+ Andrew
+ arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/engineering/Andrew
+ 2012-09-05T19:38:48Z
+ 2014-09-08T21:47:36Z
+
+
+ AIDIODR4TAW7CSEXAMPLE
+ /division_abc/subdivision_xyz/engineering/
+ Jackie
+ arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/engineering/Jackie
+ 2014-04-09T15:43:45Z
+ 2014-09-24T16:18:07Z
+
+
+ false
+
+
+ 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE
+
+
+`
+
var RequestIdExample = `