

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

# AWS CodeArtifact 개념
<a name="codeartifact-concepts"></a>

 CodeArtifact를 사용할 때 알아야 할 몇 가지 개념과 용어는 다음과 같습니다.

**Topics**
+ [자산](#welcome-concepts-asset)
+ [도메인](#welcome-concepts-domain)
+ [리포지토리](#welcome-concepts-repository)
+ [패키지](#welcome-concepts-package)
+ [패키지 그룹](#welcome-concepts-package-group)
+ [패키지 네임스페이스](#welcome-concepts-package-namespace)
+ [패키지 버전](#welcome-concepts-package-version)
+ [패키지 버전 개정](#welcome-concepts-package-version-revision)
+ [업스트림 리포지토리](#welcome-concepts-upstream)

## 자산
<a name="welcome-concepts-asset"></a>

**자산은 패키지 버전(예: `.tgz` npm 파일, 메이븐 POM 및 JAR 파일)과 관련된 CodeArtifact에 저장된 개별 파일입니다.

## 도메인
<a name="welcome-concepts-domain"></a>

리포지토리는 **도메인이라는 상위 수준 엔티티로 통합됩니다. 모든 패키지 자산과 메타데이터는 도메인에 저장되지만 리포지토리를 통해 소비됩니다. Maven JAR 파일과 같은 특정 패키지 자산은 해당 자산이 있는 리포지토리 개수와 관계없이 도메인당 한 번씩 저장됩니다. 도메인의 모든 자산과 메타데이터는 AWS Key Management Service ()에 저장된 것과 동일한 AWS KMS key (KMS 키)로 암호화됩니다AWS KMS.

각 리포지토리는 단일 도메인의 구성원이며 다른 도메인으로 이동할 수 없습니다.

도메인을 사용하면 여러 리포지토리에 조직 정책을 적용할 수 있습니다. 이 방식을 사용하면 도메인의 리포지토리에 액세스할 수 있는 계정과 패키지 소스로 사용할 수 있는 공용 리포지토리를 지정할 수 있습니다.

조직에 여러 도메인이 있을 수 있지만 게시된 아티팩트를 모두 포함하는 단일 프로덕션 도메인이 있는 것이 좋습니다. 이렇게 하면 팀이 조직 전체에서 패키지를 찾고 공유할 수 있습니다.

## 리포지토리
<a name="welcome-concepts-repository"></a>

CodeArtifact **리포지토리에는 [패키지 버전](#welcome-concepts-package-version) 세트가 포함되어 있으며, 각 패키지 버전은 [자산 세트](#welcome-concepts-asset)에 매핑됩니다. 리포지토리는 다국어 개체이며, 따라서 지원되는 모든 유형의 패키지가 단일 리포지토리에 포함될 수 있습니다. 각 리포지토리는 nuget CLI, npm CLI, Maven CLI(mvn), pip와 같은 도구를 사용하여 패키지를 가져오고 게시하기 위한 엔드포인트를 노출합니다. 도메인당 최대 1,000개의 리포지토리를 생성할 수 있습니다.

## 패키지
<a name="welcome-concepts-package"></a>

**패키지는 종속성을 해결하고 소프트웨어를 설치하는 데 필요한 소프트웨어 및 메타데이터 번들입니다. CodeArtifact에서 패키지는 패키지 이름, `@types/node`의 `@types` 같은 선택적 [네임스페이스](#welcome-concepts-package-namespace), 패키지 버전 세트, 패키지 수준 메타데이터(예: npm 태그)로 구성됩니다.

AWS CodeArtifact는 [Cargo](using-cargo.md), [generic](using-generic.md), [Maven](using-maven.md), [npm](using-npm.md), [NuGet](using-nuget.md), [PyPI](using-python.md), [Ruby](using-ruby.md), [Swift](using-swift.md) 패키지 형식을 지원합니다.

## 패키지 그룹
<a name="welcome-concepts-package-group"></a>

*패키지 그룹*은 패키지 형식, 패키지 네임스페이스 및 패키지 이름을 사용하여 정의된 패턴과 일치하는 여러 패키지에 구성을 적용하는 데 사용할 수 있습니다. 패키지 그룹을 사용하여 여러 패키지에 대한 패키지 원본 제어를 보다 편리하게 구성할 수 있습니다. 패키지 원본 제어는 새 패키지 버전의 수집 또는 게시를 차단하거나 허용하는 데 사용되며, 이를 통해 의존성 대체 공격이라는 악의적인 행위로부터 사용자를 보호합니다.

## 패키지 네임스페이스
<a name="welcome-concepts-package-namespace"></a>

일부 패키지 형식은 계층적 패키지 이름을 지원하여 패키지를 논리적 그룹으로 구성할 수 있고 이름 충돌을 방지하는 데 도움이 됩니다. 예를 들어 npm은 범위를 지원합니다. 자세한 내용은 [npm 범위 설명서](https://docs.npmjs.com/cli/v7/using-npm/scope)를 참조하세요. `@types/node` npm 패키지의 범위는 `@types`, 이름은 `node`입니다. `@types` 범위에는 다른 패키지 이름이 많습니다. CodeArtifact에서 범위('유형')는 패키지 네임스페이스라고 하고 이름('노드')은 패키지 이름이라고 합니다. Maven 패키지의 경우 패키지 네임스페이스는 Maven groupID에 해당합니다. `org.apache.logging.log4j:log4j` Maven 패키지에는 `org.apache.logging.log4j` groupID(패키지 네임스페이스)와 `log4j` artifactID(패키지 이름)가 있습니다. 일반 패키지의 경우 [네임스페이스](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html#namespace)가 필요합니다. PyPI와 같은 일부 패키지 형식은 npm 범위 또는 Maven GroupId와 유사한 개념의 계층적 이름을 지원하지 않습니다. 패키지 이름을 그룹화하는 방법이 없으면 이름 충돌을 피하기가 더 어려울 수 있습니다.

## 패키지 버전
<a name="welcome-concepts-package-version"></a>

**패키지 버전은 패키지의 특정 버전(예: `@types/node 12.6.9`)을 식별합니다. 버전 번호 형식과 의미 체계는 패키지 형식에 따라 다릅니다. 예를 들어, npm 패키지 버전은 [의미 체계 버전 관리 사양](https://semver.org/)을 준수해야 합니다. CodeArtifact 패키지 버전은 버전 식별자, 패키지 버전 수준 메타데이터 및 자산 세트로 구성됩니다.

## 패키지 버전 개정
<a name="welcome-concepts-package-version-revision"></a>

 **패키지 버전 개정은 패키지 버전의 특정 자산 및 메타데이터 세트를 식별하는 문자열입니다. 패키지 버전이 업데이트될 때마다 새 패키지 버전 개정이 생성됩니다. 예를 들어 Python 패키지 버전의 소스 배포 아카이브(**sdist**)를 게시하고 나중에 컴파일된 코드가 포함된 Python **휠**을 동일한 버전에 추가할 수 있습니다. **휠**을 게시하면 새 패키지 버전 개정이 생성됩니다.

## 업스트림 리포지토리
<a name="welcome-concepts-upstream"></a>

다운스트림 리포지토리의 리포지토리 엔드포인트에서 해당 리포지토리의 패키지 버전에 액세스할 수 있는 경우 한 리포지토리는 다른 리포지토리의 **업스트림입니다. 이 방식은 클라이언트의 관점에서 볼 때 두 리포지토리의 콘텐츠를 효과적으로 병합합니다. CodeArtifact를 사용하면 두 리포지토리 간에 업스트림 관계를 만들 수 있습니다.