Fino a quando API Gateway (APIG) supporta il caching periferico tramite il suo uso interno di CloudFormation (CF), ho trovato una soluzione alternativa.
Si può effettivamente mettere CF dist davanti a APIG, il trucco è forzare HTTPS solo "Policy protocollo Viewer" E non inoltrare l'intestazione HOST perché APIG ha bisogno di SNI.
Ho impostato il mio CF "Impostazioni comportamento cache predefinito" per non inoltrare alcuna intestazione e forzato "Policy protocollo Viewer" su "Solo HTTPS" e funziona. Spero che questo aiuti gli altri.
Ecco un oggetto risorsa CloudFormation che ha tutta la configurazione richiesta:
{
"Type": "AWS::CloudFront::Distribution",
"Properties": {
"DistributionConfig": {
"Origins": [
{
"Id": "pushchansearch",
"DomainName": "myapig.execute-api.us-east-1.amazonaws.com",
"CustomOriginConfig": {
"HTTPPort": "80",
"HTTPSPort": "443",
"OriginProtocolPolicy": "match-viewer"
},
"OriginPath": {
"Fn::Join": [
"",
[
"/",
{
"Ref": "aaStage"
}
]
]
}
}
],
"Enabled": true,
"Comment": "Push channel search",
"PriceClass": "PriceClass_100",
"DefaultCacheBehavior": {
"AllowedMethods": [
"GET",
"HEAD",
"OPTIONS"
],
"CachedMethods": [
"HEAD",
"GET"
],
"ForwardedValues": {
"QueryString": true,
"Headers": [],
"Cookies": {
"Forward": "none"
}
},
"MinTTL": "0",
"TargetOriginId": "pushchansearch",
"ViewerProtocolPolicy": "https-only"
},
"CustomErrorResponses": [
]
}
}
}
È possibile utilizzare modelli di percorso con questo? Ho una configurazione di distribuzione del cloudfront con due origini: un bucket S3 per i miei file statici e un'API APIG; ma il mio PathPattern per l'APIG non si attiva. Penso che sia perché non sto corrispondendo su un nome o tipo di file, ma piuttosto su un percorso particolare. Il gateway API –
utilizza CloudFront dietro le quinte. Se punti un'altra distribuzione CloudFront al tuo endpoint Gateway API, CloudFront blocca la richiesta perché CloudFront ha un controllo anti-loopback. Cioè Non puoi puntare a CloudFront su CloudFront. A AWS re: Invent 2015 mi è stato detto da un ingegnere AWS che questo controllo anti-loopback sarà semplificato per consentire di puntare una distribuzione CloudFront al gateway API. Non ho ancora verificato se funziona ancora. – Jamey
Ho appena provato e ora funziona, 'arriccia https: // api.cloudprowess.com' per vederlo in azione. Lo faccio per poter impostare un dominio personalizzato che utilizza un certificato SSL rilasciato da AWS Certificate Manager, che non sarebbe altrimenti disponibile per il mio gateway API. La mia domanda ora è se questo mi costerà due volte per la larghezza di banda e le richieste di CloudFront, o se i costi entro CloudFront saranno pari a zero, lo chiedo come una nuova domanda. –