'Both SAM and cdk can make stack, SAM include cdk ? or cdk include SAM?

I want to make two bucket(x,y) in S3 and make a lambda.

My goal is uploading files to S3(x) and it triggers lambda then lambda create and put file in S3(y)

Currently, I am developing lambda function on SAM.

Deploying lambda function by SAM

And I made two S3 buckets by cdk.

Then manually adding trigger and Iam policy to lambda to access S3

However I want to do this all automatically.

So my idea is ,

  1. SAM can make two S3 bucket as stack and I don't need cdk anymore ?

  2. cdk can include SAM development environment?

  3. Any other way??

What is the best practice for this purpose??



Solution 1:[1]

My `solution is

  • Local development with SAM

  • AWS deployment is carried out by cdk only, SAM doesn't work anything for deployment.

My folder structure is below

cdk / bin
      lib 
      cdk.json
      etc
      samproj/helloworld/app.py
             /samconfig.toml
             /template.yaml
             /etc

For local developing, in samproj directory, do something like this, tutorial.

sam local invoke "HelloWorldFunction" -e events/event.json

And for AWS deployment by cdk project .

Just make lambda directly from samproj/helloworld directory in Stack.

export class CdkVrBaseStack extends Stack {
    const lambda_ = new lambda.Function(this, 'TestLambda', {
      functionName: 'testLambda',
      runtime: lambda.Runtime.PYTHON_3_9,
      code: lambda.Code.fromAsset('samproj/helloworld'),
      handler: 'index.handler',
      timeout: cdk.Duration.seconds(300),




 

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 whitebear