标签: aws-code-deploy

Golang的Github Oauth代币

我们使用AWS代码部署将Github项目部署到Ec2实例,每次部署它时都会要求Github用户名和密码来下载存储库.找到以下解决方法

  1. 供应Uname&Pwd(不是首选)
  2. 设置SSH密钥(不可能因为实例不断更改ip)
  3. Oauth令牌

为PHP存储库设置Oauth是通过在composer auth.json .composer/auth.json中添加它来完成的.

{
    "http-basic": {},
    "github-oauth": {"github.com": "xyzasasasauhu"}
}
Run Code Online (Sandbox Code Playgroud)

但是找不到为Golang项目做这个的方法.通常我们希望实现go get https://github.com/username/reponame,而无需明确提供凭据.

oauth github go aws-code-deploy

6
推荐指数
1
解决办法
880
查看次数

当某些appspec挂钩失败时,如何使AWS CodeDeploy返回错误?

我有一个有两个实例的AWS.我已配置CodeDeploy以在所有实例上自动部署我的项目.

appspec.yml我有那个部分:

hooks:
   AfterInstall:
     - location: codedeploy_scripts/deploy_afterinstall
       timeout: 300
       runas: root
Run Code Online (Sandbox Code Playgroud)

deploy_afterinstall是一个简单的bash脚本.有时其中的一些命令会失败.例如,此命令更新/安装composer依赖项.

if [ -f "composer.lock" ]; then
   composer update -n
else
   composer install -n
fi
Run Code Online (Sandbox Code Playgroud)

但CodeDeploy忽略了此脚本中的任何错误,并始终表示部署成功.我该如何改变这种行为?当挂钩中的某些命令未成功完成并且在部署控制台或日志中查看错误时,我希望部署失败.

amazon-web-services aws-code-deploy

6
推荐指数
2
解决办法
1961
查看次数

AWS CodeDeploy:服务角色不能承担提供的角色

我正在尝试使用我的GitHub设置CodeDeploy,但我发现了一些问题.

我已经在政策service role文档中提到过了AWSCodeDeployRole.

在我的代码部署应用程序创建过程中,我遇到了一个问题:

Cannot assume role provided.
Run Code Online (Sandbox Code Playgroud)

正如我所看到的,我的角色AWSCodeDeployRole拥有很多自动缩放权限,但我不希望这样:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "autoscaling:CompleteLifecycleAction",
        "autoscaling:DeleteLifecycleHook",
        "autoscaling:DescribeAutoScalingGroups",
        "autoscaling:DescribeLifecycleHooks",
        "autoscaling:PutLifecycleHook",
        "autoscaling:RecordLifecycleActionHeartbeat",
        "autoscaling:CreateAutoScalingGroup",
        "autoscaling:UpdateAutoScalingGroup",
        "autoscaling:EnableMetricsCollection",
        "autoscaling:DescribeAutoScalingGroups",
        "autoscaling:DescribePolicies",
        "autoscaling:DescribeScheduledActions",
        "autoscaling:DescribeNotificationConfigurations",
        "autoscaling:DescribeLifecycleHooks",
        "autoscaling:SuspendProcesses",
        "autoscaling:ResumeProcesses",
        "autoscaling:AttachLoadBalancers",
        "autoscaling:PutScalingPolicy",
        "autoscaling:PutScheduledUpdateGroupAction",
        "autoscaling:PutNotificationConfiguration",
        "autoscaling:PutLifecycleHook",
        "autoscaling:DescribeScalingActivities",
        "autoscaling:DeleteAutoScalingGroup",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus",
        "ec2:TerminateInstances",
        "tag:GetTags",
        "tag:GetResources",
        "sns:Publish",
        "cloudwatch:DescribeAlarms",
        "elasticloadbalancing:DescribeLoadBalancers",
        "elasticloadbalancing:DescribeInstanceHealth",
        "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
        "elasticloadbalancing:DeregisterInstancesFromLoadBalancer"
      ],
      "Resource": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

在一些谷歌搜索期间,我发现CodeDeploy应用程序可能期望类似于:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [ …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-code-deploy

6
推荐指数
1
解决办法
2238
查看次数

可以将AWS CodePipeline与Lightsail一起使用吗?

我整天都在工作,找不到答案。所以我问你们:是否可以将AWS Pipeline与AWS Lightsail一起使用?

我的目标是将代码存储在CodeCommit中,并使用CodeBuild,CodeDeploy,CodePipeline和S3在Lightsail实例中创建持续部署。

这些是我认为要完成任务必须遵循的步骤:

[x] setup a Lightsail instance
[x] create an IAM user and set permissions
[x] transfer my repository to CodeCommit
[x] create an S3 bucket to hold the build artifacts
[x] create a CodeBuild project to build the artifacts
[x] create a buildspec.yml file with my build steps
[ ] create a CodeDeploy project to deploy my application
[ ] create a CodePipeline project to trigger the build when I commit to certain branch
Run Code Online (Sandbox Code Playgroud)

如您所见,我快到了。但是我找不到任何将Codes与Lightsail实例一起使用的方法。所以,我的问题是:可能吗?有什么限制吗?我错过了一些基本的东西吗?还有其他用Lighsail制作CD的方法吗?抱歉,我在这里有点疯狂了啊哈哈哈。

amazon-web-services aws-code-deploy aws-codepipeline amazon-lightsail

6
推荐指数
1
解决办法
2108
查看次数

代码部署的蓝绿色部署失败(部署失败,因为您的绿色队列中未找到任何实例.(错误代码:NO_INSTANCES))

我正在尝试使用CodeDeploy设置蓝/绿部署.到目前为止,我已经设置了使用我创建的自动缩放组手动配置实例.此外,我已启用负载平衡并将其链接到ALB.

我创建的ASG最少有1个实例运行,最多2个.

当我触发部署时,我看到以下错误:

在此输入图像描述

这让我感到困惑,因为它似乎跳过了配置替换实例,并声明在绿色舰队中没有找到实例.

有任何想法吗?

amazon-web-services aws-code-deploy

6
推荐指数
1
解决办法
2266
查看次数

如何在 Amazon Linux 2 上启用 CodeDeploy 代理?

Amazon Linux 2 已经附带了cfn-init其他 AWS 集成工具,但是CodeDeploy 文档没有提到 Amazon Linux 2 并且运行任何服务命令都会响应类似于:

Redirecting to /bin/systemctl start codedeploy-agent.service
Failed to start codedeploy-agent.service: Unit not found.
Run Code Online (Sandbox Code Playgroud)

如何启用 CodeDeploy 代理,最好使用cfn-init?

amazon-web-services aws-code-deploy

6
推荐指数
1
解决办法
2186
查看次数

如何在 CodePipeline 中处理 ECS 部署以更改任务定义

我正在使用两个容器部署 ECS Fargate 任务:1 个反向代理 nginx 和 1 个 python 服务器。对于每个我有一个 ECR 存储库,我有一个 CI/CD CodePipeline 设置

CodeCommit -> CodeBuild -> CodeDeploy

此流程适用于简单的代码更改。但是如果我想添加另一个容器怎么办?我当然可以更新 mybuildspec.yml以添加容器的构建,但我还需要 1) 更新我的任务定义,以及 2) 将此任务定义分配给我的服务。

问题:

1) 如果我在 CodeBuild 阶段使用 CLI 创建新的任务定义并将其与我的服务相关联,这不会触发部署吗?然后我的 CodeDeploy 会尝试再次部署,所以我最终会部署两次?

2) 这种方法最终会创建一个新的任务定义并在每次部署时更新服务。这很糟糕吗?我是否应该有一些逻辑来拉下最新的任务修订版并将 JSON 与 CodeCommit 版本进行比较,并且仅在存在差异时才进行更新?

谢谢!

amazon-ecs aws-code-deploy aws-codepipeline aws-codebuild

6
推荐指数
1
解决办法
1308
查看次数

提供的角色没有足够的权限访问 CodeDeploy

我正在实施 CodePipeline;使用 GitHub、CodeBuild 和 Amazon ECS(蓝/绿)。我正在使用的角色是管道生成的角色:ecsTaskExecutionRole

生成时,它配备了以下策略AmazonECSTaskExecutionRolePolicy(包含以下操作):

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ecr:GetAuthorizationToken",
            "ecr:BatchCheckLayerAvailability",
            "ecr:GetDownloadUrlForLayer",
            "ecr:BatchGetImage",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Resource": "*"
    }
]}
Run Code Online (Sandbox Code Playgroud)

以及以下信任关系

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "codebuild.amazonaws.com",
          "ecs-tasks.amazonaws.com",
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

鉴于角色是自动生成的,人们会假设它要么拥有所有必要的权限(使管道正常运行),要么 AWS 将有一份关于分配哪些权限的指南(分配给策略或信任关系配置) .

尽管如此,更新信任关系以包括:

"Service": [
      "codebuild.amazonaws.com",
      "ecs-tasks.amazonaws.com",
      "ec2.amazonaws.com",
      "codedeploy.amazonaws.com",
      "codepipeline.amazonaws.com",
      "s3.amazonaws.com"
    ]
Run Code Online (Sandbox Code Playgroud)

我仍然收到错误: 在此处输入图片说明

我在过去 1-2 年的多个博客/论坛中看到了这个问题;令人难以置信的是,这仍然没有正确记录为 AWS 教程(或相关博客)的一部分。

amazon-ecs amazon-iam aws-code-deploy aws-codepipeline

6
推荐指数
1
解决办法
4847
查看次数

CodeDeploy 运行过时的 appspec 文件?

我是 AWS CodeDeploy 的新手,事实上,我只是在尝试。

我正在尝试使用 CircleCI 2.0 和 AWS CodeDeploy 处理持续集成,以便当我将更改推送到我的 django 项目以在 github 中进行开发时,它会在 CircleCI 中构建,然后将部署推送到 S3,然后将更改部署到EC2。

我在 CodeDeploy 中完成了所有配置,并从 github 中的一个人那里复制了 appspec,该人将 CodeDeploy 与 Django/DRF 项目(例如我的)一起使用。唯一的区别是他在他的 EC2 实例(我认为是 AWS linux)中使用了另一个内核,而我使用的是 ubuntu。所以我不得不在runas每个hooks部分的部分更改用户名。我第一次在 aws cli 中运行 create-deployment 命令时,部署失败并显示以下消息:

LifecycleEvent - ApplicationStop
Script - scripts/stop_application.sh
[stderr]No passwd entry for user 'ec2-user'
Run Code Online (Sandbox Code Playgroud)

事实证明,我忘了改变runasuseer的ApplicationStop钩。然后我更改了它,再次进行推送和创建部署,但错误仍然相同。我是否需要做其他事情来考虑 appspec 中的更改,或者为什么会发生这种情况?

这是appspec.yml文件:

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/taptop_web
permissions:
  - object: /home/ubuntu
    pattern: "**" …
Run Code Online (Sandbox Code Playgroud)

django command-line-interface amazon-web-services circleci aws-code-deploy

5
推荐指数
1
解决办法
951
查看次数

在 ECS 上进行蓝/绿部署所需的 Cloudformation 脚本

我正在尝试为具有蓝绿色部署支持的 AWS ECS编写云形成模板。AWS 最近在 ECS 中添加了这个蓝绿色功能,在云形成模板中找不到任何更新它的参考。他们提供了关于如何通过 UI 而不是通过云形成来做到这一点的文档。我猜,AWS 可能不会更新他们的云形成文档,因为它是一项新功能。任何找到文档的帮助将不胜感激。提前谢谢你。

amazon-web-services amazon-ecs aws-cloudformation blue-green-deployment aws-code-deploy

5
推荐指数
2
解决办法
2318
查看次数