When retrieving the AMI Creation Date from boto3 it returns a string
data type. Visually, this is okay but it is challenging to do operations and comparisons to the AMI Creation Date in this format.
To solve the issue we need to convert the AMI Creation Date from type string
to datetime
before we could do some operations.
The AMI Creation Date string looks like 2019-09-18T07:34:34.000Z
. To convert this we need to use the strptime
function from the datetime.datetime
library.
TL;DR: Below is a Python code to convert a boto3 AMI Creation Date string
to datetime
.
from datetime import datetime
ami_creation_date_str = ami_details['CreationDate']
ami_creation_date = datetime.strptime(ami_creation_date_str, "%Y-%m-%dT%H:%M:%S.%fZ")
Below are examples on how to use the conversion with boto3 EC2 Client and boto3 EC2 Service Resource.
Using Boto3 EC2 Client
import boto3
from datetime import datetime
AMI_ID = 'ami-5n0x0myrj8wl8kpud'
ec2_client = boto3.client('ec2')
ami_details_list = ec2_client.describe_images(ImageIds=[AMI_ID], Owners=['self'])['Images']
ami_details = ami_details_list[0]
ami_creation_date_str = ami_details['CreationDate']
print(ami_creation_date_str)
print(type(ami_creation_date_str))
ami_creation_date = datetime.strptime(ami_creation_date_str, "%Y-%m-%dT%H:%M:%S.%fZ")
print(ami_creation_date)
print(type(ami_creation_date))
Using Boto3 EC2 Service Resources
import boto3
from datetime import datetime
AMI_ID = 'ami-5n0x0myrj8wl8kpud'
ec2_resource = boto3.resource('ec2')
ami_details = ec2_resource.Image(AMI_ID)
ami_creation_date_str = ami_details.creation_date
print(ami_creation_date_str)
print(type(ami_creation_date_str))
ami_creation_date = datetime.strptime(ami_creation_date_str, "%Y-%m-%dT%H:%M:%S.%fZ")
print(ami_creation_date)
print(type(ami_creation_date))
Let me know in the comments section if the above helped. You can also comment on your use case and let me solve your issue.
Thank you. This certainly helped me. However, I had one more question. Since the date is in string format in the response, how can I sort the AMIs based on the date? Please help