Para ejecutar AWS CodeBuild en un servidor proxy explícito, debe configurar el servidor proxy de forma que permita o deniegue el tráfico dirigido a sitios externos o el tráfico procedente de estos sitios y debe configurar las variables de entorno HTTPS_PROXY
y HTTP_PROXY
.
Temas
Configuración de Squid como un servidor proxy explícito
Si desea configurar el servidor proxy de Squid para que sea explícito, debe realizar las siguientes modificaciones en el archivo /etc/squid/squid.conf
:
-
Elimine las siguientes reglas de lista de control de acceso (ACL) predeterminadas.
acl localnet src 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 acl localnet src fc00::/7 acl localnet src fe80::/10
Agregue lo siguiente en lugar de las reglas de ACL predeterminadas que ha eliminado. La primera línea admite las solicitudes procedentes de la VPC. Las siguientes dos líneas conceden al servidor proxy acceso a una URL de destino que AWS CodeBuild podría estar utilizando. Modifique la expresión regular de la última línea para especificar buckets de S3 o un repositorio de CodeDommit en una región de AWS. Por ejemplo:
-
Si la fuente es Amazon S3, use el comando acl download_src dstdom_regex .*s3\.us-west-1\.amazonaws\.com para conceder acceso a los buckets de S3 de la región
us-west-1
. -
Si la fuente es AWS CodeCommit, use
git-codecommit.<
para agregar una región de AWS a una lista de elementos permitidos.your-region
>.amazonaws.com
acl localnet src 10.1.0.0/16 #Only allow requests from within the VPC acl allowed_sites dstdomain .github.com #Allows to download source from GitHub acl allowed_sites dstdomain .bitbucket.com #Allows to download source from Bitbucket acl download_src dstdom_regex .*\.amazonaws\.com #Allows to download source from Amazon S3 or CodeCommit
-
-
Reemplace
http_access allow localnet
por lo siguiente:http_access allow localnet allowed_sites http_access allow localnet download_src
-
Si desea que la compilación cargue registros y artefactos, realice una de las siguientes acciones:
-
Antes de la instrucción
http_access deny all
, inserte las siguientes instrucciones. Permiten a CodeBuild acceder a CloudWatch y Amazon S3. Se requiere acceso a CloudWatch para que CodeBuild pueda crear Registros de CloudWatch. El acceso a Amazon S3 es necesario para poder cargar artefactos y el almacenamiento en caché de Amazon S3.-
https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept acl SSL_port port 443 http_access allow SSL_port acl allowed_https_sites ssl::server_name .amazonaws.com acl step1 at_step SslBump1 acl step2 at_step SslBump2 acl step3 at_step SslBump3 ssl_bump peek step1 all ssl_bump peek step2 allowed_https_sites ssl_bump splice step3 allowed_https_sites ssl_bump terminate step2 all
-
Después de guardar
squid.conf
, ejecute el comando siguiente:sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130 sudo service squid restart
-
-
Agregue
proxy
al archivo buildspec. Para obtener más información, consulte Sintaxis de buildspec.version: 0.2 proxy: upload-artifacts: yes logs: yes phases: build: commands: - command
-
nota
Si recibe un error de tiempo de espera agotado RequestError, consulte Error de tiempo de espera agotado de RequestError al ejecutar CodeBuld en un servidor proxy.
Para obtener más información, consulte Archivo squid.conf de ejemplo de un servidor proxy explícito más adelante en este tema.
Creación de un proyecto de CodeBuild.
Para ejecutar AWS CodeBuild con el servidor proxy explícito, defina las variables de entorno HTTPS_PROXY
y HTTP_PROXY
con la dirección IP privada de la instancia EC2 que creó para el servidor proxy y el puerto 3128 en el nivel del proyecto. La dirección IP privada será parecida a la siguiente: http://
. Para obtener más información, consulte Creación de un proyecto de compilación en AWS CodeBuild y Cambio de la configuración del proyecto de compilación en AWS CodeBuild.your-ec2-private-ip-address
:3128
Utilice el comando siguiente para ver el registro de acceso del proxy de Squid:
sudo tail -f /var/log/squid/access.log
Archivo squid.conf
de ejemplo de un servidor proxy explícito
A continuación, se incluye un ejemplo de un archivo squid.conf
configurado para un servidor proxy explícito.
acl localnet src 10.0.0.0/16 #Only allow requests from within the VPC
# add all URLS to be whitelisted for download source and commands to be run in build environment
acl allowed_sites dstdomain .github.com #Allows to download source from github
acl allowed_sites dstdomain .bitbucket.com #Allows to download source from bitbucket
acl allowed_sites dstdomain ppa.launchpad.net #Allows to run apt-get in build environment
acl download_src dstdom_regex .*\.amazonaws\.com #Allows to download source from S3 or CodeCommit
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet allowed_sites
http_access allow localnet download_src
http_access allow localhost
# Add this for CodeBuild to access CWL end point, caching and upload artifacts S3 bucket end point
https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept
acl SSL_port port 443
http_access allow SSL_port
acl allowed_https_sites ssl::server_name .amazonaws.com
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
ssl_bump peek step1 all
ssl_bump peek step2 allowed_https_sites
ssl_bump splice step3 allowed_https_sites
ssl_bump terminate step2 all
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320