我有一个aws cognito用户组配置为我的serverless.yml。每当我进行无服务器部署时,即使它已经存在,它也会尝试创建相同的用户池域,因此返回错误:
[aws-cognito-idp-userpool] domain already exist
对于我来说,唯一的解决方法是每次我想从AWS UI进行无服务器部署时都删除用户池域。有人遇到过这个问题吗?
答案 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中强制执行替换序列,那将是更好的选择。如果您的设置具有无服务器生成资源,那么通过控制台删除可能是您唯一的选择。