패키지 버전 상태 업데이트 - CodeArtifact

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

패키지 버전 상태 업데이트

in CodeArtifact 의 모든 패키지 버전에는 패키지 버전의 현재 상태와 가용성을 설명하는 상태가 있습니다. AWS CLI 및 콘솔을 모두 사용하여 패키지 버전 상태를 변경할 수 있습니다.

참고

사용 가능한 상태 목록을 포함한 패키지 버전 상태에 대한 자세한 내용은 패키지 버전 상태 섹션을 참조하세요.

패키지 버전 상태 업데이트

패키지 버전의 상태를 설정하면 리포지토리에서 패키지 버전을 완전히 삭제하지 않고도 패키지 버전 사용 방법을 제어할 수 있습니다. 예를 들어 패키지 버전의 상태가 Unlisted라면 정상적으로 다운로드할 수는 있지만, npm view 같은 명령으로 반환되는 패키지 버전 목록에 표시되지는 않습니다. UpdatePackageVersionsStatus APIWord를 사용하면 단일 API 호출에서 동일한 패키지의 여러 버전의 패키지 버전 상태를 설정할 수 있습니다. 다양한 상태에 대한 설명은 패키지 개요 섹션을 참조하세요.

update-package-versions-status 명령을 사용하여 패키지 버전의 상태를 Published, Unlisted 또는 Archived로 변경합니다. 명령을 사용하는 데 필요한 IAM 권한을 보려면 섹션을 참조하세요패키지 버전 상태를 업데이트하는 데 필요한 IAM 권한. 다음 예제는 npm 패키지 chalk 버전 4.1.0의 상태를 Archived로 설정합니다.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.1.0 --target-status Archived

샘플 출력:

{ "successfulVersions": { "4.1.0": { "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=", "status": "Archived" } }, "failedVersions": {} }

이 예제에서는 npm 패키지를 사용하지만 명령은 다른 형식에서도 동일하게 작동합니다. 단일 명령을 사용하여 여러 버전을 동일한 대상 상태로 전환할 수 있습니다. 다음 예제를 참조하세요.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.1.0 4.1.1 --target-status Archived

샘플 출력:

{ "successfulVersions": { "4.1.0": { "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=", "status": "Archived" }, "4.1.1": { "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=", "status": "Archived" } }, "failedVersions": {} }

게시한 패키지 버전은 Unfinished 상태로 되돌릴 수 없으며, 따라서 이 상태는 --target-status 파라미터 값으로 사용할 수 없습니다. 패키지 버전을 Disposed 상태로 전환하려면 아래 설명처럼 dispose-package-versions 명령을 대신 사용하세요.

패키지 버전 상태를 업데이트하는 데 필요한 IAM 권한

패키지에 대한 update-package-versions-status를 요청하려면 패키지 리소스에 대한 codeartifact:UpdatePackageVersionsStatus 권한이 있어야 합니다. 즉, 패키지별로 update-package-versions-status를 호출하는 권한을 부여할 수 있습니다. 예를 들어, npm 패키지update-package-versions-status에서를 호출할 수 있는 권한을 부여하는 IAM 정책 chalk 에는 다음과 같은 문이 포함됩니다.

{ "Action": [ "codeartifact:UpdatePackageVersionsStatus" ], "Effect": "Allow", "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/npm//chalk" }

범위가 지정된 npm 패키지의 상태 업데이트

범위가 지정된 npm 패키지 버전의 패키지 버전 상태를 업데이트하려면 --namespace 파라미터를 사용하세요. 예를 들어 @nestjs/core의 버전 8.0.0을 나열하지 않으려면 다음 명령을 사용합니다.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --namespace nestjs --package core --versions 8.0.0 --target-status Unlisted

Maven 패키지의 상태 업데이트

Maven 패키지에는 항상 그룹 ID가 있으며, 이를 CodeArtifact의 네임스페이스라고 합니다. update-package-versions-status를 호출할 때 --namespace 파라미터를 사용하여 Maven 그룹 ID를 지정합니다. 예를 들어 Maven 패키지 org.apache.logging.log4j:log4j의 버전 2.13.1을 보관하려면 다음 명령을 사용합니다.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format maven --namespace org.apache.logging.log4j --package log4j --versions 2.13.1 --target-status Archived

패키지 버전 개정 지정

패키지 버전 개정은 패키지 버전의 특정 자산 및 메타데이터 세트를 지정하는 문자열입니다. 패키지 버전 개정을 지정하여 특정 상태에 있는 패키지 버전의 상태를 업데이트할 수 있습니다. 패키지 버전 개정을 지정하려면 --version-revisions 파라미터를 사용하여, 쉼표로 구분된 패키지 버전 하나 이상과 패키지 버전 개정 쌍을 명령에 전달해야 합니다. 패키지 버전의 상태는 패키지 버전의 현재 개정이 지정된 값과 일치하는 경우에만 업데이트됩니다.

참고

--version-revisions 파라미터를 사용할 때는 —-versions 파라미터도 정의해야 합니다.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8bzVMJ4=" --versions 4.1.0 --target-status Archived

단일 명령으로 여러 버전을 업데이트하려면 쉼표로 구분된 버전 및 버전 개정 쌍 목록을 --version-revisions 옵션에 전달해야 합니다. 다음 예제 명령은 서로 다른 두 가지 패키지 버전과 패키지 버전 개정 쌍을 정의합니다.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=" --versions 4.1.0 4.0.0 --target-status Published

샘플 출력:

{ "successfulVersions": { "4.0.0": { "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=", "status": "Published" }, "4.1.0": { "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=", "status": "Published" } }, "failedVersions": {} }

여러 패키지 버전을 업데이트하는 경우 --version-revisions에 전달된 버전이 --versions에 전달된 버전과 동일해야 합니다. 개정을 잘못 지정하면 해당 버전의 상태가 업데이트되지 않습니다.

예상 상태 파라미터 사용

update-package-versions-status 명령은 패키지 버전의 예상 현재 상태 지정을 지원하는 --expected-status 파라미터를 제공합니다. 현재 상태가 --expected-status에 전달된 값과 일치하지 않으면 해당 패키지 버전의 상태가 업데이트되지 않습니다.

예:의 my_reponpm 패키지의 버전 4.0.0 및 4.1.0은 chalk 현재 상태가 입니다Published. 예상 상태를 Unlisted로 지정하는 update-package-versions-status를 호출하면, 상태 불일치 때문에 두 패키지 버전 모두가 업데이트되지 않습니다.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.1.0 4.0.0 --target-status Archived --expected-status Unlisted

샘플 출력:

{ "successfulVersions": {}, "failedVersions": { "4.0.0": { "errorCode": "MISMATCHED_STATUS", "errorMessage": "current status: Published, expected status: Unlisted" }, "4.1.0": { "errorCode": "MISMATCHED_STATUS", "errorMessage": "current status: Published, expected status: Unlisted" } } }

개별 패키지 버전 관련 오류

update-package-versions-status 호출 시 패키지 버전 상태가 업데이트되지 않는 데는 다양한 이유가 있습니다. 대표적인 이유는 패키지 버전 개정이 잘못 지정되었거나 예상 상태가 현재 상태와 일치하지 않는 것입니다. 이러한 경우 버전이 API 응답의 failedVersions 맵에 포함됩니다. 한 버전에 오류가 발생하면 update-package-versions-status에 대한 동일한 호출에 지정된 다른 버전을 건너뛰며 상태가 업데이트되지 않을 수 있습니다. 이러한 버전도 SKIPPED errorCode가 있는 failedVersions 맵에 포함됩니다.

현재 update-package-versions-status 구현에서는 하나 이상의 버전이 상태를 변경할 수 없는 경우 다른 버전은 모두 건너뜁니다. 즉, 모든 버전이 성공적으로 업데이트되거나 어떤 버전도 업데이트되지 않게 됩니다. 이 동작은 API 계약에서는 보장되지 않습니다. 향후 일부 버전은 성공할 수 있지만 다른 버전은에 대한 단일 호출에서 실패합니다update-package-versions-status.

다음 예제 명령에는 패키지 버전 개정 불일치 때문에 발생한 버전 상태 업데이트 실패가 포함되어 있습니다. 이 업데이트 실패 때문에 다른 버전 상태 업데이트 호출은 건너뛰게 됩니다.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=" --versions 4.1.0 4.0.0 --target-status Archived

샘플 출력:

{ "successfulVersions": {}, "failedVersions": { "4.0.0": { "errorCode": "SKIPPED", "errorMessage": "version 4.0.0 is skipped" }, "4.1.0": { "errorCode": "MISMATCHED_REVISION", "errorMessage": "current revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=, expected revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ=" } } }

패키지 버전 폐기

Disposed 패키지 상태는 도메인 소유자의 계정에 더 이상 자산 스토리지에 대한 요금이 청구되지 않도록 CodeArtifact 에서 패키지 자산을 영구적으로 삭제한다는 점을 Archived제외하고와 유사한 동작입니다. 각 패키지 버전 상태에 대한 자세한 내용은 패키지 버전 상태 섹션을 참조하십시오. 패키지 버전의 상태를 Disposed로 변경하려면 dispose-package-versions 명령을 사용합니다. 이 기능은 update-package-versions-status와는 별개인데, 패키지 버전 폐기는 되돌릴 수 없기 때문입니다. 패키지 자산은 삭제되기 때문에 버전 상태를 Archived, Unlisted 또는 Published로 되돌릴 수 없습니다. 폐기된 패키지 버전에 대해 취할 수 있는 유일한 조치는 delete-package-versions 명령을 사용하여 삭제하는 것입니다.

dispose-package-versions 성공적으로 호출하려면 호출하는 IAM 보안 주체가 패키지 리소스에 대한 codeartifact:DisposePackageVersions 권한을 가지고 있어야 합니다.

dispose-package-versions 명령의 동작은 update-package-versions-status와 비슷하며, 버전 개정예상 상태 섹션에서 설명하는 --version-revisions --expected-status 옵션의 동작도 마찬가지입니다. 예를 들어 다음 명령은 패키지 버전 폐기를 시도하지만 예상 상태가 일치하지 않아 실패하게 됩니다.

aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.0.0 --expected-status Unlisted

샘플 출력:

{ "successfulVersions": {}, "failedVersions": { "4.0.0": { "errorCode": "MISMATCHED_STATUS", "errorMessage": "current status: Published, expected status: Unlisted" } } }

--expected-statusPublished로 하여 동일한 명령을 다시 실행하면 폐기에 성공하게 됩니다.

aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.0.0 --expected-status Published

샘플 출력:

{ "successfulVersions": { "4.0.0": { "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=", "status": "Disposed" } }, "failedVersions": {} }