成功sls remove
后所有sls
命令都失败
ID为X的堆栈不存在
检查是否已删除堆栈,其他堆栈和S3部署存储桶。尝试删除.serverless/
,但没有帮助。
答案 0 :(得分:1)
事实证明我的${cf:${self:service}-${self:provider.stage}.ServiceEndpoint}
中的违规位是serverless.yml
。如果主堆栈不存在,即在尚未部署的情况下,serverless.yml中的${cf:...}
内容(或至少是特定情况)显然会失败。
我无法判断这是不是sls bug还是我应该知道的更好。
答案 1 :(得分:1)
问题是${cf:...}
语法需要输出现有的CloudFormation堆栈,当您尚未部署项目时,堆栈及其输出尚不存在。
如果您需要从"当前"内部访问该输出。堆栈,你应该看看无服务器如何定义输出(这个例子来自我的一个项目):
"ServiceEndpoint":{
"Description": "URL of the service endpoint",
"Value": {"Fn::Join":["", [
"https://",
{"Ref":"ApiGatewayRestApi"},
".execute-api.eu-central-1.",
{"Ref":"AWS::URLSuffix"},"/dev"]]}
}
您可以使用相同的语法来生成"生成"在您需要的地方,您自己的堆栈中的值,用${self:provider.region}
和${self:provider.stage}
之类的无服务器变量替换动态部分,或者您的项目选择使用而不是它们。例如,要将其添加到Lambda环境:
provider:
environment:
SERVICE_ENDPOINT: {"Fn::Join":["", [
"https://",
{"Ref":"ApiGatewayRestApi"},
".execute-api.${self:provider.region}.",
{"Ref":"AWS::URLSuffix"},
"/${self:provider.stage}"]]}
答案 2 :(得分:1)
在我的情况下,我手动删除了cloudformation堆栈并运行sls deploy -s <stage> --force
并成功。