【问题标题】:AWS Amplify: Resource is not in the state stackUpdateCompleteAWS Amplify:资源不在状态 stackUpdateComplete
【发布时间】:2020-01-29 18:11:08
【问题描述】:

我正在为我的项目设置 aws-amplify。当我第一次配置它工作正常时,我面临放大推送的问题。现在我更改了存储库,因为我必须从旧存储库中创建子树。 现在,当我放大推送时,我得到了

资源不在stackUpdateComplete状态

⠸ 更新云端资源。这可能需要几分钟...更新 cloudformation 堆栈时出错 ⠸ 更新云端资源。这可能需要几分钟...

以下资源失败

✖将资源推送到云端时出错

资源不在状态 stackUpdateComplete 推送操作时出错:Resource is not in the state stackUpdateComplete

【问题讨论】:

  • 我建议升级 amplify-cli 版本再试一次
  • 不,我已经修好了。问题出在云形成模板中。恢复了云形成模板,并使用 amplify auth update 更新了身份验证。
  • 我更新了我的 api 密钥,它的过期日期早就过期了。然后结果很好

标签: aws-amplify


【解决方案1】:

这对我有用:

$ amplify update auth

选择“是,使用默认配置”选项(使用 Cognito 身份池)。

然后:

$ amplify push

另一个原因可以是this

问题与选择此选项有关 - 选择您要使用的身份验证/授权服务:User Sign-Up & Sign-In only (Best used with a cloud API only),它只创建 UserPool 而不是 rootstack 正在寻找的 IdentityPool。这是一个错误,我们会修复它。

要取消阻止,仅针对第一个问题,您可以选择 - ❯ User Sign-Up, Sign-In, connected with AWS IAM controls (Enables per-user Storage features for images or other content, Analytics, and more) 这将创建一个用户池以及身份池和 然后选择您提到的任何其他配置 以上。

【讨论】:

    【解决方案2】:

    正如此线程中的其他人所提到的 - 问题来自您在本地更新的资源之一。

    检查你修改了哪些:

    $ amplify status
    

    然后removeadd 再次,然后是push。众所周知,Api 目前不适用于更新,因此如果您在本地进行了更改,则必须将其删除:

    $ amplify api remove YourAPIName
    $ amplify api add
    $ amplify push
    

    【讨论】:

    • 应该注意的是,这会删除您在表中可能拥有的所有数据。当然不推荐用于生产!
    【解决方案3】:

    你可以尝试如下

    先做

    amplify env checkout {environment} 然后

    amplify push

    【讨论】:

    • 这实际上是导致我的问题的原因。
    【解决方案4】:

    我在对我的 GraphQL 架构进行了一些修改后得到了这个。我调整了在几张桌子上制作@connection 指令的方式。我可以通过以下步骤解决此问题:-

    1. 为您尝试推送的新架构制作备份副本
    2. 运行 amplify pull 以恢复您的本地以与云中的后端同步。
    3. 完成后,您应该将本地同步到云端,amplify push 应该可以正常工作,因为它已同步到云端并且应该没有更新。
    4. 将新架构复制到提取的架构上,然后再次尝试运行 amplify push 以查看它是否有效。

    如果它不起作用,请撤消对拉取架构的覆盖,并比较拉取架构与您备份的更新架构之间的不同之处。逐行进行 diffcheck 并查看发生了什么变化,并尝试逐个推送更改以查看失败的地方。我认为不要一次对架构进行太多更改是更明智的做法。一件一件地做,以便您可以更轻松地进行故障排除。如果您确实有其他问题,那么它应该与此问题中突出显示的问题无关,因为拉动应该可以解决这个特定问题。

    【讨论】:

      【解决方案5】:

      在我看来,这类问题总是与 3rd 方身份验证有关。

      • 放大更新授权,
      • 然后更新身份验证流第 3 方的 ID 和密码。
      • 然后推。

      它会解决问题

      【讨论】:

        【解决方案6】:

        在我的情况下,问题是由于多个 @connections 引用 GSI,当我执行放大推送 api 时,它们没有被删除和正确添加。

        我可以通过amplify pull 解决此问题,然后注释掉@connection 然后将 GSI 链接到连接,然后手动添加每个新更改,但是 GSI 再次链接时出现问题,因为本地更新考虑了GSI 已被删除,但在云中它似乎被保留了,并且我收到错误,指出正在添加 GSI,该 GSI 已经在云中。所以我重命名了模型名称,所以它被重新创建到 dynamoDB 中的新表,然后我将它恢复为正确的名称。这对于影响不大的开发环境来说是理想的选择。

        当然,它占用了我大部分时间,但它确实解决了我的问题。

        【讨论】:

          【解决方案7】:

          这对我有用

          amplify remove storage
          

          然后

          amplify add storage
          

          然后,再来一次

          amplify push
          

          amplify add storage 之后,我错误地选择了 Y 是否要为您的 S3 存储桶添加 Lambda 触发器? 我没有任何 Lamda 函数,我的桶里也没有任何东西。

          【讨论】:

            【解决方案8】:

            好像后端和本地有冲突

            唯一对我有用的是备份本地架构并启动放大拉取命令。

            然后使用备份模式文件并初始化放大推送。

            在大多数情况下,必须手动设置以下文件中的更新(适用于 Android): app/src/main/res/raw/amplifyconfiguration.json

            【讨论】:

            猜你喜欢
            • 2022-08-15
            • 2019-09-22
            • 2023-02-02
            • 1970-01-01
            • 1970-01-01
            • 2019-10-11
            • 2021-05-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多