6

In AWS CloudFront ho Impostare questo entro: "ammessi metodi HTTP" nell'area "Impostazioni predefinite comportamento della cache": GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEAbilitare POST/PUT/DELETE su AWS CloudFront?

mio CloudFront è legata a un secchio di AWS S3. Così ho impostato la configurazione AWS S3 CORS a:

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>DELETE</AllowedMethod> 
     <AllowedMethod>HEAD</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
     <AllowedHeader>Authorization</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

mio attuale politica secchio AWS S3 è:

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
     { 
      "Sid": "AllowPublicRead", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::<bucket_name_here>/*" 
     } 
    ] 
} 

Purtroppo quando eseguito attraverso curl ottengo:

$ curl -I -s -X POST -H "Origin: www.example.com" [hash_here].cloudfront.net 
HTTP/1.1 405 Method Not Allowed 
Content-Type: application/xml 
Transfer-Encoding: chunked 
Connection: keep-alive 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD 
Access-Control-Max-Age: 3000 
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method 
Allow: GET, DELETE, HEAD, PUT 
Date: Sun, 01 Mar 2015 14:12:26 GMT 
Server: AmazonS3 
X-Cache: Error from cloudfront 
Via: 1.1 5896eef8502a96757950c7d389f2015c.cloudfront.net (CloudFront) 
X-Amz-Cf-Id: uBK_gStEvSTWypvU8_YYjtfjC2UzdR3Ff_cDLitMaeUBNZ9AgrSkJg== 
+0

Dalla risposta che hai postato sembra che l'errore sia stato restituito da S3, non da CloudFront. Hai configurato correttamente i permessi di accesso del bucket in modo che CloudFront potesse eseguire il POST lì? –

+0

Penso di averlo fatto, tutto ciò che ho fatto è delineato nella mia domanda. Se mi manca un passaggio, quindi indicare dove e accetterò la soluzione di lavoro come risposta :) –

+0

Date un'occhiata qui: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private- content-limitando-Access-to-s3.html #-content privato-concessione-permissions-to-oai. Parla di permessi per leggere l'oggetto, ma penso che potrebbe essere necessario abilitare esplicitamente il permesso di scrittura per l'identità di accesso all'originale che usi per CloudFront –

risposta

1

Può essere troppo tardi per rispondere a questa domanda. Una delle cause di questo problema è l'oggetto principale predefinito . La richiesta POST deve essere inoltrata all'URL radice cloudfront ("/"). Controlla le impostazioni di "Default Root Object" in cloudfront. Il valore deve essere vuoto e non index.html.