

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

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

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

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

从中使用 npm 包时，需要执行这些步骤 CodeArtifact 。 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)。

## 登录并使用 npm
<a name="npm-packages-in-codebuild-login"></a>

要从中使用 npm 包 CodeBuild，请运行项目`pre-build`部分中的`login`命令进行配置`npm`，`buildspec.yaml`以便从中 CodeArtifact获取软件包。有关更多信息，请参阅 [npm 身份验证](npm-auth.md)。

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

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

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

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

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

```
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 npm --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}}'
  build:
    commands:
      - npm install
```