

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

# CodeBuild에서 Python 패키지 사용
<a name="using-python-packages-in-codebuild"></a>

다음 단계는 [CodeBuild에서 제공하는 도커 이미지](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html)에 나열된 운영 체제를 사용하여 테스트되었습니다.

## IAM 역할을 사용하여 권한 설정
<a name="python-packages-in-codebuild-iam"></a>

이러한 단계는 CodeBuild에서 CodeArtifact의 Python 패키지를 사용할 때 필요합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다. **역할** 페이지에서 CodeBuild 빌드 프로젝트에 사용하는 역할을 편집합니다. 이 역할에는 다음 권한이 있어야 합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [ "codeartifact:GetAuthorizationToken",
                         "codeartifact:GetRepositoryEndpoint",
                         "codeartifact:ReadFromRepository"
                         ],
             "Resource": "*"
         },
         {       
             "Effect": "Allow",
             "Action": "sts:GetServiceBearerToken",
             "Resource": "*",
             "Condition": {
                 "StringEquals": {
                     "sts:AWSServiceName": "codeartifact.amazonaws.com"
                 }
             }
         }
     ]
   }
   ```

------
**중요**  
 CodeBuild를 사용하여 패키지를 게시하려면 **codeartifact:PublishPackageVersion** 권한을 추가해야 합니다.

   자세한 내용은 *IAM 사용 설명서*의 [역할 수정](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) 섹션을 참조하세요.

## 로그인하여 pip 또는 twine 사용
<a name="python-packages-in-codebuild-login"></a>

CodeBuild에서 Python 패키지를 사용하려면, 프로젝트 `buildspec.yaml` 파일의 `pre-build` 섹션에서 `login` 명령을 실행하여 CodeArtifact에서 패키지를 가져오도록 `pip`을 구성합니다. 자세한 내용은 [CodeArtifact를 Python과 함께 사용](using-python.md) 단원을 참조하십시오.

`login`이 성공적으로 실행되면 `build` 섹션에서 `pip` 명령을 실행하여 Python 패키지를 설치하거나 게시할 수 있습니다.

### Linux
<a name="python-packages-in-codebuild-login-linux"></a>

**참고**  
이전 CodeBuild 이미지를 사용하는 `pip3 install awscli --upgrade --user` 경우에만를 AWS CLI 로 업그레이드하면 됩니다. 최신 이미지 버전을 사용한다면 이 줄을 제거해도 됩니다.

 `pip`를 사용하여 Python 패키지를 설치하는 방법은 다음과 같습니다.

```
pre_build:
  commands:
    - pip3 install awscli --upgrade --user
    - aws codeartifact login --tool pip --domain my_domain --domain-owner 111122223333 --repository my_repo
build:
  commands:
    - pip install requests
```

 `twine`을 사용하여 Python 패키지를 게시하는 방법은 다음과 같습니다.

```
pre_build:
  commands:
    - pip3 install awscli --upgrade --user
    - aws codeartifact login --tool twine --domain my_domain --domain-owner 111122223333 --repository my_repo
build:
  commands:
    - twine upload --repository codeartifact mypackage
```

### Windows
<a name="python-packages-in-codebuild-login-windows"></a>

 `pip`를 사용하여 Python 패키지를 설치하는 방법은 다음과 같습니다.

```
version: 0.2
phases:
  install:
    commands:
      - '[Net.ServicePointManager]::SecurityProtocol = "Tls12"; Invoke-WebRequest https://awscli.amazonaws.com/AWSCLIV2.msi -OutFile $env:TEMP/AWSCLIV2.msi'
      - Start-Process -Wait msiexec "/i $env:TEMP\AWSCLIV2.msi /quiet /norestart"
  pre_build:
    commands:
      - '&"C:\Program Files\Amazon\AWSCLIV2\aws" codeartifact login --tool pip --domain my_domain --domain-owner 111122223333 --repository my_repo'
  build:
    commands:
      - pip install requests
```

 `twine`을 사용하여 Python 패키지를 게시하는 방법은 다음과 같습니다.

```
version: 0.2
phases:
  install:
    commands:
      - '[Net.ServicePointManager]::SecurityProtocol = "Tls12"; Invoke-WebRequest https://awscli.amazonaws.com/AWSCLIV2.msi -OutFile $env:TEMP/AWSCLIV2.msi'
      - Start-Process -Wait msiexec "/i $env:TEMP\AWSCLIV2.msi /quiet /norestart"
  pre_build:
    commands:
      - '&"C:\Program Files\Amazon\AWSCLIV2\aws" codeartifact login --tool twine --domain my_domain --domain-owner 111122223333 --repository my_repo'
  build:
    commands:
      - twine upload --repository codeartifact mypackage
```