aws-iam-policy-tool
Version:
AWS IAM role/policy management cli tool
45 lines (44 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* export IAM polices to JSON files
*/
const promisedLife = require('promised-lifestream');
const stream_1 = require("./utils/stream");
const result_writer_1 = require("./utils/result_writer");
const file_1 = require("./utils/file");
const list_stream_1 = require("./aws/list_stream");
const result_1 = require("./utils/result");
const policy_1 = require("./aws/policy");
async function writePolicyFile(parentDir, entry) {
const fileName = `${entry.policyName}.json`;
try {
await file_1.writeJSONFile(parentDir, fileName, entry.asJson());
return result_1.OK('Wrote %1', fileName);
}
catch (err) {
return result_1.NG('Failed to write %1', fileName);
}
}
async function main(outDir, nameMatcher, opts = {}) {
const policyFetcher = new policy_1.PolicyFetcher();
try {
return await promisedLife([
new list_stream_1.ListPolicyStream({
OnlyAttached: false,
Scope: 'Local',
}),
stream_1.filterStream((policy) => {
return !nameMatcher || policy.PolicyName.match(nameMatcher);
}),
stream_1.promisedStream((policy) => policyFetcher.getPolicyEntry(policy.Arn, policy.DefaultVersionId)),
stream_1.promisedStream((entry) => writePolicyFile(outDir, entry)),
result_writer_1.createWriter(opts),
]);
}
catch (err) {
console.error(err.stack);
return false;
}
}
exports.main = main;