aws lambda python函数重新启动ec2实例不工作
我有一个Lambda函数来重新启动实例:aws lambda python函数重新启动ec2实例不工作,python,amazon-ec2,aws-lambda,reboot,Python,Amazon Ec2,Aws Lambda,Reboot,我有一个Lambda函数来重新启动实例: import boto3 region = 'us-east-1' instances = ['i-xxxxxxxxxxxxxxxxxxxxxxxxxx'] ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): response = ec2.reboot_instances( InstanceIds=[
import boto3
region = 'us-east-1'
instances = ['i-xxxxxxxxxxxxxxxxxxxxxxxxxx']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
response = ec2.reboot_instances(
InstanceIds=[
'i-xxxxxxxxxxxxxxxxxxxxxx',
],
)
print(response)
它就是不起作用
触发时的响应:
{'ResponseMetadata':{'RequestId':
“12994c92-98ab-4b62-bc10-A0E0B4881AA”,“HTTPStatusCode”:200,
'HTTPHeaders':{'x-amzn-requestid':
“12994c92-98ab-4b62-bc10-A0E0B4881AA”,“内容类型”:
'text/xml;charset=UTF-8','content-length':'231','date':'Sun,30
2020年8月15:44:40格林尼治标准时间,“服务器”:“AmazonEC2”},“重试尝试”:0}
有趣的是:如果我将ec2.reboot_实例更改为ec2.start_实例,那么它就可以工作了
因此,我试图找出为什么会拒绝重新启动命令,而接受启动/停止命令
注意:我在IAM中包含了重新启动实例的权限。该实例是一个linux openvpn服务器AMI包我使用了与您相同的代码,您只需再检查一步: 在为Lambda分配的IAM帐户中添加“RebootInstances”访问权限。 如果您按照文档创建IAM策略,它将如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*",
"ec2:Reboot*" // <-----Add this
],
"Resource": "*"
}
]
}
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“行动”:[
“日志:CreateLogGroup”,
“日志:CreateLogStream”,
“日志:PutLogEvents”
],
“资源”:“arn:aws:logs:**”
},
{
“效果”:“允许”,
“行动”:[
“ec2:启动*”,
“ec2:停止*”,
“ec2:重新启动*”//您确定它不工作吗?检查CloudTrail以查看API操作是否为firedSo您有200个响应是否可以在再次调用lambda后使用bellow命令>正常运行时间检查服务器启动时间?因此,您有200个响应是否可以在再次调用lambda后使用bellow命令>正常运行时间检查服务器启动时间?您说它与start\u实例()一起工作
--这是否意味着实例处于停止状态?您如何确认重新启动是否工作?我认为它不会出现在系统状态,您需要连接到实例才能知道它是否工作。@ChrisWilliams感谢您的回复。创建了cloudtrail日志,但它不会记录任何操作。