我正在尝试创建自定义 docker 映像,以便将其用作 AWS CodeBuild 的构建映像。docker build如果我只是通过设置环境来针对 Dockerfile进行操作,则效果很好。但现在我需要添加一个 postgres 实例来运行测试。所以我认为使用docker-compose可以解决问题。但是我无法弄清楚如何使其发挥作用。当我尝试时,组合的静态部分(来自 Dockerfile 的图像)似乎立即停止docker-compose up,因为没有入口点。此时,我可以通过运行连接到数据库实例docker-compose run db psql -h db -U testdb -d testdb。但是,当我构建它并将其提供给 AWS 提供的脚本时,它运行良好,直到我的测试尝试到达数据库服务器。这是它因超时而失败的地方,就好像没有数据库实例一样。
配置看起来像这样:
version: '3.7'
services:
api-build:
tty: true
build: ./api_build
image: api-build
depends_on:
- db
db:
image: postgres:10-alpine
restart: always
environment:
POSTGRES_USER: testdb
POSTGRES_PASSWORD: testdb
Run Code Online (Sandbox Code Playgroud)
和 Dockerfile 下./api_build:
FROM alpine:3.8
FROM ruby:2.3-alpine as rb
RUN apk update && apk upgrade && \
echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories …Run Code Online (Sandbox Code Playgroud) kubectl version在 CodeBuild 上打印错误...
[Container] 2019/08/26 04:07:32 Running command kubectl version \nClient Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"} \nerror: You must be logged in to the server (the server has asked for the client to provide credentials)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n错误:您必须登录到服务器(服务器已要求客户端提供凭据)
\n
我正在使用 Amazon EKS 集群。\n似乎缺少一些身份验证设置...?
\n\n我做了什么:
\n\ncodebuild-hoge-service-role设置代码构建项目(创建新的服务角色)。eks:DescribeCluster到角色作为内联策略,因为aws eks update-kubeconfig需要它。configmap/aws-auth绑定角色和 RBAC ,添加新配置:kubectl edit -n kube-system configmap/aws-authmapRoles我想创建一个 CodePipeline,它从 CodeCommit 源构建一个容器映像,然后以蓝/绿方式将新映像部署到我的 ECS 服务(EC2 启动类型)。
问题出在 BuildArtifact 的图像定义上。管道在部署阶段失败并出现错误:
"" 尝试从工件中读取图像工件文件时出现无效的操作配置异常:BuildArtifact。“”
如何正确配置“Amazon ECS(蓝/绿)”部署阶段,以便它可以使用最近创建的映像并部署它....通过替换 taskdef.json 中的占位符 IMAGE_NAME ?
任何提示高度赞赏:D
amazon-ecs blue-green-deployment aws-code-deploy aws-codepipeline aws-codebuild
我正在尝试设置 CodePipeline 来管理一个非常简单的 Lambda 函数的部署。
我完全陷入了部署步骤的问题,无法弄清楚可能出了什么问题。
当管道尝试运行 CodeDeploy 操作时,它失败并显示错误...
BundleType must be either YAML or JSON
这是我的应用程序规范...
version: 0.0
Resources:
- my-function:
Type: AWS::Lambda::Function
Properties:
Name: "my-function"
Run Code Online (Sandbox Code Playgroud)
我的管道没有构建步骤,因为它只是一个简单的 js 文件,没有依赖项,因此不需要构建。
我尝试添加一个操作来部署到 S3,我可以确认发送到 s3 的 zip 文件包含 appspec.yml 和 index.js,并且它们都位于根目录中。
我见过的大多数示例都使用构建规范,但我不确定为什么我需要这个,或者如果我有一个它会做什么。
这是源于我之前的问题的一个更狭窄的问题。
这是我的 buildspec.yml:
version: 0.2
phases:
install:
commands:
# upgrade AWS CLI
- pip install --upgrade awscli
# install Node 12
- curl -sL https://deb.nodesource.com/setup_12.x | bash -
- apt install nodejs
pre_build:
commands:
# install server dependencies
- npm install
build:
commands:
# install client dependencies and build static files
- npm install --prefix client && npm run build --prefix client
post_build:
commands:
# FOR TESTING AND DEBUGGING
- ls -la
- ls client -la
- mkdir client/TEST …Run Code Online (Sandbox Code Playgroud) amazon-web-services node.js amazon-elastic-beanstalk aws-codepipeline aws-codebuild
我正在使用 Terraform 配置 AWS CodeBuild。在环境部分,我配置了以下内容:
environment {
compute_type = "BUILD_GENERAL1_SMALL"
image = "aws/codebuild/standard:3.0"
type = "LINUX_CONTAINER"
image_pull_credentials_type = "CODEBUILD"
environment_variable {
name = "SOME_KEY1"
value = "SOME_VALUE1"
}
environment_variable {
name = "SOME_KEY2"
value = "SOME_VALUE2"
}
}
Run Code Online (Sandbox Code Playgroud)
我的 Codebuild 项目中有 20 多个环境变量需要配置。
是否可以创建一个列表并定义一个 environment_variable 参数来配置所有环境变量?
amazon-web-services terraform aws-codebuild terraform-provider-aws
我正在使用 AWS CodePipeline,它从我的 git 存储库获取源代码,使用CodeBuildbuildSpec 构建输出工件并将其保存到 S3 存储桶,最终部署到Elastic BeanStalk(NodeJS 环境)。
一切正常,但我需要管道从我的AWS S3存储桶之一复制 1 个特定文件并将其添加到,output artifacts然后再将其部署到EB
可以使用 buildSpec 来完成吗?
artifacts:
files:
- '**/*'
# - How to add a file from S3 to the artifacts?
Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services aws-codepipeline aws-codebuild buildspec
我正在尝试编辑现有 CodeBuild 项目的源代码。我在过滤器组中添加了一个演员 ID。当我尝试保存时,我收到:
The trusted principals don't belong to the service.
我也尝试过其他更改 - 我总是收到相同的错误。我是一名管理员,拥有该项目的完全访问权限。我缺少什么?
我试图使用CodePipeline(AWS)触发多个构建,并且当管道触发CodeBuild时,CodeBuild失败并出现下一个错误:
[Container] 2018/02/07 19:30:20 Waiting for DOWNLOAD_SOURCE
Run Code Online (Sandbox Code Playgroud)
消息:访问被拒绝
额外的信息:
在 CodeBuild 中,我有 2 个项目。一个用于暂存站点,另一个用于生产站点。当我编译我的网站并通过临时项目运行它时,它工作得很好。它已成功同步到我的暂存站点的 s3 存储桶。但是,当尝试编译它并通过生产项目运行它时,运行同步命令时,它会返回错误:
致命错误:调用 ListObjects 操作时发生错误 (AccessDenied):访问被拒绝
[容器] 2018/09/11 08:40:33 命令未成功退出 aws s3sync public/ s3://$S3_BUCKET 退出状态 1
我做了一些挖掘,我认为问题出在我的存储桶策略上。我使用 CloudFront 作为 S3 存储桶之上的 CDN。我不想修改生产存储桶的存储桶策略,除非我完全确定必须这样做。我担心这可能会对现场产生一些影响。这是我的生产存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket_name]/*"
},
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity [access_code]"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket_name]/*"
}
]
}
Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services amazon-cloudfront aws-codebuild
我尝试使用 aws codeBuild 运行 Buildspec 并尝试使用 jq 命令即时生成 process.json 文件。但它在执行时出错并且构建失败。
build:
commands:
- cp $CODEBUILD_SRC_DIR/qe/performance/* apache-jmeter-5.2/bin/
- cd apache-jmeter-5.2/bin/
- DATE=`date "+%Y%m%d-%H-%M-%S"`
- aws s3 cp $DATE-Report s3://$JMeterScanResultBucket/${ProjectName}/$DATE --recursive
- jq -n --arg appname "$appname" '{apps: [ {project: wsg, issuetype: "Test Execution", summary: "Test Execution for junit Execution"}]}' > process.json
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:第 20 行转到上面的“jq”命令
DOWNLOAD_SOURCE
Failed
YAML_FILE_ERROR: did not find expected key at line 20
Run Code Online (Sandbox Code Playgroud) 当主分支中的新提交触发时,我试图从 CodeBuild 构建中获取提交的短 git SHA。
我知道其中CODEBUILD_RESOLVED_SOURCE_VERSION包含完整的提交 SHA。我想在将输出图像推送到 ECR 之前缩小该值以标记输出图像。
我尝试过buildspec.yml:
version: 0.2
phases:
pre_build:
commands:
...
- COMMIT_ID=${CODEBUILD_RESOLVED_SOURCE_VERSION:0:8}
...
build:
commands:
...
- echo Tagging image with commit id $COMMIT_ID
- docker tag $REPOSITORY_URI/$IMAGE_REPO_NAME:latest $REPOSITORY_URI/$IMAGE_REPO_NAME:$COMMIT_ID
...
post_build:
commands:
...
- docker push $REPOSITORY_URI/$IMAGE_REPO_NAME:$COMMIT_ID
Run Code Online (Sandbox Code Playgroud)
但我得到:
[Container] 2022/07/07 11:30:05 Running command COMMIT_ID=${CODEBUILD_RESOLVED_SOURCE_VERSION:0:8}
/codebuild/output/tmp/script.sh: 4: Bad substitution
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
aws-codebuild ×12
amazon-s3 ×2
amazon-ecr ×1
amazon-ecs ×1
amazon-eks ×1
amazon-iam ×1
aws-lambda ×1
buildspec ×1
docker ×1
git ×1
github ×1
json ×1
kubectl ×1
kubernetes ×1
node.js ×1
pyyaml ×1
sh ×1
terraform ×1
yaml ×1