aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
29 lines • 4.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AZContextProviderPlugin = void 0;
const cxapi = require("@aws-cdk/cx-api");
const credentials_1 = require("../api/aws-auth/credentials");
const logging_1 = require("../logging");
/**
* Plugin to retrieve the Availability Zones for the current account
*/
class AZContextProviderPlugin {
constructor(aws) {
this.aws = aws;
}
async getValue(args) {
const region = args.region;
const account = args.account;
(0, logging_1.debug)(`Reading AZs for ${account}:${region}`);
const options = { assumeRoleArn: args.lookupRoleArn };
const ec2 = (await this.aws.forEnvironment(cxapi.EnvironmentUtils.make(account, region), credentials_1.Mode.ForReading, options)).sdk.ec2();
const response = await ec2.describeAvailabilityZones().promise();
if (!response.AvailabilityZones) {
return [];
}
const azs = response.AvailabilityZones.filter(zone => zone.State === 'available').map(zone => zone.ZoneName);
return azs;
}
}
exports.AZContextProviderPlugin = AZContextProviderPlugin;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhaWxhYmlsaXR5LXpvbmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXZhaWxhYmlsaXR5LXpvbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5QztBQUN6Qyw2REFBbUQ7QUFHbkQsd0NBQW1DO0FBRW5DOztHQUVHO0FBQ0gsTUFBYSx1QkFBdUI7SUFDbEMsWUFBNkIsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtJQUM3QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUE0QztRQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBQSxlQUFLLEVBQUMsbUJBQW1CLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0RCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsa0JBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDOUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFO1lBQUUsT0FBTyxFQUFFLENBQUM7U0FBRTtRQUMvQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0csT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUFmRCwwREFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9jcmVkZW50aWFscyc7XG5pbXBvcnQgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9zZGstcHJvdmlkZXInO1xuaW1wb3J0IHsgQ29udGV4dFByb3ZpZGVyUGx1Z2luIH0gZnJvbSAnLi4vYXBpL3BsdWdpbic7XG5pbXBvcnQgeyBkZWJ1ZyB9IGZyb20gJy4uL2xvZ2dpbmcnO1xuXG4vKipcbiAqIFBsdWdpbiB0byByZXRyaWV2ZSB0aGUgQXZhaWxhYmlsaXR5IFpvbmVzIGZvciB0aGUgY3VycmVudCBhY2NvdW50XG4gKi9cbmV4cG9ydCBjbGFzcyBBWkNvbnRleHRQcm92aWRlclBsdWdpbiBpbXBsZW1lbnRzIENvbnRleHRQcm92aWRlclBsdWdpbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXdzOiBTZGtQcm92aWRlcikge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFZhbHVlKGFyZ3M6IGN4c2NoZW1hLkF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5KSB7XG4gICAgY29uc3QgcmVnaW9uID0gYXJncy5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IGFyZ3MuYWNjb3VudDtcbiAgICBkZWJ1ZyhgUmVhZGluZyBBWnMgZm9yICR7YWNjb3VudH06JHtyZWdpb259YCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYXNzdW1lUm9sZUFybjogYXJncy5sb29rdXBSb2xlQXJuIH07XG4gICAgY29uc3QgZWMyID0gKGF3YWl0IHRoaXMuYXdzLmZvckVudmlyb25tZW50KGN4YXBpLkVudmlyb25tZW50VXRpbHMubWFrZShhY2NvdW50LCByZWdpb24pLCBNb2RlLkZvclJlYWRpbmcsIG9wdGlvbnMpKS5zZGsuZWMyKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBlYzIuZGVzY3JpYmVBdmFpbGFiaWxpdHlab25lcygpLnByb21pc2UoKTtcbiAgICBpZiAoIXJlc3BvbnNlLkF2YWlsYWJpbGl0eVpvbmVzKSB7IHJldHVybiBbXTsgfVxuICAgIGNvbnN0IGF6cyA9IHJlc3BvbnNlLkF2YWlsYWJpbGl0eVpvbmVzLmZpbHRlcih6b25lID0+IHpvbmUuU3RhdGUgPT09ICdhdmFpbGFibGUnKS5tYXAoem9uZSA9PiB6b25lLlpvbmVOYW1lKTtcbiAgICByZXR1cm4gYXpzO1xuICB9XG59XG4iXX0=