Desidero consentire agli utenti di avviare un'istanza EC2 solo quando è necessario.Timeout durante l'avvio di un'istanza EC2 da AWS Lambda utilizzando boto3
così ho creato una funzione lambda per fare proprio questo:
import boto3
def lambda_handler(event, context):
ec2 = boto3.resource('ec2', region_name='eu-central-1')
return ec2.instances.filter(InstanceIds=['i-abc123']).start()
Ho anche aggiunto le seguenti autorizzazioni: IAM
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances"
],
"Resource": "arn:aws:ec2:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances"
],
"Resource": "*"
}
problema è che quando eseguo il Lambda ho cronometrato su.
BTW che esegue lo stesso codice esatto da un EC2 all'interno dello stesso VPC e stesse autorizzazioni, restituisce immediatamente.
Qualche idea?
Hai abilitato l'accesso VPC per la funzione Lambda? –
È stato effettuato l'installazione di una vera e propria ruoli IAM + utente in Lambda http://docs.aws.amazon.com/lambda/latest/dg/setting-up.html Potrebbe essere necessario fare chnage tuo arn risorsa da "" arn: aws: ec2: accoun-id: nome utente " Lo script lamdba richiede anche credenziali utente specifiche per determinare le risorse. – mootmoot
Ho configurato il VPC del lambda per essere uguale all'istanza EC2. – Michael