UNPKG

@aws-cdk/aws-s3tables-alpha

Version:

CDK Constructs for S3 Tables

84 lines 10.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.S3_TABLES_SERVICE = void 0; exports.parseTableBucketArn = parseTableBucketArn; exports.parseTableBucketName = parseTableBucketName; exports.parseTableBucketRegion = parseTableBucketRegion; exports.parseTableBucketAccount = parseTableBucketAccount; exports.validateTableBucketAttributes = validateTableBucketAttributes; const cdk = require("aws-cdk-lib/core"); exports.S3_TABLES_SERVICE = 's3tables'; function parseTableBucketArn(construct, props) { // if we have an explicit table bucket ARN, use it. if (props.tableBucketArn) { return props.tableBucketArn; } if (props.tableBucketName) { return cdk.Stack.of(construct).formatArn({ region: props.region, account: props.account, service: exports.S3_TABLES_SERVICE, resource: 'bucket', resourceName: props.tableBucketName, arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME, }); } throw new cdk.ValidationError('Cannot determine bucket ARN. At least `tableBucketArn` is needed', construct); } function parseTableBucketName(construct, props) { // if we have an explicit bucket name, use it. if (props.tableBucketName) { return props.tableBucketName; } // extract table bucket name from bucket arn if (props.tableBucketArn) { const bucketNameFromArn = cdk.Stack.of(construct).splitArn(props.tableBucketArn, cdk.ArnFormat.SLASH_RESOURCE_NAME).resourceName; if (bucketNameFromArn) { return bucketNameFromArn; } } throw new cdk.ValidationError('tableBucketName is required and could not be inferred from context', construct); } function parseTableBucketRegion(construct, props) { // if we have an explicit bucket region, use it. if (props.region) { return props.region; } // extract table bucket region from bucket arn if (props.tableBucketArn) { const regionFromArn = cdk.Stack.of(construct).splitArn(props.tableBucketArn, cdk.ArnFormat.SLASH_RESOURCE_NAME).region; if (regionFromArn) { return regionFromArn; } } // Region is optional, can be inferred later return undefined; } function parseTableBucketAccount(construct, props) { // if we have an explicit bucket account, use it. if (props.account) { return props.account; } // extract table bucket account from bucket arn if (props.tableBucketArn) { const accountFromArn = cdk.Stack.of(construct).splitArn(props.tableBucketArn, cdk.ArnFormat.SLASH_RESOURCE_NAME).account; if (accountFromArn) { return accountFromArn; } } // Account is optional, can be inferred later return undefined; } /** * @returns populated attributes from given scope and attributes * @throws ValidationError if any of the required attribures are missing */ function validateTableBucketAttributes(construct, props) { return { tableBucketName: parseTableBucketName(construct, props), account: parseTableBucketAccount(construct, props), region: parseTableBucketRegion(construct, props), tableBucketArn: parseTableBucketArn(construct, props), }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsa0RBa0JDO0FBRUQsb0RBZUM7QUFFRCx3REFnQkM7QUFFRCwwREFnQkM7QUFNRCxzRUFPQztBQXhGRCx3Q0FBd0M7QUFFM0IsUUFBQSxpQkFBaUIsR0FBRyxVQUFVLENBQUM7QUFFNUMsU0FBZ0IsbUJBQW1CLENBQUMsU0FBcUIsRUFBRSxLQUE0QjtJQUNyRixtREFBbUQ7SUFDbkQsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN2QyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE9BQU8sRUFBRSx5QkFBaUI7WUFDMUIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsWUFBWSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ25DLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQjtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsa0VBQWtFLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDL0csQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLFNBQXFCLEVBQUUsS0FBNEI7SUFDdEYsOENBQThDO0lBQzlDLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUMvQixDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNqSSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsT0FBTyxpQkFBaUIsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9FQUFvRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2pILENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxTQUFxQixFQUFFLEtBQTRCO0lBQ3hGLGdEQUFnRDtJQUNoRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3ZILElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLFNBQXFCLEVBQUUsS0FBNEI7SUFDekYsaURBQWlEO0lBQ2pELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBRUQsK0NBQStDO0lBQy9DLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDekgsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsU0FBcUIsRUFBRSxLQUE0QjtJQUMvRixPQUFPO1FBQ0wsZUFBZSxFQUFFLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDdkQsT0FBTyxFQUFFLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDbEQsTUFBTSxFQUFFLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDaEQsY0FBYyxFQUFFLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7S0FDdEQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMgfSBmcm9tICcuL3RhYmxlLWJ1Y2tldCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBTM19UQUJMRVNfU0VSVklDRSA9ICdzM3RhYmxlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRhYmxlQnVja2V0QXJuKGNvbnN0cnVjdDogSUNvbnN0cnVjdCwgcHJvcHM6IFRhYmxlQnVja2V0QXR0cmlidXRlcyk6IHN0cmluZyB7XG4gIC8vIGlmIHdlIGhhdmUgYW4gZXhwbGljaXQgdGFibGUgYnVja2V0IEFSTiwgdXNlIGl0LlxuICBpZiAocHJvcHMudGFibGVCdWNrZXRBcm4pIHtcbiAgICByZXR1cm4gcHJvcHMudGFibGVCdWNrZXRBcm47XG4gIH1cblxuICBpZiAocHJvcHMudGFibGVCdWNrZXROYW1lKSB7XG4gICAgcmV0dXJuIGNkay5TdGFjay5vZihjb25zdHJ1Y3QpLmZvcm1hdEFybih7XG4gICAgICByZWdpb246IHByb3BzLnJlZ2lvbixcbiAgICAgIGFjY291bnQ6IHByb3BzLmFjY291bnQsXG4gICAgICBzZXJ2aWNlOiBTM19UQUJMRVNfU0VSVklDRSxcbiAgICAgIHJlc291cmNlOiAnYnVja2V0JyxcbiAgICAgIHJlc291cmNlTmFtZTogcHJvcHMudGFibGVCdWNrZXROYW1lLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignQ2Fubm90IGRldGVybWluZSBidWNrZXQgQVJOLiBBdCBsZWFzdCBgdGFibGVCdWNrZXRBcm5gIGlzIG5lZWRlZCcsIGNvbnN0cnVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRhYmxlQnVja2V0TmFtZShjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QsIHByb3BzOiBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMpOiBzdHJpbmcge1xuICAvLyBpZiB3ZSBoYXZlIGFuIGV4cGxpY2l0IGJ1Y2tldCBuYW1lLCB1c2UgaXQuXG4gIGlmIChwcm9wcy50YWJsZUJ1Y2tldE5hbWUpIHtcbiAgICByZXR1cm4gcHJvcHMudGFibGVCdWNrZXROYW1lO1xuICB9XG5cbiAgLy8gZXh0cmFjdCB0YWJsZSBidWNrZXQgbmFtZSBmcm9tIGJ1Y2tldCBhcm5cbiAgaWYgKHByb3BzLnRhYmxlQnVja2V0QXJuKSB7XG4gICAgY29uc3QgYnVja2V0TmFtZUZyb21Bcm4gPSBjZGsuU3RhY2sub2YoY29uc3RydWN0KS5zcGxpdEFybihwcm9wcy50YWJsZUJ1Y2tldEFybiwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWU7XG4gICAgaWYgKGJ1Y2tldE5hbWVGcm9tQXJuKSB7XG4gICAgICByZXR1cm4gYnVja2V0TmFtZUZyb21Bcm47XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RhYmxlQnVja2V0TmFtZSBpcyByZXF1aXJlZCBhbmQgY291bGQgbm90IGJlIGluZmVycmVkIGZyb20gY29udGV4dCcsIGNvbnN0cnVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRhYmxlQnVja2V0UmVnaW9uKGNvbnN0cnVjdDogSUNvbnN0cnVjdCwgcHJvcHM6IFRhYmxlQnVja2V0QXR0cmlidXRlcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIGlmIHdlIGhhdmUgYW4gZXhwbGljaXQgYnVja2V0IHJlZ2lvbiwgdXNlIGl0LlxuICBpZiAocHJvcHMucmVnaW9uKSB7XG4gICAgcmV0dXJuIHByb3BzLnJlZ2lvbjtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgdGFibGUgYnVja2V0IHJlZ2lvbiBmcm9tIGJ1Y2tldCBhcm5cbiAgaWYgKHByb3BzLnRhYmxlQnVja2V0QXJuKSB7XG4gICAgY29uc3QgcmVnaW9uRnJvbUFybiA9IGNkay5TdGFjay5vZihjb25zdHJ1Y3QpLnNwbGl0QXJuKHByb3BzLnRhYmxlQnVja2V0QXJuLCBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlZ2lvbjtcbiAgICBpZiAocmVnaW9uRnJvbUFybikge1xuICAgICAgcmV0dXJuIHJlZ2lvbkZyb21Bcm47XG4gICAgfVxuICB9XG5cbiAgLy8gUmVnaW9uIGlzIG9wdGlvbmFsLCBjYW4gYmUgaW5mZXJyZWQgbGF0ZXJcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGFibGVCdWNrZXRBY2NvdW50KGNvbnN0cnVjdDogSUNvbnN0cnVjdCwgcHJvcHM6IFRhYmxlQnVja2V0QXR0cmlidXRlcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIGlmIHdlIGhhdmUgYW4gZXhwbGljaXQgYnVja2V0IGFjY291bnQsIHVzZSBpdC5cbiAgaWYgKHByb3BzLmFjY291bnQpIHtcbiAgICByZXR1cm4gcHJvcHMuYWNjb3VudDtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgdGFibGUgYnVja2V0IGFjY291bnQgZnJvbSBidWNrZXQgYXJuXG4gIGlmIChwcm9wcy50YWJsZUJ1Y2tldEFybikge1xuICAgIGNvbnN0IGFjY291bnRGcm9tQXJuID0gY2RrLlN0YWNrLm9mKGNvbnN0cnVjdCkuc3BsaXRBcm4ocHJvcHMudGFibGVCdWNrZXRBcm4sIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkuYWNjb3VudDtcbiAgICBpZiAoYWNjb3VudEZyb21Bcm4pIHtcbiAgICAgIHJldHVybiBhY2NvdW50RnJvbUFybjtcbiAgICB9XG4gIH1cblxuICAvLyBBY2NvdW50IGlzIG9wdGlvbmFsLCBjYW4gYmUgaW5mZXJyZWQgbGF0ZXJcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyBwb3B1bGF0ZWQgYXR0cmlidXRlcyBmcm9tIGdpdmVuIHNjb3BlIGFuZCBhdHRyaWJ1dGVzXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiBhbnkgb2YgdGhlIHJlcXVpcmVkIGF0dHJpYnVyZXMgYXJlIG1pc3NpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFibGVCdWNrZXRBdHRyaWJ1dGVzKGNvbnN0cnVjdDogSUNvbnN0cnVjdCwgcHJvcHM6IFRhYmxlQnVja2V0QXR0cmlidXRlcykge1xuICByZXR1cm4ge1xuICAgIHRhYmxlQnVja2V0TmFtZTogcGFyc2VUYWJsZUJ1Y2tldE5hbWUoY29uc3RydWN0LCBwcm9wcyksXG4gICAgYWNjb3VudDogcGFyc2VUYWJsZUJ1Y2tldEFjY291bnQoY29uc3RydWN0LCBwcm9wcyksXG4gICAgcmVnaW9uOiBwYXJzZVRhYmxlQnVja2V0UmVnaW9uKGNvbnN0cnVjdCwgcHJvcHMpLFxuICAgIHRhYmxlQnVja2V0QXJuOiBwYXJzZVRhYmxlQnVja2V0QXJuKGNvbnN0cnVjdCwgcHJvcHMpLFxuICB9O1xufVxuIl19