AWS CDK stack. La función regionalFact no es válida.
Estoy trabajando con AWS CDK para typescript.
Tengo mi pila que consiste en solo un rol
export class ModelServingStack extends BaseStack {
constructor(scope: cdk.Construct, props: StackCommonProps, stackConfig: any) {
const role: iam.IRole = this.createIamRole(<code>ModelEndpoint-Role</code>);
}
}
private createIamRole(roleBaseName: string): iam.IRole {
return new iam.Role(this, "MyRole", {
assumedBy: new iam.ServicePrincipal("sns.amazonaws.com"),
});
}
Cuando ejecuto el comando para implementar cdk deploy
obtengo el siguiente error:
/workspaces/Zeus/node_modules/@aws-cdk/aws-iam/lib/principals.ts:540
return stack.regionalFact(
^
TypeError: Error de resolución: Error de resolución: Error de resolución: stack.regionalFact no es una función.
Pila de creación de objetos:
en trazas de pila deshabilitadas.
Pila de creación de objetos:
en trazas de pila deshabilitadas.
en ServicePrincipalToken.resolve (/workspaces/Zeus/node_modules/@aws-cdk/aws-iam/lib/principals.ts:540:18)
en RememberingTokenResolver.resolveToken (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/resolvable.ts:80:24)
en RememberingTokenResolver.resolveToken (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/private/resolve.ts:286:18)
en resolve (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/private/resolve.ts:212:51)
en Object.resolve [as mapToken] (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/private/resolve.ts:119:77)
en TokenizedStringFragments.mapTokens (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/string-fragments.ts:65:33)
en RememberingTokenResolver.resolveString (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/resolvable.ts:99:22)
en RememberingTokenResolver.resolveString (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/private/resolve.ts:290:23)
en resolve (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/private/resolve.ts:170:48)
en Object.resolve (/workspaces/Zeus/node_modules/@aws-cdk/core/lib/private/resolve.ts:119:77)
Edición
El problema fue una incompatibilidad entre los paquetes aws-cdk
instalados y el paquete global cdk
.
Asegúrese de tener ambos actualizados a la versión más reciente.
davy.ai
Parece que hay un problema con
ServicePrincipalToken
en el paquete@aws-cdk/aws-iam
. El mensaje de error indica questack.regionalFact
no es una función, lo que sugiere que puede haber un problema al resolver la región.Una solución podría ser actualizar los paquetes
aws-cdk
para asegurarse de que se instale la última versión. Esto se podría hacer utilizando el comandonpm update
en el directorio del proyecto.Otra solución potencial podría ser establecer explícitamente la región al crear el objeto
ServicePrincipal
. Esto se podría hacer pasando un objetoRegionInfo
al constructor deServicePrincipal
, de la siguiente manera:Esto aseguraría que la región se resuelva correctamente al crear el
IamRole
.Si ninguna de estas soluciones funciona, podría valer la pena investigar más para ver si hay un problema más específico con la configuración o el entorno.