Skip to content

bug(go) PolicyStatement panic: "Expected object reference, got {}" #2789

@thomaspoignant

Description

@thomaspoignant

🐛 Bug Report

Affected Languages

  • TypeScript or Javascript
  • Python
  • Java
  • .NET (C#, F#, ...)
  • Go

General Information

  • JSII Version: ^1.27.0 (CDK 1.97.0)
  • Platform: 20.3.0 Darwin Kernel Version 20.3.0: Thu Jan 21 00:07:06 PST 2021; root:xnu-7195.81.3~1/RELEASE_X86_64 x86_64

What is the problem?

I am currently starting to play with the Golang version of CDK and I have hard time to create a PolicyStatement .
It panics with the error panic: "Expected object reference, got {}"

To reproduce you can run this CDK stack:

package main
​
import (
	"github.com/aws/aws-cdk-go/awscdk"
	"github.com/aws/aws-cdk-go/awscdk/awsiam"
	"github.com/aws/constructs-go/constructs/v3"
	"github.com/aws/jsii-runtime-go"
	"os"
	"strings"
)
​
type CdkGoStackProps struct {
	awscdk.StackProps
}
​
func NewCdkGoStack(scope constructs.Construct, id string, props *CdkGoStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)
	region:= stack.Region()
	account:=stack.Account()
	domainName:="test-domain"awsiam.NewPolicyStatement(&awsiam.PolicyStatementProps{
		Actions:       &[]*string{
			jsii.String("es:*"),
		},
		Effect:        awsiam.Effect_ALLOW,
		Principals:     &[]awsiam.IPrincipal{
			awsiam.NewAnyPrincipal(),
		},
		Resources: &[]*string{
			jsii.String(strings.Join([]string{"arn","aws","es",*region,*account,":domain/"+domainName+"/*"}, ":")),
		},
	})
​
	return stack
}
​
func main() {
	app := awscdk.NewApp(nil)
​
	NewCdkGoStack(app, "CdkGoStack", &CdkGoStackProps{
		awscdk.StackProps{
			Env: env(),
		},
	})
​
	app.Synth(nil)
}
​
// env determines the AWS environment (account+region) in which our stack is to
// be deployed. For more information see: https://docs.aws.amazon.com/cdk/latest/guide/environments.html
func env() *awscdk.Environment {
	return &awscdk.Environment{
	 Account: jsii.String(os.Getenv("CDK_DEFAULT_ACCOUNT")),
	 Region:  jsii.String(os.Getenv("CDK_DEFAULT_REGION")),
	}
}

Verbose Log

panic: "Expected object reference, got {}"
goroutine 1 [running]:
github.com/aws/jsii-runtime-go.Create(0x1292d08, 0x1f, 0xc00014dd98, 0x1, 0x1, 0x127ddc0, 0xc00001c9e8)
	/Users/thomas.poignant/Documents/dev/temp/cdk_go/vendor/github.com/aws/jsii-runtime-go/runtime.go:172 +0xb53
github.com/aws/aws-cdk-go/awscdk/awsiam.NewPolicyStatement(0xc000078190, 0xc00000e190, 0xc00001c96c)
	/Users/thomas.poignant/Documents/dev/temp/cdk_go/vendor/github.com/aws/aws-cdk-go/awscdk/awsiam/awsiam.go:14407 +0xa5
main.NewCdkGoStack(0xbc710a0, 0xc00006c1b0, 0x128a9ef, 0xa, 0xc00014df38, 0xc00008e000, 0xc000044748)
	/Users/thomas.poignant/Documents/dev/temp/cdk_go/cdk_go.go:26 +0x510
main.main()
	/Users/thomas.poignant/Documents/dev/temp/cdk_go/cdk_go.go:45 +0xdd
exit status 2
Subprocess exited with error 1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions