Lists the IAM groups that have the specified path prefix.
curl -X GET https://iam.amazonaws.com/ \
-d "Action=ListGroups" \
-d "PathPrefix=/" \
-d "Version=2010-05-08"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkXml.pb"
IncludeFile "CkAuthAws.pb"
Procedure ChilkatExample()
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success.i
authAws.i = CkAuthAws::ckCreate()
If authAws.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkAuthAws::setCkAccessKey(authAws, "AWS_ACCESS_KEY")
CkAuthAws::setCkSecretKey(authAws, "AWS_SECRET_KEY")
CkAuthAws::setCkRegion(authAws, "us-east-1")
CkAuthAws::setCkServiceName(authAws, "iam")
CkRest::ckSetAuthAws(rest,authAws)
; URL: https://iam.amazonaws.com/
bTls.i = 1
port.i = 443
bAutoReconnect.i = 1
success = CkRest::ckConnect(rest,"iam.amazonaws.com",port,bTls,bAutoReconnect)
If success <> 1
Debug "ConnectFailReason: " + Str(CkRest::ckConnectFailReason(rest))
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
ProcedureReturn
EndIf
CkRest::ckAddQueryParam(rest,"Action","ListGroups")
CkRest::ckAddQueryParam(rest,"PathPrefix","/")
CkRest::ckAddQueryParam(rest,"Version","2010-05-08")
sbResponseBody.i = CkStringBuilder::ckCreate()
If sbResponseBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkRest::ckFullRequestNoBodySb(rest,"GET","/",sbResponseBody)
If success <> 1
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkStringBuilder::ckDispose(sbResponseBody)
ProcedureReturn
EndIf
respStatusCode.i = CkRest::ckResponseStatusCode(rest)
If respStatusCode >= 400
Debug "Response Status Code = " + Str(respStatusCode)
Debug "Response Header:"
Debug CkRest::ckResponseHeader(rest)
Debug "Response Body:"
Debug CkStringBuilder::ckGetAsString(sbResponseBody)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkStringBuilder::ckDispose(sbResponseBody)
ProcedureReturn
EndIf
xmlResponse.i = CkXml::ckCreate()
If xmlResponse.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::ckLoadSb(xmlResponse,sbResponseBody,1)
i.i
count_i.i
tagPath.s
Path.s
GroupName.s
GroupId.s
Arn.s
IsTruncated.s
RequestId.s
i = 0
count_i = CkXml::ckNumChildrenHavingTag(xmlResponse,"ListGroupsResult|Groups|member")
While i < count_i
CkXml::setCkI(xmlResponse, i)
Path = CkXml::ckGetChildContent(xmlResponse,"ListGroupsResult|Groups|member[i]|Path")
GroupName = CkXml::ckGetChildContent(xmlResponse,"ListGroupsResult|Groups|member[i]|GroupName")
GroupId = CkXml::ckGetChildContent(xmlResponse,"ListGroupsResult|Groups|member[i]|GroupId")
Arn = CkXml::ckGetChildContent(xmlResponse,"ListGroupsResult|Groups|member[i]|Arn")
i = i + 1
Wend
IsTruncated = CkXml::ckGetChildContent(xmlResponse,"ListGroupsResult|IsTruncated")
RequestId = CkXml::ckGetChildContent(xmlResponse,"ResponseMetadata|RequestId")
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkStringBuilder::ckDispose(sbResponseBody)
CkXml::ckDispose(xmlResponse)
ProcedureReturn
EndProcedure
<?xml version="1.0" encoding="utf-8" ?>
<ListGroupsResponse>
<ListGroupsResult>
<Groups>
<member>
<Path>/division_abc/subdivision_xyz/</Path>
<GroupName>Admins</GroupName>
<GroupId>AGPACKCEVSQ6C2EXAMPLE</GroupId>
<Arn>arn:aws:iam::123456789012:group/Admins</Arn>
</member>
<member>
<Path>/division_abc/subdivision_xyz/product_1234/engineering/</Path>
<GroupName>Test</GroupName>
<GroupId>AGP2MAB8DPLSRHEXAMPLE</GroupId>
<Arn>arn:aws:iam::123456789012:group
/division_abc/subdivision_xyz/product_1234/engineering/Test</Arn>
</member>
<member>
<Path>/division_abc/subdivision_xyz/product_1234/</Path>
<GroupName>Managers</GroupName>
<GroupId>AGPIODR4TAW7CSEXAMPLE</GroupId>
<Arn>arn:aws:iam::123456789012
:group/division_abc/subdivision_xyz/product_1234/Managers</Arn>
</member>
</Groups>
<IsTruncated>false</IsTruncated>
</ListGroupsResult>
<ResponseMetadata>
<RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId>
</ResponseMetadata>
</ListGroupsResponse>