在 AWS CloudFormation 中,您可以使用 UserData 属性来指定在 EC2 实例启动时要执行的脚本命令。要停止 EC2 实例,您可以在 UserData 中使用合适的命令。
以下是一个示例 CloudFormation 模板,其中包含一个 EC2 实例和一个停止该实例的 UserData 脚本:
AWSTemplateFormatVersion: 2010-09-09
Resources:
MyEC2Instance:
Type: "AWS::EC2::Instance"
Properties:
ImageId: "ami-xxxxxxxx" # 请替换为您的 EC2 实例 AMI ID
InstanceType: "t2.micro"
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
# 这是一个停止 EC2 实例的 UserData 脚本
instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
aws ec2 stop-instances --instance-ids $instance_id --region ${AWS::Region}
在上面的示例中,我们使用 Fn::Base64 函数来将 UserData 脚本内容编码为 Base64 格式。在脚本中,我们首先使用 curl 命令获取当前 EC2 实例的 ID,并将其存储在 instance_id 变量中。然后,我们使用 awscli 命令 stop-instances 停止指定实例。
请注意,在 UserData 脚本中,您可以使用其他 AWS CLI 命令或 Shell 命令来执行其他操作,以满足您的需求。
然后,您可以使用此 CloudFormation 模板创建一个堆栈,以启动 EC2 实例并在启动时停止它。