[英]AWS Amplify: Resource is not in the state stackUpdateComplete
[英]AWS Amplify Build Issue - StackUpdateComplete
在 CLI 中運行amplify push -y
時,我的項目出錯並顯示以下消息:
["Index: 0 State: {\"deploy\":\"waitingForDeployment\"} Message: Resource is not in the state stackUpdateComplete"]
我該如何解決這個錯誤?
“資源不在 state stackUpdateComplete 中”是來自與 Amplify App ID 關聯的根 CloudFormation 堆棧的消息。 Amplify CLI 只是顯示來自更新堆棧操作的錯誤消息。 這表明 Amplify 的 CloudFormation 堆棧可能仍在進行中或卡住了。
解決方案 1 – “deployment-state.json”:
要解決此問題,請將 go 發送到包含項目設置的 S3 存儲桶,並刪除根文件夾中的“deployment-state.json”文件,因為該文件保存應用部署狀態。 存儲桶應以“部署”一詞結尾或包含“部署”一詞。
解決方案 2 – “未找到請求的資源”:
檢查 CloudFormation 堆棧的狀態,看看您是否注意到堆棧因“未找到請求的資源”錯誤而失敗,表明 DynamoDB 表“tableID”丟失,並確認您已將其刪除(可能是意外刪除)。 手動創建上面的 DynamoDB 表並再次嘗試推送。
解決方案 3A - “帶有‘apiKey’的@auth 指令:
如果您收到一條錯誤消息,指出“找到帶有‘apiKey’提供商的@auth 指令,但該項目沒有配置 API 密鑰身份驗證提供商”。 當您在 GraphQL 模式中定義公共授權而不指定提供者時,會出現此錯誤。 公共授權指定每個人都將被允許訪問 API,在幕后 API 將受到 API 密鑰的保護。 為了能夠使用公共 API,您必須配置 API 密鑰。
@auth 指令允許覆蓋給定授權模式的默認提供程序。 要解決此問題,請將“IAM”指定為提供程序,它允許使用 Cognito 身份池中的“未經身份驗證的角色”而不是 API 密鑰進行公共訪問。
下面是公共授權規則的示例代碼:
type Todo @model @auth(rules: [{ allow: public, provider: iam, operations: [create, read, update, delete] }]) {
id: ID!
name: String!
description: String
}
進行上述更改后,您可以運行“amplify update api”並添加 IAM 身份驗證提供程序,CLI 會自動為“UnAuthenticated”角色生成范圍縮小的 IAM 策略。
解決方案 3B - 參數:[AuthCognitoUserPoolId] 必須具有以下值:
此處可能會出現另一個問題,默認授權類型為 API 密鑰,當您運行命令“amplify add api”時未指定 API 類型。 要解決此問題,請按照下列步驟操作:
文檔:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.