1

我为具有 1 个公有子网的 VPC 设置了 AutoScaling 组设置和 AWS 代码部署设置。VPC 实例能够通过 IAM 角色访问所有 AWS 服务。

基础 AMI 是安装了 CodeDeploy 代理的 ubuntu。每当触发扩展事件时,AutoScaling 组都会启动一个实例,并且该实例会进入“等待生命周期事件”

AWS Code Deploy 触发部署并处于“进行中”状态,它会在该状态下保持一个多小时,然后失败。

如果在那一小时内,我手动分配弹性 IP,代码部署会立即成功。

拥有公共/弹性 IP 是 CodeDeploy 在 VPC 实例上成功的必要条件吗?

如何在不需要公共 IP 的情况下成功部署代码。

4

3 回答 3

2

您是否设置了 NAT 实例,以便实例可以在没有面向公众的 IP 地址的情况下访问 Internet?如果实例可以访问 Internet,则 EIP 无关紧要。您的代码是从轮询端点的 CodeDeploy 代理部署的,因此如果它无法到达端点,它将永远无法工作。

于 2015-08-22T20:41:08.847 回答
0

CodeDeploy 代理与之对话的端点不是像 codedeloy.amazonaws.com 这样的公共域名。根据https://github.com/aws/aws-codedeploy-agent/blob/,代理与命令控制端点对话,即“ https://codedeploy-commands.# {cfg.region}.amazonaws.com” 29d4ff4797c544565ccae30fd490aeebc9662a78/vendor/gems/codedeploy-commands-1.0.0/lib/aws/plugins/deploy_control_endpoint.rb#L9。因此,您需要确保私有实例可以访问此命令控​​制端点。

于 2017-10-03T18:23:37.083 回答
0

要将您的 VPC 连接到 CodeDeploy,您需要为 CodeDeploy 定义一个接口 VPC 终端节点。接口终端节点是一个具有私有 IP 地址的弹性网络接口,用作目标为受支持的 AWS 服务的流量的入口点。该端点提供与 CodeDeploy 的可靠、可扩展的连接,无需 Internet 网关、网络地址转换 (NAT) 实例或 VPN 连接。

https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints.html

于 2021-02-19T06:08:01.710 回答