diff --git a/packages/@aws-cdk/aws-iam/lib/policy-document.ts b/packages/@aws-cdk/aws-iam/lib/policy-document.ts index 7ebf7565dc6a6..bbf569f605518 100644 --- a/packages/@aws-cdk/aws-iam/lib/policy-document.ts +++ b/packages/@aws-cdk/aws-iam/lib/policy-document.ts @@ -287,11 +287,13 @@ export class CompositePrincipal extends PrincipalBase { public readonly assumeRoleAction: string; private readonly principals = new Array(); - constructor(principal: PrincipalBase, ...additionalPrincipals: PrincipalBase[]) { + constructor(...principals: PrincipalBase[]) { super(); - this.assumeRoleAction = principal.assumeRoleAction; - this.addPrincipals(principal); - this.addPrincipals(...additionalPrincipals); + if (principals.length === 0) { + throw new Error('CompositePrincipals must be constructed with at least 1 Principal but none were passed.'); + } + this.assumeRoleAction = principals[0].assumeRoleAction; + this.addPrincipals(...principals); } public addPrincipals(...principals: PrincipalBase[]): this {