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 버전에 대한 세부 정보도 포함돼 있어요.