UNPKG

@pepperize/cdk-organizations

Version:

Manage AWS organizations, organizational units (OU), accounts and service control policies (SCP).

57 lines 7.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = handler; const aws_sdk_1 = require("aws-sdk"); let organizationsClient; const organizationsRegion = process.env.ORGANIZATIONS_ENDPOINT_REGION ?? "us-east-1"; /** * The onEvent handler is invoked whenever a resource lifecycle event for an organization occurs * * @see https://docs.aws.amazon.com/cdk/api/v1/docs/custom-resources-readme.html#handling-lifecycle-events-onevent */ async function handler(event) { console.log(`Request of type ${event.RequestType} received`); if (!organizationsClient) { organizationsClient = new aws_sdk_1.Organizations({ region: organizationsRegion }); } console.log("Payload: %j", event); if (event.RequestType == "Create") { // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#createOrganization-property try { const response = await organizationsClient .createOrganization({ FeatureSet: event.ResourceProperties.FeatureSet, }) .promise(); console.log("Creating organization: %j", response); return { PhysicalResourceId: response.Organization?.Id, Data: { ...response.Organization, }, }; } catch (e) { const error = e; if (error.code == "AlreadyInOrganizationException") { // https://docs.aws.amazon.com/organizations/latest/APIReference/API_CreateOrganization.html#API_CreateOrganization_Errors console.log("Organization already created."); } else { throw error; } } } // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#describeOrganization-property const response = await organizationsClient .describeOrganization() .promise(); // TODO: Try to delete organization (RemovalPolicy) return { PhysicalResourceId: response.Organization?.Id, Data: { ...response.Organization, }, }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tZXZlbnQtaGFuZGxlci5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JnYW5pemF0aW9uLXByb3ZpZGVyL29uLWV2ZW50LWhhbmRsZXIubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBV0EsMEJBK0NDO0FBekRELHFDQUFrRDtBQUVsRCxJQUFJLG1CQUFrQyxDQUFDO0FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsSUFBSSxXQUFXLENBQUM7QUFFckY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBcUI7SUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsS0FBSyxDQUFDLFdBQVcsV0FBVyxDQUFDLENBQUM7SUFFN0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekIsbUJBQW1CLEdBQUcsSUFBSSx1QkFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFbEMsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLHlHQUF5RztRQUN6RyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBNkMsTUFBTSxtQkFBbUI7aUJBQ2pGLGtCQUFrQixDQUFDO2dCQUNsQixVQUFVLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVU7YUFDaEQsQ0FBQztpQkFDRCxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbkQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQzdDLElBQUksRUFBRTtvQkFDSixHQUFHLFFBQVEsQ0FBQyxZQUFZO2lCQUN6QjthQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sS0FBSyxHQUFHLENBQWEsQ0FBQztZQUM1QixJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksZ0NBQWdDLEVBQUUsQ0FBQztnQkFDbkQsMEhBQTBIO2dCQUMxSCxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsMkdBQTJHO0lBQzNHLE1BQU0sUUFBUSxHQUErQyxNQUFNLG1CQUFtQjtTQUNuRixvQkFBb0IsRUFBRTtTQUN0QixPQUFPLEVBQUUsQ0FBQztJQUViLG1EQUFtRDtJQUNuRCxPQUFPO1FBQ0wsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFO1FBQzdDLElBQUksRUFBRTtZQUNKLEdBQUcsUUFBUSxDQUFDLFlBQVk7U0FDekI7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0N1c3RvbVJlc291cmNlRXZlbnQgYXMgT25FdmVudFJlcXVlc3QsIENka0N1c3RvbVJlc291cmNlUmVzcG9uc2UgYXMgT25FdmVudFJlc3BvbnNlIH0gZnJvbSBcImF3cy1sYW1iZGFcIjtcbmltcG9ydCB7IEFXU0Vycm9yLCBPcmdhbml6YXRpb25zIH0gZnJvbSBcImF3cy1zZGtcIjtcblxubGV0IG9yZ2FuaXphdGlvbnNDbGllbnQ6IE9yZ2FuaXphdGlvbnM7XG5jb25zdCBvcmdhbml6YXRpb25zUmVnaW9uID0gcHJvY2Vzcy5lbnYuT1JHQU5JWkFUSU9OU19FTkRQT0lOVF9SRUdJT04gPz8gXCJ1cy1lYXN0LTFcIjtcblxuLyoqXG4gKiBUaGUgb25FdmVudCBoYW5kbGVyIGlzIGludm9rZWQgd2hlbmV2ZXIgYSByZXNvdXJjZSBsaWZlY3ljbGUgZXZlbnQgZm9yIGFuIG9yZ2FuaXphdGlvbiBvY2N1cnNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YxL2RvY3MvY3VzdG9tLXJlc291cmNlcy1yZWFkbWUuaHRtbCNoYW5kbGluZy1saWZlY3ljbGUtZXZlbnRzLW9uZXZlbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IE9uRXZlbnRSZXF1ZXN0KTogUHJvbWlzZTxPbkV2ZW50UmVzcG9uc2U+IHtcbiAgY29uc29sZS5sb2coYFJlcXVlc3Qgb2YgdHlwZSAke2V2ZW50LlJlcXVlc3RUeXBlfSByZWNlaXZlZGApO1xuXG4gIGlmICghb3JnYW5pemF0aW9uc0NsaWVudCkge1xuICAgIG9yZ2FuaXphdGlvbnNDbGllbnQgPSBuZXcgT3JnYW5pemF0aW9ucyh7IHJlZ2lvbjogb3JnYW5pemF0aW9uc1JlZ2lvbiB9KTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKFwiUGF5bG9hZDogJWpcIiwgZXZlbnQpO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PSBcIkNyZWF0ZVwiKSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvbGF0ZXN0L0FXUy9Pcmdhbml6YXRpb25zLmh0bWwjY3JlYXRlT3JnYW5pemF0aW9uLXByb3BlcnR5XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBPcmdhbml6YXRpb25zLkNyZWF0ZU9yZ2FuaXphdGlvblJlc3BvbnNlID0gYXdhaXQgb3JnYW5pemF0aW9uc0NsaWVudFxuICAgICAgICAuY3JlYXRlT3JnYW5pemF0aW9uKHtcbiAgICAgICAgICBGZWF0dXJlU2V0OiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRmVhdHVyZVNldCxcbiAgICAgICAgfSlcbiAgICAgICAgLnByb21pc2UoKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiQ3JlYXRpbmcgb3JnYW5pemF0aW9uOiAlalwiLCByZXNwb25zZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHJlc3BvbnNlLk9yZ2FuaXphdGlvbj8uSWQsXG4gICAgICAgIERhdGE6IHtcbiAgICAgICAgICAuLi5yZXNwb25zZS5Pcmdhbml6YXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBBV1NFcnJvcjtcbiAgICAgIGlmIChlcnJvci5jb2RlID09IFwiQWxyZWFkeUluT3JnYW5pemF0aW9uRXhjZXB0aW9uXCIpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29yZ2FuaXphdGlvbnMvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlT3JnYW5pemF0aW9uLmh0bWwjQVBJX0NyZWF0ZU9yZ2FuaXphdGlvbl9FcnJvcnNcbiAgICAgICAgY29uc29sZS5sb2coXCJPcmdhbml6YXRpb24gYWxyZWFkeSBjcmVhdGVkLlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvT3JnYW5pemF0aW9ucy5odG1sI2Rlc2NyaWJlT3JnYW5pemF0aW9uLXByb3BlcnR5XG4gIGNvbnN0IHJlc3BvbnNlOiBPcmdhbml6YXRpb25zLkRlc2NyaWJlT3JnYW5pemF0aW9uUmVzcG9uc2UgPSBhd2FpdCBvcmdhbml6YXRpb25zQ2xpZW50XG4gICAgLmRlc2NyaWJlT3JnYW5pemF0aW9uKClcbiAgICAucHJvbWlzZSgpO1xuXG4gIC8vIFRPRE86IFRyeSB0byBkZWxldGUgb3JnYW5pemF0aW9uIChSZW1vdmFsUG9saWN5KVxuICByZXR1cm4ge1xuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcmVzcG9uc2UuT3JnYW5pemF0aW9uPy5JZCxcbiAgICBEYXRhOiB7XG4gICAgICAuLi5yZXNwb25zZS5Pcmdhbml6YXRpb24sXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==