@aws-cdk/aws-s3tables-alpha
Version:
CDK Constructs for S3 Tables
84 lines • 10.7 kB
JavaScript
;
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