AWS SDK 또는 CLI로 DescribeImages 사용하기
AWS SDK 또는 CLI로 DescribeImages 사용하기
다음 코드 예제는 AWS SDK와 CLI에서 DescribeImages를 사용하는 방법을 보여줍니다. 액션 예제는 더 큰 프로그램에서 발췌한 코드 조각이므로 문맥 안에서 실행해야 합니다. 이 액션은 다음 코드 예제에서 문맥과 함께 살펴볼 수 있습니다: 기본 익히기(Learn the basics).
출처: 문서
본문
CLI
AWS CLI
리포지토리의 이미지 설명하기
다음 describe-images 예제는 cluster-autoscaler 리포지토리에서 v1.13.6 태그를 가진 이미지에 대한 세부 정보를 표시합니다.
aws ecr describe-images \
--repository-name cluster-autoscaler \
--image-ids imageTag=v1.13.6
출력:
{
"imageDetails": [
{
"registryId": "012345678910",
"repositoryName": "cluster-autoscaler",
"imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5",
"imageTags": [
"v1.13.6"
],
"imageSizeInBytes": 48318255,
"imagePushedAt": 1565128275.0
}
]
}
API 세부 정보는 AWS CLI Command Reference의 DescribeImages를 참조하세요.
Java
SDK for Java 2.x
참고: GitHub에 더 많은 내용이 있습니다. 전체 예제를 찾아 설정하고 실행하는 방법은 AWS Code Examples Repository에서 확인하세요.
/**
* Verifies the existence of an image in an Amazon Elastic Container Registry (Amazon ECR) repository asynchronously.
*
* @param repositoryName The name of the Amazon ECR repository.
* @param imageTag The tag of the image to verify.
* @throws EcrException if there is an error retrieving the image information from Amazon ECR.
* @throws CompletionException if the asynchronous operation completes exceptionally.
*/
public void verifyImage(String repositoryName, String imageTag) {
DescribeImagesRequest request = DescribeImagesRequest.builder()
.repositoryName(repositoryName)
.imageIds(ImageIdentifier.builder().imageTag(imageTag).build())
.build();
CompletableFuture<DescribeImagesResponse> response = getAsyncClient().describeImages(request);
response.whenComplete((describeImagesResponse, ex) -> {
if (ex != null) {
if (ex instanceof CompletionException) {
Throwable cause = ex.getCause();
if (cause instanceof EcrException) {
throw (EcrException) cause;
} else {
throw new RuntimeException("Unexpected error: " + cause.getMessage(), cause);
}
} else {
throw new RuntimeException("Unexpected error: " + ex.getCause());
}
} else if (describeImagesResponse != null && !describeImagesResponse.imageDetails().isEmpty()) {
System.out.println("Image is present in the repository.");
} else {
System.out.println("Image is not present in the repository.");
}
});
// Wait for the CompletableFuture to complete.
response.join();
}
API 세부 정보는 AWS SDK for Java 2.x API Reference의 DescribeImages를 참조하세요.
Kotlin
SDK for Kotlin
참고: GitHub에 더 많은 내용이 있습니다. 전체 예제를 찾아 설정하고 실행하는 방법은 AWS Code Examples Repository에서 확인하세요.
/**
* Verifies the existence of an image in an Amazon Elastic Container Registry (Amazon ECR) repository asynchronously.
*
* @param repositoryName The name of the Amazon ECR repository.
* @param imageTag The tag of the image to verify.
*/
suspend fun verifyImage(
repoName: String?,
imageTagVal: String?,
) {
require(!(repoName == null || repoName.isEmpty())) { "Repository name cannot be null or empty" }
require(!(imageTagVal == null || imageTagVal.isEmpty())) { "Image tag cannot be null or empty" }
val imageId =
ImageIdentifier {
imageTag = imageTagVal
}
val request =
DescribeImagesRequest {
repositoryName = repoName
imageIds = listOf(imageId)
}
EcrClient.fromEnvironment { region = "us-east-1" }.use { ecrClient ->
val describeImagesResponse = ecrClient.describeImages(request)
if (describeImagesResponse != null && !describeImagesResponse.imageDetails?.isEmpty()!!) {
println("Image is present in the repository.")
} else {
println("Image is not present in the repository.")
}
}
}
API 세부 정보는 AWS SDK for Kotlin API reference의 DescribeImages를 참조하세요.
Python
SDK for Python (Boto3)
참고: GitHub에 더 많은 내용이 있습니다. 전체 예제를 찾아 설정하고 실행하는 방법은 AWS Code Examples Repository에서 확인하세요.
class ECRWrapper:
def __init__(self, ecr_client: client):
self.ecr_client = ecr_client
@classmethod
def from_client(cls) -> "ECRWrapper":
"""
Creates a ECRWrapper instance with a default Amazon ECR client.
:return: An instance of ECRWrapper initialized with the default Amazon ECR client.
"""
ecr_client = boto3.client("ecr")
return cls(ecr_client)
def describe_images(
self, repository_name: str, image_ids: list[str] = None
) -> list[dict]:
"""
Describes ECR images.
:param repository_name: The name of the repository to describe images for.
:param image_ids: The optional IDs of images to describe.
:return: The list of image descriptions.
"""
try:
params = {
"repositoryName": repository_name,
}
if image_ids is not None:
params["imageIds"] = [{"imageTag": tag} for tag in image_ids]
paginator = self.ecr_client.get_paginator("describe_images")
image_descriptions = []
for page in paginator.paginate(**params):
image_descriptions.extend(page["imageDetails"])
return image_descriptions
except ClientError as err:
logger.error(
"Couldn't describe images. Here's why %s",
err.response["Error"]["Message"],
)
raise
API 세부 정보는 AWS SDK for Python (Boto3) API Reference의 DescribeImages를 참조하세요.
SAP ABAP
SDK for SAP ABAP
참고: GitHub에 더 많은 내용이 있습니다. 전체 예제를 찾아 설정하고 실행하는 방법은 AWS Code Examples Repository에서 확인하세요.
TRY.
" iv_repository_name = 'my-repository'
" it_image_ids = VALUE #( ( NEW /aws1/cl_ecrimageidentifier( iv_imagetag = 'latest' ) ) )
IF it_image_ids IS NOT INITIAL.
oo_result = lo_ecr->describeimages(
iv_repositoryname = iv_repository_name
it_imageids = it_image_ids ).
ELSE.
oo_result = lo_ecr->describeimages(
iv_repositoryname = iv_repository_name ).
ENDIF.
DATA(lt_image_details) = oo_result->get_imagedetails( ).
MESSAGE |Found { lines( lt_image_details ) } images in repository.| TYPE 'I'.
CATCH /aws1/cx_ecrrepositorynotfndex.
MESSAGE 'Repository not found.' TYPE 'I'.
CATCH /aws1/cx_ecrimagenotfoundex.
MESSAGE 'Image not found.' TYPE 'I'.
CATCH /aws1/cx_ecrinvalidparameterex.
MESSAGE 'Invalid parameter provided.' TYPE 'I'.
ENDTRY.
API 세부 정보는 AWS SDK for SAP ABAP API reference의 DescribeImages를 참조하세요.
AWS SDK 개발자 가이드와 코드 예제의 전체 목록은 AWS SDK로 Amazon ECR 사용하기를 참조하세요. 이 주제에는 시작하기 정보와 이전 SDK 버전에 대한 세부 정보도 포함되어 있습니다.