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

gefragt vor 2 Jahren695 Aufrufe
1 Antwort
0
Akzeptierte Antwort

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

im = Image.open(io.BytesIO(response["MetricWidgetImage"]))
im.save("cw-1.png")
beantwortet vor 2 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen