2

我有一个配置到我的 serverless.yml 的 aws cognito 用户组。每当我进行无服务器部署时,即使它已经存在,它也会尝试创建相同的用户池域,因此返回以下错误:

[aws-cognito-idp-userpool] domain already exist

唯一的解决方法是每次我想从 AWS UI 进行无服务器部署时删除用户池域。以前有人遇到过这个问题吗?

4

2 回答 2

0

这实际上是 CloudFormation 问题与无服务器问题。我在我的无服务器应用程序中遇到了它,但是我的UserPool * 资源在serverless.ymlresources文件的部分中独立定义。我更改了Domain Prefixand ,这需要重新创建资源。这是问题所在:CloudFormation 总是先创建资源,然后再删除旧资源,这会阻止新域与用户池相关联。

我已经在其他资源中看到了这种行为,建议的行为是:

 1. Blank out the resource from the template
 2. Update the stack (deletes resource)
 3. Restore the resource in template
 4. Update the stack (creates a new one vs. replace).

这样,您仍然可以利用您的自动化工具,而无需访问控制台。并不完美,如果有一种方法可以强制 CloudFormation 中的替换序列,那就更可取了。如果您的设置使用无服务器生成资源,那么通过控制台删除可能是您唯一的选择。

于 2020-07-18T06:15:12.180 回答
0

我相信没有办法跳过它,
检查一下 - https://github.com/serverless/serverless/issues/3183

您可以尝试将 serverless.yaml 文件拆分为多个文件并单独部署以便于管理,
因此仅使用该文件来创建/部署您需要重新创建的资源。

serverless.yaml 将被转换为特定于供应商的 Code to Infra 服务文件,
例如。适用于 AWS 的 CloudFormation

希望这可以帮助

于 2019-05-14T03:26:10.130 回答