Not able to generate image from cloudwatch method get_metric_widget_image boto3 sdk

0

Hi All, I am trying to retreive a snapshot of a cloudwatch metric using the below the code snippet

import boto3
import base64
from PIL import Image
cw=boto3.client("cloudwatch",region_name='us-east-1')
response = cw.get_metric_widget_image(
    MetricWidget='''{
    "view": "timeSeries",
    "stacked": false,
    "metrics": [
        [ "AWS/EC2", "CPUUtilization", "InstanceId", "i-0fcbc91098629eca6" ]
    ],
    "width": 1061,
    "height": 177,
    "start": "-PT168H",
    "end": "P0H"    
    }'''
)
img = Image.frombytes("L", (1000, 177), response["MetricWidgetImage"])
img1 = list(img.getdata())
print(img1)

but I am getting the below error: ValueError: not enough image data Acc. to documentation, the output of get_metric_widget_image method is an base64 encoded string, but the output looks like a byte string without any decoding How can we generate the image? Thankyou

asked 2 years ago682 views
1 Answer
0
Accepted Answer

I was able to get through this, using the below code:

im = Image.open(io.BytesIO(response["MetricWidgetImage"]))
im.save("cw-1.png")
answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions