Hello Amazon ECR

Hello Amazon ECR

Java, Kotlin, Python(Boto3) SDK로 Amazon ECR 사용을 시작하는 코드 예제를 함께 살펴볼게요. 각 예제는 리포지토리에 있는 이미지의 태그를 나열하는 방식으로 동작해요.

출처: 문서

본문

다음 코드 예제는 Amazon ECR 사용을 시작하는 방법을 보여줘요.

Java (SDK for Java 2.x)

참고 (Note) GitHub에 더 많은 내용이 있어요. 전체 예제를 확인하고 설정·실행 방법을 배우려면 AWS Code Examples Repository를 참고하세요.

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ecr.EcrClient;
import software.amazon.awssdk.services.ecr.model.EcrException;
import software.amazon.awssdk.services.ecr.model.ListImagesRequest;
import software.amazon.awssdk.services.ecr.paginators.ListImagesIterable;

public class HelloECR {

    public static void main(String[] args) {
        final String usage = """
            Usage:    <repositoryName> 

            Where:
               repositoryName - The name of the Amazon ECR repository. 
            """;

        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String repoName = args[0];
        EcrClient ecrClient = EcrClient.builder()
            .region(Region.US_EAST_1)
            .build();

        listImageTags(ecrClient, repoName);
    }
    public static void listImageTags(EcrClient ecrClient, String repoName){
        ListImagesRequest listImagesPaginator = ListImagesRequest.builder()
            .repositoryName(repoName)
            .build();

        ListImagesIterable imagesIterable = ecrClient.listImagesPaginator(listImagesPaginator);
        imagesIterable.stream()
            .flatMap(r -> r.imageIds().stream())
            .forEach(image -> System.out.println("The docker image tag is: " +image.imageTag()));
    }
}

API 세부 사항은 AWS SDK for Java 2.x API Reference에서 listImages를 참고하세요.

Kotlin (SDK for Kotlin)

참고 (Note) GitHub에 더 많은 내용이 있어요. 전체 예제를 확인하고 설정·실행 방법을 배우려면 AWS Code Examples Repository를 참고하세요.

import aws.sdk.kotlin.services.ecr.EcrClient
import aws.sdk.kotlin.services.ecr.model.ListImagesRequest
import kotlin.system.exitProcess

suspend fun main(args: Array<String>) {
    val usage = """
            Usage: <repositoryName> 

            Where:
               repositoryName - The name of the Amazon ECR repository. 
            
    """.trimIndent()

    if (args.size != 1) {
        println(usage)
        exitProcess(1)
    }

    val repoName = args[0]
    listImageTags(repoName)
}

suspend fun listImageTags(repoName: String?) {
    val listImages =
        ListImagesRequest {
            repositoryName = repoName
        }

    EcrClient.fromEnvironment { region = "us-east-1" }.use { ecrClient ->
        val imageResponse = ecrClient.listImages(listImages)
        imageResponse.imageIds?.forEach { imageId ->
            println("Image tag: ${imageId.imageTag}")
        }
    }
}

API 세부 사항은 AWS SDK for Kotlin API reference에서 listImages를 참고하세요.

Python (SDK for Python (Boto3))

참고 (Note) GitHub에 더 많은 내용이 있어요. 전체 예제를 확인하고 설정·실행 방법을 배우려면 AWS Code Examples Repository를 참고하세요.

import boto3
import argparse
from boto3 import client


def hello_ecr(ecr_client: client, repository_name: str) -> None:
    """
    Use the AWS SDK for Python (Boto3) to create an Amazon Elastic Container Registry (Amazon ECR)
    client and list the images in a repository.
    This example uses the default settings specified in your shared credentials
    and config files.

    :param ecr_client: A Boto3 Amazon ECR Client object. This object wraps
                             the low-level Amazon ECR service API.
    :param repository_name: The name of an Amazon ECR repository in your account.
    """
    print(
        f"Hello, Amazon ECR! Let's list some images in the repository '{repository_name}':\n"
    )
    paginator = ecr_client.get_paginator("list_images")
    page_iterator = paginator.paginate(
        repositoryName=repository_name, PaginationConfig={"MaxItems": 10}
    )

    image_names: [str] = []
    for page in page_iterator:
        for schedule in page["imageIds"]:
            image_names.append(schedule["imageTag"])

    print(f"{len(image_names)} image(s) retrieved.")
    for schedule_name in image_names:
        print(f"\t{schedule_name}")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Run hello Amazon ECR.")
    parser.add_argument(
        "--repository-name",
        type=str,
        help="the name of an Amazon ECR repository in your account.",
        required=True,
    )
    args = parser.parse_args()

    hello_ecr(boto3.client("ecr"), args.repository_name)

API 세부 사항은 AWS SDK for Python (Boto3) API Reference에서 listImages를 참고하세요.

AWS SDK 개발자 가이드와 코드 예제의 전체 목록은 Using Amazon ECR with an AWS SDK를 참고하세요. 이 주제에는 시작하기(getting started) 정보와 이전 SDK 버전에 대한 세부 정보도 포함돼 있어요.

더 알아보기 (Learn more)