swift-account-41358
12/13/2024, 12:18 PMawsNative.cognito.UserPoolIdentityProvider I get an odd error on deployment:
Error: 13 INTERNAL: Request message serialization failure: b.Va is not a function
       at callErrorFromStatus (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@grpc/grpc-js/src/call.ts:82:17)
       at Object.onReceiveStatus (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@grpc/grpc-js/src/client.ts:360:55)
       at Object.onReceiveStatus (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@grpc/grpc-js/src/client-interceptors.ts:458:34)
       at Object.onReceiveStatus (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@grpc/grpc-js/src/client-interceptors.ts:419:48)
       at /Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@grpc/grpc-js/src/resolving-call.ts:132:24
       at processTicksAndRejections (node:internal/process/task_queues:77:11)
   for call at
time=2024-12-13T12:04:30.020Z level=INFO msg="INFO unlocking app=omw-pso-be stage=local-dev"
       at ServiceClientImpl.makeUnaryRequest (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@grpc/grpc-js/src/client.ts:325:42)
       at ServiceClientImpl.registerResourceOutputs (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@grpc/grpc-js/src/make-client.ts:189:15)
       at /Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@pulumi/runtime/resource.ts:1161:33
       at new Promise (<anonymous>)
       at Object.<anonymous> (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@pulumi/runtime/resource.ts:1160:21)
       at Generator.next (<anonymous>)
       at fulfilled (/Users/rosscoundon/Documents/GitHub/omw-pso-be/.sst/platform/node_modules/@pulumi/pulumi/runtime/resource.js:18:58)
       at processTicksAndRejections (node:internal/process/task_queues:95:5) {
     code: 13,
     details: 'Request message serialization failure: b.Va is not a function',
     metadata: Metadata { internalRepr: Map(0) {}, options: {} },
     promise: Promise { <rejected> [Circular *1] }
   }
I’ll share code in a threadswift-account-41358
12/13/2024, 12:20 PMimport * as awsNative from '@pulumi/aws-native';
import { UserPoolClientArgs } from '@pulumi/aws/cognito';
import getRetainOnDelete from '../helpers/utils/getRetainOnDelete';
import { CognitoUserPoolArgs } from '../../.sst/platform/src/components/aws';
const SAML_PROVIDER_NAME = process.env.SAML_PROVIDER_NAME || 'SingleSignOn';
const VALID_EMAIL_DOMAINS = process.env.VALID_EMAIL_DOMAINS;
const DEMO_PERMISSIONS = process.env.DEMO_PERMISSIONS || 'false';
const standardAttributes = [
  'name',
  'family_name',
  'given_name',
  'middle_name',
  'nickname',
  'preferred_username',
  'profile',
  'picture',
  'website',
  'gender',
  'birthdate',
  'zoneinfo',
  'locale',
  'updated_at',
  'address',
  'email',
  'phone_number',
  'sub',
];
const retainOnDelete = getRetainOnDelete();
const clientReadAttributes = structuredClone(standardAttributes);
const cognitoUserPoolArgs: CognitoUserPoolArgs = {
  transform: {
    userPool: (args, opts) => {
      opts.retainOnDelete = retainOnDelete;
      args.aliasAttributes = ['email'];
      args.autoVerifiedAttributes = ['email'];
      // Missing selfSignUpEnabled: true,
      args.passwordPolicy = {
        minimumLength: 8,
        requireLowercase: true,
        requireNumbers: true,
        requireSymbols: false,
        requireUppercase: true,
      };
      args.accountRecoverySetting = {
        recoveryMechanisms: [
          {
            name: 'verifiedEmail',
            priority: 1,
          },
        ],
      };
      args.emailVerificationSubject = 'Your Appointment Assistant Portal verification code';
      args.emailVerificationMessage =
        'Thanks for signing up to the Appointment Assistant Portal! Your verification code is {####}';
      // missing emailStyle: cognito.VerificationEmailStyle.CODE,
    },
  },
};
const cognitoUserPool = new aws.cognito.UserPool(`${$app.stage}-cognitoUserPool`, cognitoUserPoolArgs);
const samlProviderArgs: awsNative.cognito.UserPoolIdentityProviderArgs = {
  providerType: 'SAML',
  providerName: SAML_PROVIDER_NAME,
  userPoolId: cognitoUserPool.id,
  attributeMapping: {
    email: '<http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress>',
  },
  providerDetails: {
    IDPInit: 'true',
    IDPSignout: 'true',
    EncryptedResponses: 'true',
    MetadataURL: process.env.SAML_METADATA_URL,
    RequestSigningAlgorithm: 'rsa-sha256',
  },
};
console.log('about to create samlProvider');
const samlProvider = new awsNative.cognito.UserPoolIdentityProvider(`${$app.stage}-samlIdentityProvider`, samlProviderArgs);
console.log('created samlProvider');
let userPoolClientArgs: UserPoolClientArgs = {
  userPoolId: cognitoUserPool.id,
  name: `${$app.stage}-cognitoUserPoolClient`,
  generateSecret: false,
  readAttributes: clientReadAttributes,
  supportedIdentityProviders: ['COGNITO'],
  explicitAuthFlows: ['ALLOW_USER_SRP_AUTH', 'ALLOW_REFRESH_TOKEN_AUTH'],
};
if (process.env.SAML_METADATA_URL) {
  if (!process.env.PORTAL_URL) {
    throw new Error('PORTAL_URL environment variable is required');
  }
  userPoolClientArgs = {
    ...userPoolClientArgs,
    preventUserExistenceErrors: 'ENABLED',
    allowedOauthFlows: ['code'],
    allowedOauthScopes: ['email', 'openid', 'profile', 'aws.cognito.signin.user.admin'],
    allowedOauthFlowsUserPoolClient: true,
    defaultRedirectUri: `${process.env.PORTAL_URL}/dashboard`,
    callbackUrls: [
      process.env.PORTAL_URL,
      `${process.env.PORTAL_URL}/dashboard`,
      `${process.env.PORTAL_URL}/sso`,
      `${process.env.PORTAL_URL}/signin`,
    ],
    supportedIdentityProviders: [SAML_PROVIDER_NAME, 'COGNITO'],
  };
}
console.log('about to create cognitoUserPoolClient');
const cognitoUserPoolClient = new aws.cognito.UserPoolClient(`${$app.stage}-cognitoUserPoolClient`, userPoolClientArgs);
console.log('created cognitoUserPoolClient');
export { cognitoUserPool, cognitoUserPoolClient };
Any thoughts on what’s going on here? The error message is rather opaque. Any guidance very gratefully received as I’m very stuck! Thanksswift-account-41358
12/13/2024, 1:08 PM@pulumi/aws from @pulumi/aws-native for the Identity Provider and removed IDPInit: 'true' and it can deploy correctly.great-sunset-355
12/16/2024, 8:34 AMaws-native as much as you can.swift-account-41358
12/16/2024, 8:59 AMgreat-sunset-355
12/16/2024, 10:37 AMswift-account-41358
12/16/2024, 10:47 AMquick-house-41860
12/17/2024, 9:53 AMnode_modules. See https://github.com/pulumi/pulumi/issues/17421
Try nuking your node_modules and lock file, I've seen that help in those cases