Усиление: Как удалить аутентификацию и добавить новый ресурс аутентификации с помощью ресурса Api. Ошибка шаблона ошибка: экземпляр Fn::GetAtt ссылается на неопределенный ресурс

#amazon-cognito #aws-amplify #aws-appsync

Вопрос:

В amplify я добавил Api и ресурсы аутентификации (AWS Cognito) следующим образом. Api настроен на использование пула пользователей Auth Cognito для аутентификации.

     ┌──────────┬───────────────┬───────────┬───────────────────┐
    │ Category │ Resource name │ Operation │ Provider plugin   │
    ├──────────┼───────────────┼───────────┼───────────────────┤
    │ Auth     │ testd50c8ec7  │ No Change │ awscloudformation │
    ├──────────┼───────────────┼───────────┼───────────────────┤
    │ Api      │ testApi       │ No Change │ awscloudformation │
    └──────────┴───────────────┴───────────┴───────────────────┘
 

Я все еще нахожусь в разработке и хочу изменить аутентификацию (Cognito), чтобы войти в систему с номером телефона. Итак, я должен удалить аутентификацию и добавить новый ресурс аутентификации (изменение существующего пула пользователей с помощью входа в систему по телефону не допускается). Когда я удаляю ресурс аутентификации и выполняю amplify push . Я получаю сообщение об ошибке:

 Template error: instance of Fn::GetAtt references undefined resource testd50c8ec7
 

Что я должен сделать, чтобы удалить старый и добавить новый ресурс аутентификации?

Ответ №1:

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

Похоже, что как только Api связан с конфигурацией пула пользователей Auth, ему всегда требуется активный ресурс пула пользователей Auth Cognito. Итак, мне нужно было выполнить эти шаги для того, чтобы:

  1. Удалите старую аутентификацию
 amplify remove auth
 
  1. ДОБАВЬТЕ новый ресурс аутентификации
 amplify add auth
 

Не стесняйтесь изменять ./backend/auth/<new resource name>/parameters.json и backend/auth/<new resource name>/<new resource name>-cloudformation-template.yml по своему усмотрению на основе этого документа AWS

  1. ОБНОВИТЕ ресурс Api, чтобы он выбрал новое имя аутентификации для создания.
 % amplify update api

? Please select from one of the below mentioned services: GraphQL
? Select from the options below Update auth settings
? Choose the default authorization type for the API Amazon Cognito User Pool
Use a Cognito user pool configured as a part of this project.
? Configure additional auth types? Yes
? Choose the additional authorization types you want to configure for the API API key
API key configuration
? Enter a description for the API key:
? After how many days from now the API key should expire (1-365): 7
 
  1. Теперь amplify status должно быть показано что-то вроде этого:
 ┌──────────┬─────────────────┬───────────┬───────────────────┐
│ Category │ Resource name   │ Operation │ Provider plugin   │
├──────────┼─────────────────┼───────────┼───────────────────┤
│ Auth     │ test852bbeb0    │ Create    │ awscloudformation │
├──────────┼─────────────────┼───────────┼───────────────────┤
│ Api      │ testApi         │ Update    │ awscloudformation │
├──────────┼─────────────────┼───────────┼───────────────────┤
│ Auth     │ testd50c8ec7    │ Delete    │ awscloudformation │
└──────────┴─────────────────┴───────────┴───────────────────┘
 
  1. Теперь вы amplify push без ошибок или борьбы.