使用CFN-Signal在AWS CloudFormation中確保部署完成 CloudFormation是AWS提供的一個強大的基礎架構即代碼(Infrastructure as Code)服務,它可以讓我們以JSON或YAML格式定義AWS資源並自動化部署它們。然而,有時候在CloudFormation的 Stack 顯示為CREATE_COMPLETE時,實際上某些資源可能尚未完全部署完成,特別是當EC2實例需要執行一些長時間的初始化腳本時。這種情況下,就需要一種方法來通知CloudFormation,讓它知道部署的確已經完成,這就是CFN-Signal的用途所在。 CFN-Signal是一個工具,它可以發送通知給CloudFormation,告訴它特定資源的初始化過程已經完成。讓我們來看看如何在AWS CloudFormation template 中使用CFN-Signal來確保部署的完整性。 步驟一:安裝pip在EC2 首先,在EC2實例上安裝pip,這是Python的套件管理器。 使用以下命令來安裝pip: bash sudo apt update sudo apt install python3-pip -y 步驟二:安裝CFN-Signal 接下來,需要安裝CFN-Signal。使用pip來安裝它: bash sudo pip3 install cfn-signal 步驟三:發通知給CloudFormation 在部署腳本中,當初始化工作完成時,使用CFN-Signal向CloudFormation發送信號。例如,在User Data腳本中,可以添加類似以下的命令: bash #!/bin/bash # Your initialization script goes here # Signal to CloudFormation that the resource is successfully initialized /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyEC2Instance 這將向CloudFormation發送一個信號,告訴它MyEC2Instance資源的初始化已經完成。請注意,`$?`是退出狀態,如果上一個命令成功執行,它將為