Summary

1. 업스트림 리포지토리를 설정할 경우 퍼블릭 pypi 리포티토리에 코드아티팩트에 업로드한게 올라가고 공유하는 방식인가요? 아니면 저희가 코드 아티팩트에 올린것은 aws에만 올라가고 기존 퍼블릭 pypi 리포지토리에 있는 라이브러리를 코드 아티팩트를 통해 사용할 수 있는건가요?

2. 업스트림이 지정된 리포지토리를 생성하고 퍼블릭pypi에 존재하는 라이브러리를 설치진행시 다음과 같은 오류가 발생하면 어떻게 해결하나요?

  • Could not find a version that satisfies the requirement pymongo~=4.1.1 (from versions: none)

  • No matching distribution found for pymongo~=4.1.1



Solution

1. 업스트림 리포지토리를 설정할 경우

  • 업스트림 리포지토리를 public으로 설정하여 public PyPi에서 사용 가능한 라이브러리를 사용할 수 있지만, 이것이 CodeArtifact가 고객님의 비공개 라이브러리를 공개적으로 게시한다는 의미가 아니며(비공개), 공개되지 않습니다. 

  • CodeArtifact에 업로드된 프라이빗 라이브러리는 AWS에만 저장되며 공개적으로 사용 가능한 리포지토리를 사용하기 위해 업스트림 리포지토리를 퍼블릭 PyPi로 설정하더라도 공개적으로 사용할 수 없습니다. 또한 CodeArtifact가 말했듯이 라이브러리를 가져오려면 권한이 필요하므로 권한이 있는 사용자만 CodeArtifact 저장소에 패키지를 다운로드하거나 업로드할 수 있습니다.


2. 퍼블릭pypi에 존재하는 라이브러리 설치 진행 시 오류

  • python version 문제가 아니라 pypi-store가 public PyPi 저장소를 사용하도록 구성되지 않아 오류가 발생하는 것으로 외부 연결을 공개 PyPi 저장소로 추가해보시길 바랍니다.[3]



Reference

[1] https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html#codeartifact-how-does-it-work 

[2] https://docs.aws.amazon.com/codeartifact/latest/ug/using-python-packages-in-codebuild.html 

[3] https://docs.aws.amazon.com/codeartifact/latest/ug/external-connection.html