

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

# 패키지 버전 상태 업데이트
<a name="update-package-version-status"></a>

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

**참고**  
사용 가능한 상태 목록을 포함한 패키지 버전 상태에 대한 자세한 내용은 [패키지 버전 상태](packages-overview.md#package-version-status) 섹션을 참조하세요.

## 패키지 버전 상태 업데이트
<a name="updating-pv-status"></a>

패키지 버전의 상태를 설정하면 리포지토리에서 패키지 버전을 완전히 삭제하지 않고도 패키지 버전 사용 방법을 제어할 수 있습니다. 예를 들어 패키지 버전의 상태가 `Unlisted`라면 정상적으로 다운로드할 수는 있지만, `npm view` 같은 명령으로 반환되는 패키지 버전 목록에 표시되지는 않습니다. [UpdatePackageVersionsStatus API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html)를 사용하면 단일 API 직접 호출로 동일한 패키지의 여러 버전에 대한 패키지 버전 상태를 설정할 수 있습니다. 다양한 상태에 대한 설명은 [패키지 개요](packages-overview.md) 섹션을 참조하세요.

`update-package-versions-status` 명령을 사용하여 패키지 버전의 상태를 `Published`, `Unlisted` 또는 `Archived`로 변경합니다. 명령을 사용하는 데 필요한 IAM 권한을 보려면 [패키지 버전 상태를 업데이트하는 데 필요한 IAM 권한](#update-package-version-status-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 권한
<a name="update-package-version-status-iam"></a>

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

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

## 범위가 지정된 npm 패키지의 상태 업데이트
<a name="update-package-version-status-scoped-npm"></a>

범위가 지정된 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 패키지의 상태 업데이트
<a name="update-package-version-status-maven"></a>

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
```

## 패키지 버전 개정 지정
<a name="update-status-specify-package-version-revision"></a>

패키지 버전 개정은 패키지 버전의 특정 자산 및 메타데이터 세트를 지정하는 문자열입니다. 패키지 버전 개정을 지정하여 특정 상태에 있는 패키지 버전의 상태를 업데이트할 수 있습니다. 패키지 버전 개정을 지정하려면 `--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`에 전달된 버전과 동일해야 합니다. 개정을 잘못 지정하면 해당 버전의 상태가 업데이트되지 않습니다.

## 예상 상태 파라미터 사용
<a name="using-expected-status"></a>

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

예를 들어 *my\$1repo*의 경우 npm 패키지 `chalk`의 버전 4.0.0 및 4.1.0은 현재 상태가 `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"
        }
    }
}
```

## 개별 패키지 버전 관련 오류
<a name="update-package-version-status-errors"></a>

`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="
        }
    }
}
```

## 패키지 버전 폐기
<a name="dispose-package-versions"></a>

`Disposed` 패키지 상태는 `Archived`에 대한 동작과 비슷하지만, CodeArtifact에서 패키지 자산을 영구적으로 삭제하기 때문에 도메인 소유자의 계정에 자산 스토리에 대한 요금이 더 이상 청구되지 않는다는 점이 다릅니다. 각 패키지 버전 상태에 대한 자세한 내용은 [패키지 버전 상태](packages-overview.md#package-version-status) 섹션을 참조하십시오. 패키지 버전의 상태를 `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`와 비슷하며, [버전 개정](#update-status-specify-package-version-revision) 및 [예상 상태](#using-expected-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-status`를 `Published`로 하여 동일한 명령을 다시 실행하면 폐기에 성공하게 됩니다.

```
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": {}
}
```