Я пытаюсь сравнить время экземпляра объекта AWS EC2, имеющего тип datetime, с другим datetime, представленным как datetime.datetime.now. Соответствующая строка кода выглядит так:
if launchTime < datetime.datetime.now()-datetime.timedelta(seconds=20):
Где launchTime имеет тип datetime. Однако, когда я запускаю его, я получаю ошибку
can't compare offset-naive and offset-aware datetimes: TypeError
И я не уверен, как конвертировать launchTime таким образом, чтобы я мог успешно сравнить его.
Отредактированный фиксированный код ниже -----------------------------------------
if launchTime.replace(tzinfo=None) < datetime.datetime.now()-datetime.timedelta(minutes=4):
Полный код на случай, если кто-нибудь из будущих людей найдет его полезным. Это Python 3, чтобы остановить экземпляры EC2, которые работали в течение «х» времени. В этом случае, если экземпляр работает в течение пяти минут. Прекрати это. Сама лямбда настроена на Cloudwatch для работы каждые 4 минуты.
import boto3
import time
import datetime
#for returning data about our newly created instance later on in fuction
client = boto3.client('ec2')
def lambda_handler(event, context):
response = client.describe_instances()
#for each instance currently running/terminated/stopped
for r in response['Reservations']:
for i in r['Instances']:
#if its running then we want to see if its been running for more then 3 hours. If it has then we stop it.
if i["State"]["Name"] == "running":
launchTime = i["LaunchTime"]
#can change minutes=4 to anything
if launchTime.replace(tzinfo=None) < datetime.datetime.now()-datetime.timedelta(minutes=4):
response = client.stop_instances(
InstanceIds=[
i["InstanceId"]
]
)