패키지 개요 - CodeArtifact

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

패키지 개요

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

지원되는 패키지 형식

AWS CodeArtifact npm, PyPI, 메이븐, 스위프트 NuGet, 루비 , 일반 패키지 형식을 지원합니다.

패키지 게시

npm,,twine, Maven 및 등의 도구를 사용하여 지원되는 모든 패키지 형식의 새 버전을 CodeArtifact 저장소에 게시할 수 있습니다. Gradle nuget dotnet

게시 권한

AWS Identity and Access Management (IAM) 사용자 또는 역할에 대상 저장소에 게시할 권한이 있어야 합니다. 패키지를 게시하려면 다음 권한이 필요합니다.

  • Maven: codeartifact:PublishPackageVersion, codeartifact:PutPackageMetadata

  • npm: codeartifact:PublishPackageVersion

  • NuGet: codeartifact:PublishPackageVersioncodeartifact:ReadFromRepository

  • Python: codeartifact:PublishPackageVersion

  • 일반: codeartifact:PublishPackageVersion

  • 스위프트: codeartifact:PublishPackageVersion

  • 루비: codeartifact:PublishPackageVersion

위의 권한 목록에서 IAM 정책은 codeartifact:PublishPackageVersioncodeartifact:PutPackageMetadata 권한에 대한 package 리소스를 지정해야 합니다. 또한 codeartifact:ReadFromRepository 권한에 사용할 repository 리소스도 지정해야 합니다.

의 권한에 대한 자세한 내용은 CodeArtifact 을 참조하십시오AWS CodeArtifact 사용 권한 참조.

패키지 자산 덮어쓰기

이미 존재하며 콘텐츠가 다른 패키지 자산은 다시 게시할 수 없습니다. 예를 들어 Maven 패키지를 JAR 자산 mypackage-1.0.jar과 함께 이미 게시했다고 가정해 보겠습니다. 이 자산은 이전 자산과 새 자산의 체크섬이 동일한 경우에만 다시 게시할 수 있습니다. 새 콘텐츠가 있는 동일한 자산을 다시 게시하려면 먼저 delete-package-versions 명령을 이용해 패키지 버전을 삭제하세요. 콘텐츠가 다른 동일한 자산 이름을 다시 게시하려고 하면 HTTP 409 충돌 오류가 발생합니다.

여러 자산을 지원하는 패키지 형식(일반, PyPI 및 Maven)의 경우, 필요한 권한이 있다면 기존 패키지 버전에 이름이 다른 새 자산을 추가할 수 있습니다. 일반 패키지의 경우 패키지 버전이 Unfinished 상태에 있는 한 새 자산을 추가할 수 있습니다. npm은 패키지 버전당 자산 하나만 지원하므로, 게시된 패키지 버전을 어떤 식으로든 수정하려면 먼저 delete-package-versions를 사용하여 패키지 버전을 삭제해야 합니다.

이미 존재하는 자산(예:mypackage-1.0.jar)을 다시 게시하려고 할 때 게시된 자산과 새 자산의 내용이 동일하면, 작업은 멱등성이기 때문에 성공하게 됩니다.

프라이빗 패키지 및 퍼블릭 리포지토리

CodeArtifact CodeArtifact 리포지토리에 저장된 패키지를 npmjs.com 또는 Maven Central과 같은 공용 리포지토리에 게시하지 않습니다. CodeArtifact 패키지를 공용 리포지토리에서 리포지토리로 가져오지만 패키지를 다른 방향으로 이동하지는 CodeArtifact 않습니다. CodeArtifact 리포지토리에 게시한 패키지는 비공개로 유지되며 액세스 권한을 부여한 AWS 계정, 역할 및 사용자만 사용할 수 있습니다.

패치가 적용된 패키지 버전 게시

수정된 패키지 버전을 게시하고 싶지만 이러한 버전이 퍼블릭 리포지토리에서 사용 가능한 버전일 수도 있습니다. 예를 들어 mydep 1.1이라는 중요한 애플리케이션 종속성에서 버그를 발견한 경우, 패키지 공급업체가 변경 사항을 검토하고 수락하기 전에 먼저 이를 수정해야 할 수 있습니다. 앞서 설명했듯이 업스트림 리포지토리와 외부 연결을 통해 CodeArtifact 리포지토리에서 공용 리포지토리에 연결할 수 있는 경우 CodeArtifact 리포지토리에 mydep 1.1 게시할 수 없습니다. CodeArtifact

이 문제를 해결하려면 공용 리포지토리에 연결할 수 없는 다른 CodeArtifact 리포지토리에 패키지 버전을 게시하세요. 그런 다음 copy-package-versions API를 사용하여 패치된 버전을 사용할 CodeArtifact 리포지토리로 복사합니다. mydep 1.1

게시를 위한 자산 크기 제한

게시할 수 있는 패키지 자산의 최대 크기는 할당량 입력 AWS CodeArtifact에 표시된 자산 파일 크기 최대 할당량에 따라 제한됩니다. 예를 들어 현재 자산 파일 크기 최대 할당량보다 큰 Maven JAR 또는 Python 휠은 게시할 수 없습니다. 더 큰 자산을 저장해야 하는 경우 할당량 증가를 요청하세요. CodeArtifact

자산 파일 크기 최대 할당량을 제외하고, npm 패키지 게시 요청의 최대 크기는 2GB입니다. 이 제한은 자산 파일 크기 최대 할당량과 무관하며 할당량을 늘려도 이 제한이 늘어나지는 않습니다. npm 게시 요청(HTTP PUT)에서는 패키지 메타데이터와 npm 패키지 tar 아카이브의 콘텐츠가 하나로 묶입니다. 따라서 게시할 수 있는 npm 패키지의 실제 최대 크기는 포함된 메타데이터의 크기에 따라 달라집니다.

참고

게시된 npm 패키지는 최대 크기가 2GB 미만으로 제한됩니다.

게시 지연 시간

CodeArtifact 리포지토리에 게시된 패키지 버전은 1초 이내에 다운로드할 수 있는 경우가 많습니다. 예를 들어, npm 패키지 버전을 CodeArtifact npm publish with에 게시하면 1초 이내에 npm install 명령에서 해당 버전을 사용할 수 있습니다. 하지만 게시가 일관적이지 않으며 시간이 더 오래 걸릴 수도 있습니다. 게시 후 즉시 패키지 버전을 사용해야 한다면, 재시도를 통해 다운로드가 안정적인지 확인하세요. 예를 들어 패키지 버전을 게시한 후, 방금 게시한 패키지 버전을 최초 다운로드 시도에서 사용할 수 없다면 다운로드를 최대 3번 반복하세요.

참고

일반적으로 퍼블릭 리포지토리에서 패키지 버전을 가져오는 작업은 게시보다 시간이 더 오래 걸립니다. 자세한 정보는 외부 연결 지연 시간을 참조하세요.

패키지 버전 상태

의 모든 패키지 CodeArtifact 버전에는 패키지 버전의 현재 상태 및 가용성을 설명하는 상태가 있습니다. AWS CLI 및 SDK에서 패키지 버전 상태를 변경할 수 있습니다. 자세한 정보는 패키지 버전 상태 업데이트을 참조하세요.

다음은 패키지 버전 상태에 적용되는 값입니다.

  • 게시됨 - 패키지 버전이 성공적으로 게시되었으며 패키지 관리자를 이용해 요청할 수 있습니다. 패키지 버전은 패키지 관리자에 반환되는 패키지 버전 목록(예: npm view <package-name> versions 출력)에 포함됩니다. 패키지 버전의 모든 자산은 리포지토리에서 사용할 수 있습니다.

  • 미완료 - 클라이언트가 패키지 버전용 자산을 하나 이상 업로드했지만 Published 상태로 전환하여 완료하지는 않았습니다. 현재는 일반 및 Maven 패키지 버전만이 Unfinished 상태가 될 수 있습니다. Maven 패키지의 경우, 클라이언트가 패키지 버전용 자산을 하나 이상 업로드하지만 해당 버전이 포함된 패키지의 maven-metadata.xml 파일을 게시하지 않으면 이 문제가 발생할 수 있습니다. Maven 패키지 버전이 미완료이면 mvn 또는 gradle 같은 클라이언트에게 반환되는 버전 목록에 패키지 버전이 포함되지 않으며, 따라서 빌드의 일부로 사용할 수 없습니다. PublishPackageVersionAPI를 호출할 때 unfinished 플래그를 제공하여 일반 패키지를 의도적으로 Unfinished 상태를 유지할 수 있습니다. unfinished플래그를 생략하거나 API를 호출하여 일반 패키지를 Published 상태로 변경할 수 있습니다. UpdatePackageVersionsStatus

  • 미등록 - 패키지 버전의 자산을 리포지토리에서 다운로드할 수 있지만, 패키지 버전이 패키지 관리자에게 반환되는 버전 목록에 포함되지 않습니다. 예를 들어 npm 패키지의 경우 npm view <package-name> versions 출력에 패키지 버전이 포함되지 않습니다. 즉, 사용 가능한 버전 목록에 버전이 표시되지 않기 때문에 npm의 종속성 확인 로직은 패키지 버전을 선택하지 않습니다. 하지만 미등록 패키지 버전이 이미 npm package-lock.json 파일에서 참조된 경우, 예를 들어 npm ci를 실행 중일 때 해당 버전을 다운로드하여 설치할 수 있습니다.

  • 보관됨 - 패키지 버전의 자산을 더 이상 다운로드할 수 없습니다. 패키지 버전은 패키지 관리자에 반환되는 버전 목록에 포함됩니다. 자산을 사용할 수 없으므로 클라이언트의 패키지 버전 사용이 차단됩니다. 애플리케이션 빌드가 보관됨으로 업데이트된 버전을 사용하는 경우, 패키지 버전이 로컬에 캐시되지 않으면 빌드가 중단됩니다. 보관된 패키지 버전은 저장소에 아직 남아 있기 때문에 패키지 관리자나 빌드 도구를 사용하여 다시 게시할 수 없지만 API를 사용하여 패키지 버전의 상태를 미등록 또는 게시됨으로 다시 변경할 수 있습니다. UpdatePackageVersionsStatus

  • 폐기됨 - 패키지 버전이 목록에 표시되지 않으며 리포지토리에서 자산을 다운로드할 수 없습니다. 삭제된 것과 보관된 것의 주요 차이점은 폐기된 상태일 경우 패키지 버전의 자산은 에 의해 영구적으로 삭제된다는 것입니다. CodeArtifact 따라서 패키지 버전을 폐기됨에서 보관됨, 미등록 또는 게시됨으로 전환할 수 없습니다. 자산이 삭제되었으므로 패키지 버전을 더 이상 사용할 수 없습니다. 패키지 버전이 폐기됨으로 표시되면 패키지 자산 보관 요금이 청구되지 않습니다.

--status매개 변수 없이 list-package-versions 호출하면 기본적으로 모든 상태의 패키지 버전이 반환됩니다.

앞서 나열한 상태 외에도 DeletePackageVersionsAPI를 사용하여 패키지 버전을 삭제할 수 있습니다. 삭제된 패키지 버전은 리포지토리에 더 이상 존재하지 않으며 패키지 관리자 또는 빌드 도구를 사용하여 해당 패키지 버전을 자유롭게 다시 게시할 수 있습니다. 패키지 버전이 삭제되면 패키지 버전의 자산 보관 요금이 청구되지 않습니다.

패키지 이름, 패키지 버전 및 자산 이름 표준화

CodeArtifact 패키지 이름, 패키지 버전 및 자산 이름을 저장하기 전에 정규화합니다. 즉, 패키지가 게시될 때 제공된 이름 또는 버전과 다를 CodeArtifact 수 있습니다. 각 패키지 유형에서 이름 및 버전을 정규화하는 방법에 CodeArtifact 대한 자세한 내용은 다음 설명서를 참조하십시오.

CodeArtifact 다른 패키지 형식에서는 정규화를 수행하지 않습니다.