Node.js 下载源代码时AWS代码生成失败。消息:访问被拒绝

Node.js 下载源代码时AWS代码生成失败。消息:访问被拒绝,node.js,amazon-web-services,amazon-elastic-beanstalk,aws-codepipeline,aws-codebuild,Node.js,Amazon Web Services,Amazon Elastic Beanstalk,Aws Codepipeline,Aws Codebuild,我创建了一个使用。这个代码构建项目的目的是进行单元测试。它从CodeCommit获取一个输入工件。在buildspec.yml中,它运行一个测试命令 这是我的(简单)buildspec文件: version: 0.2 phases: install: commands: - echo "install phase started" - npm install - echo "install phase ended"

我创建了一个使用。这个代码构建项目的目的是进行单元测试。它从CodeCommit获取一个输入工件。在buildspec.yml中,它运行一个测试命令

这是我的(简单)buildspec文件:

version: 0.2

phases:
  install:
    commands:
     - echo "install phase started"
     - npm install
     - echo "install phase ended"
  pre_build: 
    commands:
     - echo "pre_build aka test phase started"
     - echo "mocha unit test"
     - npm test
     - echo "mocha unit test ended"
  build:
    commands:
     - echo "build phase started"
     - echo "build complete"
生成在下载源阶段失败,原因如下:

阶段-下载源代码

开始时间2分钟前

结束时间2分钟前

消息访问被拒绝

构建日志中只有以下日志

【集装箱】2018/01/12 11:30:22等待平代理

[容器]2018/01/12 11:30:22等待下载\u来源

提前谢谢

代码构建策略的屏幕截图


我找到了一个解决方案。我的权限有问题。我添加这个是为了让它工作

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Resource": [
            "arn:aws:logs:eu-west-1:723698621383:log-group:/aws/codebuild/project",
            "arn:aws:logs:eu-west-1:723698621383:log-group:/aws/codebuild/project:*"
        ],
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ]
    },
    {
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::codepipeline-eu-west-1-*"
        ],
        "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "ssm:GetParameters"
        ],
        "Resource": "arn:aws:ssm:eu-west-1:723698621383:parameter/CodeBuild/*"
    }
  ]
}

我也有类似的错误,并将张贴我的修复,以防它帮助其他人。我在使用CodePipeline,有两个独立的构建。Build#1将完成其构建,其输出工件将成为Build#2的输入工件。生成#2在下载源阶段失败,出现以下错误:

AccessDenied: Access Denied status code: 403

问题是在我的build#1构建规范中,我没有定义工件。调用Build#1中的工件文件/文件夹后,Build#2能够下载源代码而没有问题。

我遇到了相同的错误,访问S3 bucket url时出现了权限问题。最初,我使用了一个自动生成的codepipline-us-west-2-*bucket名称和策略:

{
  "Effect": "Allow",
  "Resource": [
      "arn:aws:s3:::codepipeline-us-west-2-*"
  ],
  "Action": [
      "s3:PutObject",
      "s3:GetObject",
      "s3:GetObjectVersion",
      "s3:GetBucketAcl",
      "s3:GetBucketLocation"
  ]
}
更改为我自己的bucket名称后,策略必须更新为:

{
  "Effect": "Allow",
  "Resource": [
      "arn:aws:s3:::project-name-files/*"
  ],
  "Action": [
      "s3:PutObject",
      "s3:GetObject",
      "s3:GetObjectVersion",
      "s3:GetBucketAcl",
      "s3:GetBucketLocation"
  ]
}

我也面临同样的问题

我的资料来源于一个S3文件夹。修复涉及将
/
放在源路径的末尾。似乎没有
/
代码构建就认为它是一把钥匙


希望这有助于节省时间。

我遇到了相同的症状,但我的问题是由于S3存储桶上的默认加密,如中所述

因此,S3中的所有内容都在静止状态下加密。如果不指定加密方式,S3中的对象将使用默认KMS密钥加密。其他帐户将无法访问bucket中的对象,因为他们没有用于解密的KMS密钥。因此,为了解决这个问题,您需要创建自己的KMS密钥并使用它进行加密(让CodeBuild使用您在本例中创建的KMS密钥)。然后,通过配置AssumeRole权限,允许其他帐户中的角色使用此密钥。据我所见,大多数S3访问拒绝发生在无法解密对象时。这里指定了S3403访问被拒绝故障排除-加密对象也会导致403访问被拒绝


在我的例子中,使用的密钥不匹配,这导致解密失败。

您可以发布用于CodeBuild项目的IAM角色的策略吗?完成。我编辑了这篇文章并添加了策略。所有这些策略是否都附加到您的代码构建项目中使用的角色?下载源代码期间的“拒绝访问”使我认为该策略没有codecommit:GitPull或s3:GetObject这样的权限。源路径末尾的/missing from?/在哪里。(更正)