UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 2.16 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var aws_iam_1=()=>{var tmp=require("../../../aws-iam");return aws_iam_1=()=>tmp,tmp},aws_kms_1=()=>{var tmp=require("../../../aws-kms");return aws_kms_1=()=>tmp,tmp},core_1=()=>{var tmp=require("../../../core");return core_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp},bucket_reflection_1=()=>{var tmp=require("../bucket-reflection");return bucket_reflection_1=()=>tmp,tmp},bucket_policy_1=()=>{var tmp=require("../mixins/bucket-policy");return bucket_policy_1=()=>tmp,tmp},s3_generated_1=()=>{var tmp=require("../s3.generated");return s3_generated_1=()=>tmp,tmp};class EncryptedBucketFactory{forResource(resource){return ifCfnBucket(resource,r=>new EncryptedCfnBucket(r))}}class EncryptedCfnBucket{bucket;env;constructor(bucket){this.bucket=bucket,this.env=bucket.env}grantOnKey(grantee,...actions){const key=bucket_reflection_1().BucketReflection.of(this.bucket).encryptionKey;return{grant:key?aws_kms_1().KeyGrants.fromKey(key).actions(grantee,...actions):void 0}}}class BucketWithPolicyFactory{forResource(resource){return ifCfnBucket(resource,r=>new CfnBucketWithPolicy(r))}}class CfnBucketWithPolicy{bucket;env;policy;constructor(bucket){this.bucket=bucket,this.env=bucket.env}addToResourcePolicy(statement){return this.policy||(this.policy=bucket_reflection_1().BucketReflection.of(this.bucket)?.policy??new(s3_generated_1()).CfnBucketPolicy(this.bucket,"S3BucketPolicy",{bucket:this.bucket.ref,policyDocument:{Statement:[]}})),this.policy.with(new(bucket_policy_1()).BucketPolicyStatements([statement])),{statementAdded:!0,policyDependable:this.policy}}}function ifCfnBucket(resource,factory){if(!s3_generated_1().CfnBucket.isCfnBucket(resource))throw new(core_1()).ValidationError((0,literal_string_1().lit)`Construct`,`Construct ${resource.node.path} is not of type CfnBucket`,resource);return factory(resource)}aws_iam_1().DefaultEncryptedResourceFactories.set("AWS::S3::Bucket",new EncryptedBucketFactory),aws_iam_1().DefaultPolicyFactories.set("AWS::S3::Bucket",new BucketWithPolicyFactory);