in lambda-client/src/main/java/com/amazonwebservices/blogs/containers/IAMEventHandler.java [71:121]
private void handle (String inputString) throws IOException {
JsonObject inputObject = new JsonObject (inputString);
String account = inputObject.getString("account");
String eventName = inputObject.getJsonObject("detail").getString("eventName");
String eventSource = inputObject.getJsonObject("detail").getString("eventSource");
String groupName = inputObject.getJsonObject("detail").getJsonObject("requestParameters").getString("groupName");
String userName = inputObject.getJsonObject("detail").getJsonObject("requestParameters").getString("userName");
String userArn = String.format("arn:aws:iam::%s:user/%s", account, userName);
logger.info(String.format("Handling IAM event notification from '%s'", eventSource));
if (!eventSource.equals(IAM_SOURCE)) return;
String objName = userName.concat("-").concat(groupName).toLowerCase();
String objNamespace = "kube-system";
IamUserGroupCustomObject iamUserGroup =
new IamUserGroupCustomObject()
.apiVersion("octank.com/v1")
.kind("IamUserGroup")
.metadata(new V1ObjectMeta()
.name(objName)
.namespace(objNamespace))
.spec(new IamUserGroupCustomObjectSpec()
.iamUser(userArn)
.username(userName)
.group(groupName));
logger.debug(iamUserGroup.toString());
if (eventName.equals(ADD_USER_TO_GROUP)) {
logger.info(String.format("Adding user '%s' to group '%s'", userName, groupName));
KubernetesApiResponse<IamUserGroupCustomObject> createResponse = apiIamGroupClient.create(iamUserGroup);
if (!createResponse.isSuccess()) {
logger.error(String.format("Failed to create a IamGroup custom object '%s.%s'", objName, objNamespace));
logger.error(String.format("Error status details:\n%s", createResponse.getStatus().getDetails().toString()));
}
else {
logger.error(String.format("Successfully created IamGroup custom object '%s.%s'", objName, objNamespace));
}
}
else if (eventName.equals(REMOVE_USER_FROM_GROUP)) {
logger.info(String.format("Removing user '%s' from group '%s'", userName, groupName));
KubernetesApiResponse<IamUserGroupCustomObject> createResponse = apiIamGroupClient.delete(objNamespace, objName);
if (!createResponse.isSuccess()) {
logger.error(String.format("Failed to delete a IamGroup custom object '%s.%s'", objName, objNamespace));
logger.error(String.format("Error status details:\n%s", createResponse.getStatus().getDetails().toString()));
}
else {
logger.error(String.format("Successfully deleted IamGroup custom object '%s.%s'", objName, objNamespace));
}
}
}