簡體   English   中英

嘗試使用 python boto3 從 ECR 圖像打印 output

[英]trying to print output from an ECR image with python boto3

我正在嘗試使用 python boto3 從 ECR 圖像打印 output。 我可以讓它打印出 imageDigest,但我想添加 imageTag。 任何人都可以想辦法添加 imageTag 嗎? 我嘗試過的所有方法都出錯了。

import json
import boto3


def get_reponames():
    client = boto3.client('ecr')
    reponames = [repo['repositoryName'] for repo in client.describe_repositories()['repositories']]

    return reponames


def get_imageids(prepo):
    client = boto3.client('ecr')
    imageids = [img['imageDigest'] for img in client.list_images(repositoryName=prepo,)['imageIds']]

    return imageids


def lambda_handler(event, context):
    
    output = get_reponames()
    for rn in output:
        print(rn)
        outputii = get_imageids(rn)
        for ii in outputii:
            print(ii)
    
    return {
        'body': json.dumps("hello world")
    }

我將在下面發布 list_images 的 output。 上面的代碼可以顯示 imageDigest,但我也想添加 imageTag。

{
    'imageIds': [
        {
            'imageDigest': 'sha256:764f63476bdff6d83a09ba2a818f0d35757063724a9ac3ba5019c56f74ebf42a',
            'imageTag': 'precise',
        },
    ],
    'ResponseMetadata': {
        '...': '...',
    },
}

你的get_imageids function 只返回imageDigest所以你不能在lambda_handler function 上訪問它。你需要返回imageTag以及在lambda_handler上閱讀它

import json
import boto3


def get_reponames():
    client = boto3.client('ecr')
    reponames = [repo['repositoryName'] for repo in client.describe_repositories()['repositories']]

    return reponames


def get_imageids(prepo):
    client = boto3.client('ecr')
    imageids = [
        {"digest": img['imageDigest'], "tag": img.get('imageTag', None)} for img in
        client.list_images(repositoryName=prepo, )['imageIds']
    ]

    return imageids


def lambda_handler(event, context):
    output = get_reponames()
    for rn in output:
        print(rn)
        outputii = get_imageids(rn)
        for ii in outputii:
            print(f"digest : {ii['digest']}, tag: {ii['tag']}")

    return {
        'body': json.dumps("hello world")
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM