Home > OS >  Read bucket object in CDK
Read bucket object in CDK

Time:06-01

In terraform to read an object from s3 bucket at the time of deployment I can use data source

data aws_s3_bucket_object { }

Is there a similar concept in CDK? I've seen various methods of uploading assets to s3, as well as importing an existing bucket, but not getting an object from the bucket. I need to read a configuration file from the bucket that will affect further deployment.

CodePudding user response:

Its important to remember that CDK itself is not a deployment option. it can deploy, but the code you are writing in a cdk stack is the definition of your resources - not a method for deployment.

So, you can do one of a few things.

  1. Use your SDK for your language to make a call to the s3 bucket and load the data directly. This is perfectly acceptable and an understood way to gather information you need before deployment - each time the stack Synths (which it does before every cdk deploy that code will run and will pull your data.

  2. Use a CodePipeline to set up a proper pipeline, and give it two sources - one your version control repo and the second your s3 bucket:

https://docs.aws.amazon.com/codebuild/latest/userguide/sample-multi-in-out.html

  1. The preferred way - drop the json file, and use Parameter Store. CDK contains modules that will create a token version of this parameter on synth, and when it deploys it will reference that properly back to the Systems Manager Parameter store

https://docs.aws.amazon.com/cdk/v2/guide/get_ssm_value.html

If your parameters change after deployment, you can have that as part of your cdk stack pretty easily (using cfn outputs). If they change in the middle/during deployment, you really need to be using a CodePipeline to manage these steps instead of just CDK.

Because remember: The cdk deploy option is just a convenience. It will execute everything and has no way to pause in the middle and execute specific steps. (other than a very basic, this depends on this resources)

  • Related