

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

以下步骤已使用[提供的 Docker 镜像](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html)中列出的操作系统进行了测试。 CodeBuild

## 使用 IAM 角色设置权限
<a name="python-packages-in-codebuild-iam"></a>

从 CodeArtifact 中使用 Python 包时，需要执行这些步骤 CodeBuild。

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/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>

要从中使用 Python 包 CodeBuild，请运行项目`buildspec.yaml`文件`pre-build`部分中的`login`命令`pip`以配置为从中获取包 CodeArtifact。有关更多信息，请参阅 [CodeArtifact 与 Python 一起使用](using-python.md)。

成功运行 `login` 后，您可以运行 `build` 部分中的 `pip` 命令来安装或发布 Python 程序包。

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

**注意**  
仅当您使用的是较旧 AWS CLI 的`pip3 install awscli --upgrade --user` CodeBuild 映像时，才需要使用进行升级。如果您使用的是最新映像版本，则可以删除该行。

 要使用 `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
```