

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 CodeBuild 中使用 Python 套件
<a name="using-python-packages-in-codebuild"></a>

下列步驟已使用 [ CodeBuild 所提供 Docker 映像](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 套件時，需要這些步驟。 CodeBuild

1. 登入 AWS 管理主控台 並開啟位於 https：//[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` 擷取套件。如需詳細資訊，請參閱[搭配 Python 使用 CodeArtifact](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 透過 升級 。如果您使用的是最新的映像版本，則可以移除該行。

 若要使用 安裝 Python 套件`pip`：

```
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
```

 若要使用 發佈 Python 套件`twine`：

```
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>

 若要使用 安裝 Python 套件`pip`：

```
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
```

 若要使用 發佈 Python 套件`twine`：

```
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
```