我找不到關于如何部署獨立任務的解決方案。這是我必須在部署期間執行的資料庫遷移腳本。
我創建了一個影像和任務定義,我可以從 UI 做到這一點:


或者它可以從 cmd: 完成
aws ecs run-task --launch-type FARGATE --cluster MyECSCluster --task-definition app-migrations:1 --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxx,subnet-yyyy],securityGroups=[sg-xxxxxxxxxxx]}")。
但我想為此使用 CDK(我的整個堆疊都在 CDK 中)。
在CDK中我在step函式包中找到了EcsRunTask但是不知道怎么用。但是,據我所知,它專門用于處理 lambda 的流程,我不確定這對我來說是否是正確的方法。
也許有人用這個例子截斷了代碼。我使用打字稿,但它可以是任何語言。
如果不是片段,可能會提出一些關于如何處理這個問題的建議。
uj5u.com熱心網友回復:
CDK(和 CloudFormation)不支持在這樣的部署上運行單個 ECS 任務。這里有一個答案似乎是使用 EventBridge 事件來觸發 ECS 任務。
或者,您可以在主要 ECS 任務中將其作為非必需容器運行,以便它在每次 ECS 任務啟動時啟動并運行,并且被標記為非必需容器可以退出,而無需 ECS 嘗試重新部署任務. 但是,如果您正在運行任務的多個實體并且您的資料庫遷移工具不會自動處理鎖定,則您可能需要研究某種分布式鎖定機制。
我不得不在多個專案上解決這個確切的問題,并且我已經停止嘗試在 ECS 中一起運行資料庫遷移。我現在正在使用 AWS CodePipeline 部署應用程式更新,并在 VPC 內生成一個 CodeBuild 任務,該任務在部署程序中運行資料庫遷移。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/537181.html
上一篇:AWS中資料庫的最佳備份是什么?
