Skip to content

Instantly share code, notes, and snippets.

@joerdav
Created June 6, 2022 09:47
Show Gist options
  • Save joerdav/96c87de06ffc2b2801493be8bbdc8ac5 to your computer and use it in GitHub Desktop.
Save joerdav/96c87de06ffc2b2801493be8bbdc8ac5 to your computer and use it in GitHub Desktop.
Sharing Resources Between Stacks
package main
import (
"github.com/aws/aws-cdk-go/awscdk"
"github.com/aws/aws-cdk-go/awscdk/awsiam"
"github.com/aws/aws-cdk-go/awscdk/awss3"
"github.com/aws/constructs-go/constructs/v3"
"github.com/aws/jsii-runtime-go"
)
type myStack struct {
awscdk.Stack
Bucket awss3.Bucket
}
func SharedStack(scope constructs.Construct, id string) *myStack {
stack := &myStack{Stack: awscdk.NewStack(scope, &id, &awscdk.StackProps{})}
stack.Bucket = awss3.NewBucket(stack.Stack, jsii.String("mybucket"), &awss3.BucketProps{
BucketName: jsii.String("mybucket"),
})
return stack
}
func main() {
app := awscdk.NewApp(nil)
shared := SharedStack(app, "SharedStack")
stack := awscdk.NewStack(app, jsii.String("OtherStack"), &awscdk.StackProps{})
r := awsiam.NewRole(stack, jsii.String("someRole"), &awsiam.RoleProps{
AssumedBy: awsiam.NewServicePrincipal(jsii.String("sns.amazonaws.com"), &awsiam.ServicePrincipalOpts{}),
})
shared.Bucket.GrantReadWrite(r, nil)
app.Synth(nil)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment