UNPKG

@pepperize/cdk-organizations

Version:

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

41 lines 5.33 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 Account 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); const { Email, AccountName, RoleName, IamUserAccessToBilling } = event.ResourceProperties; if (event.RequestType == "Create") { const response = await organizationsClient // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Organizations.html#createAccount-property .createAccount({ Email: Email, AccountName: AccountName, RoleName: RoleName, IamUserAccessToBilling: IamUserAccessToBilling, }) .promise(); console.log("Creating account: %j", response); return { Data: { ...event.ResourceProperties, CreateAccountStatusId: response.CreateAccountStatus?.Id }, }; } return { ...event, Data: { ...event.ResourceProperties, }, }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tZXZlbnQtaGFuZGxlci5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWNjb3VudC1wcm92aWRlci9vbi1ldmVudC1oYW5kbGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLDBCQW1DQztBQTdDRCxxQ0FBd0M7QUFFeEMsSUFBSSxtQkFBa0MsQ0FBQztBQUN2QyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLElBQUksV0FBVyxDQUFDO0FBRXJGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQXFCO0lBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0lBRTdELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3pCLG1CQUFtQixHQUFHLElBQUksdUJBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRWxDLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUUxRixJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksUUFBUSxFQUFFLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQXdDLE1BQU0sbUJBQW1CO1lBQzdFLG9HQUFvRzthQUNuRyxhQUFhLENBQUM7WUFDYixLQUFLLEVBQUUsS0FBSztZQUNaLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLHNCQUFzQixFQUFFLHNCQUFzQjtTQUMvQyxDQUFDO2FBQ0QsT0FBTyxFQUFFLENBQUM7UUFFYixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTlDLE9BQU87WUFDTCxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxRQUFRLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxFQUFFO1NBQy9GLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLElBQUksRUFBRTtZQUNKLEdBQUcsS0FBSyxDQUFDLGtCQUFrQjtTQUM1QjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ3VzdG9tUmVzb3VyY2VFdmVudCBhcyBPbkV2ZW50UmVxdWVzdCwgQ2RrQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSBhcyBPbkV2ZW50UmVzcG9uc2UgfSBmcm9tIFwiYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9ucyB9IGZyb20gXCJhd3Mtc2RrXCI7XG5cbmxldCBvcmdhbml6YXRpb25zQ2xpZW50OiBPcmdhbml6YXRpb25zO1xuY29uc3Qgb3JnYW5pemF0aW9uc1JlZ2lvbiA9IHByb2Nlc3MuZW52Lk9SR0FOSVpBVElPTlNfRU5EUE9JTlRfUkVHSU9OID8/IFwidXMtZWFzdC0xXCI7XG5cbi8qKlxuICogVGhlIG9uRXZlbnQgaGFuZGxlciBpcyBpbnZva2VkIHdoZW5ldmVyIGEgcmVzb3VyY2UgbGlmZWN5Y2xlIGV2ZW50IGZvciBhbiBBY2NvdW50IG9jY3Vyc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvdjEvZG9jcy9jdXN0b20tcmVzb3VyY2VzLXJlYWRtZS5odG1sI2hhbmRsaW5nLWxpZmVjeWNsZS1ldmVudHMtb25ldmVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogT25FdmVudFJlcXVlc3QpOiBQcm9taXNlPE9uRXZlbnRSZXNwb25zZT4ge1xuICBjb25zb2xlLmxvZyhgUmVxdWVzdCBvZiB0eXBlICR7ZXZlbnQuUmVxdWVzdFR5cGV9IHJlY2VpdmVkYCk7XG5cbiAgaWYgKCFvcmdhbml6YXRpb25zQ2xpZW50KSB7XG4gICAgb3JnYW5pemF0aW9uc0NsaWVudCA9IG5ldyBPcmdhbml6YXRpb25zKHsgcmVnaW9uOiBvcmdhbml6YXRpb25zUmVnaW9uIH0pO1xuICB9XG5cbiAgY29uc29sZS5sb2coXCJQYXlsb2FkOiAlalwiLCBldmVudCk7XG5cbiAgY29uc3QgeyBFbWFpbCwgQWNjb3VudE5hbWUsIFJvbGVOYW1lLCBJYW1Vc2VyQWNjZXNzVG9CaWxsaW5nIH0gPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09IFwiQ3JlYXRlXCIpIHtcbiAgICBjb25zdCByZXNwb25zZTogT3JnYW5pemF0aW9ucy5DcmVhdGVBY2NvdW50UmVzcG9uc2UgPSBhd2FpdCBvcmdhbml6YXRpb25zQ2xpZW50XG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL09yZ2FuaXphdGlvbnMuaHRtbCNjcmVhdGVBY2NvdW50LXByb3BlcnR5XG4gICAgICAuY3JlYXRlQWNjb3VudCh7XG4gICAgICAgIEVtYWlsOiBFbWFpbCxcbiAgICAgICAgQWNjb3VudE5hbWU6IEFjY291bnROYW1lLFxuICAgICAgICBSb2xlTmFtZTogUm9sZU5hbWUsXG4gICAgICAgIElhbVVzZXJBY2Nlc3NUb0JpbGxpbmc6IElhbVVzZXJBY2Nlc3NUb0JpbGxpbmcsXG4gICAgICB9KVxuICAgICAgLnByb21pc2UoKTtcblxuICAgIGNvbnNvbGUubG9nKFwiQ3JlYXRpbmcgYWNjb3VudDogJWpcIiwgcmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIERhdGE6IHsgLi4uZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLCBDcmVhdGVBY2NvdW50U3RhdHVzSWQ6IHJlc3BvbnNlLkNyZWF0ZUFjY291bnRTdGF0dXM/LklkIH0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uZXZlbnQsXG4gICAgRGF0YToge1xuICAgICAgLi4uZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLFxuICAgIH0sXG4gIH07XG59XG4iXX0=