即使配置了过滤器,AWS Lambda 函数也会停止所有实例

Posted

技术标签:

【中文标题】即使配置了过滤器,AWS Lambda 函数也会停止所有实例【英文标题】:AWS Lambda function stops all instances even the filter is configured 【发布时间】:2017-04-01 00:31:07 【问题描述】:

通过运行此代码,我只想停止带有标签 Class:ClassB 的实例。 测试功能后,关闭所有实例:

import boto3

ec2 = boto3.resource('ec2')

def lambda_handler(event, context):
    filters = ['Name': 'tag:Class', 'Values':['ClassB'],'Name': 'instance-state-name', 'Values': ['running']]
    instances=ec2.instances.filter(Filters=filters)
    for instance in instances:
        ec2.instances.stop()
        print 'stop your instances: ' + str(instances)

问题出在哪里?

【问题讨论】:

您的所有实例都有该标签吗?代码看起来不错。 @helloV 不,我只有两个带有这个标签的实例!是的,这很令人惊讶 【参考方案1】:

应该是:

instance.stop()

您的代码不正确:

ec2.instances.stop()

【讨论】:

以上是关于即使配置了过滤器,AWS Lambda 函数也会停止所有实例的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda:即使在STS:AssumeRole成功之后,lambda函数仍然使用旧的IAM角色

即使禁用离线,AWS AppSync 查询也会返回缓存响应

AWS lambda函数未终止线程

aws lambda list-functions 只过滤掉函数名称?

部署lambda函数时AccessDeniedException

从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数