Создание глобальной динамической таблицы с помощью Pulumi

#typescript #pulumi

#typescript #pulumi

Вопрос:

Из документов pulumi по созданию глобальной динамической таблицы Создание глобальной таблицы зависит от того, какие таблицы реплик создаются первыми. Мой проект Pulumi находится в асинхронной среде typescript, и я создаю таблицы реплик внутри функции ниже.

 const replicaTables: any[] = [];
pulumi
  .all([createAwsProvidersInAllRegions(accountsConfig)])
  .apply(async ([providers]) => {
    return providers.map(({ provider, regionName, vpcId, subnets }) => { 
      // create replica tables here
      const regionalReplicaTable = createReplicaTable();
      replicaTables.push(regionalReplicaTable);

   });
});
 

Я пытаюсь создать глобальную таблицу в приведенном ниже коде.

  new aws.dynamodb.GlobalTable(`${namespace}-deviceInfo-global`, {replicas: replicaTables},
  {
     dependsOn: replicaTables,
  },
 

Но replicaTables массив пуст во время выполнения этого кода из-за асинхронного характера среды узла. Как мне убедиться, что replicaTables массив заполнен таблицами-репликами во время выполнения кода для создания глобальной таблицы?

Комментарии:

1. Это accountsConfig вывод? Почему это должно быть внутри pulumi.all ?

2. accountsConfig это не вывод Pulumi, а массив конфигураций Pulumi. const accountsConfig = config.requireObject<AccountConfig[]>('awsAccounts');

3. Тогда я бы не стал помещать ее в apply. Использовать цикл или an Array.map для создания реплик?

4. разве мне все еще не нужен контейнер для хранения всех реплик, даже если я извлекаю создание реплик из pulumi.all ? Я все еще не уверен, в чем смысл pulumi.all() .