New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Comment puis-je héberger un site Web statique qui utilise API Gateway comme proxy sur Amazon S3 ?
Je souhaite utiliser Amazon API Gateway pour créer une API en tant que proxy pour mon site Web statique et héberger le site Web sur Amazon Simple Storage Service (Amazon S3).
Résolution
Intégration du proxy HTTP
Si votre site Web statique est accessible au public, utilisez l'intégration HTTP et indiquez l'URL du site Web statique S3 pour l’API.
Tout d'abord, configurez un site Web statique sur Amazon S3. Puis, utilisez la console API Gateway pour créer une API REST et une méthode pour la ressource racine, puis déployez votre API REST.
Créer une API REST
Procédez comme suit :
- Pour API REST, sélectionnez Créer.
- Pour Nom d'API, saisissez le nom de votre API REST.
- Dans le menu Type de point de terminaison, choisissez votre type de point de terminaison, puis sélectionnez Créer une API.
- Dans le volet de navigation, sélectionnez Ressources sous le nom de votre API.
- Dans le menu Actions, sélectionnez Créer une ressource.
- Pour Nom de la ressource, saisissez un nom, par exemple clé.
- Pour Chemin de ressource, saisissez un paramètre de chemin, par exemple {key}.
- Sélectionnez Créer une ressource.
Créer la méthode pour la ressource racine
Procédez comme suit :
- Choisissez le nom de la ressource {key}b.
- Dans le menu Actions, sélectionnez Créer une méthode.
- Dans le menu {key}, sélectionnez GET, puis cliquez sur l'icône en forme de coche.
- Dans Type d'intégration, choisissez HTTP, sélectionnez Utiliser une intégration proxy HTTP, puis conservez la méthode HTTP sous la forme GET.
- Dans le champ URL de point de terminaison, saisissez http://BUCKET_NAME.s3-website.REGION.amazonaws.com/{key}, puis sélectionnez Enregistrer.
Déployer l'API REST
Procédez comme suit :
-
Dans le menu Actions, sélectionnez Déployer l’API.
-
Dans le menu Étape de déploiement, sélectionnez [Nouvelle étape].
-
Dans le champ Nom de l'étape, saisissez un nom, par exemple, Dev.
-
Sélectionnez Déployer.
-
Dans l'éditeur d’étape de développement, notez l'URL d'invocation pour tester votre API.
-
Exécutez la commande suivante pour tester le proxy d'API pour votre site Web Amazon S3 :
curl -X GET https://API_ID.execute-api.REGION.amazonaws.com/index.html
Remarque : Remplacez l'exemple d'URL par votre URL d'invocation.
Intégration des services AWS
Configurer le site Web statique Amazon S3
Si l'accès public à votre site Web statique Amazon S3 est bloqué, il est conseillé de configurer le site Web de manière qu'il soit uniquement accessible à partir du proxy d’API.
Procédez comme suit :
-
Configurer un site Web statique sur Amazon S3.
Remarque : Lorsque vous configurez le site Web statique, ignorez l'étape 3. Maintenez le paramètre Bloquer tous les accès publics activé par défaut. -
Modifiez la stratégie de compartiment à l'étape 4 pour autoriser le proxy d'API à accéder uniquement au compartiment Amazon S3 :
{ "Version": "2012-10-17", "Statement": [{ "Sid": "APIProxyBucketPolicy", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:execute-api:REGION:ACCOUNT:API_ID/*/GET/" } } }] }
-
Créez une stratégie AWS Identity and Access Management (IAM) pour autoriser l'API GetObject à accéder au compartiment Amazon S3 :
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "*" }] }
-
Créez un rôle IAM, puis associez la stratégie IAM précédente.
-
Notez l'ARN du rôle IAM à utiliser ultérieurement.
Le rôle IAM doit contenir la stratégie d’approbation suivante pour que la passerelle API puisse endosser le rôle :{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
Utilisez la console API Gateway pour effectuer les étapes suivantes.
Créer un proxy d'API REST pour le service Amazon S3
Procédez comme suit :
- Sélectionnez Créer une API.
- Sélectionnez REST API, puis Créer.
- Pour Nom d'API, saisissez le nom de votre API REST.
- Pour Type de point de terminaison, choisissez le type de point de terminaison en fonction de l’origine de la majorité du trafic client.
Remarque : Il est recommandé d’utiliser des points de terminaison optimisés pour les périphériques pour les services publics accessibles depuis Internet. Les points de terminaison régionaux sont principalement utilisés pour les API accessibles depuis la même région AWS. - Sélectionnez Créer une API.
Créer une méthode GET pour la ressource racine
Pour configurer la méthode racine pour les requêtes de proxy vers les sites Web statiques Amazon S3, procédez comme suit :
- Sélectionnez la ressource racine «/».
- Dans le menu Actions, sélectionnez Créer une méthode.
- Sélectionnez GET, puis cliquez sur l'icône en forme de coche.
- Pour Type d’intégration, sélectionnez Service AWS.
- Dans le menu Région AWS, choisissez votre région.
- Dans le menu Service AWS, sélectionnez Simple Storage Service (S3).
- Pour Sous-domaine AWS, laissez le champ vide.
- Pour Méthode HTTP, sélectionnez GET.
- Pour Type d'action, sélectionnez Utiliser un remplacement de chemin.
- Dans le champ Remplacement de chemin, saisissez le chemin d'accès du compartiment Amazon S3, par exemple BUCKET_NAME/index.html.
- Pour Rôle d'exécution, saisissez l'ARN du rôle IAM.
- Sélectionnez Enregistrer.
Cette configuration intègre la requête d’API frontend GET https://your-api-host/stage/ au backend S3 GET https://your-s3-host/index.html.
Créer un objet de ressource d’API
Pour accéder à des objets spécifiques depuis un compartiment S3, vous devez créer une ressource nommée {object} qui mappe le chemin de l'objet dans la requête d'API frontend. Par exemple, mappez GET https://your-api-host/stage/home.html au backend S3 GET https://your-s3-host/home.html.
Procédez comme suit :
- Sélectionnez ** Ressources**.
- Dans le menu Actions, sélectionnez Créer une ressource.
- Pour Nom de la ressource, saisissez un nom, par exemple {object}.
- Pour Chemin de ressource, saisissez un chemin, par exemple {object}.
- Sélectionnez Créer une ressource.
Configurer une méthode GET pour la ressource
Procédez comme suit :
- Sélectionnez {objet}.
- Dans le menu Actions, sélectionnez Créer une méthode.
- Sélectionnez GET, puis cliquez sur l'icône en forme de coche.
- Pour Type d’intégration, sélectionnez Service AWS.
- Dans le menu Région AWS, choisissez votre région.
- Dans le menu Service AWS, sélectionnez Simple Storage Service (S3).
- Pour Sous-domaine AWS, laissez le champ vide.
- Pour Méthode HTTP, sélectionnez GET.
- Pour Type d'action, sélectionnez Utiliser un remplacement de chemin.
- Pour Remplacement du chemin, saisissez le chemin d'accès au compartiment Amazon S3, par exemple BUCKET_NAME/{object}.
- Pour Rôle d'exécution, saisissez l'ARN du rôle IAM.
- Sélectionnez Enregistrer.
- Sélectionnez GET pour le Nom de la ressource {object}, puis Requête d'intégration.
- Développez le champ des Paramètres de chemin d'URL, saisissez un objet de valeur de nom et mappé à partir de la valeur method.request.path.object, puis cochez la case pour enregistrer.
Configurer les mappages d'en-tête de réponse pour la méthode GET
Mappez la valeur du paramètre d'en-tête du type de contenu backend à l'équivalent du frontend afin que le navigateur traite correctement la réponse avec le type de contenu.
Procédez comme suit :
- Sélectionnez ** GET**.
- Sous Ressources /, sélectionnez Réponse de méthode.
- Développez la flèche à côté de Statut HTTP 200.
- Sous En-têtes de réponse pour 200, sélectionnez Ajouter un en-tête.
- Définissez le Nom de l'en-tête comme Content-Type, puis cochez la case pour enregistrer les modifications.
- Sélectionnez Exécution de la méthode.
- Sélectionnez Réponse d'intégration, puis développez la flèche à côté de Expressions régulières du statut HTTP.
- Développez les mappages d'en-têtes.
- Pour Content-Type, saisissez la valeur de mappage sous la forme integration.response.header.Content-Type.
- Répétez les étapes 1 à 6 pour la méthode GET sous Ressource/{object}.
- Répétez les étapes de la section Déployer l'API REST de cet article.
Tester le proxy d’API
Pour tester le proxy d’API de votre site Web statique Amazon S3, utilisez un navigateur ou une commande curl :
Ressource racine (/)
curl -X GET https://API_ID.execute-api.REGION.amazonaws.com/STAGE_NAME/
Ressource {object}
curl -X GET https://API_ID.execute-api.REGION.amazonaws.com/STAGE_NAME/home.html
Informations complémentaires
Tutoriel : Créer une API REST en tant que proxy Amazon S3
Hébergement d’un site Web statique à l’aide d’Amazon S3

Contenus pertinents
- demandé il y a 9 moislg...
- demandé il y a 2 anslg...
- demandé il y a 2 anslg...
- AWS OFFICIELA mis à jour il y a 3 mois
- AWS OFFICIELA mis à jour il y a 4 mois