2.3.2 • Published 1 year ago

cdk-bootstrapless-synthesizer v2.3.2

Weekly downloads
1,644
License
Apache-2.0
Repository
github
Last release
1 year ago

cdk-bootstrapless-synthesizer

npm version PyPI npm PyPI - Downloads

A bootstrapless stack synthesizer that is designated to generate templates that can be directly used by AWS CloudFormation.

Please use ^1.0.0 for cdk version 1.x.x, use ^2.0.0 for cdk version 2.x.x

Usage

import { BootstraplessStackSynthesizer } from 'cdk-bootstrapless-synthesizer';

main.ts

const app = new App();

new MyStack(app, 'my-stack-dev', {
  synthesizer: new BootstraplessStackSynthesizer({
    templateBucketName: 'cfn-template-bucket',

    fileAssetBucketName: 'file-asset-bucket-${AWS::Region}',
    fileAssetRegionSet: ['us-west-1', 'us-west-2'],
    fileAssetPrefix: 'file-asset-prefix/latest/',

    imageAssetRepositoryName: 'your-ecr-repo-name',
    imageAssetAccountId: '1234567890',
    imageAssetTagPrefix: 'latest-',
    imageAssetRegionSet: ['us-west-1', 'us-west-2'],
  }),
});

// Or by environment variables
env.BSS_TEMPLATE_BUCKET_NAME = 'cfn-template-bucket';

env.BSS_FILE_ASSET_BUCKET_NAME = 'file-asset-bucket-\${AWS::Region}';
env.BSS_FILE_ASSET_REGION_SET = 'us-west-1,us-west-2';
env.BSS_FILE_ASSET_PREFIX = 'file-asset-prefix/latest/';

env.BSS_IMAGE_ASSET_REPOSITORY_NAME = 'your-ecr-repo-name';
env.BSS_IMAGE_ASSET_ACCOUNT_ID = '1234567890';
env.BSS_IMAGE_ASSET_TAG_PREFIX = 'latest-';
env.BSS_IMAGE_ASSET_REGION_SET = 'us-west-1,us-west-2';

new MyStack(app, 'my-stack-dev2', {
  synthesizer: new BootstraplessStackSynthesizer(),
});

// use Aspect to grant the role to pull ECR repository from account BSS_IMAGE_ASSET_ACCOUNT_ID

main.ts

Synth AWS CloudFormation templates, assets and upload them

$ cdk synth
$ npx cdk-assets publish -p cdk.out/my-stack-dev.assets.json -v

Limitations

When using BSS_IMAGE_ASSET_ACCOUNT_ID to push ECR repository to shared account, you need use Aspect to grant the role with policy to pull the repository from cross account. Or using the following WithCrossAccount techniques.

Currently only below scenarios are supported,

  • ECS
  • SageMaker training job integrated with Step Functions
  • AWS Batch
  • AWS Lambda

For other scenarios, the feature request or pull request are welcome.

function OverrideRepositoryAccount(scope: Construct, id: string, repo: IRepository): IRepository {
  class Import extends RepositoryBase {
    public repositoryName = repo.repositoryName;
    public repositoryArn = Repository.arnForLocalRepository(repo.repositoryName, scope, env.BSS_IMAGE_ASSET_ACCOUNT_ID);

    public addToResourcePolicy(_statement: iam.PolicyStatement): iam.AddToResourcePolicyResult {
      // dropped
      return { statementAdded: false };
    }
  }

  return new Import(scope, id);
}

function WithCrossAccount(image: DockerImageAsset): DockerImageAsset {
  image.repository = OverrideRepositoryAccount(image, 'CrossAccountRepo', image.repository);
  return image;
}

export class SampleStack extends Stack {
  constructor(scope: Construct, id: string, props: StackProps = {}) {
    super(scope, id, props);

    const image = WithCrossAccount(new DockerImageAsset(this, 'MyBuildImage', {
      directory: path.join(__dirname, '../docker'),
    }));

    new CfnOutput(this, 'output', { value: image.imageUri });

    const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef');
    taskDefinition.addContainer('DefaultContainer', {
      image: ecs.ContainerImage.fromDockerImageAsset(image),
      memoryLimitMiB: 512,
    });

    fromAsset(this, 'stepfunctions', {
      directory: path.join(__dirname, '../docker'),
    });
  }
}

main.ts

Sample Project

See Sample Project

API Reference

See API Reference for API details.

2.3.2

1 year ago

2.3.1

1 year ago

2.3.0

1 year ago

2.2.9

1 year ago

2.2.8

1 year ago

2.2.11

1 year ago

2.2.10

1 year ago

2.2.3

2 years ago

2.2.5

2 years ago

2.2.4

2 years ago

2.2.7

2 years ago

2.2.6

2 years ago

2.2.2

2 years ago

0.8.4

2 years ago

0.9.4

2 years ago

0.9.3

2 years ago

0.9.5

2 years ago

0.8.3

2 years ago

0.8.2

2 years ago

2.2.1

2 years ago

2.2.0

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.4

2 years ago

2.1.3

2 years ago

2.1.6

2 years ago

2.1.5

2 years ago

2.1.7

2 years ago

2.1.0

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.5

2 years ago

2.0.4

2 years ago

2.0.7

2 years ago

2.0.6

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

0.9.0

2 years ago

0.9.2

2 years ago

0.9.1

2 years ago

0.8.1

2 years ago

0.8.0

3 years ago

0.7.18

3 years ago

0.7.17

3 years ago

0.7.16

3 years ago

0.7.15

3 years ago

0.7.14

3 years ago

0.7.13

3 years ago

0.7.12

3 years ago

0.7.4

3 years ago

0.7.11

3 years ago

0.7.10

3 years ago

0.7.9

3 years ago

0.7.6

3 years ago

0.7.5

3 years ago

0.7.8

3 years ago

0.7.7

3 years ago

0.6.140

3 years ago

0.7.2

3 years ago

0.6.145

3 years ago

0.6.144

3 years ago

0.6.143

3 years ago

0.6.142

3 years ago

0.6.141

3 years ago

0.6.137

3 years ago

0.6.136

3 years ago

0.6.135

3 years ago

0.6.134

3 years ago

0.6.133

3 years ago

0.6.139

3 years ago

0.6.138

3 years ago

0.6.128

3 years ago

0.6.127

3 years ago

0.6.126

3 years ago

0.6.125

3 years ago

0.6.124

3 years ago

0.6.123

3 years ago

0.6.122

3 years ago

0.6.119

3 years ago

0.6.118

3 years ago

0.6.121

3 years ago

0.6.120

3 years ago

0.6.117

3 years ago

0.6.115

3 years ago

0.6.114

3 years ago

0.6.113

3 years ago

0.6.116

3 years ago

0.6.112

3 years ago

0.6.111

3 years ago

0.6.110

3 years ago

0.6.109

3 years ago

0.6.108

3 years ago

0.6.107

3 years ago

0.6.106

3 years ago

0.6.105

3 years ago

0.6.98

3 years ago

0.6.97

3 years ago

0.6.99

3 years ago

0.6.96

3 years ago

0.6.104

3 years ago

0.6.103

3 years ago

0.6.102

3 years ago

0.6.101

3 years ago

0.6.100

3 years ago

0.6.94

3 years ago

0.6.95

3 years ago

0.6.93

3 years ago

0.6.90

3 years ago

0.6.92

3 years ago

0.6.91

3 years ago

0.6.87

3 years ago

0.6.89

3 years ago

0.6.88

3 years ago

0.6.86

3 years ago

0.6.83

3 years ago

0.6.85

3 years ago

0.6.84

3 years ago

0.6.82

3 years ago

0.6.81

3 years ago

0.6.80

3 years ago

0.6.79

3 years ago

0.6.78

3 years ago

0.6.77

3 years ago

0.6.76

3 years ago

0.6.75

3 years ago

0.6.74

3 years ago

0.6.73

3 years ago

0.6.72

3 years ago

0.6.69

3 years ago

0.6.68

3 years ago

0.6.71

3 years ago

0.6.70

3 years ago

0.6.67

3 years ago

0.6.66

3 years ago

0.6.65

3 years ago

0.6.64

3 years ago

0.6.63

3 years ago

0.6.62

3 years ago

0.6.61

3 years ago

0.6.60

3 years ago

0.6.59

3 years ago

0.6.58

3 years ago

0.6.57

3 years ago

0.6.56

3 years ago

0.6.55

3 years ago

0.6.54

3 years ago

0.6.53

3 years ago

0.6.50

3 years ago

0.6.52

3 years ago

0.6.51

3 years ago

0.6.49

3 years ago

0.6.48

3 years ago

0.6.45

3 years ago

0.6.47

3 years ago

0.6.46

3 years ago

0.6.43

3 years ago

0.6.44

3 years ago

0.6.42

3 years ago

0.6.41

3 years ago

0.6.40

3 years ago

0.6.39

3 years ago

0.6.38

3 years ago

0.6.34

3 years ago

0.6.36

3 years ago

0.6.35

3 years ago

0.6.37

3 years ago

0.6.33

3 years ago

0.6.32

3 years ago

0.6.31

3 years ago

0.6.30

3 years ago

0.6.29

3 years ago

0.6.28

3 years ago

0.6.27

3 years ago

0.6.25

3 years ago

0.6.26

3 years ago

0.6.24

3 years ago

0.6.23

3 years ago

0.6.22

3 years ago

0.6.21

3 years ago

0.6.20

3 years ago

0.6.19

3 years ago

0.6.18

3 years ago

0.6.17

3 years ago

0.6.16

3 years ago

0.6.15

3 years ago

0.6.14

3 years ago

0.6.12

3 years ago

0.6.13

3 years ago

0.6.11

3 years ago

0.6.10

3 years ago

0.6.9

3 years ago

0.6.8

3 years ago

0.6.7

3 years ago

0.6.6

3 years ago

0.6.3

3 years ago

0.6.5

3 years ago

0.6.4

3 years ago

0.6.2

3 years ago

0.6.1

3 years ago

0.6.0

3 years ago

0.5.18

3 years ago

0.5.19

3 years ago

0.5.20

3 years ago

0.5.17

3 years ago

0.5.16

3 years ago

0.5.15

3 years ago

0.5.14

3 years ago

0.5.13

3 years ago

0.5.12

3 years ago

0.5.11

3 years ago

0.5.10

3 years ago

0.5.9

3 years ago

0.5.8

3 years ago

0.5.7

3 years ago

0.5.6

3 years ago

0.5.5

3 years ago

0.5.4

3 years ago

0.5.3

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.5.0

3 years ago

0.4.0

3 years ago

0.3.0

3 years ago

0.2.0

3 years ago

0.1.0

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.4

3 years ago

0.0.1

3 years ago