

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 パッケージを使用する場合に必要です。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. ナビゲーションペインで **Roles (ロール)** を選択します。**ロール**ページで、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` コマンドを実行し、`pip` を設定し、CodeArtifact からパッケージをフェッチします。詳細については、[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 で をアップグレードする必要があります。最新のイメージバージョンを使用している場合は、その行を削除できます。

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

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