#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. Итак, мне нужно было выполнить эти шаги для того, чтобы:
- Удалите старую аутентификацию
amplify remove auth
- ДОБАВЬТЕ новый ресурс аутентификации
amplify add auth
Не стесняйтесь изменять ./backend/auth/<new resource name>/parameters.json
и backend/auth/<new resource name>/<new resource name>-cloudformation-template.yml
по своему усмотрению на основе этого документа AWS
- ОБНОВИТЕ ресурс 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
- Теперь
amplify status
должно быть показано что-то вроде этого:
┌──────────┬─────────────────┬───────────┬───────────────────┐
│ Category │ Resource name │ Operation │ Provider plugin │
├──────────┼─────────────────┼───────────┼───────────────────┤
│ Auth │ test852bbeb0 │ Create │ awscloudformation │
├──────────┼─────────────────┼───────────┼───────────────────┤
│ Api │ testApi │ Update │ awscloudformation │
├──────────┼─────────────────┼───────────┼───────────────────┤
│ Auth │ testd50c8ec7 │ Delete │ awscloudformation │
└──────────┴─────────────────┴───────────┴───────────────────┘
- Теперь вы
amplify push
без ошибок или борьбы.