标签: aws-code-deploy

找不到 CodeDeploy PM2 命令

我正在尝试使用 AWS CodeDeploy 来部署我的应用程序。一切似乎都运行良好,但出现以下错误。

[stderr]/opt/codedeploy-agent/deployment-root/f1ea67bd-97bo-08q1-b3g4-7b14becf91bf/d-WJL0QLF9H/deployment-archive/scripts/start_server.sh:第3行:pm2:找不到命令

下面是我的 start_server.sh 文件。

#!/bin/bash
pm2 start ~/server.js -i 0 --name "admin" &
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用 SSH 以用户 ubuntu 身份连接到我的服务器并运行该 bash 文件,并且它运行完美,没有错误。所以我知道 PM2 已安装并在该用户上正常工作。

下面也是我的 appspec.yml 文件。

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu
hooks:
  ApplicationStart:
    - location: scripts/start_server.sh
      timeout: 300
      runas: ubuntu
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: ubuntu
Run Code Online (Sandbox Code Playgroud)

也不确定这是否有帮助,但这是我的 stop_server.sh 文件。

#!/bin/bash
npm install pm2 -g
pm2 stop admin || true
pm2 delete admin || true
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

linux bash node.js npm aws-code-deploy

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

CodeDeploy 的简单 IAM 问题

我在让 CodeDeploy 将 Github 代码部署到蓝/绿部署中的 AutoScaling 组这一看似微不足道的任务中遇到了问题。

我有一个管道设置、一个部署组设置和 AutoScaling 组,但是在进行实际部署时它失败了:

在此处输入图片说明


我去了我的角色,它似乎有足够的策略来完成蓝/绿部署:

在此处输入图片说明


是否有我不认为需要附加到此角色的策略?

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

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

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

AWS CodeDeploy 停留在AllowTraffic 步骤

我正在使用 AWS CodeDeploy 将我的项目(由 CodePipeline 触发)部署到自动扩展组(ALB 后面的 EC2 实例)。这是我的 appSpec 文件:

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html/test-deploy
    overwrite: true
permissions:
  - object: /var/www/html/test-deploy/codedeploy
    pattern: "*.sh"
    owner: root
    group: root
    mode: 755
    type:
      - file
hooks:
  BeforeInstall:
    - location: codedeploy/before_install.sh
      timeout: 180
  AfterInstall:
    - location: codedeploy/after_install.sh
      runas: centos
      timeout: 180
Run Code Online (Sandbox Code Playgroud)

文件已成功部署到 EC2 实例,但由于某种原因,在“BeforeAllowTraffic”之后没有任何反应,就像我等了 15 分钟,下一步仍处于“待处理”状态。

这两个 .sh 文件没有做任何花哨的事情(并且 codedeploy 通过了这些步骤,所以我认为这不是问题)。

有人能给我指出一个方向吗?我没有收到任何错误消息,所以我什至不知道如何调试它。

谢谢

amazon-web-services aws-code-deploy

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

将多个 lambda 函数从单个 github 存储库部署到 AWS 的最佳方法是什么?

我有一个存储库,在 github 上托管我的 lambda 函数。我希望每当新逻辑被推送到掌握时都能够部署新版本。

我做了很多研究,发现了一些不同的方法,但没有什么真正清楚的。想知道其他人认为最好的方法是什么,也许还有一些关于如何设置管道的细节(如果可能)。

谢谢

aws-code-deploy aws-lambda aws-codepipeline aws-codebuild aws-serverless

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

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

AWS CodeDeploy 需要两个目标组,但为什么呢?

AWS CodeDeploy 要求必须有两个目标组。我只与一个目标群体合作,不需要第二个目标群体。但是当我尝试仅使用目标群体时,我收到此消息

目标群体对必须具有不同的目标群体。

我不太明白(我阅读了文档)为什么 CodeDeploy 需要两个目标组,而不仅仅是一个。

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

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

Elastic Beanstalk:“.ebextensions”未执行

我正在将 PHP 应用程序部署到 Beanstalk,一切似乎都很好,但我的.ebextensions配置文件似乎没有运行。

我只有一个配置文件,它应该创建一个文件,然后重新加载 nginx。
/my-project/.ebextensions/nginx.config:

files:
  "/etc/nginx/conf.d/elasticbeanstalk/extend-nginx.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      add_header X-Frame-Options "SAMEORIGIN";
      add_header X-XSS-Protection "1; mode=block";
      add_header X-Content-Type-Options "nosniff";

      location / {
          try_files $uri $uri/ /index.php?$query_string;
      }

container_commands:
    reload_nginx:
        command: "sudo service nginx reload"
Run Code Online (Sandbox Code Playgroud)

我的架构目前是:
1. CodePipeline 连接到 GitHub,每次更新 master 时都会将应用程序部署到 CodeDeploy。
2. CodeDeploy 从 CodePipeline 接收部署。
3. CodeDeploy 将其安装到 Elastic Beanstalk 实例。

上述所有步骤都可以正常工作。我只是不明白为什么配置文件.ebextensions没有按预期创建文件。

.ebextensions注意:我通过手动下载其中一个修订版本并进行检查,确认该文件夹位于修订版 .zip 的根目录中。

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

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

如何查找 aws 服务标识符列表

我正在与 aws 合作并使用他们的开发人员工具实施 CI/CD。每个工具都需要一个服务角色,因此我决定使用正确的权限更新现有的服务角色。问题是我不知道在哪里可以找到用于每个服务的值列表。

下面我只是在创建角色后猜了正确的名字,但我宁愿不猜 在此输入图像描述

我搜索了文档并找到了这些名称,我还尝试使用cli来查找 ids:aws describe-services或者aws help但该列表不匹配。

如何找到更新这些策略的值?

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

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

AWS CodeDeploy 代理未安装在 ubuntu 22.04 上

我尝试安装 codedeploy 代理ubuntu 22.04但不起作用。我已经ruby 2.6.0通过 rbenv 安装了。

ubuntu@ip-172-31-37-7:~$ sudo ./install --sanity-check  deb
I, [2022-08-10T06:26:28.905059 #47961]  INFO -- : Starting Ruby version check.
I, [2022-08-10T06:26:28.905394 #47961]  INFO -- : Starting update check.
I, [2022-08-10T06:26:28.905593 #47961]  INFO -- : Checking AWS_REGION environment variable for region information...
I, [2022-08-10T06:26:28.905770 #47961]  INFO -- : Checking EC2 metadata service for region information...
I, [2022-08-10T06:26:28.921018 #47961]  INFO -- : Checking AWS_DOMAIN environment variable for domain information...
I, [2022-08-10T06:26:28.921228 #47961]  INFO -- : …
Run Code Online (Sandbox Code Playgroud)

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

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