如何使 Amplify CloudFormation 了解在其外部所做的更改

How to make Amplify CloudFormation aware of changes made outside of it

我最后发现 Amplify 无法推送我所做的任何更改,并且不存在 UserPool clientId 异常。

类似

Resource Name: XXXXXXXXXXX (AWS::Cognito::UserPoolClient) Event Type: update Reason: User pool client does not exist. (Service: AWSCognitoIdentityProviderService; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: YYYYYYYYYYYYYYYYYY URL: https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/xxxxxxxxxxx

我已经在 Amplify Cli 的 Github 问题上解释了我的整个旅程,您可以看到 here,不幸的是,我没有从 Amplify 团队那里得到太多支持,正如您在那里看到的.

我还针对最初遇到的问题创建了一个 Whosebug 问题,您可以查看 here

在对这个问题进行了长达 3-4 天的深入研究之后,由于这个问题阻碍了我的部署,我开始猜测发生了什么:

现在,我尝试更新它的任何操作都失败了,我想原因是 Amplify 的预期与实际的基础设施之间不同步。

每次我 pull --restore 我的环境,我都会用这个无效的客户端 ID 更新我的 amplify-meta.json (是的,我已经尝试在本地 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 并将其更新为有效的,我猜是这个文件是 Amplify 的单一事实点。 但是没有成功,拉恢复后仍然得到同样的错误ID。

知道如何让 Amplify 再次同步吗?让它知道这个 ClientId 不再存在,只是在 CloudFormation/Templates?

上删除它

Amplify Cli 不支持此功能。

我遇到了同样的问题。 我在云中更新了 Appsync 和 Cognitor,但无法将更改提取到我的项目中。

当我运行放大状态时,它说没有变化。

所以我联系了 AWS 支持,他们说这是即将推出的功能。

解决方案是更改 amplify cli 中的所有内容并在控制台中管理 amplify。不要更改云中的任何内容。