Сбой развертывания после миграции cdk из-за того, что «ресурсы уже существуют в стеке и не могут быть импортированы»

Недавно я использовал генератор AWS IaC для импорта существующих ресурсов AWS в стек CFN. В настоящее время я пытаюсь использовать «cdkmigration», чтобы иметь возможность использовать CDK для управления уже существующим стеком.

Я успешно создал проект cdk, загрузил свою учетную запись, и когда я запускаю «cdk diff», я получаю вывод, указывающий, что мало что должно измениться. Однако в нем упоминается, что «не удалось создать набор изменений, различия будут основаны на различиях в шаблонах (запустите еще раз с -v, чтобы увидеть причину)»

Когда я запускаю «cdk Deploy» (или запускаю «cdk diff -v»), я получаю следующий вывод об ошибке:

MyStackName failed: Error [ValidationError]: Resources [SomeMemoryDbParameterGroup, (...)] passed in ResourceToImport are already in a stack and cannot be imported.

В настоящее время я подозреваю, что это каким-то образом связано с именованием ресурсов. Продолжая работу с приведенным выше примером ресурса, я вижу в своем коде cdk следующее:

const memDbParamGroup = new memorydb.CfnParameterGroup(this, 'SomeMemoryDbParameterGroup', {
      parameterGroupName: 'pgName',
      family: 'family',
      description: 'Description goes here',
    });
    memDbParamGroup.cfnOptions.deletionPolicy = cdk.CfnDeletionPolicy.RETAIN;
    memDbParamGroup.cfnOptions.updateReplacePolicy = cdk.CfnDeletionPolicy.RETAIN;

И я вижу следующее в сгенерированном файле шаблона в каталоге «cdk.out»:

"SomeMemoryDbParameterGroup": {
   "Type": "AWS::MemoryDB::ParameterGroup",
   "Properties": {
    "Description": "Description goes here",
    "Family": "family",
    "ParameterGroupName": "pgName"
   },
   "UpdateReplacePolicy": "Retain",
   "DeletionPolicy": "Retain",
   "Metadata": {
    "aws:cdk:path": "MyStackName/SomeMemoryDbParameterGroup"
   }
  }

И следующее в шаблоне для моего существующего стека:

  SomeMemoryDbParameterGroup:
    Type: "AWS::MemoryDB::ParameterGroup"
    Properties:
      Description: "Description goes here"
      Family: "family"
      ParameterGroupName: "pgName"
    UpdateReplacePolicy: "Retain"
    DeletionPolicy: "Retain"

Я надеюсь, что смогу развернуть свой код cdk и управлять этими ресурсами в cdk в будущем БЕЗ их удаления и повторного создания. Я нашел несколько решений, которые, казалось бы, заставят развертывание работать, но все они, похоже, предполагают удаление и воссоздание ресурсов (и, таким образом, потерю данных о состоянии).


180
1

Ответ:

Решено

Обновление для всех, кто найдет это позже: изначально я выполнил миграцию с помощью --from-path после загрузки файла шаблона для моего существующего стека. Кажется, у него правильное имя стека, но по какой-то причине он все еще пытается создать новый стек.

Я решил проблему, вернувшись и повторно мигрировав с помощью --from-stack, который работал отлично.