2013-04-17 2 views
2

API를 통해 Amazon Cloudfront에 무효화 요청을 제출하는 PHP 스크립트가 있습니다.Amazon Cloudfront API 읽기 PHP 결과

나는 응답을 캡처 할 수 있지만, 텍스트 기본적으로 다음과 같이보고로 다시 온다 :

HTTP/1.0 201 Created 
Content-Type: text/xml 
Location: https://cloudfront.amazonaws.com/2012-07-01/distribution/distribution ID/invalidation/invalidation ID 

<Invalidation xmlns="http://cloudfront.amazonaws.com/doc/2012-07-01/"> 
    <Id>IDFDVBD632BHDS5</Id> 
    <Status>InProgress</Status> 
    <CreateTime>2013-04-16T19:37:58Z</CreateTime> 
    <InvalidationBatch> 
     <Paths> 
     <Items> 
      <Path>/image1.jpg</Path> 
     </Items> 
     </Paths> 
     <CallerReference>20130416090001</CallerReference> 
    </InvalidationBatch> 
</Invalidation> 

나는 기본적으로 그냥 상태 값을 잡기 위해 원하고, 내가 정규식 또는 일부 문자열을 통해 그것을 할 수도있을 것 같군요 조작,하지만 난 거기에 반환 된 데이터를 개체로 변환하고 제대로 액세스하는 더 나은 방법이라고 가정합니다.

나는 시도했다 : 그것은 말 그대로 헤더 부분이 포함되어 있기 때문에

$dom = new DOMDocument(); 
$dom->loadXML($data); 

그러나 $ 데이터가 작동하지 않습니다 "HTTP를/1.0 201 ..."

사람이 처리 할 수있는 적절한 방법을 알아?

답변

5

사용하고있는 스크립트를

여전히 응답이 간단해야한다는 분석? PHP 용 AWS SDK (https://github.com/aws/aws-sdk-php)를 사용해 보셨습니까? 다음 작업을 수행 할 수있는 PHP의 AWS SDK를 사용하여

:

// Instantiate a CloudFront client 
$cloudfront = \Aws\CloudFront\CloudFrontClient::factory(array(
    'key' => 'your-aws-access-key-id', 
    'secret' => 'your-aws-secret-key', 
)); 

// Get the status of an invalidation 
$invalidationStatus = $cloudfront->getInvalidation(array(
    'DistributionId' => 'your-distribution-id', 
    'Id'    => 'your-invalidation-id', 
))->get('Status'); 
+0

나는 그것을 조사하고 실제로 그것을 지금 다운로드했습니다. 이 코드를 사용해 보시고 어떻게 진행되는지보십시오. 당신의 도움을 주셔서 감사합니다! – McB

1

일반적으로 HTTP 클라이언트 라이브러리는이를 수행해야하며, 사용 된 클라이언트 라이브러리는 언급하지 않았습니다.

$dom->loadXML(substr($data, strpos("\n\n", $data)+2)) 
-2

이 다음을 수행하여 알아 냈어요.

$resp = substr($resp, strpos($resp, "\r\n\r\n")+4); // This strips out the header 

$outputxml = simplexml_load_string($resp); // Converts it to an object in PHP which can be fed back more easily 
관련 문제