跳到主要內容

Lambda version with provisioned concurrency in CloudFormation update stack fail

如果在 CloudFormation 裡面直接使用 "AWS::Lambda::Version" 加上 ProvisionedConcurrencyConfig 接著 update stack 更新 ConcurrentExecutions 就會出現 update error 因為 version 不能夠 update

但是如果把 ProvisionedConcurrency 放在 "AWS::Lambda::Alias" 裡面,update stack 卻又可以了... lol...

不過一個 provisioned concurrent lambda 一個月要額外多 $5 USD 的費用還不包含 lambda execution 的費用,一個 1 vCPU + 512MB 的 fargate container 也不過大概是 $31 USD ....

Update:
再仔細看了一下,update stack 失敗的原因有兩個一個是因為 Application Load Balancer Target Group 指向的 lambda 無法 stabilized 所以 update 失敗導致 rollback。其中一個原因是因為 ALB 沒有權限 invoke lambda function。LambdaPermission resource 還沒執行時,就先執行了 ALB TargetGroup 設定,所以在 TargetGroup resource 加了 DependsOn LambdaPermission 後,就少了 一個錯誤,但剩下的 ALB 無法 stabilized 的錯誤目前還是無解.... 只能把 stack 刪掉重新 deploy,接下來的 update 好像就都沒事。只是說在刪除 stack 的時候,會出現等待 lambda ENI 刪除的 waiting... 要等 8 ~ 20 min? 據說是後來 aggregate ENI 給 VPC 內的 lambda 後導致的 side effect....
CloudFormation 印象中也是越來越聰明,當 Resource A 有 !Ref Resource B 的時候,就會自動做 DependsOn 調整執行順序,但是像今天這個 LambdaPermission 和 ALB TargetGroup 似乎就漏掉了...

ALB + lambda + provisioned concurrency 很多 bug 一次踩好踩滿 Q_Q...


留言

這個網誌中的熱門文章

3M UVA3000 更換濾芯紫外線燈匣

用了一年的3M濾水器提示說要換濾芯和燈匣 上 Youtube 想找教學的影片可是沒看到 UVA 3000 的 經過了一番奮戰後在這邊記錄一下 希望可以幫助後人,以免再重蹈覆轍。 Step 1. 拔掉插頭,把淨水器從牆上拿下來(基本上他是掛著而已),比較方便施工。 Step 2. 把前蓋往上拉,很容易就可以看到裡面的東西了。 Step 3. 打開後可以看到有兩個柱狀體,左邊的是燈匣,右邊的是濾芯。 Step 4. 這裡有個祕技是,這兩個柱狀體是可以往上 翻開30 度左右,這樣就可以有比較大的空間施工。 Step 4. 更換濾芯的話,柱狀體的瓶身上有箭頭,往左就是轉開,往右就是鎖緊。 Step 5. 更換燈匣的話比較麻煩一點,因為他底部是電源,頂部的右邊有個突出來的小方塊。對照淨水器上方連接處的話會有個弧形的凹槽,這是要 match 的.如果你只注意瓶身的箭頭往右鎖回去,就會造成漏水...Orz... Step 6. 把前蓋蓋回,機器掛回牆上,插插頭,開水,如果機器沒有告訴你有燈匣異常或漏水的話,就可以長按 C / UV  Reset 計數器了. 所以關鍵字就是,要往上翻 30 度,燈匣上面的小凸點要在右側,要看瓶身的 小箭頭. May it helps!

Getting start with Golang!

#Get started with Go https://talks.golang.org/2012/tutorial.slide#1 #Go for C programmers https://talks.golang.org/2012/goforc.slide#1 #Share Memory By Communicating https://blog.golang.org/share-memory-by-communicating #Codewalk: Share Memory By Communicating https://golang.org/doc/codewalk/sharemem/ #Go Concurrency Patterns: Timing out, moving on https://blog.golang.org/go-concurrency-patterns-timing-out-and #Go Language for Ops and Site Reliability Engineering https://talks.golang.org/2013/go-sreops.slide#1 #Go Dynamic Tools https://talks.golang.org/2015/dynamic-tools.slide#1 #Program your next server in Go https://talks.golang.org/2016/applicative.slide#1 #HTTP/2 Server Push https://blog.golang.org/h2push #gRPC Basics - Go http://www.grpc.io/docs/tutorials/basic/go.html #Go talks https://talks.golang.org/