![](/img/trans.png)
[英]Using the ruby SDK, how can I get an SSL certificate signed for my AWS EC2 instance?
[英]How can I trigger an event or notification when an AWS SSM RunCommand Script completes executing on my EC2 Instance?
我正在編寫一個應用程序(使用 AWS Ruby SDK/API)在 AWS EC2 實例上部署另一個應用程序。 具體來說,我將它部署為 4 個 ec2 實例的 ECS 集群,然后啟動 ECS 任務(不是服務),每個 ec2 實例上一個並運行這些 docker 映像。 這一切正常。 問題是在某些時候我需要在我的 ECR 存儲庫中保存這些 docker 圖像之一。 我通過使用簡單系統管理器 (SSM) 的 aws:runShellScript 在 ECS 容器實例上運行命令來做到這一點。 該命令可能需要 1-4 分鍾,我無法確定命令何時完成。 現在我做了一個睡眠,然后從存儲庫中獲取標記的容器圖像,這很容易出錯。
有沒有什么辦法:
以下是我能想到的一些選項:
send_command
API 采用notification_config
參數,您可以配置該參數以在命令處於某些狀態(例如“成功”狀態)時向 SNS 主題發送通知。 這可能是監視命令狀態的最佳選擇。完成發布到 SNS 主題的操作后,您可以將 Lambda 函數配置為由該 SNS 主題中的消息觸發。
我通過定期檢查命令的狀態是否不再是“InProgress”來解決這個問題。 代碼在 bash 中,但邏輯也應該適用於其他地方。
ID="instance_id"
COMMAND_ID=$(aws ssm send-command --instance-ids $ID --document-name "AWS-RunShellScript"
--parameters commands="python" --output text --query "Command.CommandId")
STATUS=$(aws ssm list-commands --instance-id $ID --command-id $COMMAND_ID
--query "Commands[0].Status")
while [ $STATUS "==" '"InProgress"' ]; do
sleep 30;
STATUS=$(aws ssm list-commands --instance-id $ID --command-id $COMMAND_ID
--query "Commands[0].Status");
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.