Last active
August 11, 2022 01:02
-
-
Save Code-Hex/b653ac81786e7117a63b2f13f1f11035 to your computer and use it in GitHub Desktop.
Get GCP IAM Roles
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const cheerio = require('cheerio'); | |
const fetch = require('node-fetch'); | |
const fs = require('fs'); | |
// roles["roles/accesscontextmanager.policyAdmin"]["en"] | |
const roles = {}; | |
async function makePredefinedRoles(locale) { | |
const response = await fetch( | |
`https://cloud.google.com/iam/docs/understanding-roles?hl=${locale}` | |
); | |
const html = await response.text(); | |
const $ = await cheerio.load(html); | |
if (locale === 'en') { | |
$('div', '#predefined-roles').each((_, div) => { | |
$(div) | |
.find('tr') | |
.each((_, tr) => { | |
const role = $(tr).find('td')[0]; | |
const roleName = $(role).find('.role-name').text().trim(); | |
if (roleName === '') return; | |
const permission = $(tr).find('td')[1]; | |
const permissions = []; | |
$(permission) | |
.find('li') | |
.each((_, v) => permissions.push($(v).text())); | |
roles[roleName] = { permissions }; | |
}); | |
}); | |
} | |
$('div', '#predefined-roles').each((_, div) => { | |
$(div) | |
.find('tr') | |
.each((_, tr) => { | |
const role = $(tr).find('td')[0]; | |
const roleName = $(role).find('.role-name').text().trim(); | |
if (roleName === '') return; | |
roles[roleName][locale] = { | |
roleTitle: $(role).find('.role-title').text().trim(), | |
roleName: roleName, | |
roleDescription: $(role).find('.role-description').text().trim(), | |
}; | |
}); | |
}); | |
} | |
async function main() { | |
await makePredefinedRoles('en'); | |
await makePredefinedRoles('ja'); | |
const jsonRoles = JSON.stringify(roles); | |
fs.writeFile('roles.json', jsonRoles, (err) => console.error('error: ', err)); | |
} | |
(async function () { | |
await main(); | |
})(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ node scripts/gcp-roles.js |
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment