我最终发现 Amplify 无法推送我所做的任何更改,并且不存在 UserPool clientId 异常。
就像是
资源名称:XXXXXXXXXXX (AWS::Cognito::UserPoolClient) 事件类型:更新原因:用户池客户端不存在。(服务:AWSCognitoIdentityProviderService;状态代码:400;错误代码:ResourceNotFoundException;请求 ID:YYYYYYYYYYYYYYYYYY URL: https ://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/xxxxxxxxxxx
我已经解释了我在 Amplify Cli 的 Github 问题上的整个过程,你可以在这里看到,不幸的是,我没有得到 Amplify 团队的太多支持,正如你在那里看到的那样。
我还创建了一个 StackOverflow 问题,其中包含我遇到的最初问题,您可以在此处查看
在深入研究这个问题 3-4 天之后,由于这个问题阻碍了我的部署,我猜测发生了什么:
- 几个月前,我已将身份验证添加到我的放大项目中
- 最后,我注意到其中一个创建的客户端没有被使用,所以我使用 Cognito 控制台删除了它。
- 我几个月来没有更新身份验证
- 现在我已经介绍了社交身份验证 Amplify 尝试更新它,并且由于客户端 ID 不再存在,它不能并引发上述错误。
现在,我尝试更新它的任何东西都失败了,我猜原因是 Amplify 所期望的和实际的基础设施之间不同步。
每次我pull --restore
在我的环境中,我都会amplify-meta.json
使用这个无效的客户端 ID 进行更新(是的,我已经尝试在本地更改它amplify-meta.json
并推送它),例如:
"auth": {
"myproject": {
"service": "Cognito",
"providerPlugin": "awscloudformation",
"output": {
"GoogleWebClient": "111111111.apps.googleusercontent.com",
"AppClientSecret": "aaaaaaaaaaa",
"UserPoolId": "region-pooId",
"AppClientIDWeb": "VALID ID",
"AppClientID": "INVALID ID",
"FacebookWebClient": "2222222222",
"IdentityPoolId": "region:Id",
"IdentityPoolName": "myproject__env",
"UserPoolName": "mypoolname"
},
"lastPushTimeStamp": "2020-05-13T20:48:29.797Z",
"providerMetadata": {
"s3TemplateURL": "https://s3.amazonaws.com/myproject-deployment/amplify-cfn-templates/auth/lexis-cloudformation-template.yml",
"logicalId": "authmyproject"
},
"lastPushDirHash": "XXXXXXXXXXXXXX="
}
},
我的 Cognito 上有一个不同的有效 ClientId,所以我最后的办法是,我尝试直接访问此代码上指向的 S3TemplateURL 并将其更新为有效的,我的猜测是这个文件是单点放大的真相。但没有成功,拉恢复后仍然得到相同的错误ID。
知道如何让 Amplify 再次同步吗?让它意识到这个 ClientId 不再存在并且只是在 CloudFormation/Templates 上摆脱它?