簡體   English   中英

在Auto Scaling擴展事件期間從Code Deploy掛鈎讀取AWS EC2標記

[英]Reading AWS EC2 tag from Code Deploy hook during Auto Scaling scale-in event

我真的很喜歡使用與Auto Scaling集成的AWS Code Deploy,但是在擴展事件期間遇到有關讀取標簽的問題。

我已經設置了Auto Scaling組以標記任何使用標記名稱“環境”創建的新實例。 然后,作為我的Code Deploy安裝后腳本的一部分,我讀取了標簽並使用它有條件地配置我的應用程序。 如果我將修訂部署到自動伸縮組中的現有實例,則此方法非常有效。 但是,在擴展事件期間,在從Auto Scaling調用Code Deploy之前,似乎未將標簽分配給新的EC2實例,因此我的安裝后配置失敗。

有什么解決辦法嗎? 是否可以在管道中更早地將標簽與EC2實例相關聯?

然后,作為我的Code Deploy安裝后腳本的一部分,我讀取了標簽並使用它有條件地配置我的應用

您可以嘗試使用CodeDeploy在部署生命周期事件期間公開的環境變量來代替使用標簽。 請查看https://blogs.aws.amazon.com/application-management/post/Tx1PX2XMPLYPULD/Using-CodeDeploy-Environment-Variables了解更多信息。

謝謝,
蘇里亞

您必須在自動縮放組中添加自定義生命周期掛鈎 ,並在CodeDeploy中使用它們。 請記住,掛鈎執行的順序不是可預測的。

關於CodeDeploy和自定義生命周期掛鈎,我們遇到了完全相同的問題。 直到生命周期結束后才生成標簽,這太晚了,因為我們想在生命周期未決期間進行CodeDeploy。

我們的解決方案是構建一個userdata腳本,該腳本將允許實例在啟動時對其自身進行標記。 該腳本已安裝到每個AMI中,並接受兩個參數:Environment和Function。

<script>
PowerShell -ExecutionPolicy Bypass -NoProfile -File c:\tools\server_userdata.ps1 --function Reg -environment production
</script>

因此,我們可以將該用戶數據附加到啟動配置, 實例在啟動時對其本身進行標記。 一旦實例穩定,但尚未通過其生命周期,我們就可以成功完成CodeDeploy。

我們必須使用角色策略來授予實例列出和創建標簽的權限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeTags",
                "ec2:CreateTags",
                "ec2:DeleteTags"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

userdata腳本是通用的並且由參數驅動,因此我們可以在任何環境和功能設置下啟動任何實例。 當然,相同的方法也可以在Linux中使用。

這種方法解決了您正在描述的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM