Skip to content

Commit

Permalink
Initial trial to upgrade the CDK to v2.x
Browse files Browse the repository at this point in the history
  • Loading branch information
javiertoledo committed Oct 9, 2023
1 parent b606fe0 commit 350bbaf
Show file tree
Hide file tree
Showing 25 changed files with 81 additions and 109 deletions.
1 change: 0 additions & 1 deletion common/config/rush/common-versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
* This design avoids unnecessary churn in this file.
*/
"allowedAlternativeVersions": {
"constructs": ["^3.3.69"]
/**
* For example, allow some projects to use an older TypeScript compiler
* (in addition to whatever "usual" version is being used by other projects in the repo):
Expand Down
4 changes: 2 additions & 2 deletions packages/framework-integration-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"@boostercloud/framework-provider-azure": "workspace:^1.19.1",
"@boostercloud/framework-provider-local": "workspace:^1.19.1",
"@boostercloud/framework-types": "workspace:^1.19.1",
"aws-sdk": "2.853.0",
"aws-sdk": "2.1469.0",
"graphql": "^16.6.0",
"tslib": "^2.4.0",
"@effect-ts/core": "^0.60.4",
Expand Down Expand Up @@ -48,7 +48,7 @@
"cdktf-cli": "^0.14.3",
"ink": "^3.0.5",
"react": "^17.0.0",
"constructs": "^10.0.0",
"constructs": "^10.2.70",
"chai": "4.2.0",
"chai-as-promised": "7.1.1",
"child-process-promise": "^2.2.1",
Expand Down
23 changes: 3 additions & 20 deletions packages/framework-provider-aws-infrastructure/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,29 +23,12 @@
"node": ">=18.0.0 <19.0.0"
},
"dependencies": {
"@aws-cdk/aws-apigateway": "^1.170.0",
"@aws-cdk/aws-logs": "^1.170.0",
"@aws-cdk/assets": "^1.170.0",
"@aws-cdk/aws-apigatewayv2": "^1.170.0",
"@aws-cdk/cloudformation-diff": "^1.170.0",
"@aws-cdk/aws-cloudfront": "^1.170.0",
"@aws-cdk/custom-resources": "^1.170.0",
"@aws-cdk/aws-dynamodb": "^1.170.0",
"@aws-cdk/aws-events": "^1.170.0",
"@aws-cdk/aws-events-targets": "^1.170.0",
"@aws-cdk/aws-iam": "^1.170.0",
"@aws-cdk/aws-lambda": "^1.170.0",
"@aws-cdk/aws-lambda-event-sources": "^1.170.0",
"@aws-cdk/aws-s3": "^1.170.0",
"@aws-cdk/aws-s3-deployment": "^1.170.0",
"@aws-cdk/core": "^1.170.0",
"@aws-cdk/cx-api": "^1.170.0",
"@boostercloud/framework-common-helpers": "workspace:^1.19.1",
"@boostercloud/framework-provider-aws": "workspace:^1.19.1",
"@boostercloud/framework-types": "workspace:^1.19.1",
"constructs": "^3.3.69",
"aws-cdk": "^1.170.0",
"aws-sdk": "2.853.0",
"constructs": "^10.2.70",
"aws-cdk-lib": "^2.99.1",
"aws-sdk": "2.1469.0",
"colors": "^1.4.0",
"tslib": "^2.4.0",
"promptly": "~3.2.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { RequireApproval } from 'aws-cdk/lib/diff'
import { Bootstrapper } from 'aws-cdk'
import { BoosterConfig } from '@boostercloud/framework-types'
import { getLogger } from '@boostercloud/framework-common-helpers'
import { EnvironmentUtils } from '@aws-cdk/cx-api'
import { EnvironmentUtils } from 'aws-cdk-lib/cx-api'
import {
getStackNames,
getStackServiceConfiguration,
getStackToolkitBucketName,
getStackToolkitName,
} from './stack-tools'
import { InfrastructureRocket } from '../rockets/infrastructure-rocket'
import { RequireApproval } from 'aws-cdk-lib/cloud-assembly-schema'

/**
* Deploys the application using the credentials located in ~/.aws
Expand All @@ -36,6 +35,6 @@ export async function deploy(config: BoosterConfig, rockets?: InfrastructureRock
await cdkToolkit.deploy({
toolkitStackName,
selector: { patterns: getStackNames(config) },
requireApproval: RequireApproval.Never,
requireApproval: RequireApproval.NEVER,
})
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { BoosterConfig } from '@boostercloud/framework-types'
import { getLogger } from '@boostercloud/framework-common-helpers'
import { ISDK } from 'aws-cdk'
import { emptyS3Bucket } from './s3utils'
import * as colors from 'colors'
import {
Expand All @@ -9,7 +8,6 @@ import {
getStackToolkitBucketName,
getStackToolkitName,
} from './stack-tools'
import { CdkToolkit } from 'aws-cdk/lib/cdk-toolkit'
import { InfrastructureRocket } from '../rockets/infrastructure-rocket'
import { buildRocketUtils } from '../rockets/rocket-utils'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/* eslint-disable @typescript-eslint/no-magic-numbers */
import { Duration, Stack } from '@aws-cdk/core'
import { FunctionProps, Runtime, StartingPosition } from '@aws-cdk/aws-lambda'
import { Duration, Stack } from 'aws-cdk-lib/core'
import { FunctionProps, Runtime, StartingPosition } from 'aws-cdk-lib/aws-lambda'
import { BoosterConfig } from '@boostercloud/framework-types'
import { RestApi } from '@aws-cdk/aws-apigateway'
import { CfnApi } from '@aws-cdk/aws-apigatewayv2'
import { RestApi } from 'aws-cdk-lib/aws-apigateway'
import { CfnApi } from 'aws-cdk-lib/aws-apigatewayv2'
import { environmentVarNames } from '@boostercloud/framework-provider-aws'
import { DynamoEventSourceProps } from '@aws-cdk/aws-lambda-event-sources'
import { DynamoEventSourceProps } from 'aws-cdk-lib/aws-lambda-event-sources'

export interface APIs {
restAPI: RestApi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { ISDK } from 'aws-cdk'
import { ObjectIdentifier, ObjectIdentifierList } from 'aws-sdk/clients/s3'
import * as AWS from 'aws-sdk'
import { BoosterConfig } from '@boostercloud/framework-types'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import { ISDK, Mode, SdkProvider } from 'aws-cdk'
import { CdkToolkit } from 'aws-cdk/lib/cdk-toolkit'
import { BoosterConfig } from '@boostercloud/framework-types'
import { App } from '@aws-cdk/core'
import { App } from 'aws-cdk-lib/core'
import { ApplicationStackBuilder } from './stacks/application-stack'
import { CloudAssembly, Environment } from '@aws-cdk/cx-api'
import { CloudAssembly, Environment } from 'aws-cdk-lib/cx-api'
import { InfrastructureRocket } from '../rockets/infrastructure-rocket'
import { Configuration } from 'aws-cdk/lib/settings'
import { CloudExecutable } from 'aws-cdk/lib/api/cxapp/cloud-executable'
import { CloudFormationDeployments } from 'aws-cdk/lib/api/cloudformation-deployments'

interface StackServiceConfiguration {
sdk: ISDK
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { App, CfnOutput, Stack, StackProps } from '@aws-cdk/core'
import { App, CfnOutput, Stack, StackProps } from 'aws-cdk-lib/core'
import { BoosterConfig } from '@boostercloud/framework-types'
import { EventsStack } from './events-stack'
import { ReadModelsStack } from './read-models-stack'
import { GraphQLStack } from './graphql-stack'
import { ScheduledCommandStack } from './scheduled-commands-stack'
import { RestApi } from '@aws-cdk/aws-apigateway'
import { CfnApi, CfnStage } from '@aws-cdk/aws-apigatewayv2'
import { RestApi } from 'aws-cdk-lib/aws-apigateway'
import { CfnApi, CfnStage } from 'aws-cdk-lib/aws-apigatewayv2'
import { APIs, baseURLForAPI } from '../params'
import { setupPermissions } from './permissions'
import { InfrastructureRocket } from '../../rockets/infrastructure-rocket'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { Code, Function } from '@aws-cdk/aws-lambda'
import { Code, Function as AWSFunction } from 'aws-cdk-lib/aws-lambda'
import { BoosterConfig } from '@boostercloud/framework-types'
import { Stack, RemovalPolicy } from '@aws-cdk/core'
import * as dynamodb from '@aws-cdk/aws-dynamodb'
import { Stack, RemovalPolicy } from 'aws-cdk-lib/core'
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb'
import { eventsStoreAttributes } from '@boostercloud/framework-provider-aws'
import * as params from '../params'
import { DynamoEventSource } from '@aws-cdk/aws-lambda-event-sources'
import { DynamoEventSource } from 'aws-cdk-lib/aws-lambda-event-sources'
import { APIs } from '../params'
import { Table, StreamViewType } from '@aws-cdk/aws-dynamodb'
import { Table, StreamViewType } from 'aws-cdk-lib/aws-dynamodb'

export interface EventsStackMembers {
eventsStore: dynamodb.Table
eventsLambda: Function
eventsLambda: AWSFunction
}

export class EventsStack {
Expand Down Expand Up @@ -74,9 +74,9 @@ export class EventsStack {
return table
}

private buildEventsLambda(eventsStream: Table): Function {
private buildEventsLambda(eventsStream: Table): AWSFunction {
const localID = 'events-main'
return new Function(this.stack, localID, {
return new AWSFunction(this.stack, localID, {
...params.lambda(this.config, this.stack, this.apis),
functionName: this.config.resourceNames.applicationStack + '-' + localID,
handler: this.config.eventDispatcherHandler,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import { BoosterConfig } from '@boostercloud/framework-types'
import { Fn, RemovalPolicy, Stack } from '@aws-cdk/core'
import { CfnApi, CfnIntegration, CfnIntegrationResponse, CfnRoute } from '@aws-cdk/aws-apigatewayv2'
import { Code, Function, IEventSource } from '@aws-cdk/aws-lambda'
import { Fn, RemovalPolicy, Stack } from 'aws-cdk-lib/core'
import { CfnApi, CfnIntegration, CfnIntegrationResponse, CfnRoute } from 'aws-cdk-lib/aws-apigatewayv2'
import { Code, Function as AWSFunction, IEventSource } from 'aws-cdk-lib/aws-lambda'
import * as params from '../params'
import { APIs } from '../params'
import { ServicePrincipal } from '@aws-cdk/aws-iam'
import { AuthorizationType, LambdaIntegration } from '@aws-cdk/aws-apigateway'
import { Cors } from '@aws-cdk/aws-apigateway/lib/cors'
import { AttributeType, BillingMode, ProjectionType, Table } from '@aws-cdk/aws-dynamodb'
import { ServicePrincipal } from 'aws-cdk-lib/aws-iam'
import { AuthorizationType, LambdaIntegration } from 'aws-cdk-lib/aws-apigateway'
import { Cors } from 'aws-cdk-lib/aws-apigateway/lib/cors'
import { AttributeType, BillingMode, ProjectionType, Table } from 'aws-cdk-lib/aws-dynamodb'
import { connectionsStoreAttributes, subscriptionsStoreAttributes } from '@boostercloud/framework-provider-aws'
import { DynamoEventSource } from '@aws-cdk/aws-lambda-event-sources'
import { DynamoEventSource } from 'aws-cdk-lib/aws-lambda-event-sources'

export interface GraphQLStackMembers {
graphQLLambda: Function
subscriptionNotifier?: Function
graphQLLambda: AWSFunction
subscriptionNotifier?: AWSFunction
subscriptionsStore?: Table
connectionsStore?: Table
}
Expand Down Expand Up @@ -45,8 +45,8 @@ export class GraphQLStack {
return { graphQLLambda }
}

private buildLambda(name: string, handler: string, eventSources?: Array<IEventSource>): Function {
const lambda = new Function(this.stack, name, {
private buildLambda(name: string, handler: string, eventSources?: Array<IEventSource>): AWSFunction {
const lambda = new AWSFunction(this.stack, name, {
...params.lambda(this.config, this.stack, this.apis),
functionName: `${this.config.resourceNames.applicationStack}-${name}`,
handler: handler,
Expand All @@ -64,15 +64,15 @@ export class GraphQLStack {
return readModelTables.map((table) => new DynamoEventSource(table, params.stream()))
}

private buildWebsocketRoutes(graphQLLambda: Function, websocketAPI: CfnApi): void {
private buildWebsocketRoutes(graphQLLambda: AWSFunction, websocketAPI: CfnApi): void {
const lambdaIntegration = this.buildLambdaIntegration(graphQLLambda, websocketAPI)

this.buildRoute('$connect', lambdaIntegration, websocketAPI)
this.buildRoute('$default', lambdaIntegration, websocketAPI)
this.buildRoute('$disconnect', lambdaIntegration, websocketAPI)
}

private buildLambdaIntegration(lambda: Function, websocketAPI: CfnApi): CfnIntegration {
private buildLambdaIntegration(lambda: AWSFunction, websocketAPI: CfnApi): CfnIntegration {
const localID = 'graphql-handler-integration'
const integration = new CfnIntegration(this.stack, localID, {
apiId: websocketAPI.ref,
Expand All @@ -82,8 +82,8 @@ export class GraphQLStack {
Fn.ref('AWS::Partition'),
':apigateway:',
Fn.ref('AWS::Region'),
':lambda:path/2015-03-31/functions/',
lambda.functionArn,
':lambda:path/2015-03-31/AWSFunctions/',
lambda.AWSFunctionArn,
'/invocations',
]),
})
Expand All @@ -110,7 +110,7 @@ export class GraphQLStack {
return route
}

private buildRESTRoutes(graphQLLambda: Function): void {
private buildRESTRoutes(graphQLLambda: AWSFunction): void {
this.apis.restAPI.root
.addResource('graphql', {
defaultCorsPreflightOptions: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Table } from '@aws-cdk/aws-dynamodb'
import { CfnApi } from '@aws-cdk/aws-apigatewayv2'
import { Fn } from '@aws-cdk/core'
import { Table } from 'aws-cdk-lib/aws-dynamodb'
import { CfnApi } from 'aws-cdk-lib/aws-apigatewayv2'
import { Fn } from 'aws-cdk-lib/core'
import { createPolicyStatement } from './policies'
import { GraphQLStackMembers } from './graphql-stack'
import { ScheduledCommandStackMembers } from './scheduled-commands-stack'
import { EventsStackMembers } from './events-stack'
import { Function } from '@aws-cdk/aws-lambda'
import { Function as AWSFunction } from 'aws-cdk-lib/aws-lambda'
import { BoosterConfig } from '@boostercloud/framework-types'

export const setupPermissions = (
Expand Down Expand Up @@ -66,7 +66,7 @@ export const setupPermissions = (
}
}

function grantFullAccessToEventStore(store: Table, lambda: Function): void {
function grantFullAccessToEventStore(store: Table, lambda: AWSFunction): void {
lambda.addToRolePolicy(
createPolicyStatement(
[store.tableArn],
Expand All @@ -81,7 +81,7 @@ function grantFullAccessToEventStore(store: Table, lambda: Function): void {
)
}

function grantFullAccessToSubscriptionsStore(store: Table, lambda: Function): void {
function grantFullAccessToSubscriptionsStore(store: Table, lambda: AWSFunction): void {
lambda.addToRolePolicy(
createPolicyStatement(
[store.tableArn],
Expand All @@ -96,7 +96,7 @@ function grantFullAccessToSubscriptionsStore(store: Table, lambda: Function): vo
)
}

function grantFullAccessToReadModels(readModelTables: Array<Table>, lambda: Function): void {
function grantFullAccessToReadModels(readModelTables: Array<Table>, lambda: AWSFunction): void {
const tableARNs = readModelTables.map((table): string => table.tableArn)
if (tableARNs.length > 0) {
lambda.addToRolePolicy(
Expand All @@ -111,7 +111,7 @@ function grantFullAccessToReadModels(readModelTables: Array<Table>, lambda: Func
}
}

function grantReadAccessToReadModels(readModelTables: Array<Table>, lambda: Function): void {
function grantReadAccessToReadModels(readModelTables: Array<Table>, lambda: AWSFunction): void {
const tableARNs = readModelTables.map((table): string => table.tableArn)
if (tableARNs.length > 0) {
lambda.addToRolePolicy(createPolicyStatement(tableARNs, ['dynamodb:Query*', 'dynamodb:Scan*']))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Effect, PolicyStatement } from '@aws-cdk/aws-iam'
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam'

export const createPolicyStatement = (
resources?: string[],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BoosterConfig } from '@boostercloud/framework-types'
import { RemovalPolicy, Stack } from '@aws-cdk/core'
import * as dynamodb from '@aws-cdk/aws-dynamodb'
import { StreamViewType } from '@aws-cdk/aws-dynamodb'
import { RemovalPolicy, Stack } from 'aws-cdk-lib/core'
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb'
import { StreamViewType } from 'aws-cdk-lib/aws-dynamodb'

export class ReadModelsStack {
public constructor(private readonly config: BoosterConfig, private readonly stack: Stack) {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { BoosterConfig, ScheduledCommandEnvelope, ScheduleInterface } from '@boostercloud/framework-types'
import { Stack } from '@aws-cdk/core'
import { Rule, Schedule, RuleTargetInput } from '@aws-cdk/aws-events'
import { LambdaFunction } from '@aws-cdk/aws-events-targets'
import { Code, Function, IEventSource } from '@aws-cdk/aws-lambda'
import { Stack } from 'aws-cdk-lib/core'
import { Rule, Schedule, RuleTargetInput } from 'aws-cdk-lib/aws-events'
import { LambdaFunction } from 'aws-cdk-lib/aws-events-targets'
import { Code, Function as AWSFunction, IEventSource } from 'aws-cdk-lib/aws-lambda'
import * as params from '../params'
import { APIs } from '../params'
export interface ScheduledCommandStackMembers {
scheduledLambda: Function
scheduledLambda: AWSFunction
}

export class ScheduledCommandStack {
Expand All @@ -25,8 +25,8 @@ export class ScheduledCommandStack {
return undefined
}

private buildLambda(name: string, handler: string, eventSources?: Array<IEventSource>): Function {
return new Function(this.stack, name, {
private buildLambda(name: string, handler: string, eventSources?: Array<IEventSource>): AWSFunction {
return new AWSFunction(this.stack, name, {
...params.lambda(this.config, this.stack, this.apis),
functionName: `${this.config.resourceNames.applicationStack}-${name}`,
handler: handler,
Expand All @@ -35,7 +35,7 @@ export class ScheduledCommandStack {
})
}

private scheduleLambda(lambda: Function): void {
private scheduleLambda(lambda: AWSFunction): void {
Object.keys(this.config.scheduledCommandHandlers).forEach((scheduledCommandName) => {
const scheduledCommandMetadata = this.config.scheduledCommandHandlers[scheduledCommandName]
const input: Partial<ScheduledCommandEnvelope> = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BoosterConfig } from '@boostercloud/framework-types'
import { Stack } from '@aws-cdk/core'
import { Stack } from 'aws-cdk-lib/core'
import { RocketUtils } from './rocket-utils'

export interface InfrastructureRocket {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { ISDK } from 'aws-cdk'
import { BoosterConfig } from '@boostercloud/framework-types'
import { emptyS3Bucket } from '../infrastructure/s3utils'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { replace, restore, fake, mock, match } from 'sinon'
import { BoosterConfig, Logger } from '@boostercloud/framework-types'
import { deploy } from '../../src/infrastructure/deploy'
import { InfrastructureRocket } from '../../src/rockets/infrastructure-rocket'
import { EnvironmentUtils } from '@aws-cdk/cx-api'
import { EnvironmentUtils } from 'aws-cdk-lib/cx-api'
import { SdkProvider } from 'aws-cdk'
import * as StackTools from '../../src/infrastructure/stack-tools'

Expand Down
Loading

0 comments on commit 350bbaf

Please sign in to comment.