标签: aws-code-deploy

使用AWS Code Deploy和Jenkins有什么优缺点?

我们正在使用一堆可能在未来扩展的EC2实例(大约100个实例),现在我们正在寻求使用Jenkins或AWS Code部署进行自动部署.

我发现我们可以在Jenkins中使用AWS Code部署插件,但有哪些优点和缺点?

1)独立AWS代码部署2)Jenkins与AWS Code Deploy插件.

continuous-integration amazon-web-services continuous-deployment jenkins aws-code-deploy

11
推荐指数
1
解决办法
9615
查看次数

如何在AWS上使用子模块自动部署git存储库?

我的git存储库中有一个子模块,我的目录结构是这样的,

app
  -- folder1
  -- folder2
  -- submodule @5855
Run Code Online (Sandbox Code Playgroud)

我已使用autodeploy服务在AWS上部署了我的代码.现在,在服务器上,我在父目录中有代码,但子模块目录是空的.

Q1)如何在子模块中获取数据.我在服务器上的存储库不是git存储库.我是否需要先将其转换为git repo,然后运行submodule命令才能获得它?

Q2)如何自动化子模块部署?

谢谢

git github git-submodules aws-code-deploy

11
推荐指数
5
解决办法
2859
查看次数

CodePipeline:CodeDeploy 报告“BundleType 必须是 YAML 或 JSON”

CodeDeploy 报告“BundleType 必须是 YAML 或 JSON”

appspec.yml 位于 CodeCommit 的根目录中

构建规范.yml:

version: 0.2

phases:
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Python code...
      - python HelloWorld_tst.py
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - HelloWorld.py
    - appspec.yml
  discard-paths: yes
Run Code Online (Sandbox Code Playgroud)

appspec.yml

version: 0.0
Resources:
    - autovisionfunction:
        Type: AWS::Lambda::Function
        Properties:
            Name: "autovisionfunction"
            Alias: "staging"
            CurrentVersion: "1"
            TargetVersion: "2"
            
Run Code Online (Sandbox Code Playgroud)

似乎在 CodePipeline 中找不到 appspec.yml

我已经从 S3 存储桶下载了人工制品 zip,里面有 appspec.yml。

在此处输入图片说明

我想念什么?

谢谢

奥利亚

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

11
推荐指数
1
解决办法
2876
查看次数

如何对 DownloadBundle 阶段的代码部署中的 ACCESS DENIED 进行故障排除

附加的屏幕截图是错误。没有需要我进行故障排除的 stderr 消息。我已经为 S3 设置了必要的 EC2 IAM 访问权限。那么可能是什么问题呢?

[1] [2]

我还添加了 IAM 的用户要求,所以我不确定有什么问题

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::codepipeline-ap-southeast-1-617020163322/*",
                "arn:aws:s3:::aws-codedeploy-us-east-2/*",
                "arn:aws:s3:::aws-codedeploy-us-east-1/*",
                "arn:aws:s3:::aws-codedeploy-us-west-1/*",
                "arn:aws:s3:::aws-codedeploy-us-west-2/*",
                "arn:aws:s3:::aws-codedeploy-ca-central-1/*",
                "arn:aws:s3:::aws-codedeploy-eu-west-1/*",
                "arn:aws:s3:::aws-codedeploy-eu-west-2/*",
                "arn:aws:s3:::aws-codedeploy-eu-west-3/*",
                "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
                "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
                "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
                "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",
                "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
                "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
                "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

aws-code-deploy

10
推荐指数
3
解决办法
6198
查看次数

如何使用AWS部署工具处理数据库迁移

Amazon Web Services根据您的需求提供许多持续部署和管理工具,如Elastic Beanstalk,OpsWorks,Cloud Formation和Code Deploy.基本思想是在零停机时间内促进代码部署和升级.它们还有助于使用AWS资源管理最佳架构实践.

为简单起见,我们假设一个基本的架构,你有一个2撕裂结构; 负载均衡器后面的应用程序服务器集合,然后是使用多区域RDS DB的持久层.

跨一组实例(app服务器)的实际代码升级很容易理解.对于非常简单的概述,AWS服务会依次关闭每个节点,从而关闭连接,以便不使用相关实例.

但是,我无法理解如何管理数据库升级.假设我们从应用程序的版本1.0.0到2.0.0,并且需要更改数据库结构.通常,您将使用像Flyway这样的脚本或库来执行升级.但是,如果有一组要升级的服务器,则需要不同数据库结构的机群中存在1.0.0和2.0.0应用程序.

我需要了解实际上如何实现(高级别)以了解执行数据库迁移的最佳方式/时间.我猜他们可以通过两种方式实现这一目标,但我很难看到他们如何做到这一点并允许1.0.0和2.0.0保持数据而不会丢失.

如果他们使用第一个应用程序节点升级迁移数据库结构,同时创建1.0.0的缓存版本.连接到1.0.0应用程序的用户使用缓存版本的数据库保持不变,连接到2.0.0应用程序的用户将持久保存到新迁移的数据库.迁移所有应用程序节点后,缓存的数据将合并到数据库中.

他们似乎不太可能这样做,因为合并会非常复杂,但我看不到另一种方式.任何指针/帮助将不胜感激.

amazon-web-services aws-cloudformation aws-opsworks amazon-elastic-beanstalk aws-code-deploy

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

NPM问题使用AWS codedeploy部署nodejs实例

我目前正在尝试通过Github和AWS Codedeploy自动将nodejs应用程序部署到EC2实例.我已经尽可能地遵循了这里的说明 ,但是我遇到了AfterInstall钩子事件.

这是我的yml文件:

version: 0.0
os: linux
files:
  - source: /backend
    destination: /home/ec2-user/signal
permissions:
  - object: /
    pattern: "**"
    owner: ec2-user
    group: ec2-user
hooks:
  ApplicationStop:
    - location: backend/app/deploy/stop.sh
      timeout: 10
      runas: ec2-user
  BeforeInstall:
    - location: backend/app/deploy/beforeinstall.sh
      timeout: 1200
      runas: ec2-user
  AfterInstall:
    - location: backend/app/deploy/afterinstall.sh
      timeout: 1200
      runas: ec2-user
  ApplicationStart:
    - location: backend/app/deploy/start.sh
      timeout: 60
      runas: ec2-user
ValidateService:
    - location: backend/app/deploy/validate.sh
      timeout: 60
      runas: ec2-user
Run Code Online (Sandbox Code Playgroud)

我通过AWS CLI调用部署,如下所示:

aws deploy create-deployment --application-name Signal --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name Production --description "Deployment" …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services node.js npm aws-code-deploy

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

代码部署失败,没有任何错误消息

因此,我一直在尝试为我的应用程序设置代码部署,但始终失败。最初,我在存储库中没有appspec.yml文件,因此我收到错误消息,指出appspec.yml文件不存在。

我现在包含了一个appspec.yml文件,但是它仍然无法正常工作,并且没有给出任何错误消息。没有提到任何事件,就像添加appspec文件之前的事件一样。

关于创建appspec.yml文件,我的知识还不多,但是我从youtube教程中得到了提示,这里是文件。

version: 0.0
os: linux
files:
 - source: /
   destination: /var/www/cms
Run Code Online (Sandbox Code Playgroud)

如果有帮助,则ec2实例正在运行ubuntu服务器,/ ng / www / cms是该目录,nginx应该在该目录中提供文件。

amazon-web-services aws-code-deploy

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

当 ECS 任务定义已经有“imagedefinitions.json”时,为什么 CodePipeline 还需要它?

好的,我有一个 CodePipeline,它的功能非常普通

CodeCommit -> Build Docker images -> CodeDeploy to ECS

在该buildspec.yml文件中,AWS要求输出imagedefinitions.json为 CodePipeline 可用于将容器名称映射到 ECR 图像 URL 的工件。

以下是经常引用的示例,说明如何在您的 中执行此操作buildspec.yml

printf '[{"name":"MyService","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/myservice/app:latest > imagedefinitions.json

但这对我来说似乎完全多余。在 ECS 任务定义中,我们可以在 下包含以下内容containerDefinitions

"containerDefinitions": [
    {
      "name": "MyService",
      "image": "123456789.dkr.ecr.us-east-1.amazonaws.com/myservice/app:latest"
     }, 
     ...
]
Run Code Online (Sandbox Code Playgroud)

为什么为了使用 CodePipeline CodeDeploy ECS 任务,我们必须提供 ECS 任务定义中已指定的信息?在这里消除对工件(以及存储所述工件的 S3 存储桶)的需要会更加干净!

也许 CodeDeploy/ECS 的一些基础知识我不明白。

amazon-ecs aws-code-deploy aws-codepipeline

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

如何使AWS CodeDeploy将AWS CodeCommit用作Git仓库?

我找不到任何关于此的文件!每个示例都基于GitHub repos,但我如何使用AWS CodeCommit执行此操作

git amazon-web-services aws-code-deploy aws-codecommit

8
推荐指数
1
解决办法
3236
查看次数

由于错误"文件已存在",使用CodeDeploy部署在"安装"步骤失败

这是我在"安装"步骤中遇到的错误 -

File already exists at location /var/cake_1.2.0.6311-beta/app/webroot/../../somefile.php
Run Code Online (Sandbox Code Playgroud)

我无法断定为这种情况带来了什么样的事件.但我记得的是 -

  • 我通过jenkins启动了部署(集成了代码部署插件).部署在"安装"步骤失败,上面粘贴了错误.

    注 - 这是appspec.yml文件的files部分中的第一个文件.

  • 据我所知,我在同一部署组上进行了一些部署,直接通过代码部署(最有可能使用Jenkins在上面步骤中创建的相同S3文件)并且它已成功完成.

    • 然后我有几次失败的部署(故意在各个步骤失败,例如在安装之前退出非零数字).

此后,即使直接通过代码部署,我也无法成功部署.

背景

我检查了这个看似相关的问题并尝试通过删除内部的所有内容/opt/codedeploy-agent/deployment-root/?,如其中一个答案中提到,但是,它导致我的实例中的代码部署已损坏并且通过Jenkins部署开始抛出此错误说来自archive的appspec文件(它是试图找到最后一次成功部署,似乎已被删除)未找到 -

即使直接通过代码部署的相同部署组成功运行,Jenkins也会在ApplicationStop步骤中触发代码部署失败

然后我重新安装了实例上的代码部署,上面提到的步骤就是我之后做的.

更新 - 开放赏金

正如罗德里戈M所回答的那样,到目前为止,从实例上的部署路径中删除这些文件对我来说是有用的,但同样不适用于这个特定文件 -

 File already exists at location /var/cake_1.2.0.6311-beta/deployment/serverLoad.json
Run Code Online (Sandbox Code Playgroud)

我验证了以下内容 -

  • 在所有实例上从上述位置删除文件后,我进行了新的部署.我发现文件重新出现但仍然抛出了与上面提到的相同的错误,部署失败了.

  • 没有删除,我chmod'ed文件到777.相同的结果.

有趣的是,昨天我收到了多个文件的这个错误,我继续逐个删除它们,因为我发现它们并采用了新的构建.除了这个文件之外,所有其他文件的问题都得到了修复,甚至删除都没有用.我没有线索!

注 - 我现在正在进行的所有部署都是由Jenkins触发的(没有从AWS代码部署触发的直接部署).

以下是/var/log/aws/codedeploy-agent/codedeploy-agent.log包含相关错误堆栈的日志跟踪-

2016-11-10 07:38:12 INFO  [codedeploy-agent(16889)]: Version file found in /opt/codedeploy-agent/.version.
2016-11-10 07:38:12 INFO  [codedeploy-agent(16889)]: [Aws::CodeDeployCommand::Client 200 0.025545 0 retries] put_host_command_complete(command_status:"Failed",diagnostics:{format:"JSON",payload:"{\"error_code\":5,\"script_name\":\"\",\"message\":\"File already exists at location /var/cake_1.2.0.6311-beta/deployment/serverLoad.json\",\"log\":\"\"}"},host_command_identifier:"WyJjb20uYW1hem9uLmFwb2xsby5kZXBsb3ljb250cm9sLmRvbWFpbi5Ib3N0Q29tbWFuZElkZW50aWZpZXIiLHsiZGVwbG95bWVudElkIjoiQ29kZURlcGxveS91cy1lYXN0LTEvUHJvZC9hcm46YXdzOnNkczp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4OmRlcGxveW1lbnQvZC1VOVFPR0RBWUkiLCJob3N0SWQiOiJhcm46YXdzOmVjMjp1cy1lYXN0LTE6Mzc3NzAzOTYxOTk4Omluc3RhbmNlL2ktZWNmYzU1YTkiLCJjb21tYW5kTmFtZSI6Ikluc3RhbGwiLCJjb21tYW5kUG9zaXRpb24iOjQsImNvbW1hbmRBdHRlbXB0IjoxfV0=")

2016-11-10 07:38:12 …
Run Code Online (Sandbox Code Playgroud)

deployment amazon-web-services jenkins aws-code-deploy

8
推荐指数
1
解决办法
3254
查看次数