我有一个配置到我的 serverless.yml 的 aws cognito 用户组。每当我进行无服务器部署时,即使它已经存在,它也会尝试创建相同的用户池域,因此返回以下错误:
[aws-cognito-idp-userpool] domain already exist
唯一的解决方法是每次我想从 AWS UI 进行无服务器部署时删除用户池域。以前有人遇到过这个问题吗?
我有一个配置到我的 serverless.yml 的 aws cognito 用户组。每当我进行无服务器部署时,即使它已经存在,它也会尝试创建相同的用户池域,因此返回以下错误:
[aws-cognito-idp-userpool] domain already exist
唯一的解决方法是每次我想从 AWS UI 进行无服务器部署时删除用户池域。以前有人遇到过这个问题吗?
这实际上是 CloudFormation 问题与无服务器问题。我在我的无服务器应用程序中遇到了它,但是我的UserPool * 资源在serverless.ymlresources
文件的部分中独立定义。我更改了Domain Prefix
and ,这需要重新创建资源。这是问题所在: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 中的替换序列,那就更可取了。如果您的设置使用无服务器生成资源,那么通过控制台删除可能是您唯一的选择。
我相信没有办法跳过它,
检查一下 - https://github.com/serverless/serverless/issues/3183
您可以尝试将 serverless.yaml 文件拆分为多个文件并单独部署以便于管理,
因此仅使用该文件来创建/部署您需要重新创建的资源。
serverless.yaml 将被转换为特定于供应商的 Code to Infra 服务文件,
例如。适用于 AWS 的 CloudFormation
希望这可以帮助