标签: aws-codebuild

AWS CodePipeline,构建失败并获得错误YAML_FILE_ERROR M

我是AWS CodePipeline的新手,从未有过像Jenkins等任何持续集成工具的经验.我创建了一个新的AWS CodePipeline 作为AWS CodeCommit(代码库) - > CodeBuild(不是docker,环境是NodeJS 7) - > AWS CodeDeploy.一切都在AWS上.它是一个Angular2项目,最终部署在EC2实例上(Windows server 2008).从我的本地机器,我能够通过活动的IAM用户(Git访问)将我的代码提交到AWS CodeCommit,然后我可以看到CodePipleline开始运行,其中Source很好(绿色)但下一步即构建失败(红色颜色).当我点击它的详细信息时,我可以看到以下错误日志: -

https://forums.aws.amazon.com/ 2016/12/23 18:21:16等待代理商 https://forums.aws.amazon.com/ 2016/12/23 18:21:36阶段是DOWNLOAD_SOURCE https://forums.aws.amazon.com/ 2016/12/23 18:21:38阶段完成:DOWNLOAD_SOURCE成功:false https://forums.aws.amazon.com/ 2016/12/23 18:21: 38阶段上下文状态代码:YAML_FILE_ERROR消息:YAML文件不存在 https://forums.aws.amazon.com/ 2016/12/23 18:21:38运行时错误(YAML文件不存在)

有人可以指导我这个错误吗?我不知道这个YAML文件意味着什么.我用谷歌搜索,但在我的NodeJS Angular项目中找不到任何相关内容.

谢谢你,Vinod Kumar

git amazon-ec2 aws-codecommit aws-codepipeline aws-codebuild

10
推荐指数
1
解决办法
9646
查看次数

无法在AWS Codebuild中运行`source`

我正在使用AWS CodeBuild和Terraform自动部署基于Lambda的服务.我有一个非常简单的buildscript.yml完成以下内容:

  • 获得依赖关系
  • 运行测试
  • 获取AWS凭据并保存到文件(详细信息如下)
  • 来源于creds文件
  • 运行Terraform

"获取信用档案"这一步骤是我遇到困难的地方.我有一个简单的bash单行程序,它抓取AWS容器信誉curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,然后按以下格式将它们保存到文件中:

export AWS_ACCESS_KEY_ID=SOMEACCESSKEY
export AWS_SECRET_ACCESS_KEY=MYSECRETKEY
export AWS_SESSION_TOKEN=MYSESSIONTOKEN
Run Code Online (Sandbox Code Playgroud)

当然,显而易见的一步就是简单地source将这些变量添加到我的环境中以供Terraform使用.但是,当我这样做时source /path/to/creds_file.txt,CodeBuild返回:

[Container] 2017/06/28 18:28:26 Running command source /path/to/creds_file.txt
/codebuild/output/tmp/script.sh: 4: /codebuild/output/tmp/script.sh: source: not found
Run Code Online (Sandbox Code Playgroud)

我试图安装source通过,apt但后来我得到一个错误,说source无法找到(是的,我已经运行apt update等).我在CodeBuild的Python 2.7环境中使用标准的Ubuntu映像.如何在Codebuild中为源凭据文件获取Terraform工作凭据.

谢谢!

bash amazon-web-services terraform aws-codebuild

10
推荐指数
2
解决办法
4507
查看次数

如何在CloudFormation中使用CodeBuild的输出工件?

所以我有一个相当简单的堆栈我正在尝试设置由一个订阅SNS主题的Lambda函数组成.我想使用CodePipeline有三个阶段:Source(GitHub) - > Build(CodeBuild) - > Deploy(CloudFormation).

我设法凑齐了一个模板和buildspec文件,这是有效的,除了我失去了我应该如何引用CodeBuild在CloudFormation模板中产生的输出工件; 现在我只有占位符内联代码.

基本上,Code:为了获得CodeBuild文件(这是我在CodePipeline中的输出工件),我应该放在Lambda函数的属性中?

template.yml:

AWSTemplateFormatVersion: 2010-09-09
Resources:
  SNSTopic:
    Type: 'AWS::SNS::Topic'
    Properties:
      Subscription:
        - Endpoint: !GetAtt
            - LambdaFunction
            - Arn
          Protocol: lambda
  LambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      Runtime: python3.6
      Handler: main.lamda_handler
      Timeout: '10'
      Role: !GetAtt
        - LambdaExecutionRole
        - Arn
      Code:
        ZipFile: >
          def lambda_handler(event, context):
            print(event)
            return 'Hello, world!'
  LambdaExecutionRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'
  LambdaInvokePermission:
    Type: 'AWS::Lambda::Permission' …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation aws-codepipeline aws-codebuild

10
推荐指数
1
解决办法
3835
查看次数

AWS CodeBuild - Build没有互联网连接.请检查子网网络配置

我正在尝试CodeBuild,但已经达到了死胡同.我的构建总是失败并显示错误消息:

Build没有互联网连接.请检查子网网络配置.

我检查了VPC配置(子网,安全组),它们似乎没问题.为了测试互联网连接,我在同一个子网中启动了一个EC2实例,它能够与外部服务进行通信(我尝试了ping和一些HTTP GET).

如何解决此"互联网连接"问题?

amazon-web-services aws-codebuild

10
推荐指数
2
解决办法
2650
查看次数

在AWS CodeBuild中设置https git clone的凭据

我正在一个项目中运行CodeBuild,该项目具有存储在CodeCommit中的私有要求.

我需要添加一个命令buildspec.yml来加载https git凭据,以便git clone在CodeBuild运行时起作用pip install.

构建失败了 fatal: could not read Username for 'https://git-codecommit.us-west-2.amazonaws.com': No such device or address

git git-config amazon-web-services aws-codebuild

10
推荐指数
2
解决办法
2713
查看次数

在 AWS CodeBuild 中创建新项目时收到“未授权执行 DescribeSecurityGroups”

我正在尝试在 AWS CodeBuild 中创建一个新项目。每次我尝试收到以下错误时:

Not authorized to perform DescribeSecurityGroups

任何帮助将不胜感激。

amazon-web-services aws-codebuild

10
推荐指数
2
解决办法
6161
查看次数

代码构建失败,执行命令时出错:npm install。原因:退出状态 127

我用非常简单的代码创建了一个代码管道并连接到 codecommit。试图构建它,但它在代码构建步骤失败,说明执行 npm install 时出错我是不是遗漏了什么。对不起,我是这个代码构建/代码管道的新手

下面是代码构建失败的日志

[Container] 2019/02/15 11:47:39 Waiting for agent ping 
[Container] 2019/02/15 11:47:40 Waiting for DOWNLOAD_SOURCE 
[Container] 2019/02/15 11:47:40 Phase is DOWNLOAD_SOURCE 
[Container] 2019/02/15 11:47:40 CODEBUILD_SRC_DIR=/codebuild/output/src501317273/src 
[Container] 2019/02/15 11:47:40 YAML location is /codebuild/output/src501317273/src/buildspec.yml 
[Container] 2019/02/15 11:47:40 Processing environment variables 
[Container] 2019/02/15 11:47:40 Moving to directory /codebuild/output/src501317273/src 
[Container] 2019/02/15 11:47:40 Registering with agent 
[Container] 2019/02/15 11:47:40 Phases found in YAML: 1 
[Container] 2019/02/15 11:47:40 BUILD: 2 commands 
[Container] 2019/02/15 11:47:40 Phase complete: DOWNLOAD_SOURCE Success: true 
[Container] 2019/02/15 11:47:40 …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services npm aws-codebuild

9
推荐指数
1
解决办法
2万
查看次数

CodePipeline:ECR源+ ECS部署配置

基本上,我需要使用ECS容器的Bitbucket源代码配置CI / CD。我想使用CodePipline将新的ECR映像部署到ECS。

当前,AWS CodePipline中没有选项将bitbucket指定为源。但是,我设法通过Webhooks配置CodeBuild,因此它会构建docker文件,并在每次发布发布分支时将其推送到ECR。

我想将ECR配置为CodePipline中的“源”阶段,并将其部署到现有的ECS群集/服务中,因此部署将自动进行。

  • 我在源阶段将“ Amazon ECR”指定为带有“ image_details”输出工件的操作提供程序。
  • 我将“ Amazon ECS”(不是“ Amazon ECS(蓝色/绿色)”)指定为操作提供者,以“ image_details”作为输入工件来进行部署阶段

codepipeline_settings

不幸的是,如果在部署步骤中出现以下错误,则会导致基本配置和工件链接:

Invalid action configuration
The image definition file imageDetail.json contains invalid JSON format
Run Code Online (Sandbox Code Playgroud)

尽管“ Amazon ECR”阶段将imageDetail.json作为输出工件提供,但“ Amazon ECS”部署提供程序似乎并不期望这样做。有什么合理的方法解决这个问题吗?

我知道,可以使用bitbucket + API Gateway / Lambda + CodePipeline配置CI / CD,我也考虑使用CodeCommit代替bitbucket作为源存储库-仍然,希望有一种可能的优雅解决方案,将bitbucket与直接使用CodePipeline。

UPD: 我得到的配置非常好,如博文所述:总体思路是允许CodeBuild将源代码从bitbucket上传到S3,然后使用CodePipeline和S3作为源将新的docker映像部署到ECR并发布ECS集群中新的任务定义修订。S3仍在开销中,我正在为该任务寻找更优雅的解决方案。

amazon-ecs aws-codepipeline aws-codebuild aws-ecr

9
推荐指数
2
解决办法
1668
查看次数

AWS CodeBuild GitHub 部署密钥

使用 AWS CodeBuild,您可以将 GitHub 定义为源。如果您的回购是私有的,您可以传递个人令牌。我已经构建了一个 CodeBuild 过程并确认这有效。

我想要做的不是使用个人令牌,而是使用 GitHub 部署密钥对私有存储库进行身份验证。我已经在 GitHub 中设置了 Deploy Key。如何在 AWS CodeBuild 控制台或 YAML 脚本中进行配置?

github amazon-web-services aws-codebuild deploy-keys

9
推荐指数
1
解决办法
2098
查看次数

无法运行 AWS CodeBuild 本地构建脚本

我正在尝试为我的 golang 项目在本地运行 CodeBuild。我已经拉取amazon/aws-codebuild-local:latest了 docker镜像并运行了 CodeBuild 脚本./codebuild_build.sh -i aws/codebuild/standard:2.0 -s "/project/src",什么也没发生。然后我捕获了脚本中生成的 docker 命令:docker run -it -v //var/run/docker.sock:/var/run/docker.sock -e "IMAGE_NAME=aws/codebuild/standard:2.0" -e "SOURCE=/project/src" -e "INITIATOR=me" amazon/aws-codebuild-local:latest.

当我运行 docker 命令时,出现以下错误:

Removing network agent-resources_default
Removing volume agent-resources_source_volume
Removing volume agent-resources_user_volume
Creating network "agent-resources_default" with the default driver
Creating volume "agent-resources_source_volume" with local driver
Creating volume "agent-resources_user_volume" with local driver
Pulling build (aws/codebuild/standard:2.0)...
ERROR: The image for the service you're trying to recreate has been removed. If you continue, …
Run Code Online (Sandbox Code Playgroud)

go amazon-web-services docker aws-codebuild

9
推荐指数
2
解决办法
3523
查看次数