AWS CodeArtifact를 사용하려면 꼭 aws cli가 설치되어 있어야 하나요?

0

https://docs.aws.amazon.com/ko_kr/codeartifact/latest/ug/python-configure-pip.html 상기 페이지 가이드대로 CodeArtifact 사용을 검토하고 있습니다. CodeArtifact에서 패키지를 설치하려면 aws codeartifact get-authorization-token... 명령어 수행이 꼭 필요한가요? 우회 가능한 방법이 없을까요?

Sea
질문됨 5달 전158회 조회
1개 답변
0

안녕하세요.

CodeArtifact의 repository로부터 저장된 패키지를 이용하여 사용하기 위해서는 CodeArtifact로부터 인증토큰을 발급받아 패키지 매니저에 해당 토큰을 사용하여 repository를 접근하도록 설정이 되어야 합니다. 인증토큰을 간편하게 발급받기위해 AWS CLI를 이용하도록 문서에 가이드가 되어 있는데 REST client나 AWS SDK 등을 이용하여 'codeartifact:GetAuthorizationToken' API [1]를 직접 호출할 수 있습니다.

이 때, Header를 통해 AWS Signature 인증정보를 넘겨줘야 하고 Postman이나 curl과 같은 툴을 이용하여 다음과 같이 API request를 생성하실 수 있습니다.

  1. Postman 이용

1-1) Authorization 설정 - Auth Type: AWS Signature CodeArtifact repo에 접근권한이 있는 IAM User/Role의 Credentials 정보를 확인하여 'AccessKey', 'SecretKey'키를 입력하고 'Advanced configuration' 부분에 'Service Name'을 'codeartifact'로 지정해줍니다.

1-2) HTTP method는 'POST', 그리고 URL "https://codeartifact.<region>.amazonaws.com/v1/authorization-token?domain=<domainName>&domain-owner=<accountId>"을 입력하여 Requst를 전송하면 CodeArtifact 토큰을 발급받을 수 있습니다.

  1. curl 이용

curl을 이용하여 request를 전송할 수 있는데 Authorization 헤더를 생성하는 부분은 직접 문서[2]를 확인하여 AWS Signature Version 4를 이용하여 API 요청하는 방안을 참고하시기 바랍니다.

ex) $ curl --request POST "https://codeartifact.<region>.amazonaws.com/v1/authorization-token?domain=<domainName>&domain-owner=<accountId>"
--header "Authorization: AWS4-HMAC-SHA256 Credential=<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request, SignedHeaders=host;x-amz-date, Signature=xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
--header "X-Amz-Date: 20240521T185714Z"

이렇게 AWS API를 직접 호출하여 발급받은 토큰을 pip 설정[3] 시 다음과 같이 넣어주면 CodeArtifact repo에 접근이 가능합니다. 토큰은 일정시간이 지나면 만료가 되기 때문에 주기적으로 토큰을 다시 받아서 설정을 해주어야 합니다.

ex) $ pip config set site.index-url https://aws:$CODEARTIFACT_AUTH_TOKEN@my_domain-111122223333.d.codeartifact.region.amazonaws.com/pypi/my_repo/simple/

답변이 도움이 되었길 바라고 관련하여 문의사항이 있으면 언제든 AWS Support팀으로 문의주시기 바랍니다. 감사합니다.

[1] https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html [2] https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html#sigv4-auth-header-overview [3] https://docs.aws.amazon.com/codeartifact/latest/ug/python-configure-pip.html#python-configure-without-pip

답변함 5달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인