标签: aws-code-deploy

使用Jenkinsfile和AWS Code deploy部署应用程序

我正在从Jenkins 1.x迁移到Jenkins2。我想使用Jenkinsfile构建和部署应用程序。我能够构建gradle应用程序,但是对于使用Jenkinsfile通过AWS Codedeploy部署应用程序感到困惑。

这是我的jenkinsfile

node {
   // Mark the code checkout 'stage'....
   stage 'Checkout'
   // Get some code from a GitHub repository
      git branch: 'master', 
       credentialsId: 'xxxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxx', 
       url: 'https://github.com/somerepo/someapplication.git'

   // Mark the code build 'stage'....
   stage 'Build'
   // Run the gradle build
      sh '/usr/share/gradle/bin/gradle build -x test -q buildZip -Pmule_env=aws-dev -Pmule_config=server'

    stage 'Deploy via Codedeploy'
    //Run using codedeploy agent
}
Run Code Online (Sandbox Code Playgroud)

我搜索了许多教程,但他们使用的是AWS Code deploy插件。您能否帮助我使用Jenkinsfile通过AWS Codedeploy部署应用程序?

谢谢。

jenkins aws-code-deploy jenkinsfile

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

错误:整体部署失败,因为太多的单个实例部署失败

我正在尝试使用 CircleCI -> S3 -> CodeDeploy -> EC2 进行部署。我能够将部署映像从 CircleCI 上传到 S3,但无法将 S3 部署到 EC2 实例。这是错误。

整体部署失败,原因是太多的单个实例部署失败,可用于部署的健康实例太少,或者部署组中的某些实例遇到问题。(错误代码:HEALTH_CONSTRAINTS)

该错误是从 CodeDeploy 提供的。我无法弄清楚为什么以及如何。如果您能提供一些建议,我将不胜感激。

amazon-s3 amazon-ec2 circleci aws-code-deploy

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

无法在参数存储AWS中获取参数

我现在正向aws求助。

我试图将参数存储在我的EC2实例的“参数存储”中,并将在Codedeploy的AfterInstall步骤中将其放入环境变量中。部署工作正常,但无论如何我都无法获取参数。

我尝试遵循本教程https://aws.amazon.com/it/blogs/mt/use-parameter-store-to-securely-access-secrets-and-config-data-in-aws-codedeploy/

我创建了策略“ ParameterStorePolicy”,如下所示:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ssm:DescribeParameters"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ssm:GetParameters"
        ],
        "Resource": [
            "arn:aws:ssm:us-east-2:<myId>:parameter/MySecureSQLPassword"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "arn:aws:kms:us-east-2:<myId>:alias/aws/ssm"
    }
]}
Run Code Online (Sandbox Code Playgroud)

我将策略附加到了“ CodeDeployServiceRole”,该策略也附加了“ AWSCodeDeployRole”。

最后,在我的脚本“ Afterinstall.sh”中,编写了以下代码:

cd /home/ubuntu/pypi
export PIPPO=$(aws ssm get-parameters --region us-east-2 --names 
MySecureSQLPassword --with-decryption --query Parameters[0].Value)
echo $PIPPO >testPippo.txt
Run Code Online (Sandbox Code Playgroud)

结果是一个无效的testPippo.txt文件。

谁能说我的错?

谢谢

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

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

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
查看次数

使用 Auto Scaling Groups、CloudFormation 和 CodeDeploy 的蓝/绿部署

我尝试通过复制 AutoScalingGroup 来设置蓝/绿部署,但是这会使 CloudFormation 堆栈与其原始资源分离,因为 CodeDeploy 创建新副本并删除原始资源。我从另一篇文章 ( https://forums.aws.amazon.com/thread.jspa?messageID=861085 ) 中了解到 AWS 正在为此开发改进,但是现在我正在尝试以下解决方法。任何想法都会非常有帮助。

CloudFormation 创建以下内容:

  • 弹性负载均衡器
  • 目标组
  • AutoScalingGroup 一(带有 LaunchConfiguration)
  • AutoScalingGroup 2(与 1 相同,但没有实例)
  • 部署组(使用就地部署样式)将修订部署到 AutoScalingGroup One

CloudFormation 完成后,我在控制台中手动执行以下操作:

  1. 我将创建的部署组更新为部署样式蓝/绿,并将其原始环境设置为 AutoScalingGroup One。
  2. 我将一个实例添加到 AutoScalingGroup 二
  3. 我在 CodeDeploy 中创建了一个部署。但是,这不起作用,因为当新实例附加到 AutoScalingGroup Two 时,它会立即添加到 TargetGroup 并且不会通过运行状况检查。

关于如何使用 CloudFormation 实施一组资源以简化蓝绿色部署的任何想法,即单击 CodeDeploy 并且 CloudFormation 资源仍然保持不变?

amazon-web-services aws-cloudformation autoscaling aws-code-deploy

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

如何使用 AWS CodePipeline 将 dotnet 核心应用程序部署到 ElasticBeanstalk

我正在尝试构建一个基本的 dotnet 核心应用程序,并使用 AWS 中提供给我的默认工具进行部署。我目前有以下步骤工作:

  1. CodeCommit 中的存储库
  2. 签入在运行 yml 文件(它创建我实际运行 Web 应用程序所需的正确文件)的 Ubuntu 映像“aws/codebuild/dot-net:core-2.1”上触发 CodeBuild 构建步骤:

    version: 0.2
    
    phases:
    
    build:
    commands:
      - dotnet restore CMS/CMS.csproj
      - dotnet build CMS/CMS.csproj
      - dotnet publish CMS/CMS.csproj -o site
     artifacts:
      files:
        - CMS/site/**/*
        - CMS/aws-windows-deployment-manifest.json
    
    Run Code Online (Sandbox Code Playgroud)

aws-windows-deployment-manifest.json:

{
    "manifestVersion": 1,
    "deployments": {
        "aspNetCoreWeb": [{
                "name": "CMS",
                "parameters": {
                    "appBundle": "./site",
                    "iisPath": "/",
                    "iisWebSite": "Default Web Site"
                }
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. CodeDeploy 获取工件并将它们发布到配置为使用 Windows 的弹性 beantalk 应用程序。它当前正在运行默认应用程序。

它可以很好地完成每个步骤,并且我在整个过程中都得到绿色复选标记,但是当我导航到 EB 实例时,仍然显示原始站点,这表明我的应用程序尚未部署。有什么我想念的吗?

我真的希望我能够从签入到完成部署应用程序,而无需修改构建环境,至少现在是这样。

amazon-web-services amazon-elastic-beanstalk .net-core aws-code-deploy aws-codepipeline

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

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

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

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

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

无法使用 aws cli 为 ecs 创建部署(部署指定修订为空文件,但提供的修订为 zip 文件)

我正在尝试部署(使用蓝/绿部署控制器)我的 API 的修订版。当我通过创建更新的任务修订和更新服务手动执行此操作时,这工作正常。但是当我尝试使用 CLI 时,当我将 appspec.yml 文件推送到 s3 时,我得到一个返回的 create-deployment 命令。当我尝试使用此命令触发部署时,触发的部署显示在部署部分但失败,我看到的错误是部署指定修订为空文件,但提供的修订为 zip 文件。请帮忙。

amazon-web-services amazon-ecs aws-code-deploy

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

设置 CodeDeploy 部署环境变量

我的 NodeJS 应用程序有一个 CD 管道,该管道包含以下步骤:

1) Travis CI 将 master 分支作为 zip 文件上传到 S3

2) Travis CI 触发 AWS CodeDeploy 部署

3) CodeDeploy 获取 .zip 文件,将其解压缩到我的 AWS EC2 并运行应用程序

但是我的 NodeJS 应用程序需要一些环境变量才能运行。由于这些变量的值是敏感的,我将这些变量存储在 TravisCI 的存储库设置中,并且不知道如何将我的环境变量从 Travis 传递到 EC2。

我可以使用envappspec.yml 的属性(用于 CodeDeploy)但我的 env.yml 属性。包含不应在代码存储库中的敏感信息的变量。

是否有任何最佳实践可以通过我的 env. 变量。通过 CodeDeploy 从 Travis 到 EC2 实例?

目前我正在做的是,.env在 Travis 构建期间生成一个文件并将其添加到.zip文件中,因此当应用程序部署到 EC2 时,我可以使用dotenvNodeJS 包访问它们。但我不认为这是最好的方法。

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

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

AWS Codedeploy BlockTraffic/AllowTraffic 持续时间

我一直在使用 AWS CodeDeploy 来实时推送我们的应用程序,但执行 BlockTraffic 和 AllowTraffic 步骤总是需要很长时间。目前,我有一个最初带有三个 EC2 节点的应用程序负载均衡器 (ALB)(在一个自动缩放组后面)。因此,如果我执行 CodeDeploy OneAtATime,则整个过程最多需要 25 分钟。

我正在使用它的负载均衡器将连接耗尽设置为 300 秒。我以为是拖出来的原因。但是,我禁用了连接耗尽并得到了相同的结果。然后我启用了 Connection Draining 并将超时设置为 5 秒,但仍然得到相同的结果。

此外,我发现 CodeDeploy 取决于 ALB 运行状况检查设置。根据 AWS 文档

在实例绑定到 ALB 后,CodeDeploy 会在负载均衡器后面等待实例的状态为健康(“inService”)。此运行状况检查由 ALB 完成并取决于运行状况检查配置。

所以我尝试通过为健康检查设置设置低超时和阈值。即使是这些变化也没有大大减少部署时间。

有人可以指导我找到适当的解决方案以加快流程吗?

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

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