2017-02-27 11 views
0

Ich habe folgende CF TemplateEinrichten Caching für APIGateway Methoden

{ 
    "Conditions":{ 
     "CreatedProdStage" : {...} 
    } 
    ... 
    "Resources":{ 
     "GetMethod": { 
      ... 
     }, 
     "ApiDeployement":{ 
      ... 
     }, 
     "ProdStage":{ 
      "Type":"AWS::ApiGateway::Stage", 
      "Condition":"CreatedProdStage", 
      "Properties": { 
       "DeploymentId":"...", 
       "RestApiId":"...", 
       "MethodSettings":[{ 
        "CachingEnabled":true, 
        "HttpMethod":{"Ref":"GetMethod"}, 
        "ResourcePath":"/" 
       }] 
      } 
     } 
    } 
} 

Und ich Fehler immer

Ungültige Pfad-Methode Einstellung: /~ 1/st-GetMetho-xxxAUMMRWxxx/Caching/aktiviert. Muss eines der folgenden: [/ deploymentId,/Beschreibung, /cacheClusterEnabled/cacheClusterSize/clientCertificateId/{resourcePath}/{Httpmethod}/Metriken/aktiviert, /{resourcePath}/{Httpmethod}/logging/Datatrace, /{ resourcePath}/{httpMethod}/logging/loglevel, /{Ressourcenpfad}/{httpMethod}/Drosselung/BurstLimit/{Ressourcenpfad}/{httpMethod}/Drosselung/RateLimit/{Ressourcenpfad}/{httpMethod}/Caching/TtlInSeconds, /{resourcePath}/{httpMethod}/caching/enabled, /{Ressourcenpfad}/{httpMethod}/caching/dataEncrypted, /{Ressourcenpfad}/{httpMethod}/caching/requireAuthorizationForCacheControl, /{Ressourcenpfad}/{httpMethod}/caching/unauthorisedCacheControlHeaderStrategy, ///Metriken/aktiviert///logging/Datatrace,///logging/loglevel, ///Drosselung/burstLimit///Drosselung/Ratelimit ///Caching/ttlInSeconds ,///caching/aktiviert, ///caching/dataEncrypted, ///caching/requireAuthorizationForCacheControl, ///caching/unauthorizedCacheControlH eaderStrategy,/va

Fehle ich etwas? Ich dachte, ResourcePath und HttpMethod sind die einzigen erforderlichen Attribute

Antwort

0

Versuchen Sie, die Httpmethod in einen String statt einer Referenzeinstellung:

"MethodSettings":[{ 
     "CachingEnabled":true, 
     "HttpMethod": "GET", 
     "ResourcePath":"/" 
    }] 
} 
+0

Schon probiert, hat nicht funktioniert. –

+0

Interessant - können Sie den Fehler posten, wenn es anders ist? –

+0

Es gibt keinen Fehler. Die Stacks wurden mit "HttpMethod" und "ResourcePath" erstellt (wie von Ihnen vorgeschlagen), aber das Caching wurde nicht aktiviert. –

1

Als erstes müssen Sie Caching auf der Bühne mit dem CacheClusterEnabled Eigenschaft ermöglichen. Dies ermöglicht es Ihnen Caching für Methoden einzurichten, wie Sie in Ihnen MethodSettings getan haben:

... 
"ProdStage":{ 
     "Type":"AWS::ApiGateway::Stage", 
     "Condition":"CreatedProdStage", 
     "Properties": { 
      "DeploymentId":"...", 
      "RestApiId":"...", 
      "CacheClusterEnabled": true 
      "MethodSettings":[{ 
       "CachingEnabled":true, 
       "HttpMethod":{"Ref":"GetMethod"}, 
       "ResourcePath":"/" 
      }] 
     } 
    } 

Dann müssen Sie den angegebenen Fehler beheben. Ihre ResourcePath, um eine der in der Fehlerausgabe aufgeführten übereinstimmen. Diese sind nicht in der Dokumentation aufgeführt, daher ist es etwas verwirrend, was Sie verwenden müssen. Was Sie gerade haben, ist nur für den Root-Pfad eingerichtet. Wenn Sie alle Pfade "/*"

APIGateWay :: MethodSettings verwenden möchten (siehe ResourcePath) doc: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-stage-methodsetting.html