Voici la fonction Lambda, j'ai écrit que récupère la liste des groupes d'analyse dynamique et les imprime.AWS Lambda: Impossible d'importer le module 'lambda_function': Aucun module nommé boto.ec2.autoscale
import json
import boto3
import boto.ec2.autoscale
role = "arn:aws:iam::XXXXXXXXXX:role/lambda-autoshutdown-role"
regions = ["eu-central-1"]
autoscaling = boto3.client('autoscaling')
class App(object):
def __init__(self,RoleArn):
self.RoleArn = RoleArn
if self.RoleArn != "local":
sts_client = boto3.client('sts')
self.sts = sts_client.assume_role(
RoleArn=self.RoleArn,
RoleSessionName="lambda_poweroff")["Credentials"]
def get_resource(self,region="eu-central-1"):
if self.RoleArn == "local":
return boto3.resource(region_name=region)
else:
return boto.ec2.autoscale.connect_to_region(
region_name=region,
aws_access_key_id=self.sts['AccessKeyId'],
aws_secret_access_key=self.sts['SecretAccessKey'],)
def lambda_handler(event, context):
a = App(role)
for region in regions:
asgs = a.get_resource(region)
# locate all running instances
#autoscaling_groups_to_suspend = []
#for i in asgs:
# print asgs[i]
print '[%s]' % ', '.join(map(str, asgs))
Cette fonction utilise: boto.ec2.autoscale.connect_to_region
pour se connecter et renvoie l'objet.
Mais lorsque je tente de le déployer sur AWS, je reçois l'erreur suivante:
Unable to import module 'lambda_function': No module named boto.ec2.autoscale
Il semble que le boto.ec2.autoscale de classe n'est pas chargé par AWS.
Une idée de ce qui pourrait être mauvais ici?
Je ne veux pas utiliser boto3. client ('autoscaling') comme la méthode describe_auto_scaling_groups() retourne un dict JSON, je suis intéressé par un type de retour qui est soit un tableau soit une liste et 'get_resource' renvoie une liste. – Spaniard89