AWS BYOIP en 2026 : $43.80 par IPv4 ou votre propre /24
Réponse courte (vérifié le 2026-11-04) : AWS facture $0.005 de l'heure chaque adresse IPv4 publique qu'il fournit, utilisée ou inactive : $3.65 par mois, $43.80 par an et par adresse. Les adresses que vous apportez vous-même (BYOIP) ne supportent pas ce coût. Au prix médian d'octobre 2026 (environ $6,500 pour un /24), un /24 acheté est rentabilisé en environ 7 mois si vous utilisez les 256 adresses, et en environ 36 mois avec 50. Un /24 loué à la moyenne d'octobre 2026 ($0.49 par IP, environ $125 par mois) revient moins cher que les adresses d'AWS à partir d'environ 35 IP publiques. En dessous, continuez à payer AWS. Les prix du marché sont des observations datées ; pour un devis, voir prix IPv4.
Ce que facture AWS et ce que BYOIP supprime
Depuis février 2024, AWS facture chaque adresse IPv4 publique. La page de tarifs d'Amazon VPC (vérifiée le 2026-11-04) indique $0.005 de l'heure pour une adresse utilisée et les mêmes $0.005 pour une adresse inactive, et dit des adresses BYOIP : "These public IPv4 addresses are not charged." La page n'affiche aucune offre gratuite pour l'IPv4 publique ; l'offre gratuite qu'elle décrit concerne Amazon VPC IP Address Manager (IPAM).
Un mois compte 730 heures dans la facturation AWS, donc :
- 1 adresse : $3.65 par mois, $43.80 par an ;
- 50 adresses : $182.50 par mois, $2,190 par an ;
- 256 adresses : $934.40 par mois, $11,212.80 par an.
La dernière ligne compte plus qu'il n'y paraît : après BYOIP, AWS vous laisse utiliser toutes les adresses d'un /24, y compris l'adresse réseau et celle de broadcast (exigences EC2 BYOIP). IPAM est gratuit pour BYOIP dans une région et un compte ; l'Advanced Tier, nécessaire dès deux régions ou comptes, coûte $0.00027 par IP active et par heure, environ $0.20 par mois et par adresse.
Les règles d'AWS pour une plage apportée
D'après la documentation EC2 BYOIP, vérifiée le 2026-11-04 :
- Registre. La plage doit être enregistrée auprès de l'ARIN, du RIPE NCC ou de l'APNIC, au nom d'une entreprise ou d'une institution, pas d'une personne. Le LACNIC et l'AFRINIC ne figurent pas sur la liste.
- Taille. La plage IPv4 la plus spécifique est un /24. Impossible d'apporter un /25.
- ROA. Une Route Origin Authorization pour les ASN d'Amazon 16509 et 14618, avec une longueur maximale égale à la plage apportée (IPAM exige /24). Créez d'abord une ROA pour votre ASN d'origine actuel, sinon vos routes existantes peuvent tomber. L'European Sovereign Cloud utilise à la place les ASN 16509 et 214101.
- Preuve de contrôle. Un certificat X.509 auto-signé dans l'enregistrement du registre (au RIPE : une nouvelle ligne
descrdans l'inetnum, pasremarks), ou la méthode DNS TXT d'IPAM. - Réputation. AWS "might investigate the reputation" et peut refuser une plage au passé douteux. Vérifiez un bloc avant de l'acheter : voir notre contrôle des listes noires IPv4.
- Limites. Cinq plages BYOIP par région et par compte (plus sur demande), chaque plage dans une seule région à la fois. La plupart des provisionnements aboutissent en deux heures ; AWS se donne jusqu'à une semaine.
Vérifier une plage avant de commencer : byoip_check.js
Ce script ne lit que des données publiques (RIPEstat et RDAP, aucun compte AWS) et répond à deux questions : le préfixe est-il prêt à être provisionné, et à partir de combien d'IP publiques un /24 bat-il le prix d'AWS ? Donnez-lui des préfixes ou un ASN. Enregistrez-le sous byoip_check.js :
// byoip_check.js - is a prefix ready for AWS BYOIP, and when does a /24 beat AWS public IPv4?
// usage: bun byoip_check.js <prefix | ASN> [prefix ...] e.g. bun byoip_check.js AS204057
// Public data only (RIPEstat, RDAP), no AWS account needed.
const AWS_IP_HOUR = 0.005 // aws.amazon.com/vpc/pricing/, in-use or idle, checked 2026-11-04
const BUY_IP = 25.40 // ip4.market /24 90-day median per IP, 80 sales to 2026-10-26
const LEASE_IP_MONTH = 0.49 // IPv4Center all-region /24 lease average, page updated 2026-10-28
const AMAZON = [16509, 14618] // ASNs the ROA must authorize (EC2 BYOIP prerequisites)
const stat = async (call, q) =>
(await (await fetch(`https://stat.ripe.net/data/${call}/data.json?${q}`)).json()).data
let prefixes = process.argv.slice(2)
if (prefixes.length === 1 && /^as\d+$/i.test(prefixes[0])) {
const d = await stat('announced-prefixes', `resource=${prefixes[0]}`)
prefixes = d.prefixes.map(p => p.prefix).filter(p => p.includes('.')).sort().slice(0, 5)
}
for (const pfx of prefixes) {
const len = +pfx.split('/')[1]
const rdap = await (await fetch(`https://rdap.org/ip/${pfx}`)).json().catch(() => ({}))
const raw = JSON.stringify(rdap)
const origins = (await stat('prefix-overview', `resource=${pfx}`)).asns.map(a => a.asn)
const rpki = {}
for (const asn of [...origins, ...AMAZON])
rpki[asn] = (await stat('rpki-validation', `resource=AS${asn}&prefix=${pfx}`)).status
const ok = len <= 24 && AMAZON.every(a => rpki[a] === 'valid') && raw.includes('BEGIN CERTIFICATE')
console.log(`\n${pfx} ${rdap.handle ?? '?'} ${rdap.type ?? '?'} ${rdap.country ?? ''}`)
console.log(` size /${len} (AWS takes /24 or larger): ${len <= 24 ? 'ok' : 'too small'}`)
for (const [asn, s] of Object.entries(rpki))
console.log(` ROA AS${asn}${AMAZON.includes(+asn) ? ' (Amazon)' : ' (origin today)'}: ${s}`)
console.log(` X.509 certificate in the registry record: ${raw.includes('BEGIN CERTIFICATE') ? 'yes' : 'no'}`)
console.log(` ready to provision: ${ok ? 'yes' : 'no'}`)
}
// Cost: AWS-provided public IPv4 vs a /24 brought in (BYOIP addresses carry no AWS IPv4 charge)
const awsMonth = n => n * AWS_IP_HOUR * 730
const buy = 256 * BUY_IP, lease = 256 * LEASE_IP_MONTH
const usd = v => '$' + Math.round(v).toLocaleString('en-US')
console.log(`\npublic IPs | AWS per month | AWS per year | lease /24 per month | buy /24 pays back in`)
for (const n of [10, 35, 50, 100, 256])
console.log(`${String(n).padStart(10)} | ${usd(awsMonth(n)).padStart(13)} | ${usd(awsMonth(n) * 12).padStart(12)} | ${
(usd(lease) + (awsMonth(n) > lease ? ' (cheaper)' : ' (dearer)')).padStart(19)} | ${
(buy / awsMonth(n)).toFixed(1).padStart(6)} months`)
console.log(`/24 to buy: ${usd(buy)} once (+ broker fee, LIR or sponsoring LIR); lease: ${usd(lease)} a month`)
bun byoip_check.js AS204057
Sortie, exécuté sur un serveur cloud DCXV avec Bun 1.4.4 le 2026-11-04 (notre propre AS204057 ; les quatre autres préfixes ont donné le même résultat que le premier) :
116.204.153.0/24 116.204.153.0 - 116.204.153.255 ALLOCATED PA CZ
size /24 (AWS takes /24 or larger): ok
ROA AS14618 (Amazon): invalid_asn
ROA AS16509 (Amazon): invalid_asn
ROA AS204057 (origin today): valid
X.509 certificate in the registry record: no
ready to provision: no
public IPs | AWS per month | AWS per year | lease /24 per month | buy /24 pays back in
10 | $37 | $438 | $125 (dearer) | 178.1 months
35 | $128 | $1,533 | $125 (cheaper) | 50.9 months
50 | $183 | $2,190 | $125 (cheaper) | 35.6 months
100 | $365 | $4,380 | $125 (cheaper) | 17.8 months
256 | $934 | $11,213 | $125 (cheaper) | 7.0 months
/24 to buy: $6,502 once (+ broker fee, LIR or sponsoring LIR); lease: $125 a month
Nos préfixes ne sont logiquement pas prêts : seul AS204057 les annonce, sans ROA Amazon ni certificat. invalid_asn pour 16509 et 14618, c'est exactement ce que vous verrez avant l'étape 3, et valid ce qu'il vous faut après. Les constantes de prix sont datées en tête du script : remplacez-les quand vous recevez un devis.
Acheter, louer ou continuer à payer AWS
| IPv4 publiques chez AWS | Voie la moins chère (prix d'octobre 2026) | Point de vigilance |
|---|---|---|
| Moins d'environ 35 | Garder les adresses d'AWS | Une Elastic IP inactive coûte les mêmes $0.005 de l'heure |
| Environ 35 à 100 | Louer un /24 et l'apporter | Le bailleur doit créer la ROA Amazon et le certificat |
| Environ 100 à 256 | Acheter un /24 | Rentabilisé en 7 à 18 mois ; le bloc reste un actif |
| Plusieurs régions | Acheter un /22 ou plus, le découper en /24 | Une ROA et un enregistrement couvrent le tout |
| Quitter AWS plus tard | Acheter | Le bloc part avec vous, pas les adresses d'AWS |
Le tableau reprend les chiffres d'octobre 2026 du script : la médiane sur 90 jours d'ip4.market, $25.40 par IP sur 80 ventes de /24 jusqu'au 2026-10-26, et la moyenne de location d'un /24 toutes régions d'IPv4Center, $0.49 par IP et par mois (page mise à jour le 2026-10-28). Un achat demande aussi un LIR ou un LIR parrain et une commission de courtage ; la commission publiée de DCXV pour un /24 est de EUR 2.00 par IP. Après un transfert au RIPE, le bloc ne peut pas être retransféré pendant 24 mois, ce qui n'empêche pas de l'utiliser chez AWS. Comparez les deux voies dans louer ou acheter de l'IPv4.
Deux points pratiques. En location, BYOIP ne fonctionne que si le bailleur accepte d'ajouter les ASN d'Amazon à la ROA et votre certificat à l'enregistrement : demandez-le avant de signer. Et si vous payez aussi le support AWS, rappelez-vous qu'il est calculé en pourcentage de toute la facture, frais IPv4 compris, comme le montre notre guide du support et de la facturation AWS.
La place de DCXV
DCXV est courtier IPv4 dans les régions RIPE, ARIN et APNIC : nous trouvons un /24 propre à l'achat ou à la location, vérifions son historique et menons le transfert, pour que les étapes ROA et certificat démarrent dès que le bloc est à votre nom. Dites-nous combien d'adresses vous utilisez chez AWS et dans quelles régions via l'espace IPv4 de DCXV ou à ipv4@dcxv.com.
