如果 `user-data` 脚本以非零状态代码退出,如何终止 EC2 实例?

问题描述 投票:0回答:1

因此创建了 EC2,但

user-data
失败了,例如。语法错误,某些命令失败等

如果

user-data
运行不成功,如何自动终止此类实例?

amazon-ec2 user-data cloud-init
1个回答
0
投票

如果我想出一个在用户数据脚本失败时自动终止 EC2 实例的解决方案,我将在用户数据脚本中添加错误处理,以便在任何命令失败时使用 AWS CLI 终止实例。像这样的东西:

#!/bin/bash
set -e  # to stop script execution on any error

# Example command that might fail
let’s-assume-your-command-is-here || { 
    echo "Command failed"; 
    aws ec2 terminate-instances --instance-ids $(curl http://169.254.169.254/latest/meta-data/instance-id) --region $(curl http://169.254.169.254/latest/meta-data/placement/region); 
    exit 1; 
}

如果您想探索此方法,请确保 EC2 实例具有有权终止自身的 IAM 角色。它需要这样的政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:TerminateInstances",
            "Resource": "*" # you can make this more specific
        }
    ]
}

我还建议您通过模拟故障进行测试,以确保它按预期终止。

  • 确保实例中安装了 AWS CLI。
  • 出于调试目的,考虑在终止之前实现日志记录(例如 S3 或 CloudWatch)。

这就是我处理这个场景的方法。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.