我在VPC内有私人子网,带有以下路由表:
XX.X.0.X/16 local
0.0.0.0/0 nat-0XXXXXXXXX
使用上述配置AWS编码EPLOY失败,错误为Error code: HEALTH_CONSTRAINTS
,而/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log
中没有日志条目。
但是,当我更改它以允许通过添加Internet网关访问公众访问随着以下路由表AWS编码eploy被成功地串通。
XX.X.0.X/16 local
0.0.0.0/0 igw-0XXXXXXXXX
我是否缺少其他配置?
编码eploy代理需要出站访问Internet才能访问4个不同的服务端点。为了使服务正常工作,需要访问所有这些端点。
需要出站访问Internet才能访问(1) codeDeploy服务端点,(2) 访问S3或GitHub服务 - 此访问是必需的向代理下载用于部署的修订的软件部署软件包。
来自CodeDeploy FAQS:
...安装在Amazon EC2实例上的AWS CodeDeploy代理必须是 能够访问公共AWS CodeDeploy和Amazon S3服务 端点。有关更多信息,请参阅AWS编码端口端点和 Amazon S3端点。
(3)编码EPLOY代理将定期检查软件更新,并在新版本的24小时内自动自动更新自动。正确配置的编码EPLOY代理实例将允许IAM S3访问AWS CodeDeploy Resource Kit参考桶,以便在可用时可以访问新软件。在升级服务时,在此处不提供更新访问可能会破坏您的实现,或限制对新功能的访问。
(4)关于codedeploy命令和控制,代理的源代码显示了对特殊命令https
端点的引用,称为 AWS_DEPLOY_CONTROL_ENDPOINT
:
来自AWS编码EDEPLOY-AGENT软件存储库,deploy_control_endpoint.rb
文件具有以下内容:
require 'aws-sdk-core'
module Aws
module Plugins
class DeployControlEndpoint < Seahorse::Client::Plugin
option(:endpoint) do |cfg|
url = ENV['AWS_DEPLOY_CONTROL_ENDPOINT']
if url.nil?
url = "https://codedeploy-commands.#{cfg.region}.amazonaws.com"
if "cn" == cfg.region.split("-")[0]
url.concat(".cn")
end
end
url
end
end
end
end
虽然显然没有记录,但也需要访问此端点。