Как добавить атрибут DepdensOn между CfnEndpoint и SecretTargetAttachment? - PullRequest
0 голосов
/ 03 марта 2020

Я создаю кластер базы данных и DMS в одном стеке. Я использую SecretsManager для передачи свойств подключения кластера БД к конечной точке. Я добавил зависимость между конечной точкой и кластером БД, но когда я пытаюсь развернуть стек, у меня возникает такая проблема:

11/14 | 10:08:49 AM | CREATE_COMPLETE      | AWS::RDS::DBCluster                         | FooDBCluster
 11/14 | 10:08:51 AM | CREATE_IN_PROGRESS   | AWS::DMS::Endpoint                          | fooendpoint
 11/14 | 10:08:51 AM | CREATE_IN_PROGRESS   | AWS::SecretsManager::SecretTargetAttachment | FooDBSecretAttachment (FooDBSecretAttachmentE2E5F50F)
 12/14 | 10:08:52 AM | CREATE_FAILED        | AWS::DMS::Endpoint                          | fooendpoint Could not find a value associated with JSONKey in SecretString

Этого не произойдет, если я дополню развертывание Кластер БД за некоторое время до начала развертывания конечной точки. Это означает, что хост и порт не присутствуют в секрете сразу после создания кластера БД. В самом деле, в CDK они объявляются после кластера БД.

Однако я не могу добавить зависимость между конечной точкой и SecretTargetAttachment, поскольку SecretTargetAttackment не является типом CfnResource, ожидаемым методом CfnEndpoint addDependencyOn.

1 Ответ

1 голос
/ 03 марта 2020

Вы можете добавить зависимость, если получите доступ к базовому узлу, например так.

if (secretsAttachment.node.defaultChild) {
      endPoint.node.addDependency(secretsAttachment.node.defaultChild);
}
...