-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlambda.py
More file actions
43 lines (34 loc) · 1.11 KB
/
Copy pathlambda.py
File metadata and controls
43 lines (34 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import os
import requests
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
SECRET = os.environ.get("LAMBDA_API_KEY", None)
assert SECRET is not None, "LAMBDA_API_KEY is not set"
def get_instance_ids():
url = "https://cloud.lambda.ai/api/v1/instances"
response = requests.get(url, auth=(SECRET, ''))
return [instance['id'] for instance in response.json()['data']]
def terminate_instances(instance_ids):
url = "https://cloud.lambda.ai/api/v1/instance-operations/terminate"
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.post(
url,
auth=(SECRET, ''),
json={"instance_ids": instance_ids},
headers=headers,
timeout=30,
)
response.raise_for_status()
return response.json()
if __name__ == "__main__":
ids = get_instance_ids()
logger.info(f"Active instances: {ids}")
logger.info(f"Terminating {len(ids)} instances")
logger.info(terminate_instances(ids))