Nous avons pu lire dans la presse de mauvaises interprétations de cette information relatant la fin d’AWS en Chine. Ironiquement, la mise en service d’une seconde région en Chine est annoncée un mois plus tard, confirmant l'intérêt d’Amazon pour le marché Chinois.
Parmi les 18 régions AWS réparties autour du globe, trois font figures d’exception : GovCloud à destination des agences ou services gouvernementaux américains et les deux régions chinoises.
Nous avons participé à un projet déployé sur AWS en Chine, voici ce qu’il en ressort.
Amazon en Chine, ce sont deux régions situées à :
A la différence des autres régions “standards” AWS elles sont :
Première surprise une fois votre compte AWS China actif, vos load-balancers publics et vos buckets S3 ne sont pas joignables via Internet si vous n’avez pas fait de demande de licence ICP (Internet Content Provider) auprès du ministère chinois de l’industrie et des technologies de l’information.
C’est une question de réglementation chinoise, qui demande pour tout contenu public servi par AWS ou un autre cloud, une licence dans le cadre d'activités commerciales ou, a minima, un enregistrement pour du non-commercial. La demande doit indiquer les domaines DNS, une description de l’application, le système de modération en place et le mode d’authentification des utilisateurs.
Le délai d’obtention d’une licence peut s’étendre sur un mois.
Avec le numéro de votre licence ou enregistrement ICP, vous pouvez ouvrir un ticket au support AWS pour autoriser les flux publics sur votre compte.
Si vous utilisez une solution d’Infrastructure As Code autre que CloudFormation (Terraform, Ansible ou autre), vous devrez indiquer les endpoints spécifiques aux régions Chine qui sont sur le domaine racine amazonaws.com.cn et non pas amazonaws.com
Ce changement de configuration est généralement assez aisé puisqu’il suffit d’indiquer la région cn-north-1 ou cn-northwest-1 qui doit être utilisée par votre solution d’IaC.
Les endpoints apparaissent aussi dans les rôles IAM qui doivent être assumés par des services AWS (action sts:AssumeRole).
Dans le cas de Terraform, ces changements sont adaptables via la data source aws_region :
data "aws_region" "cn-north-1"{
name = "cn-north-1"
}
resource "aws_iam_role" "my-role" {
name = "my-role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "XXX",
"Effect": "Allow",
"Principal": {
"Service": "${data.aws_region.cn-north-1.endpoint}" // EC2 endpoint
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
Vu la taille de l’infrastructure opérée au niveau mondial, les services AWS suivent un plan de déploiement région par région qui peut s’étendre sur plusieurs mois.
Il est donc toujours bon de vérifier si les services qui sont prévus d’être utilisés sont bien disponibles sur les régions ciblées.
Cela s’applique aussi à la Chine : par exemple au moment de la rédaction cet article, ApiGateway ou ConfigRules sont disponibles sur cn-north-1 mais pas cn-northwest-1.
La revue de la disponibilité des services est d’autant plus importante que les services assurés par les edges AWS manquent à l’appel : Route53 (DNS), CloudFront (CDN), WAF.
Concernant la version des services AWS, un service sur AWS China est totalement à jour par rapport à ses versions extérieures à la Chine ; il ne s’agit pas de versions dégradées.
Une fois les éventuels ajustements réalisés pour les rôles utilisés par les services AWS (vu dans la section “endpoints de services”), les politiques IAM devront être revues puisque les identifiants (ARN) des ressources ciblées dans les politiques IAM comportent une partition qui est aws-cn et non aws.
Pour rappel, le format d’un ARN AWS est :
arn:partition:service:region:account-id:resource
Dans le cas de Terraform, ces changements sont adaptables via la data source aws_partition :
data "aws_partition" "current" {}
data "aws_iam_policy_document" "cloud_trail" {
statement {
sid = "1"
actions = [
"s3:GetBucketAcl",
"s3:GetBucketLocation",
]
resources = [
"arn:${data.aws_partition.current.partition}:s3:::my-bucket",
]
…
Ces partitions différentes au niveau des ARN traduisent un cloisonnement total au niveau IAM.
C’est sans doute le point le plus impactant pour une architecture cross-region sur la Chine et en dehors : tous les objets IAM (utilisateurs/roles/policies/..) devront être dupliqués entre les régions AWS China et les autres.
Ainsi pour faire un transfert de fichiers entre deux buckets S3, l’un en Chine et l’autre à l’extérieur, vous serez amené à poser des credentials sur les machines puisque les rôles d’instances sont isolés (une VM EC2 en Chine ne pouvant faire un assume-role d’un rôle en dehors de la Chine à partir de son serveur de metadata).
Profitons de ce cas utilisateur de copie entre bucket depuis/vers la Chine pour introduire le sujet le plus douloureux : le réseau.
Ne tournons pas autour du pot, tous les points listés dans cet article ont pu être traités facilement sauf celui du réseau. La copie de fichiers entre buckets S3 en Europe vers la Chine s’est avérée très complexe.
Sur recommandation du support AWS, nous avons mis en oeuvre TsunamiUDP pour tenter d’améliorer les choses, mais la vraie réponse est soit :
A noter que la création de VPN n’est pas possible via le service managé d’AWS VPC.
Que retenir de cet article?
Tout d’abord, l’histoire d’AWS en Chine n’est pas terminée ; loin de là. La liste des services proposées s’allonge, comme pour les autres régions.
Le réseau (… le fameux grand firewall) est un vrai sujet, mais pas lié à AWS. Tout opérateur Cloud ou hébergeur a les mêmes contraintes. Outre les contraintes techniques, Amazon doit faire face à de nombreuses contraintes de législation qui impactent la présence de certains services massivement utilisés (DNS / CDN).
Concernant les alternatives côté géants américains, indiquons que Google n’est pas (plus présent) ; seul perdure Microsoft avec une approche similaire à AWS : s’associer à un hébergeur local avec les services DNS/CDN eux aussi absents.
Si la Chine est votre unique coeur de marché, une approche envisageable serait de passer par un fournisseur de cloud local : Tencent / AlibabaCloud fournissent des solutions qui ont fait leurs preuves. Dans ce cas, vous aurez une présence massive en Chine (6 régions pour AlibabaCloud) mais avec une offre de services plus limitée que ce propose AWS.