@bitblit/ratchet-epsilon-deployment 4.0.226-alpha → 4.0.229-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{Stack as e,Duration as t,Size as o,Lazy as a}from"aws-cdk-lib";import{DockerImageCode as i,DockerImageFunction as s,FunctionUrlAuthType as r,HttpMethod as n}from"aws-cdk-lib/aws-lambda";import{PolicyStatement as c,Effect as m,Role as l,ServicePrincipal as d,ManagedPolicy as u,PolicyDocument as p}from"aws-cdk-lib/aws-iam";import{Topic as f}from"aws-cdk-lib/aws-sns";import{Queue as L}from"aws-cdk-lib/aws-sqs";import{LambdaSubscription as w}from"aws-cdk-lib/aws-sns-subscriptions";import{Rule as b,Schedule as A}from"aws-cdk-lib/aws-events";import{LambdaFunction as h}from"aws-cdk-lib/aws-events-targets";import{DockerImageAsset as S}from"aws-cdk-lib/aws-ecr-assets";import{StringRatchet as g,ErrorRatchet as E}from"@bitblit/ratchet-common";import{FargateComputeEnvironment as N,JobQueue as _,EcsFargateContainerDefinition as O,EcsJobDefinition as I}from"@aws-cdk/aws-batch-alpha";import{Vpc as T,SecurityGroup as C}from"aws-cdk-lib/aws-ec2";import{ContainerImage as P}from"aws-cdk-lib/aws-ecs";import{Bucket as k,BucketEncryption as y}from"aws-cdk-lib/aws-s3";import R from"path";import{OriginAccessIdentity as v,OriginProtocolPolicy as D,CloudFrontAllowedMethods as B,CloudFrontAllowedCachedMethods as W,HttpVersion as H,PriceClass as G,ViewerProtocolPolicy as F,CloudFrontWebDistribution as M}from"aws-cdk-lib/aws-cloudfront";import{RecordSet as U,RecordType as x,HostedZone as V}from"aws-cdk-lib/aws-route53";import{CloudFrontTarget as z}from"aws-cdk-lib/aws-route53-targets";import{BucketDeployment as j,Source as J}from"aws-cdk-lib/aws-s3-deployment";class Q{constructor(){}static buildInformation(){return{version:"226",hash:"3756dbef763df895de882697478a5d8237fb4544",branch:"alpha-2023-09-22-1",tag:"alpha-2023-09-22-1",timeBuiltISO:"2023-09-22T17:32:41-0700",notes:"No notes"}}}var q,K;!function(e){e.WebLambda="WebLambda",e.BackgroundLambda="BackgroundLambda",e.AwsBatchHandler="AwsBatchHandler"}(q||(q={}));class Y{constructor(){}static toEnvironmentVariables(e){const t={};return e.forEach((e=>{Object.keys(e).forEach((o=>{t[o]=g.safeString(e[o])}))})),t}static createDefaultPolicyStatementList(e,t,o,a){return(e.additionalPolicyStatements||[]).concat([new c({effect:m.ALLOW,actions:["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resources:["arn:aws:logs:*:*:*"]}),new c({effect:m.ALLOW,actions:["ses:SendEmail","ses:SendRawEmail"],resources:["arn:aws:ses:*"]}),new c({effect:m.ALLOW,actions:["sqs:*"],resources:[t.queueArn]}),new c({effect:m.ALLOW,actions:["sns:*"],resources:[o.topicArn,a.topicArn]}),new c({effect:m.ALLOW,actions:["batch:*"],resources:["*"]})])}static ALLOW_ECS=new c({effect:m.ALLOW,actions:["ecs:*"],resources:["*"]});static ALLOW_ECR=new c({effect:m.ALLOW,actions:["ecr:BatchCheckLayerAvailability","ecr:BatchGetImage","ecr:GetDownloadUrlForLayer","ecr:GetAuthorizationToken"],resources:["*"]});static ALLOW_RESTRICTED_LOGS=new c({effect:m.ALLOW,actions:["logs:CreateLogStream","logs:PutLogEvents","logs:DescribeLogStreams","logs:CreateLogGroup"],resources:["*"]});static ALLOW_FARGATE_SECRET_READING=[new c({effect:m.ALLOW,actions:["ssm:GetParameters"],resources:["*"]}),new c({effect:m.ALLOW,actions:["secretsmanager:GetSecretValue"],resources:["*"]}),new c({effect:m.ALLOW,actions:["kms:Decrypt"],resources:["*"]})];static ECS_POLICY_STATEMENTS=[Y.ALLOW_ECS,Y.ALLOW_ECR,Y.ALLOW_RESTRICTED_LOGS].concat(Y.ALLOW_FARGATE_SECRET_READING)}class $ extends e{webHandler;backgroundHandler;apiDomain;constructor(c,m,E){super(c,m,E);const k=E?.disabledFeatures||[],y=new S(this,m+"DockerImage",{directory:E.dockerFileFolder,file:E.dockerFileName}),R=i.fromImageAsset(E.dockerFileFolder,{file:E.dockerFileName}),v=new f(this,m+"WorkNotificationTopic"),D=new L(this,m+"WorkQueue",{fifo:!0,retentionPeriod:t.hours(8),visibilityTimeout:t.minutes(5),contentBasedDeduplication:!0,...E}),B=new f(this,m+"InterApiTopic"),W={EPSILON_AWS_REGION:g.safeString(e.of(this).region),EPSILON_AWS_AVAILABILITY_ZONES:g.safeString(JSON.stringify(e.of(this).availabilityZones)),EPSILON_BACKGROUND_SQS_QUEUE_URL:g.safeString(D.queueUrl),EPSILON_BACKGROUND_SNS_TOPIC_ARN:g.safeString(v.topicArn),EPSILON_INTER_API_EVENT_TOPIC_ARN:g.safeString(B.topicArn),EPSILON_LIB_BUILD_HASH:g.safeString(Q.buildInformation().hash),EPSILON_LIB_BUILD_TIME:g.safeString(Q.buildInformation().timeBuiltISO),EPSILON_LIB_BUILD_BRANCH_OR_TAG:g.safeString(Q.buildInformation().branch||Q.buildInformation().tag),EPSILON_LIB_BUILD_VERSION:g.safeString(Q.buildInformation().version)},H=Object.assign({},E.extraEnvironmentalVars||{},W);if(!k.includes(q.AwsBatchHandler)){const e=new l(this,m+"BatchExecutionRole",{assumedBy:new d("ecs-tasks.amazonaws.com"),managedPolicies:[u.fromAwsManagedPolicyName("service-role/AWSLambdaVPCAccessExecutionRole")],inlinePolicies:{root:new p({statements:Y.ECS_POLICY_STATEMENTS})}}),a=new l(this,m+"BatchJobRole",{assumedBy:new d("ecs-tasks.amazonaws.com"),managedPolicies:[u.fromAwsManagedPolicyName("service-role/AWSLambdaVPCAccessExecutionRole")],inlinePolicies:{root:new p({statements:Y.createDefaultPolicyStatementList(E,D,v,B)})}}),i={vpc:T.fromLookup(this,"Vpc",{vpcId:E.vpcId}),computeEnvironmentName:m+"ComputeEnv",enabled:!0,maxvCpus:16,replaceComputeEnvironment:!1,securityGroups:E.lambdaSecurityGroupIds.map(((e,t)=>C.fromSecurityGroupId(this,`SecurityGroup${t}`,`sg-${e}`))),serviceRole:l.fromRoleArn(this,`${m}ServiceRole`,"arn:aws:iam::"+E.env.account+":role/AWSBatchServiceRole"),spot:!1,terminateOnUpdate:!1,updateTimeout:t.hours(4),updateToLatestImageVersion:!0},s=new N(this,m+"ComputeEnv",i),r=new _(this,m+"BatchJobQueue",{computeEnvironments:[{order:1,computeEnvironment:s}],enabled:!0,jobQueueName:m+"BatchJobQueue",priority:10,schedulingPolicy:void 0}),n=Y.toEnvironmentVariables([H,E.extraEnvironmentalVars||{},{EPSILON_RUNNING_IN_AWS_BATCH:!0}]),c={cpu:4,image:P.fromRegistry(y.imageUri),memory:o.mebibytes(8192),assignPublicIp:!0,command:["Ref::taskName","Ref::taskData","Ref::traceId","Ref::traceDepth"],environment:n,executionRole:e,jobRole:a,readonlyRootFilesystem:!1,volumes:[]},f=new O(this,`${m}FargateContainerDefinition`,c),L=new I(this,m+"JobDefinition",{jobDefinitionName:m+"JobDefinition",retryAttempts:3,retryStrategies:void 0,schedulingPriority:void 0,timeout:void 0,container:f});H.EPSILON_AWS_BATCH_JOB_DEFINITION_ARN=L.jobDefinitionArn,H.EPSILON_AWS_BATCH_JOB_QUEUE_ARN=r.jobQueueArn}const G=new l(this,"customRole",{roleName:m+"LambdaCustomRole",assumedBy:new d("lambda.amazonaws.com"),managedPolicies:[u.fromAwsManagedPolicyName("service-role/AWSLambdaVPCAccessExecutionRole")],inlinePolicies:{root:new p({statements:Y.createDefaultPolicyStatementList(E,D,v,B)})}});if(!k.includes(q.WebLambda)){if(this.webHandler=new s(this,m+"Web",{retryAttempts:2,memorySize:E.webMemorySizeMb||128,ephemeralStorageSize:o.mebibytes(512),timeout:t.seconds(E.webTimeoutSeconds||20),code:R,role:G,environment:H}),E?.webLambdaPingMinutes&&E.webLambdaPingMinutes>0){new b(this,m+"WebKeepaliveRule",{schedule:A.rate(t.minutes(Math.ceil(E.webLambdaPingMinutes)))}).addTarget(new h(this.webHandler))}const e=this.webHandler.addFunctionUrl({authType:r.NONE,cors:{allowedOrigins:["*"],allowedHeaders:["Content-Type","X-Amz-Date","Authorization","X-Api-Key"],allowedMethods:[n.ALL],allowCredentials:!0}});this.apiDomain=a.uncachedString({produce:t=>({"Fn::Select":[2,{"Fn::Split":["/",t.resolve(e.url)]}]})})}if(!k.includes(q.BackgroundLambda)){this.backgroundHandler=new s(this,m+"Background",{retryAttempts:2,memorySize:E.backgroundMemorySizeMb||3e3,ephemeralStorageSize:o.mebibytes(512),timeout:t.seconds(E.backgroundTimeoutSeconds||900),code:R,role:G,environment:H}),v.addSubscription(new w(this.backgroundHandler)),B.addSubscription(new w(this.backgroundHandler));new b(this,m+"CronRule",{schedule:A.rate(t.minutes(1))}).addTarget(new h(this.backgroundHandler))}}}!function(e){e.Update="Update",e.DoNotUpdate="DoNotUpdate"}(K||(K={}));class X extends e{constructor(e,o,a){super(e,o,a);const i=new v(this,o+"OriginAccessId"),s=new k(this,o+"DeployBucket",{bucketName:a.targetBucketName,versioned:!1,publicReadAccess:!1,encryption:y.S3_MANAGED}),r=(a.simpleAdditionalMappings||[]).map((e=>{const o=k.fromBucketAttributes(this,e.bucketName+"ImportedBucket",{bucketName:e.bucketName});return{bucket:o,sourceConfig:{s3OriginSource:{s3BucketSource:o,originAccessIdentity:i},behaviors:[{pathPattern:e.pathPattern,isDefaultBehavior:!1,compress:!0,defaultTtl:t.seconds(1),minTtl:t.seconds(1),maxTtl:t.seconds(1),forwardedValues:{queryString:!1}}]}}})),n={s3OriginSource:{s3BucketSource:s,originAccessIdentity:i},behaviors:[{isDefaultBehavior:!0,compress:!0,defaultTtl:t.seconds(1),minTtl:t.seconds(1),maxTtl:t.seconds(1),forwardedValues:{queryString:!1}}]},c=(a.apiMappings||[]).map((e=>({customOriginSource:{domainName:e.apiDomainName,originProtocolPolicy:D.HTTPS_ONLY},behaviors:[{compress:!0,forwardedValues:{queryString:!0,cookies:{forward:"whitelist",whitelistedNames:["idToken"]},headers:["Accept","Referer","Authorization","Content-Type"]},pathPattern:e.pathPattern,defaultTtl:t.seconds(0),maxTtl:t.seconds(0),minTtl:t.seconds(0),allowedMethods:B.ALL,cachedMethods:W.GET_HEAD}]}))),m={httpVersion:H.HTTP2,defaultRootObject:"index.html",originConfigs:[n,...c,...r.map((e=>e.sourceConfig))],errorConfigurations:[{errorCode:404,errorCachingMinTtl:300,responseCode:200,responsePagePath:"/index.html"},{errorCode:403,errorCachingMinTtl:300,responseCode:200,responsePagePath:"/index.html"}],priceClass:G.PRICE_CLASS_ALL,viewerProtocolPolicy:F.REDIRECT_TO_HTTPS,viewerCertificate:{aliases:a.cloudFrontDomainNames,props:{acmCertificateArn:a.cloudFrontHttpsCertificateArn,sslSupportMethod:"sni-only"}}},l=new M(this,o+"CloudfrontDistro",m);if(a?.route53Handling===K.Update&&a?.cloudFrontDomainNames?.length)for(let e=0;e<a.cloudFrontDomainNames.length;e++)new U(this,o+"DomainName-"+a.cloudFrontDomainNames[e],{recordType:x.A,recordName:a.cloudFrontDomainNames[e],target:{aliasTarget:new z(l)},zone:V.fromLookup(this,o,{domainName:X.extractApexDomain(a.cloudFrontDomainNames[e])})});new j(this,o+"SiteDeploy",{sources:a.pathsToAssets.map((e=>J.asset(R.resolve(e)))),destinationBucket:s,distribution:l,distributionPaths:["/*"]})}static extractApexDomain(e){const t=g.trimToEmpty(e).split(".");return t.length<2&&E.throwFormattedErr("Not a valid domain name : %s",e),t[t.length-2]+"."+t[t.length-1]}}export{$ as EpsilonApiStack,q as EpsilonApiStackFeature,Y as EpsilonStackUtil,X as EpsilonWebsiteStack,K as EpsilonWebsiteStackPropsRoute53Handling,Q as RatchetEpsilonDeploymentInfo};
1
+ import{Stack as e,Duration as t,Size as o,Lazy as a}from"aws-cdk-lib";import{DockerImageCode as i,DockerImageFunction as s,FunctionUrlAuthType as r,HttpMethod as n}from"aws-cdk-lib/aws-lambda";import{PolicyStatement as c,Effect as m,Role as l,ServicePrincipal as d,ManagedPolicy as u,PolicyDocument as p}from"aws-cdk-lib/aws-iam";import{Topic as f}from"aws-cdk-lib/aws-sns";import{Queue as L}from"aws-cdk-lib/aws-sqs";import{LambdaSubscription as w}from"aws-cdk-lib/aws-sns-subscriptions";import{Rule as b,Schedule as A}from"aws-cdk-lib/aws-events";import{LambdaFunction as h}from"aws-cdk-lib/aws-events-targets";import{DockerImageAsset as S}from"aws-cdk-lib/aws-ecr-assets";import{StringRatchet as g,ErrorRatchet as E}from"@bitblit/ratchet-common";import{FargateComputeEnvironment as N,JobQueue as _,EcsFargateContainerDefinition as O,EcsJobDefinition as I}from"@aws-cdk/aws-batch-alpha";import{Vpc as T,SecurityGroup as C}from"aws-cdk-lib/aws-ec2";import{ContainerImage as P}from"aws-cdk-lib/aws-ecs";import{Bucket as k,BucketEncryption as y}from"aws-cdk-lib/aws-s3";import R from"path";import{OriginAccessIdentity as v,OriginProtocolPolicy as D,CloudFrontAllowedMethods as B,CloudFrontAllowedCachedMethods as W,HttpVersion as H,PriceClass as G,ViewerProtocolPolicy as F,CloudFrontWebDistribution as M}from"aws-cdk-lib/aws-cloudfront";import{RecordSet as U,RecordType as x,HostedZone as V}from"aws-cdk-lib/aws-route53";import{CloudFrontTarget as z}from"aws-cdk-lib/aws-route53-targets";import{BucketDeployment as j,Source as J}from"aws-cdk-lib/aws-s3-deployment";class Q{constructor(){}static buildInformation(){return{version:"229",hash:"67a18925c1017214a7cc68cadc46883143585fa5",branch:"alpha-2023-09-25-3",tag:"alpha-2023-09-25-3",timeBuiltISO:"2023-09-25T13:09:38-0700",notes:"No notes"}}}var q,K;!function(e){e.WebLambda="WebLambda",e.BackgroundLambda="BackgroundLambda",e.AwsBatchHandler="AwsBatchHandler"}(q||(q={}));class Y{constructor(){}static toEnvironmentVariables(e){const t={};return e.forEach((e=>{Object.keys(e).forEach((o=>{t[o]=g.safeString(e[o])}))})),t}static createDefaultPolicyStatementList(e,t,o,a){return(e.additionalPolicyStatements||[]).concat([new c({effect:m.ALLOW,actions:["logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents"],resources:["arn:aws:logs:*:*:*"]}),new c({effect:m.ALLOW,actions:["ses:SendEmail","ses:SendRawEmail"],resources:["arn:aws:ses:*"]}),new c({effect:m.ALLOW,actions:["sqs:*"],resources:[t.queueArn]}),new c({effect:m.ALLOW,actions:["sns:*"],resources:[o.topicArn,a.topicArn]}),new c({effect:m.ALLOW,actions:["batch:*"],resources:["*"]})])}static ALLOW_ECS=new c({effect:m.ALLOW,actions:["ecs:*"],resources:["*"]});static ALLOW_ECR=new c({effect:m.ALLOW,actions:["ecr:BatchCheckLayerAvailability","ecr:BatchGetImage","ecr:GetDownloadUrlForLayer","ecr:GetAuthorizationToken"],resources:["*"]});static ALLOW_RESTRICTED_LOGS=new c({effect:m.ALLOW,actions:["logs:CreateLogStream","logs:PutLogEvents","logs:DescribeLogStreams","logs:CreateLogGroup"],resources:["*"]});static ALLOW_FARGATE_SECRET_READING=[new c({effect:m.ALLOW,actions:["ssm:GetParameters"],resources:["*"]}),new c({effect:m.ALLOW,actions:["secretsmanager:GetSecretValue"],resources:["*"]}),new c({effect:m.ALLOW,actions:["kms:Decrypt"],resources:["*"]})];static ECS_POLICY_STATEMENTS=[Y.ALLOW_ECS,Y.ALLOW_ECR,Y.ALLOW_RESTRICTED_LOGS].concat(Y.ALLOW_FARGATE_SECRET_READING)}class $ extends e{webHandler;backgroundHandler;apiDomain;constructor(c,m,E){super(c,m,E);const k=E?.disabledFeatures||[],y=new S(this,m+"DockerImage",{directory:E.dockerFileFolder,file:E.dockerFileName}),R=i.fromImageAsset(E.dockerFileFolder,{file:E.dockerFileName}),v=new f(this,m+"WorkNotificationTopic"),D=new L(this,m+"WorkQueue",{fifo:!0,retentionPeriod:t.hours(8),visibilityTimeout:t.minutes(5),contentBasedDeduplication:!0,...E}),B=new f(this,m+"InterApiTopic"),W={EPSILON_AWS_REGION:g.safeString(e.of(this).region),EPSILON_AWS_AVAILABILITY_ZONES:g.safeString(JSON.stringify(e.of(this).availabilityZones)),EPSILON_BACKGROUND_SQS_QUEUE_URL:g.safeString(D.queueUrl),EPSILON_BACKGROUND_SNS_TOPIC_ARN:g.safeString(v.topicArn),EPSILON_INTER_API_EVENT_TOPIC_ARN:g.safeString(B.topicArn),EPSILON_LIB_BUILD_HASH:g.safeString(Q.buildInformation().hash),EPSILON_LIB_BUILD_TIME:g.safeString(Q.buildInformation().timeBuiltISO),EPSILON_LIB_BUILD_BRANCH_OR_TAG:g.safeString(Q.buildInformation().branch||Q.buildInformation().tag),EPSILON_LIB_BUILD_VERSION:g.safeString(Q.buildInformation().version)},H=Object.assign({},E.extraEnvironmentalVars||{},W);if(!k.includes(q.AwsBatchHandler)){const e=new l(this,m+"BatchExecutionRole",{assumedBy:new d("ecs-tasks.amazonaws.com"),managedPolicies:[u.fromAwsManagedPolicyName("service-role/AWSLambdaVPCAccessExecutionRole")],inlinePolicies:{root:new p({statements:Y.ECS_POLICY_STATEMENTS})}}),a=new l(this,m+"BatchJobRole",{assumedBy:new d("ecs-tasks.amazonaws.com"),managedPolicies:[u.fromAwsManagedPolicyName("service-role/AWSLambdaVPCAccessExecutionRole")],inlinePolicies:{root:new p({statements:Y.createDefaultPolicyStatementList(E,D,v,B)})}}),i={vpc:T.fromLookup(this,"Vpc",{vpcId:E.vpcId}),computeEnvironmentName:m+"ComputeEnv",enabled:!0,maxvCpus:16,replaceComputeEnvironment:!1,securityGroups:E.lambdaSecurityGroupIds.map(((e,t)=>C.fromSecurityGroupId(this,`SecurityGroup${t}`,`sg-${e}`))),serviceRole:l.fromRoleArn(this,`${m}ServiceRole`,"arn:aws:iam::"+E.env.account+":role/AWSBatchServiceRole"),spot:!1,terminateOnUpdate:!1,updateTimeout:t.hours(4),updateToLatestImageVersion:!0},s=new N(this,m+"ComputeEnv",i),r=new _(this,m+"BatchJobQueue",{computeEnvironments:[{order:1,computeEnvironment:s}],enabled:!0,jobQueueName:m+"BatchJobQueue",priority:10,schedulingPolicy:void 0}),n=Y.toEnvironmentVariables([H,E.extraEnvironmentalVars||{},{EPSILON_RUNNING_IN_AWS_BATCH:!0}]),c={cpu:4,image:P.fromRegistry(y.imageUri),memory:o.mebibytes(8192),assignPublicIp:!0,command:["Ref::taskName","Ref::taskData","Ref::traceId","Ref::traceDepth"],environment:n,executionRole:e,jobRole:a,readonlyRootFilesystem:!1,volumes:[]},f=new O(this,`${m}FargateContainerDefinition`,c),L=new I(this,m+"JobDefinition",{jobDefinitionName:m+"JobDefinition",retryAttempts:3,retryStrategies:void 0,schedulingPriority:void 0,timeout:void 0,container:f});H.EPSILON_AWS_BATCH_JOB_DEFINITION_ARN=L.jobDefinitionArn,H.EPSILON_AWS_BATCH_JOB_QUEUE_ARN=r.jobQueueArn}const G=new l(this,"customRole",{roleName:m+"LambdaCustomRole",assumedBy:new d("lambda.amazonaws.com"),managedPolicies:[u.fromAwsManagedPolicyName("service-role/AWSLambdaVPCAccessExecutionRole")],inlinePolicies:{root:new p({statements:Y.createDefaultPolicyStatementList(E,D,v,B)})}});if(!k.includes(q.WebLambda)){if(this.webHandler=new s(this,m+"Web",{retryAttempts:2,memorySize:E.webMemorySizeMb||128,ephemeralStorageSize:o.mebibytes(512),timeout:t.seconds(E.webTimeoutSeconds||20),code:R,role:G,environment:H}),E?.webLambdaPingMinutes&&E.webLambdaPingMinutes>0){new b(this,m+"WebKeepaliveRule",{schedule:A.rate(t.minutes(Math.ceil(E.webLambdaPingMinutes)))}).addTarget(new h(this.webHandler))}const e=this.webHandler.addFunctionUrl({authType:r.NONE,cors:{allowedOrigins:["*"],allowedHeaders:["Content-Type","X-Amz-Date","Authorization","X-Api-Key"],allowedMethods:[n.ALL],allowCredentials:!0}});this.apiDomain=a.uncachedString({produce:t=>({"Fn::Select":[2,{"Fn::Split":["/",t.resolve(e.url)]}]})})}if(!k.includes(q.BackgroundLambda)){this.backgroundHandler=new s(this,m+"Background",{retryAttempts:2,memorySize:E.backgroundMemorySizeMb||3e3,ephemeralStorageSize:o.mebibytes(512),timeout:t.seconds(E.backgroundTimeoutSeconds||900),code:R,role:G,environment:H}),v.addSubscription(new w(this.backgroundHandler)),B.addSubscription(new w(this.backgroundHandler));new b(this,m+"CronRule",{schedule:A.rate(t.minutes(1))}).addTarget(new h(this.backgroundHandler))}}}!function(e){e.Update="Update",e.DoNotUpdate="DoNotUpdate"}(K||(K={}));class X extends e{constructor(e,o,a){super(e,o,a);const i=new v(this,o+"OriginAccessId"),s=new k(this,o+"DeployBucket",{bucketName:a.targetBucketName,versioned:!1,publicReadAccess:!1,encryption:y.S3_MANAGED}),r=(a.simpleAdditionalMappings||[]).map((e=>{const o=k.fromBucketAttributes(this,e.bucketName+"ImportedBucket",{bucketName:e.bucketName});return{bucket:o,sourceConfig:{s3OriginSource:{s3BucketSource:o,originAccessIdentity:i},behaviors:[{pathPattern:e.pathPattern,isDefaultBehavior:!1,compress:!0,defaultTtl:t.seconds(1),minTtl:t.seconds(1),maxTtl:t.seconds(1),forwardedValues:{queryString:!1}}]}}})),n={s3OriginSource:{s3BucketSource:s,originAccessIdentity:i},behaviors:[{isDefaultBehavior:!0,compress:!0,defaultTtl:t.seconds(1),minTtl:t.seconds(1),maxTtl:t.seconds(1),forwardedValues:{queryString:!1}}]},c=(a.apiMappings||[]).map((e=>({customOriginSource:{domainName:e.apiDomainName,originProtocolPolicy:D.HTTPS_ONLY},behaviors:[{compress:!0,forwardedValues:{queryString:!0,cookies:{forward:"whitelist",whitelistedNames:["idToken"]},headers:["Accept","Referer","Authorization","Content-Type"]},pathPattern:e.pathPattern,defaultTtl:t.seconds(0),maxTtl:t.seconds(0),minTtl:t.seconds(0),allowedMethods:B.ALL,cachedMethods:W.GET_HEAD}]}))),m={httpVersion:H.HTTP2,defaultRootObject:"index.html",originConfigs:[n,...c,...r.map((e=>e.sourceConfig))],errorConfigurations:[{errorCode:404,errorCachingMinTtl:300,responseCode:200,responsePagePath:"/index.html"},{errorCode:403,errorCachingMinTtl:300,responseCode:200,responsePagePath:"/index.html"}],priceClass:G.PRICE_CLASS_ALL,viewerProtocolPolicy:F.REDIRECT_TO_HTTPS,viewerCertificate:{aliases:a.cloudFrontDomainNames,props:{acmCertificateArn:a.cloudFrontHttpsCertificateArn,sslSupportMethod:"sni-only"}}},l=new M(this,o+"CloudfrontDistro",m);if(a?.route53Handling===K.Update&&a?.cloudFrontDomainNames?.length)for(let e=0;e<a.cloudFrontDomainNames.length;e++)new U(this,o+"DomainName-"+a.cloudFrontDomainNames[e],{recordType:x.A,recordName:a.cloudFrontDomainNames[e],target:{aliasTarget:new z(l)},zone:V.fromLookup(this,o,{domainName:X.extractApexDomain(a.cloudFrontDomainNames[e])})});new j(this,o+"SiteDeploy",{sources:a.pathsToAssets.map((e=>J.asset(R.resolve(e)))),destinationBucket:s,distribution:l,distributionPaths:["/*"]})}static extractApexDomain(e){const t=g.trimToEmpty(e).split(".");return t.length<2&&E.throwFormattedErr("Not a valid domain name : %s",e),t[t.length-2]+"."+t[t.length-1]}}export{$ as EpsilonApiStack,q as EpsilonApiStackFeature,Y as EpsilonStackUtil,X as EpsilonWebsiteStack,K as EpsilonWebsiteStackPropsRoute53Handling,Q as RatchetEpsilonDeploymentInfo};
2
2
  //# sourceMappingURL=index.mjs.map
package/lib/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/build/ratchet-epsilon-deployment-info.ts","../src/deployment/cdk/epsilon-api-stack-feature.ts","../src/deployment/cdk/epsilon-website-stack-props.ts","../src/deployment/cdk/epsilon-stack-util.ts","../src/deployment/cdk/epsilon-api-stack.ts","../src/deployment/cdk/epsilon-website-stack.ts"],"sourcesContent":["export class RatchetEpsilonDeploymentInfo {\n constructor() { }\n static buildInformation() {\n const val = {\n version: 'LOCAL-SNAPSHOT',\n hash: 'LOCAL-HASH',\n branch: 'LOCAL-BRANCH',\n tag: 'LOCAL-TAG',\n timeBuiltISO: 'LOCAL-TIME-ISO',\n notes: 'LOCAL-NOTES',\n };\n return val;\n }\n}\n//# sourceMappingURL=ratchet-epsilon-deployment-info.js.map","export var EpsilonApiStackFeature;\n(function (EpsilonApiStackFeature) {\n EpsilonApiStackFeature[\"WebLambda\"] = \"WebLambda\";\n EpsilonApiStackFeature[\"BackgroundLambda\"] = \"BackgroundLambda\";\n EpsilonApiStackFeature[\"AwsBatchHandler\"] = \"AwsBatchHandler\";\n})(EpsilonApiStackFeature || (EpsilonApiStackFeature = {}));\n//# sourceMappingURL=epsilon-api-stack-feature.js.map","export var EpsilonWebsiteStackPropsRoute53Handling;\n(function (EpsilonWebsiteStackPropsRoute53Handling) {\n EpsilonWebsiteStackPropsRoute53Handling[\"Update\"] = \"Update\";\n EpsilonWebsiteStackPropsRoute53Handling[\"DoNotUpdate\"] = \"DoNotUpdate\";\n})(EpsilonWebsiteStackPropsRoute53Handling || (EpsilonWebsiteStackPropsRoute53Handling = {}));\n//# sourceMappingURL=epsilon-website-stack-props.js.map","import { StringRatchet } from '@bitblit/ratchet-common';\nimport { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';\nexport class EpsilonStackUtil {\n constructor() { }\n static toEnvironmentVariables(input) {\n const rval = {};\n input.forEach((inval) => {\n Object.keys(inval).forEach((k) => {\n rval[k] = StringRatchet.safeString(inval[k]);\n });\n });\n return rval;\n }\n static createDefaultPolicyStatementList(props, backgroundLambdaSqs, backgroundLambdaSns, interApiSns) {\n const rval = (props.additionalPolicyStatements || []).concat([\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['logs:CreateLogGroup', 'logs:CreateLogStream', 'logs:PutLogEvents'],\n resources: ['arn:aws:logs:*:*:*'],\n }),\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['ses:SendEmail', 'ses:SendRawEmail'],\n resources: ['arn:aws:ses:*'],\n }),\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['sqs:*'],\n resources: [backgroundLambdaSqs.queueArn],\n }),\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['sns:*'],\n resources: [backgroundLambdaSns.topicArn, interApiSns.topicArn],\n }),\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['batch:*'],\n resources: ['*'],\n }),\n ]);\n return rval;\n }\n static ALLOW_ECS = new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['ecs:*'],\n resources: ['*'],\n });\n static ALLOW_ECR = new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['ecr:BatchCheckLayerAvailability', 'ecr:BatchGetImage', 'ecr:GetDownloadUrlForLayer', 'ecr:GetAuthorizationToken'],\n resources: ['*'],\n });\n static ALLOW_RESTRICTED_LOGS = new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['logs:CreateLogStream', 'logs:PutLogEvents', 'logs:DescribeLogStreams', 'logs:CreateLogGroup'],\n resources: ['*'],\n });\n static ALLOW_FARGATE_SECRET_READING = [\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['ssm:GetParameters'],\n resources: ['*'],\n }),\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['secretsmanager:GetSecretValue'],\n resources: ['*'],\n }),\n new PolicyStatement({\n effect: Effect.ALLOW,\n actions: ['kms:Decrypt'],\n resources: ['*'],\n }),\n ];\n static ECS_POLICY_STATEMENTS = [\n EpsilonStackUtil.ALLOW_ECS,\n EpsilonStackUtil.ALLOW_ECR,\n EpsilonStackUtil.ALLOW_RESTRICTED_LOGS,\n ].concat(EpsilonStackUtil.ALLOW_FARGATE_SECRET_READING);\n}\n//# sourceMappingURL=epsilon-stack-util.js.map","import { Duration, Lazy, Size, Stack } from 'aws-cdk-lib';\nimport { DockerImageCode, DockerImageFunction, FunctionUrlAuthType, HttpMethod } from 'aws-cdk-lib/aws-lambda';\nimport { ManagedPolicy, PolicyDocument, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam';\nimport { Topic } from 'aws-cdk-lib/aws-sns';\nimport { Queue } from 'aws-cdk-lib/aws-sqs';\nimport { LambdaSubscription } from 'aws-cdk-lib/aws-sns-subscriptions';\nimport { Rule, Schedule } from 'aws-cdk-lib/aws-events';\nimport { LambdaFunction } from 'aws-cdk-lib/aws-events-targets';\nimport { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';\nimport { StringRatchet } from '@bitblit/ratchet-common';\nimport { EpsilonStackUtil } from './epsilon-stack-util.js';\nimport { RatchetEpsilonDeploymentInfo } from '../../build/ratchet-epsilon-deployment-info.js';\nimport { EcsFargateContainerDefinition, EcsJobDefinition, FargateComputeEnvironment, JobQueue, } from '@aws-cdk/aws-batch-alpha';\nimport { SecurityGroup, Vpc } from 'aws-cdk-lib/aws-ec2';\nimport { ContainerImage } from 'aws-cdk-lib/aws-ecs';\nimport { EpsilonApiStackFeature } from './epsilon-api-stack-feature.js';\nexport class EpsilonApiStack extends Stack {\n webHandler;\n backgroundHandler;\n apiDomain;\n constructor(scope, id, props) {\n super(scope, id, props);\n const disabledFeatures = props?.disabledFeatures || [];\n const dockerImageAsset = new DockerImageAsset(this, id + 'DockerImage', {\n directory: props.dockerFileFolder,\n file: props.dockerFileName,\n });\n const dockerImageCode = DockerImageCode.fromImageAsset(props.dockerFileFolder, { file: props.dockerFileName });\n const notificationTopic = new Topic(this, id + 'WorkNotificationTopic');\n const workQueue = new Queue(this, id + 'WorkQueue', {\n fifo: true,\n retentionPeriod: Duration.hours(8),\n visibilityTimeout: Duration.minutes(5),\n contentBasedDeduplication: true,\n ...props,\n });\n const interApiGenericEventTopic = new Topic(this, id + 'InterApiTopic');\n const epsilonEnv = {\n EPSILON_AWS_REGION: StringRatchet.safeString(Stack.of(this).region),\n EPSILON_AWS_AVAILABILITY_ZONES: StringRatchet.safeString(JSON.stringify(Stack.of(this).availabilityZones)),\n EPSILON_BACKGROUND_SQS_QUEUE_URL: StringRatchet.safeString(workQueue.queueUrl),\n EPSILON_BACKGROUND_SNS_TOPIC_ARN: StringRatchet.safeString(notificationTopic.topicArn),\n EPSILON_INTER_API_EVENT_TOPIC_ARN: StringRatchet.safeString(interApiGenericEventTopic.topicArn),\n EPSILON_LIB_BUILD_HASH: StringRatchet.safeString(RatchetEpsilonDeploymentInfo.buildInformation().hash),\n EPSILON_LIB_BUILD_TIME: StringRatchet.safeString(RatchetEpsilonDeploymentInfo.buildInformation().timeBuiltISO),\n EPSILON_LIB_BUILD_BRANCH_OR_TAG: StringRatchet.safeString(RatchetEpsilonDeploymentInfo.buildInformation().branch || RatchetEpsilonDeploymentInfo.buildInformation().tag),\n EPSILON_LIB_BUILD_VERSION: StringRatchet.safeString(RatchetEpsilonDeploymentInfo.buildInformation().version),\n };\n const env = Object.assign({}, props.extraEnvironmentalVars || {}, epsilonEnv);\n if (!disabledFeatures.includes(EpsilonApiStackFeature.AwsBatchHandler)) {\n const executionRole = new Role(this, id + 'BatchExecutionRole', {\n assumedBy: new ServicePrincipal('ecs-tasks.amazonaws.com'),\n managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaVPCAccessExecutionRole')],\n inlinePolicies: {\n root: new PolicyDocument({\n statements: EpsilonStackUtil.ECS_POLICY_STATEMENTS,\n }),\n },\n });\n const jobRole = new Role(this, id + 'BatchJobRole', {\n assumedBy: new ServicePrincipal('ecs-tasks.amazonaws.com'),\n managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaVPCAccessExecutionRole')],\n inlinePolicies: {\n root: new PolicyDocument({\n statements: EpsilonStackUtil.createDefaultPolicyStatementList(props, workQueue, notificationTopic, interApiGenericEventTopic),\n }),\n },\n });\n const compEnvProps = {\n vpc: Vpc.fromLookup(this, `Vpc`, { vpcId: props.vpcId }),\n computeEnvironmentName: id + 'ComputeEnv',\n enabled: true,\n maxvCpus: 16,\n replaceComputeEnvironment: false,\n securityGroups: props.lambdaSecurityGroupIds.map((sgId, index) => SecurityGroup.fromSecurityGroupId(this, `SecurityGroup${index}`, `sg-${sgId}`)),\n serviceRole: Role.fromRoleArn(this, `${id}ServiceRole`, 'arn:aws:iam::' + props.env.account + ':role/AWSBatchServiceRole'),\n spot: false,\n terminateOnUpdate: false,\n updateTimeout: Duration.hours(4),\n updateToLatestImageVersion: true,\n };\n const compEnv = new FargateComputeEnvironment(this, id + 'ComputeEnv', compEnvProps);\n const batchJobQueueProps = {\n computeEnvironments: [{ order: 1, computeEnvironment: compEnv }],\n enabled: true,\n jobQueueName: id + 'BatchJobQueue',\n priority: 10,\n schedulingPolicy: undefined,\n };\n const batchJobQueue = new JobQueue(this, id + 'BatchJobQueue', batchJobQueueProps);\n const batchEnvVars = EpsilonStackUtil.toEnvironmentVariables([\n env,\n props.extraEnvironmentalVars || {},\n {\n EPSILON_RUNNING_IN_AWS_BATCH: true,\n },\n ]);\n const containerDef = {\n cpu: 4,\n image: ContainerImage.fromRegistry(dockerImageAsset.imageUri),\n memory: Size.mebibytes(8192),\n assignPublicIp: true,\n command: ['Ref::taskName', 'Ref::taskData', 'Ref::traceId', 'Ref::traceDepth'],\n environment: batchEnvVars,\n executionRole: executionRole,\n jobRole: jobRole,\n readonlyRootFilesystem: false,\n volumes: [],\n };\n const fargateContainerDefinitionDef = new EcsFargateContainerDefinition(this, `${id}FargateContainerDefinition`, containerDef);\n const jobProps = {\n jobDefinitionName: id + 'JobDefinition',\n retryAttempts: 3,\n retryStrategies: undefined,\n schedulingPriority: undefined,\n timeout: undefined,\n container: fargateContainerDefinitionDef,\n };\n const jobDef = new EcsJobDefinition(this, id + 'JobDefinition', jobProps);\n env['EPSILON_AWS_BATCH_JOB_DEFINITION_ARN'] = jobDef.jobDefinitionArn;\n env['EPSILON_AWS_BATCH_JOB_QUEUE_ARN'] = batchJobQueue.jobQueueArn;\n }\n const lambdaRole = new Role(this, 'customRole', {\n roleName: id + 'LambdaCustomRole',\n assumedBy: new ServicePrincipal('lambda.amazonaws.com'),\n managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaVPCAccessExecutionRole')],\n inlinePolicies: {\n root: new PolicyDocument({\n statements: EpsilonStackUtil.createDefaultPolicyStatementList(props, workQueue, notificationTopic, interApiGenericEventTopic),\n }),\n },\n });\n if (!disabledFeatures.includes(EpsilonApiStackFeature.WebLambda)) {\n this.webHandler = new DockerImageFunction(this, id + 'Web', {\n retryAttempts: 2,\n memorySize: props.webMemorySizeMb || 128,\n ephemeralStorageSize: Size.mebibytes(512),\n timeout: Duration.seconds(props.webTimeoutSeconds || 20),\n code: dockerImageCode,\n role: lambdaRole,\n environment: env,\n });\n if (props?.webLambdaPingMinutes && props.webLambdaPingMinutes > 0) {\n const rule = new Rule(this, id + 'WebKeepaliveRule', {\n schedule: Schedule.rate(Duration.minutes(Math.ceil(props.webLambdaPingMinutes))),\n });\n rule.addTarget(new LambdaFunction(this.webHandler));\n }\n const fnUrl = this.webHandler.addFunctionUrl({\n authType: FunctionUrlAuthType.NONE,\n cors: {\n allowedOrigins: ['*'],\n allowedHeaders: ['Content-Type', 'X-Amz-Date', 'Authorization', 'X-Api-Key'],\n allowedMethods: [HttpMethod.ALL],\n allowCredentials: true,\n },\n });\n this.apiDomain = Lazy.uncachedString({\n produce: (context) => {\n const resolved = context.resolve(fnUrl.url);\n return { 'Fn::Select': [2, { 'Fn::Split': ['/', resolved] }] };\n },\n });\n }\n if (!disabledFeatures.includes(EpsilonApiStackFeature.BackgroundLambda)) {\n this.backgroundHandler = new DockerImageFunction(this, id + 'Background', {\n retryAttempts: 2,\n memorySize: props.backgroundMemorySizeMb || 3000,\n ephemeralStorageSize: Size.mebibytes(512),\n timeout: Duration.seconds(props.backgroundTimeoutSeconds || 900),\n code: dockerImageCode,\n role: lambdaRole,\n environment: env,\n });\n notificationTopic.addSubscription(new LambdaSubscription(this.backgroundHandler));\n interApiGenericEventTopic.addSubscription(new LambdaSubscription(this.backgroundHandler));\n const rule = new Rule(this, id + 'CronRule', {\n schedule: Schedule.rate(Duration.minutes(1)),\n });\n rule.addTarget(new LambdaFunction(this.backgroundHandler));\n }\n }\n}\n//# sourceMappingURL=epsilon-api-stack.js.map","import { Bucket, BucketEncryption } from 'aws-cdk-lib/aws-s3';\nimport { Duration, Stack } from 'aws-cdk-lib';\nimport path from 'path';\nimport { CloudFrontAllowedCachedMethods, CloudFrontAllowedMethods, CloudFrontWebDistribution, HttpVersion, OriginAccessIdentity, OriginProtocolPolicy, PriceClass, ViewerProtocolPolicy, } from 'aws-cdk-lib/aws-cloudfront';\nimport { HostedZone, RecordSet, RecordType } from 'aws-cdk-lib/aws-route53';\nimport { CloudFrontTarget } from 'aws-cdk-lib/aws-route53-targets';\nimport { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';\nimport { EpsilonWebsiteStackPropsRoute53Handling } from './epsilon-website-stack-props.js';\nimport { StringRatchet } from '@bitblit/ratchet-common';\nimport { ErrorRatchet } from '@bitblit/ratchet-common';\nexport class EpsilonWebsiteStack extends Stack {\n constructor(scope, id, props) {\n super(scope, id, props);\n const originAccessId = new OriginAccessIdentity(this, id + 'OriginAccessId');\n const websiteBucket = new Bucket(this, id + 'DeployBucket', {\n bucketName: props.targetBucketName,\n versioned: false,\n publicReadAccess: false,\n encryption: BucketEncryption.S3_MANAGED,\n });\n const extraBucketAndSource = (props.simpleAdditionalMappings || []).map((eb) => {\n const nextBucket = Bucket.fromBucketAttributes(this, eb.bucketName + 'ImportedBucket', {\n bucketName: eb.bucketName,\n });\n const nextBS = {\n bucket: nextBucket,\n sourceConfig: {\n s3OriginSource: {\n s3BucketSource: nextBucket,\n originAccessIdentity: originAccessId,\n },\n behaviors: [\n {\n pathPattern: eb.pathPattern,\n isDefaultBehavior: false,\n compress: true,\n defaultTtl: Duration.seconds(1),\n minTtl: Duration.seconds(1),\n maxTtl: Duration.seconds(1),\n forwardedValues: {\n queryString: false,\n },\n },\n ],\n },\n };\n return nextBS;\n });\n const assetSource = {\n s3OriginSource: {\n s3BucketSource: websiteBucket,\n originAccessIdentity: originAccessId,\n },\n behaviors: [\n {\n isDefaultBehavior: true,\n compress: true,\n defaultTtl: Duration.seconds(1),\n minTtl: Duration.seconds(1),\n maxTtl: Duration.seconds(1),\n forwardedValues: {\n queryString: false,\n },\n },\n ],\n };\n const apiSources = (props.apiMappings || []).map((s) => {\n const next = {\n customOriginSource: {\n domainName: s.apiDomainName,\n originProtocolPolicy: OriginProtocolPolicy.HTTPS_ONLY,\n },\n behaviors: [\n {\n compress: true,\n forwardedValues: {\n queryString: true,\n cookies: {\n forward: 'whitelist',\n whitelistedNames: ['idToken'],\n },\n headers: ['Accept', 'Referer', 'Authorization', 'Content-Type'],\n },\n pathPattern: s.pathPattern,\n defaultTtl: Duration.seconds(0),\n maxTtl: Duration.seconds(0),\n minTtl: Duration.seconds(0),\n allowedMethods: CloudFrontAllowedMethods.ALL,\n cachedMethods: CloudFrontAllowedCachedMethods.GET_HEAD,\n },\n ],\n };\n return next;\n });\n const distributionProps = {\n httpVersion: HttpVersion.HTTP2,\n defaultRootObject: 'index.html',\n originConfigs: [assetSource, ...apiSources, ...extraBucketAndSource.map((s) => s.sourceConfig)],\n errorConfigurations: [\n {\n errorCode: 404,\n errorCachingMinTtl: 300,\n responseCode: 200,\n responsePagePath: '/index.html',\n },\n {\n errorCode: 403,\n errorCachingMinTtl: 300,\n responseCode: 200,\n responsePagePath: '/index.html',\n },\n ],\n priceClass: PriceClass.PRICE_CLASS_ALL,\n viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,\n viewerCertificate: {\n aliases: props.cloudFrontDomainNames,\n props: {\n acmCertificateArn: props.cloudFrontHttpsCertificateArn,\n sslSupportMethod: 'sni-only',\n },\n },\n };\n const cloudfrontDistro = new CloudFrontWebDistribution(this, id + 'CloudfrontDistro', distributionProps);\n if (props?.route53Handling === EpsilonWebsiteStackPropsRoute53Handling.Update) {\n if (props?.cloudFrontDomainNames?.length) {\n for (let i = 0; i < props.cloudFrontDomainNames.length; i++) {\n const domain = new RecordSet(this, id + 'DomainName-' + props.cloudFrontDomainNames[i], {\n recordType: RecordType.A,\n recordName: props.cloudFrontDomainNames[i],\n target: {\n aliasTarget: new CloudFrontTarget(cloudfrontDistro),\n },\n zone: HostedZone.fromLookup(this, id, { domainName: EpsilonWebsiteStack.extractApexDomain(props.cloudFrontDomainNames[i]) }),\n });\n }\n }\n }\n new BucketDeployment(this, id + 'SiteDeploy', {\n sources: props.pathsToAssets.map((inPath) => Source.asset(path.resolve(inPath))),\n destinationBucket: websiteBucket,\n distribution: cloudfrontDistro,\n distributionPaths: ['/*'],\n });\n }\n static extractApexDomain(domainName) {\n const pieces = StringRatchet.trimToEmpty(domainName).split('.');\n if (pieces.length < 2) {\n ErrorRatchet.throwFormattedErr('Not a valid domain name : %s', domainName);\n }\n return pieces[pieces.length - 2] + '.' + pieces[pieces.length - 1];\n }\n}\n//# sourceMappingURL=epsilon-website-stack.js.map"],"names":["RatchetEpsilonDeploymentInfo","constructor","buildInformation","version","hash","branch","tag","timeBuiltISO","notes","EpsilonApiStackFeature","EpsilonWebsiteStackPropsRoute53Handling","EpsilonStackUtil","toEnvironmentVariables","input","rval","forEach","inval","Object","keys","k","StringRatchet","safeString","createDefaultPolicyStatementList","props","backgroundLambdaSqs","backgroundLambdaSns","interApiSns","additionalPolicyStatements","concat","PolicyStatement","effect","Effect","ALLOW","actions","resources","queueArn","topicArn","static","ALLOW_ECS","ALLOW_ECR","ALLOW_RESTRICTED_LOGS","ALLOW_FARGATE_SECRET_READING","EpsilonApiStack","Stack","webHandler","backgroundHandler","apiDomain","scope","id","super","disabledFeatures","dockerImageAsset","DockerImageAsset","this","directory","dockerFileFolder","file","dockerFileName","dockerImageCode","DockerImageCode","fromImageAsset","notificationTopic","Topic","workQueue","Queue","fifo","retentionPeriod","Duration","hours","visibilityTimeout","minutes","contentBasedDeduplication","interApiGenericEventTopic","epsilonEnv","EPSILON_AWS_REGION","of","region","EPSILON_AWS_AVAILABILITY_ZONES","JSON","stringify","availabilityZones","EPSILON_BACKGROUND_SQS_QUEUE_URL","queueUrl","EPSILON_BACKGROUND_SNS_TOPIC_ARN","EPSILON_INTER_API_EVENT_TOPIC_ARN","EPSILON_LIB_BUILD_HASH","EPSILON_LIB_BUILD_TIME","EPSILON_LIB_BUILD_BRANCH_OR_TAG","EPSILON_LIB_BUILD_VERSION","env","assign","extraEnvironmentalVars","includes","AwsBatchHandler","executionRole","Role","assumedBy","ServicePrincipal","managedPolicies","ManagedPolicy","fromAwsManagedPolicyName","inlinePolicies","root","PolicyDocument","statements","ECS_POLICY_STATEMENTS","jobRole","compEnvProps","vpc","Vpc","fromLookup","vpcId","computeEnvironmentName","enabled","maxvCpus","replaceComputeEnvironment","securityGroups","lambdaSecurityGroupIds","map","sgId","index","SecurityGroup","fromSecurityGroupId","serviceRole","fromRoleArn","account","spot","terminateOnUpdate","updateTimeout","updateToLatestImageVersion","compEnv","FargateComputeEnvironment","batchJobQueue","JobQueue","computeEnvironments","order","computeEnvironment","jobQueueName","priority","schedulingPolicy","undefined","batchEnvVars","EPSILON_RUNNING_IN_AWS_BATCH","containerDef","cpu","image","ContainerImage","fromRegistry","imageUri","memory","Size","mebibytes","assignPublicIp","command","environment","readonlyRootFilesystem","volumes","fargateContainerDefinitionDef","EcsFargateContainerDefinition","jobDef","EcsJobDefinition","jobDefinitionName","retryAttempts","retryStrategies","schedulingPriority","timeout","container","jobDefinitionArn","jobQueueArn","lambdaRole","roleName","WebLambda","DockerImageFunction","memorySize","webMemorySizeMb","ephemeralStorageSize","seconds","webTimeoutSeconds","code","role","webLambdaPingMinutes","Rule","schedule","Schedule","rate","Math","ceil","addTarget","LambdaFunction","fnUrl","addFunctionUrl","authType","FunctionUrlAuthType","NONE","cors","allowedOrigins","allowedHeaders","allowedMethods","HttpMethod","ALL","allowCredentials","Lazy","uncachedString","produce","context","resolve","url","BackgroundLambda","backgroundMemorySizeMb","backgroundTimeoutSeconds","addSubscription","LambdaSubscription","EpsilonWebsiteStack","originAccessId","OriginAccessIdentity","websiteBucket","Bucket","bucketName","targetBucketName","versioned","publicReadAccess","encryption","BucketEncryption","S3_MANAGED","extraBucketAndSource","simpleAdditionalMappings","eb","nextBucket","fromBucketAttributes","bucket","sourceConfig","s3OriginSource","s3BucketSource","originAccessIdentity","behaviors","pathPattern","isDefaultBehavior","compress","defaultTtl","minTtl","maxTtl","forwardedValues","queryString","assetSource","apiSources","apiMappings","s","customOriginSource","domainName","apiDomainName","originProtocolPolicy","OriginProtocolPolicy","HTTPS_ONLY","cookies","forward","whitelistedNames","headers","CloudFrontAllowedMethods","cachedMethods","CloudFrontAllowedCachedMethods","GET_HEAD","distributionProps","httpVersion","HttpVersion","HTTP2","defaultRootObject","originConfigs","errorConfigurations","errorCode","errorCachingMinTtl","responseCode","responsePagePath","priceClass","PriceClass","PRICE_CLASS_ALL","viewerProtocolPolicy","ViewerProtocolPolicy","REDIRECT_TO_HTTPS","viewerCertificate","aliases","cloudFrontDomainNames","acmCertificateArn","cloudFrontHttpsCertificateArn","sslSupportMethod","cloudfrontDistro","CloudFrontWebDistribution","route53Handling","Update","length","i","RecordSet","recordType","RecordType","A","recordName","target","aliasTarget","CloudFrontTarget","zone","HostedZone","extractApexDomain","BucketDeployment","sources","pathsToAssets","inPath","Source","asset","path","destinationBucket","distribution","distributionPaths","pieces","trimToEmpty","split","ErrorRatchet","throwFormattedErr"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/build/ratchet-epsilon-deployment-info.ts","../src/deployment/cdk/epsilon-api-stack-feature.ts","../src/deployment/cdk/epsilon-website-stack-props.ts","../src/deployment/cdk/epsilon-stack-util.ts","../src/deployment/cdk/epsilon-api-stack.ts","../src/deployment/cdk/epsilon-website-stack.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["RatchetEpsilonDeploymentInfo","constructor","buildInformation","version","hash","branch","tag","timeBuiltISO","notes","EpsilonApiStackFeature","EpsilonWebsiteStackPropsRoute53Handling","EpsilonStackUtil","toEnvironmentVariables","input","rval","forEach","inval","Object","keys","k","StringRatchet","safeString","createDefaultPolicyStatementList","props","backgroundLambdaSqs","backgroundLambdaSns","interApiSns","additionalPolicyStatements","concat","PolicyStatement","effect","Effect","ALLOW","actions","resources","queueArn","topicArn","static","ALLOW_ECS","ALLOW_ECR","ALLOW_RESTRICTED_LOGS","ALLOW_FARGATE_SECRET_READING","EpsilonApiStack","Stack","webHandler","backgroundHandler","apiDomain","scope","id","super","disabledFeatures","dockerImageAsset","DockerImageAsset","this","directory","dockerFileFolder","file","dockerFileName","dockerImageCode","DockerImageCode","fromImageAsset","notificationTopic","Topic","workQueue","Queue","fifo","retentionPeriod","Duration","hours","visibilityTimeout","minutes","contentBasedDeduplication","interApiGenericEventTopic","epsilonEnv","EPSILON_AWS_REGION","of","region","EPSILON_AWS_AVAILABILITY_ZONES","JSON","stringify","availabilityZones","EPSILON_BACKGROUND_SQS_QUEUE_URL","queueUrl","EPSILON_BACKGROUND_SNS_TOPIC_ARN","EPSILON_INTER_API_EVENT_TOPIC_ARN","EPSILON_LIB_BUILD_HASH","EPSILON_LIB_BUILD_TIME","EPSILON_LIB_BUILD_BRANCH_OR_TAG","EPSILON_LIB_BUILD_VERSION","env","assign","extraEnvironmentalVars","includes","AwsBatchHandler","executionRole","Role","assumedBy","ServicePrincipal","managedPolicies","ManagedPolicy","fromAwsManagedPolicyName","inlinePolicies","root","PolicyDocument","statements","ECS_POLICY_STATEMENTS","jobRole","compEnvProps","vpc","Vpc","fromLookup","vpcId","computeEnvironmentName","enabled","maxvCpus","replaceComputeEnvironment","securityGroups","lambdaSecurityGroupIds","map","sgId","index","SecurityGroup","fromSecurityGroupId","serviceRole","fromRoleArn","account","spot","terminateOnUpdate","updateTimeout","updateToLatestImageVersion","compEnv","FargateComputeEnvironment","batchJobQueue","JobQueue","computeEnvironments","order","computeEnvironment","jobQueueName","priority","schedulingPolicy","undefined","batchEnvVars","EPSILON_RUNNING_IN_AWS_BATCH","containerDef","cpu","image","ContainerImage","fromRegistry","imageUri","memory","Size","mebibytes","assignPublicIp","command","environment","readonlyRootFilesystem","volumes","fargateContainerDefinitionDef","EcsFargateContainerDefinition","jobDef","EcsJobDefinition","jobDefinitionName","retryAttempts","retryStrategies","schedulingPriority","timeout","container","jobDefinitionArn","jobQueueArn","lambdaRole","roleName","WebLambda","DockerImageFunction","memorySize","webMemorySizeMb","ephemeralStorageSize","seconds","webTimeoutSeconds","code","role","webLambdaPingMinutes","Rule","schedule","Schedule","rate","Math","ceil","addTarget","LambdaFunction","fnUrl","addFunctionUrl","authType","FunctionUrlAuthType","NONE","cors","allowedOrigins","allowedHeaders","allowedMethods","HttpMethod","ALL","allowCredentials","Lazy","uncachedString","produce","context","resolve","url","BackgroundLambda","backgroundMemorySizeMb","backgroundTimeoutSeconds","addSubscription","LambdaSubscription","EpsilonWebsiteStack","originAccessId","OriginAccessIdentity","websiteBucket","Bucket","bucketName","targetBucketName","versioned","publicReadAccess","encryption","BucketEncryption","S3_MANAGED","extraBucketAndSource","simpleAdditionalMappings","eb","nextBucket","fromBucketAttributes","bucket","sourceConfig","s3OriginSource","s3BucketSource","originAccessIdentity","behaviors","pathPattern","isDefaultBehavior","compress","defaultTtl","minTtl","maxTtl","forwardedValues","queryString","assetSource","apiSources","apiMappings","s","customOriginSource","domainName","apiDomainName","originProtocolPolicy","OriginProtocolPolicy","HTTPS_ONLY","cookies","forward","whitelistedNames","headers","CloudFrontAllowedMethods","cachedMethods","CloudFrontAllowedCachedMethods","GET_HEAD","distributionProps","httpVersion","HttpVersion","HTTP2","defaultRootObject","originConfigs","errorConfigurations","errorCode","errorCachingMinTtl","responseCode","responsePagePath","priceClass","PriceClass","PRICE_CLASS_ALL","viewerProtocolPolicy","ViewerProtocolPolicy","REDIRECT_TO_HTTPS","viewerCertificate","aliases","cloudFrontDomainNames","acmCertificateArn","cloudFrontHttpsCertificateArn","sslSupportMethod","cloudfrontDistro","CloudFrontWebDistribution","route53Handling","Update","length","i","RecordSet","recordType","RecordType","A","recordName","target","aliasTarget","CloudFrontTarget","zone","HostedZone","extractApexDomain","BucketDeployment","sources","pathsToAssets","inPath","Source","asset","path","destinationBucket","distribution","distributionPaths","pieces","trimToEmpty","split","ErrorRatchet","throwFormattedErr"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitblit/ratchet-epsilon-deployment",
3
- "version": "4.0.226-alpha",
3
+ "version": "4.0.229-alpha",
4
4
  "description": "Epsilon CDK extensions to simplify deployment",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -51,16 +51,16 @@
51
51
  },
52
52
  "license": "Apache-2.0",
53
53
  "dependencies": {
54
- "@aws-cdk/aws-batch-alpha": "2.94.0-alpha.0",
55
- "@bitblit/ratchet-aws": "4.0.226-alpha",
56
- "@bitblit/ratchet-common": "4.0.226-alpha",
57
- "@bitblit/ratchet-epsilon-common": "4.0.226-alpha",
58
- "aws-cdk-lib": "2.94.0",
54
+ "@aws-cdk/aws-batch-alpha": "2.95.1-alpha.0",
55
+ "@bitblit/ratchet-aws": "4.0.229-alpha",
56
+ "@bitblit/ratchet-common": "4.0.229-alpha",
57
+ "@bitblit/ratchet-epsilon-common": "4.0.229-alpha",
58
+ "aws-cdk-lib": "2.97.0",
59
59
  "constructs": "10.2.70"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "@aws-cdk/aws-batch-alpha": "^2.94.0-alpha.0",
63
- "@bitblit/ratchet-common": "4.0.226-alpha",
63
+ "@bitblit/ratchet-common": "4.0.229-alpha",
64
64
  "aws-cdk-lib": "^2.94.0",
65
65
  "constructs": "^10.2.70"
66
66
  }