首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS CodeBuild和CodeCommit回购作为npm依赖项

AWS CodeBuild和CodeCommit回购作为npm依赖项
EN

Stack Overflow用户
提问于 2019-08-29 11:38:27
回答 3查看 4.8K关注 0票数 5

我们有两份报告

  1. 回购1
  2. 回购2

在回购1> package.json内部有一个依赖项

代码语言:javascript
复制
"dependencies": {
    "repo-2": "git+https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/"
}

然后,在"repo-1“的CodeBuild内部,我们有以下构建规范

代码语言:javascript
复制
version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 10
    commands:
      - mkdir -p ./deploy
  build:
    commands:
      - echo "Server copy START $(date)"
      - cp -r ./index.js ./deploy/index.js
      - cp -r ./package.json ./deploy/package.json
      - cp -r ./buildspec.yml ./deploy/buildspec.yml
      - echo "Server copy END $(date)"
      - echo "Server npm install START $(date)"
      - cd ./deploy && npm install --production
      - echo "Server npm install END $(date)"
  post_build:
    commands:
artifacts:
  files:
        - '**/*'
  base-directory: 'deploy'

CodeBuild抛出的错误如下

代码语言:javascript
复制
npm ERR! fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/': The requested URL returned error: 403 

基本上,问题是:我是否可以使用CodeCommit回购作为npm的依赖项,那么正确的方法是什么?

试#1

我试图添加这个(和类似的变体),但是没有成功,https://medium.com/@ngchiwang/aws-npm-install-private-codecommit-module-8512c3203c37

#Try 2

我还试图将依赖项URL更改为

代码语言:javascript
复制
"repo-2": "git://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2"

但是获取以下错误

代码语言:javascript
复制
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fatal: unable to connect to git-codecommit.us-east-1.amazonaws.com: 
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: git-codecommit.us-east-1.amazonaws.com[0: 52.94.233.146]: errno=Connection refused
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-24 13:27:10

我今天遇到了同样的问题,并通过在git-credential-helper构建规范文件的env部分启用了

示例:

代码语言:javascript
复制
version: 0.2
env:
  git-credential-helper: yes
phases:
  install:
    runtime-versions:
      nodejs: 10
    commands:
      - npm install
  build:
    commands:
      - npm run build

这与策略中的CodeCommit特权(您已经说过)结合在一起,导致使用来自CodeCommit的私有npm包构建。

票数 7
EN

Stack Overflow用户

发布于 2019-11-28 03:55:45

I上周也有类似的问题,所以我将分享为Amazon推荐的解决方案。

更好的方法是在buildspec文件的env部分中将“git-凭证-助手”设置为“git-凭证-助手”,然后可以使用https访问存储库。同样,请参考下面的BuildSpec示例。

================Buildspec Snippet=================

版本: 0.2

代码语言:javascript
复制
env:
    git-credential-helper: yes

phases:
    pre_build:
        commands:
        - /usr/bin/git ls-remote -h -t https://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-2/

================Buildspec Snippet=================

此外,请确保您提供了访问CodeCommit存储库所需的CodeBuild IAM角色权限。我提供了下面的IAM策略示例,您可以参考它提供权限,具体取决于您的用例:

===========IAM策略example=============

代码语言:javascript
复制
   {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "codecommit:GetRepository",
                    "codecommit:GitPull",
                    "codecommit:GetFolder"
                ],
                "Resource": "arn:aws:codecommit:us-east-1:<put repo Name or *>"
            },
            {
                "Sid": "VisualEditor1",
                "Effect": "Allow",
                "Action": "codecommit:ListRepositories",
                "Resource": "*"
            }
        ]
    }

===========IAM策略example=============

请检查上述方法是否有助于实现用例.

请注意,上面的buildspec片段只是解释如何访问CodeCommit回购的一个例子,它需要根据您的需求进行修改。例如,您可以在package.json中描述存储库的依赖性,如下所示,我假设您已经在通过代码构建中的buildspec文件运行npm。

代码语言:javascript
复制
"dependencies": {
    "my-npm": "git+https://git-codecommit.us-east-1.amazonaws.com/v1/repos/<repo name>"
},
票数 1
EN

Stack Overflow用户

发布于 2019-08-29 12:01:35

尝试使用以下命令将您的私有AWS CodeCommit回购作为您的npm模块:

代码语言:javascript
复制
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
git config --global url."ssh://".insteadOf https://
npm install --save git+https://<your_repo_url>#master

如果您想使用npm依赖项,请查看以下类似问题的答案:npm install private github repositories by dependency in package.json

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57709367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档