标签: aws-code-deploy

如何使用AWS CodeDeploy/CodePipeline/S3将Gitlab-Ci部署到EC2

我一直在使用Gradle开发基于Scala的SlackBot项目,并且一直在研究如何利用Gitlab-CI来部署到AWS EC2.

我可以使用Gitlab-CI完全构建和测试我的应用程序.

如何使用CodeDeploy和CodePipeline从Gitlab-CI到Amazon EC2执行部署?

回答以此作为指南.

amazon-s3 amazon-ec2 gradle gitlab-ci aws-code-deploy

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

使用AWS CodeDeploy的环境变量

我有一个Web应用程序,它使用环境变量进行某些配置(数据库凭据,API密钥等).我目前正在使用Elastic Beanstalk进行部署,并且可以在AWS中轻松设置这些,这很好,因为我的代码库中没有这些敏感数据.

但是,我正在考虑从Elastic Beanstalk切换,以便我可以在我的Web实例中利用更多的灵活性,当然我正在考虑使用CodeDeploy部署(来自我的Codeship CI设置).CodeDeploy非常简单,我已经将它与Codeship集成得很好,但我注意到没有内置功能来设置CodeDeploy的环境变量,就像Elastic Beanstalk一样.有没有人有这个过程的最佳实践?

environment-variables amazon-web-services aws-code-deploy

20
推荐指数
1
解决办法
5524
查看次数

我可以使用AWS代码部署在自动缩放时提取应用程序代码吗?

我想在负载变高时自动调整基础架构.我正在运行我的基础设施AWS.我有一个要求,我需要从Github何时发出应用程序代码autoscaling.由于代码经常更改,我们无法从中获取AMI并启动实例AMI.所以我想从中提取最新的代码repositories.AWS刚刚推出了一项名为的服务AWS CodeDeploy.如何在实例启动时使用此服务自动执行代码拉取过程?

PS我已经编写了一个init script自动附加EIP白名单的白名单,将IP放在不同的安全组上,并load-balancer在实例启动时将实例放在a 下,并在实例在autoscaling中终止时撤销所有内容.

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

16
推荐指数
1
解决办法
7557
查看次数

Amazon Web Service CodeDeploy appspec.yml问题

我有一个Node.js应用程序,它使用CodeDeploy AWS部署系统通过Codeship自动部署到Amazon Web Service.

在部署过程中,我在appspec.yml中设置了要停止的当前运行的Web应用程序.部署完成后,我希望再次启动Web应用程序.

os: linux
files:
  - source: /
    destination: /var/www/app2
hooks:
  AfterInstall:
      - location: bash_scripts/stop_forever.sh
        runas: ec2-user
  ApplicationStart:
      - location: bash_scripts/start_forever.sh
        runas: ec2-user
Run Code Online (Sandbox Code Playgroud)

但是,在部署期间,我还无法从appspec.yml文件中成功调用这些脚本中的任何一个.

我在AWS部署代理日志中看到的当前错误是

Error CodeScriptMissing
Script Name /var/scripts/stop_forever.sh
MessageScript does not exist at specified location: /var/scripts/stop_forever.sh
Log TailLifecycleEvent - ApplicationStop
Run Code Online (Sandbox Code Playgroud)

这似乎是指旧版本的appspec.yml文件,它试图在不同的位置运行这些脚本.即使我已更改已部署包中的appspec.yml文件的内容,此错误消息在每次部署时保持不变.

除了上面列出的appspec.yml文件,我还尝试进行以下更改:

  • 不列出每个钩子的runas参数
  • 引用已部署目录中的脚本
  • 引用已部署目录之外的脚本
  • 版本参数初始设置为0.0

不幸的是,除了AWS文档之外,appspec.yml故障排除方面的在线数量非常少.

我做错了什么非常明显的事情?

continuous-integration yaml continuous-deployment codeship aws-code-deploy

14
推荐指数
2
解决办法
8721
查看次数

AWS CodeDeploy正在从代码部署代理程序dir运行AfterInstall脚本

我正在尝试在AWS代码部署中运行AfterInstall脚本,但它是从/ opt/codedeploy-agent/dir而不是我的app目录运行的.

这就是appspec.yml文件的样子:

version: 0.0

os: linux

files:
  - source: /
    destination: /tmp/epub

hooks:
  AfterInstall:
    - location: server/install-packages.sh
      runas: root
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这是一个基本的例子.

现在,bash脚本如下所示:

#!/bin/bash
npm install
Run Code Online (Sandbox Code Playgroud)

我只想安装npm,就是这样.

不幸的是我收到了错误:

LifecycleEvent - AfterInstall
Script - server/install-packages.sh
[stderr]npm ERR! install Couldn't read dependencies
[stderr]npm ERR! Linux 3.13.0-48-generic
[stderr]npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
[stderr]npm ERR! node v4.2.1
[stderr]npm ERR! npm  v2.14.7
[stderr]npm ERR! path /opt/codedeploy-agent/package.json
[stderr]npm ERR! code ENOPACKAGEJSON
[stderr]npm ERR! errno -2
[stderr]npm ERR! syscall open
[stderr]
[stderr]npm ERR! package.json ENOENT: no such …
Run Code Online (Sandbox Code Playgroud)

bash amazon-web-services node.js aws-code-deploy

14
推荐指数
1
解决办法
4664
查看次数

InstanceAgent :: Plugins :: CodeDeployPlugin :: CommandPoller:缺少凭据

我正在尝试使用AWS CodeDeploy将GitHub项目部署到EC2实例.在关注了2个视频教程之后,我还是得到了以下错误:

2017-02-01 12:20:08 INFO  [codedeploy-agent(1379)]: master 1379: Spawned child 1/1
2017-02-01 12:20:09 INFO  [codedeploy-agent(1383)]: On Premises config file does not exist or not readable
2017-02-01 12:20:09 INFO  [codedeploy-agent(1383)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor: Archives to retain is: 5}
2017-02-01 12:20:09 INFO  [codedeploy-agent(1383)]: Version file found in /opt/codedeploy-agent/.version.
2017-02-01 12:20:09 ERROR [codedeploy-agent(1383)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile
Run Code Online (Sandbox Code Playgroud)

我有两个IAM:

  • CodeDeployInstanceRole
  • CodeDeployServiceRole

EC2实例的CodeDeployInstanceRole

策略名称:AmazonEC2RoleforAWSCodeDeploy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion", …
Run Code Online (Sandbox Code Playgroud)

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

13
推荐指数
3
解决办法
4071
查看次数

安装前的AWS Code Deploy错误无法解决

所以我正在尝试为我的应用程序设置CodeDeploy,并且在部署的BeforeInstall部分期间我一直收到错误.以下是错误.

Error Code UnknownError
Script Name
Message No such file or directory - /opt/codedeploy-agent/deployment-root/06100f1b-5495-42d9-bd01-f33d59fb5deb/d-NL5K1THE8/deployment-archive/appspec.yml
Log Tail
Run Code Online (Sandbox Code Playgroud)

我认为这意味着YAML文件位于错误的位置.但是它位于我的修订版的根目录中.我尝试使用像这样的简单AppSpec文件而不是更复杂的文件.

    ## YAML Template.
---
version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/www
Run Code Online (Sandbox Code Playgroud)

或多或少,因为这是第一次部署,我希望它将修订中的所有文件添加到Web服务器上的公共目录中.

我正在撕裂我的头发,我觉得这是一个简单的问题.我有正确的IAM策略和角色,我有我正在尝试部署到的实例上的CodeDeploy设置和运行.

yaml amazon-web-services aws-code-deploy

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

AWS CodeDeploy失败:部署失败,因为此位置已存在指定的文件

我正在尝试使用Github设置AWS Code部署以自动化我的部署.我遇到的问题是ec2实例已经处于活动状态并且具有Web应用程序代码.问题是在源代码控制下我还不想要实例上的其他内容.代码部署失败,出现以下错误:

The deployment failed because a specified file already exists at this location
Run Code Online (Sandbox Code Playgroud)

这是因为源代码位于实例上,并未添加为修订版.

所以我的问题是,是否有任何方法可以使代码部署将实例上的当前文件识别为初始修订版?

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

12
推荐指数
2
解决办法
5879
查看次数

在 AWS 中 - 不可变部署和蓝/绿部署之间的区别?

根据 AWS 文档,我的印象是 Immutable 和 Blue/Green 是同一件事,只是名称不同。在这两种情况下,您都将创建一组全新的服务器,并在部署的最后一步过渡到这些服务器。

\n

也许有一些细节可以区分这两者。但如果这么好,那么当它们实际上是同一件事时,让它们截然不同又有什么意义呢?

\n

根据 AWS 文档:\n(来源: https: //docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/immutable-and-bluegreen-deployment.html

\n
\n

不可变模式通过使用新的配置或应用程序代码版本启动一组全新的服务器来指定应用程序代码的部署。此模式利用云功能,通过简单的 API 调用创建新的服务器资源。

\n
\n
\n

蓝/绿部署策略是一种不可变部署,也需要创建另一个环境。一旦新环境启动并通过所有测试,流量就会转移到这个新部署。至关重要的是,旧环境(即 \xe2\x80\x9cblue\xe2\x80\x9d 环境)保持空闲状态,以备需要回滚时使用。

\n
\n

“至关重要”这句话听起来像是差异化因素,但在不可变部署中,如果您愿意,您也可以在部署后将旧实例保留在目标组中空闲状态。

\n

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

12
推荐指数
1
解决办法
6984
查看次数

安装之前:CodeDeploy 代理无法接收生命周期事件。检查主机上的 CodeDeploy 代理日志并确保代理已启动

我已经设置了管道,但在部署过程中出现以下错误:

before install CodeDeploy agent was not able to receive the lifecycle event. Check the CodeDeploy agent logs on your host and make sure the agent is running and can connect to the CodeDeploy server.
Run Code Online (Sandbox Code Playgroud)

代码代理正在运行,但我不知道问题是什么。我检查了codedeploy的日志:

[ec2-user@ip-172-31-255-11 ~]$ sudo cat /var/log/aws/codedeploy-agent/codedeploy-agent.log
2022-09-27 00:00:02 INFO  [codedeploy-agent(3694)]: [Aws::CodeDeployCommand::Client 200 45.14352 0 retries] poll_host_command(host_identifier:"arn:aws:ec2:us-east-1:632547665100:instance/i-01d3b4303d7c9c948")  

2022-09-27 00:00:03 INFO  [codedeploy-agent(3694)]: Version file found in /opt/codedeploy-agent/.version with agent version OFFICIAL_1.4.0-2218_rpm.
2022-09-27 00:00:03 INFO  [codedeploy-agent(3694)]: Version file found in /opt/codedeploy-agent/.version with agent version OFFICIAL_1.4.0-2218_rpm.
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-code-deploy

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