Node.js 下载源代码时AWS代码生成失败。消息:访问被拒绝
我创建了一个使用。这个代码构建项目的目的是进行单元测试。它从CodeCommit获取一个输入工件。在buildspec.yml中,它运行一个测试命令 这是我的(简单)buildspec文件: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"
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?/在哪里。(更正)