Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
GunakanAWS CodeBuilddengan server proksi
Anda dapat menggunakanAWS CodeBuilddengan server proxy untuk mengatur lalu lintas HTTP dan HTTPS ke dan dari internet. Untuk menjalankan CodeBuild dengan server proxy, Anda menginstal server proxy di subnet publik dan CodeBuild di subnet pribadi dalam VPC.
Ada dua kasus penggunaan utama untuk menjalankan CodeBuild di server proxy:
-
Ini menghilangkan penggunaan gateway NAT atau instance NAT di VPC Anda.
-
Ini memungkinkan Anda menentukan URL yang instans dalam server proxy dapat mengakses dan URL yang server proxy menolak akses.
Anda dapat menggunakan CodeBuild dengan dua jenis server proxy. Untuk keduanya, server proxy berjalan di subnet publik dan CodeBuild berjalan di subnet pribadi.
-
Proksi eksplisit: Jika Anda menggunakan server proxy eksplisit, Anda harus mengkonfigurasi
NO_PROXY
,HTTP_PROXY
, danHTTPS_PROXY
variabel lingkungan di CodeBuild di tingkat proyek. Untuk informasi selengkapnya, lihat Mengubah pengaturan proyek build diAWS CodeBuild dan Membuat proyek pembangunan diAWS CodeBuild. -
Proksi transparan: Jika Anda menggunakan server proxy transparan, tidak ada konfigurasi khusus yang diperlukan.
Topik
Komponen yang diperlukan untuk menjalankan CodeBuild di server proxy
Anda perlu komponen-komponen ini untuk menjalankanAWS CodeBuilddi server proxy transparan atau eksplisit:
-
VPC.
-
Satu subnet publik di VPC Anda untuk server proxy.
-
Satu subnet privat di VPC Anda untuk CodeBuild.
-
Gateway internet yang memungkinkan pergantian antara VPC dan internet.
Diagram berikut menunjukkan bagaimana komponen berinteraksi.
Mengatur VPC, subnet, dan gateway jaringan
Langkah-langkah berikut diperlukan untuk menjalankanAWS CodeBuilddi server proxy transparan atau eksplisit.
-
Buat sebuah VPC. Untuk informasi, lihatMembuat VPCdiPanduan Pengguna Amazon VPC.
-
Membuat dua subnet di VPC Anda. Salah satunya adalah subnet publik
Public Subnet
di mana server proxy Anda berjalan. Yang lainnya adalah subnet pribadi bernamaPrivate Subnet
di mana CodeBuild berjalan.Untuk informasi, lihatMembuat subnet di VPC.
-
Buat dan lampirkan gateway internet ke VPC Anda. Untuk informasi selengkapnya, lihat Membuat dan melampirkan gateway internet.
-
Tambahkan aturan ke tabel rute default yang merutekan lalu lintas keluar dari VPC (0.0.0/0) ke gateway internet. Untuk informasi, lihatMenambahkan dan menghapus rute dari tabel rute.
-
Tambahkan aturan ke grup keamanan default VPC Anda yang mengizinkan lalu lintas SSH (TCP 22) dari VPC Anda (0.0.0/0).
-
Ikuti petunjuknyaMeluncurkan menggunakan launch instance wizarddiPanduan Pengguna Amazon EC2untuk meluncurkan instans Amazon Linux. Saat Anda menjalankan wizard, pilih opsi berikut:
-
MasukPilih Jenis Instans, pilih Amazon Linux Machine Image (AMI).
-
MasukSubnet, pilih subnet publik yang Anda buat sebelumnya dalam topik ini. Jika Anda menggunakan nama yang disarankan, ituSubnet publik.
-
MasukMenetapkan IP Publik, pilihAktifkan.
-
PadaKonfigurasi Kelompok Keamanan.halaman, untukMenetapkan grup keamanan, pilihPilih grup keamanan yang sudah ada. Selanjutnya, pilih grup keamanan default.
-
Setelah Anda memilihLuncurkan, pilih key pair yang sudah ada atau membuat.
Pilih pengaturan default untuk semua opsi lainnya.
-
-
Setelah instans EC2 Anda berjalan, nonaktifkan pemeriksaan sumber/tujuan. Untuk informasi, lihatMenonaktifkan pemeriksaan Sumber/TujuandiPanduan Pengguna Amazon VPC.
-
Buat tabel rute di VPC Anda. Tambahkan aturan ke tabel rute yang mengarahkan lalu lintas yang ditakdirkan untuk internet ke server proxy Anda. Kaitkan tabel rute ini dengan subnet pribadi Anda. Hal ini diperlukan agar permintaan keluar dari instance di subnet pribadi Anda, di mana CodeBuild berjalan, selalu dialihkan melalui server proxy.
Instal dan konfigurasikan server proxy
Ada banyak server proxy yang bisa dipilih. Server proxy open-source, Squid, digunakan di sini untuk menunjukkan bagaimanaAWS CodeBuildberjalan di server proxy. Anda dapat menerapkan konsep yang sama ke server proxy lainnya.
Untuk menginstal Squid, gunakan repo yum dengan menjalankan perintah berikut:
sudo yum update -y sudo yum install -y squid
Setelah Anda menginstal Squid, mengedit nyasquid.conf
menggunakan petunjuk nanti dalam topik ini.
Mengkonfigurasi Squid untuk lalu lintas HTTPS
Untuk HTTPS, lalu lintas HTTP dikemas dalam koneksi Transport Layer Security (TLS). Squid menggunakan fitur yang disebutSslPeekAndSplice
sudo mkdir /etc/squid/ssl cd /etc/squid/ssl sudo openssl genrsa -out squid.key 2048 sudo openssl req -new -key squid.key -out squid.csr -subj "/C=XX/ST=XX/L=squid/O=squid/CN=squid" sudo openssl x509 -req -days 3650 -in squid.csr -signkey squid.key -out squid.crt sudo cat squid.key squid.crt | sudo tee squid.pem
catatan
Untuk HTTP, Squid tidak memerlukan konfigurasi. Dari semua pesan permintaan HTTP/1.1, dapat mengambil kolom header host, yang menentukan host internet yang sedang diminta.
Jalankan CodeBuild di server proxy eksplisit
Topik
Untuk menjalankanAWS CodeBuilddi server proxy eksplisit, Anda harus mengkonfigurasi server proxy untuk mengizinkan atau menolak lalu lintas ke dan dari situs eksternal, dan kemudian mengkonfigurasiHTTP_PROXY
danHTTPS_PROXY
variabel lingkungan.
Mengkonfigurasi Squid sebagai server proxy eksplisit
Untuk mengkonfigurasi server proxy Squid menjadi eksplisit, Anda harus membuat modifikasi berikut untuk nya/etc/squid/squid.conf
File:
-
Hapus aturan daftar kontrol akses default berikut.
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
Tambahkan yang berikut di tempat aturan ACL default yang Anda hapus. Baris pertama memungkinkan permintaan dari VPC Anda. Dua baris berikutnya memberikan akses server proxy Anda ke URL tujuan yang mungkin digunakan olehAWS CodeBuild. Mengedit ekspresi reguler di baris terakhir untuk menentukan ember S3 atau repositori CodeCommit dalam sebuahAWSWilayah. Misalnya:
-
Jika sumber Anda adalah Amazon S3, gunakan perintahacl download_src dstdom_regex .*s3\.us-west-1\.amazonaws\.comuntuk memberikan akses ke ember S3 di
us-west-1
Wilayah. -
Jika sumber AndaAWS CodeCommit, menggunakan
git-codecommit.<
untuk menambahkanAWSWilayah ke daftar izinkan.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
-
-
Ganti
http_access allow localnet
dengan hal berikut:http_access allow localnet allowed_sites http_access allow localnet download_src
-
Jika Anda ingin mengunggah log dan artefak, lakukan salah satu hal berikut:
-
Sebelum
http_access deny all
pernyataan, masukkan pernyataan berikut. Mereka memungkinkan CodeBuild untuk mengakses CloudWatch dan Amazon S3. Akses ke CloudWatch diperlukan agar CodeBuild dapat membuat log CloudWatch. Akses ke Amazon S3 diperlukan untuk mengunggah artefak dan caching 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
-
Setelah Anda menyimpan
squid.conf
, jalankan perintah berikut:sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130 sudo service squid restart
-
-
Tambahkan
proxy
ke file buildspec Anda. Untuk informasi selengkapnya, lihat Sintaks Buildspec.version: 0.2 proxy: upload-artifacts: yes logs: yes phases: build: commands: - command
-
catatan
Jika Anda menerima kesalahan timeout RequestError, lihat RequestError kesalahan batas waktu saat berjalan CodeBuild di server proxy.
Untuk informasi selengkapnya, lihat Contoh server proksisquid.conffail dalam topik ini.
Membuat proyek CodeBuild
Untuk menjalankanAWS CodeBuilddengan server proxy eksplisit Anda, aturHTTP_PROXY
danHTTPS_PROXY
variabel lingkungan dengan alamat IP pribadi instans EC2 yang Anda buat untuk server proxy dan port 3128 di tingkat proyek. Alamat IP pribadi terlihat sepertihttp://
. Untuk informasi selengkapnya, lihat Membuat proyek pembangunan diAWS CodeBuild dan Mengubah pengaturan proyek build diAWS CodeBuild.your-ec2-private-ip-address
:3128
Gunakan perintah berikut untuk menampilkan log akses proxy Squid:
sudo tail -f /var/log/squid/access.log
Contoh server proksisquid.conf
fail
Berikut ini adalah contohsquid.conf
file yang dikonfigurasi untuk server proxy eksplisit.
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
Jalankan CodeBuild di server proxy transparan
Untuk menjalankanAWS CodeBuilddi server proxy transparan, Anda harus mengkonfigurasi server proxy dengan akses ke situs web dan domain yang berinteraksi dengannya.
Mengkonfigurasi Squid sebagai server proxy transparan
Untuk mengkonfigurasi server proxy agar transparan, Anda harus memberikannya akses ke domain dan situs web yang ingin Anda akses. Untuk menjalankanAWS CodeBuilddengan server proxy transparan, Anda harus memberikan akses keamazonaws.com
. Anda juga harus memberikan akses ke situs web lain CodeBuild menggunakan. Ini bervariasi, tergantung pada bagaimana Anda membuat proyek CodeBuild Anda. Contoh website adalah mereka untuk repositori seperti GitHub, Bitbucket, Yum, dan Maven. Untuk memberikan akses Squid ke domain dan situs web tertentu, gunakan perintah yang serupa dengan berikut ini untuk memperbaruisquid.conf
file. Perintah sampel ini memberikan akses keamazonaws.com
,github.com
, danbitbucket.com
. Anda dapat mengedit contoh ini untuk memberikan akses ke situs web lain.
cat | sudo tee /etc/squid/squid.conf ≪EOF visible_hostname squid #Handling HTTP requests http_port 3129 intercept acl allowed_http_sites dstdomain .amazonaws.com #acl allowed_http_sites dstdomain
domain_name
[uncomment this line to add another domain] http_access allow allowed_http_sites #Handling HTTPS requests 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 allowed_https_sites ssl::server_name .github.com acl allowed_https_sites ssl::server_name .bitbucket.com #acl allowed_https_sites ssl::server_name
[uncomment this line to add another website] 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 http_access deny all EOF
Permintaan masuk dari instance di subnet pribadi harus dialihkan ke port Squid. Squid mendengarkan pada port 3129 untuk lalu lintas HTTP (bukan 80) dan 3130 untuk lalu lintas HTTPS (bukan 443). Menggunakaniptablesperintah untuk rute lalu lintas:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129 sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130 sudo service iptables save sudo service squid start
Membuat proyek CodeBuild
Setelah Anda mengkonfigurasi server proxy Anda, Anda dapat menggunakannya denganAWS CodeBuilddalam subnet pribadi tanpa konfigurasi lainnya. Setiap permintaan HTTP dan HTTPS berjalan melalui server proxy publik. Gunakan perintah berikut untuk menampilkan log akses proxy Squid:
sudo tail -f /var/log/squid/access.log
Menjalankan pengelola paket dan alat lain di server proxy
Untuk menjalankan alat, seperti manajer paket, di server proxy
-
Tambahkan alat ke daftar izinkan di server proxy Anda dengan menambahkan pernyataan ke
squid.conf
file. -
Tambahkan baris ke file buildspec Anda yang menunjuk ke titik akhir pribadi server proxy Anda.
Contoh-contoh berikut mendemonstrasikan cara melakukannyaapt-get
,curl
, danmaven
. Jika Anda menggunakan alat yang berbeda, prinsip yang sama berlaku. Menambahkannya ke daftar memungkinkan disquid.conf
file dan tambahkan perintah ke file buildspec Anda untuk membuat CodeBuild menyadari endpoint server proxy Anda.
Untuk menjalankanapt-get
di server proksi
-
Tambahkan pernyataan berikut
squid.conf
file untuk ditambahkanapt-get
ke daftar memungkinkan di server proxy Anda. Tiga baris pertama memungkinkanapt-get
untuk berjalan di lingkungan membangun.acl allowed_sites dstdomain ppa.launchpad.net # Required for apt-get to run in the build environment acl apt_get dstdom_regex .*\.launchpad.net # Required for CodeBuild to run apt-get in the build environment acl apt_get dstdom_regex .*\.ubuntu.com # Required for CodeBuild to run apt-get in the build environment http_access allow localnet allowed_sites http_access allow localnet apt_get
-
Tambahkan pernyataan berikut di file buildspec Anda sehingga
apt-get
perintah mencari konfigurasi proxy di/etc/apt/apt.conf.d/00proxy
.echo 'Acquire::http::Proxy "http://
<private-ip-of-proxy-server>
:3128"; Acquire::https::Proxy "http://<private-ip-of-proxy-server>
:3128"; Acquire::ftp::Proxy "http://<private-ip-of-proxy-server>
:3128";' > /etc/apt/apt.conf.d/00proxy
Untuk menjalankancurl
di server proksi
-
Tambahkan yang berikut ini ke
squid.conf
file untuk ditambahkancurl
ke daftar memungkinkan di lingkungan build Anda.acl allowed_sites dstdomain ppa.launchpad.net # Required to run apt-get in the build environment acl allowed_sites dstdomain google.com # Required for access to a webiste. This example uses www.google.com. http_access allow localnet allowed_sites http_access allow localnet apt_get
-
Tambahkan pernyataan berikut di file buildspec Anda
curl
menggunakan server proxy pribadi untuk mengakses situs web yang Anda tambahkan kesquid.conf
. Dalam contoh ini, situs webgoogle.com
.curl -x
<private-ip-of-proxy-server>
:3128 https://www.google.com
Untuk menjalankanmaven
di server proksi
-
Tambahkan yang berikut ini ke
squid.conf
file untuk ditambahkanmaven
ke daftar memungkinkan di lingkungan build Anda.acl allowed_sites dstdomain ppa.launchpad.net # Required to run apt-get in the build environment acl maven dstdom_regex .*\.maven.org # Allows access to the maven repository in the build environment http_access allow localnet allowed_sites http_access allow localnet maven
-
Tambahkan pernyataan berikut ke file buildspec Anda.
maven clean install -DproxySet=true -DproxyHost=
<private-ip-of-proxy-server>
-DproxyPort=3128