无服务器继续尝试创建已经存在的用户池域

时间:2019-05-14 01:55:00

标签: amazon-web-services dns amazon-cognito aws-userpools

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

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

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

2 个答案:

答案 0 :(得分:1)

我相信没有办法跳过它,
选中此项- https://github.com/serverless/serverless/issues/3183

您可以尝试将serverless.yaml文件分解为多个文件,然后分别进行部署以简化管理,
因此,仅将文件用于创建/部署新创建的资源。

serverless.yaml将转换为特定于供应商的Infra服务代码,
例如。适用于AWS的CloudFormation

希望这会有所帮助

答案 1 :(得分:0)

这实际上是CloudFormation问题与无服务器问题。我在我的无服务器应用程序中遇到了问题,在我的无服务器.yml文件的resources部分中独立定义了我的 UserPool *资源。我更改了Domain Prefix,这需要重新创建资源。问题是: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中强制执行替换序列,那将是更好的选择。如果您的设置具有无服务器生成资源,那么通过控制台删除可能是您唯一的选择。