Настройка аутентификации для AWS API Gateway

У нас есть лямбда-функция, которая вызывается из AWS API Gateway. Я пытался вызвать его из моего кода PHP. Я использую этот документ, чтобы попытаться получить правильный заголовок «Авторизация»:

http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationDebugging

Но я должен что-то упустить, потому что я все время получаю ошибку:

{«message»: «Отсутствует токен аутентификации»}

Вот что у меня так далеко:

current_date = date('D,  d M Y H:i:s +u');
$tmp1 = explode('/',AWS_URL);
write_log("URL exploded" . json_encode($tmp1));
$tmp2 = explode('.',$tmp1[2]);
write_log("IP exploded: " . json_encode($tmp2));
$url_parts = $tmp2[0] . '/' . $tmp1[3] . '/' . $tmp1[4];
$to_cannonicalize = 'POST\nContent-MD5\nTontent-Type\n' . $current_date . '\n' . $url_parts;
write_log("cannocalize this string: " . $to_cannonicalize);
$signature = base64_encode(hash_hmac('sha256', $to_cannonicalize, AWS_LABMDA_SECRET));
$formatted_date = date('Ymd');
$zdate = date('Ymd') . 'T' . date('His') . 'Z';

$authorization = 'AWS ' . AWS_LABMDA_KEY . ':' . $signature;
// set up the CURL call
$header_array = array (
'Content-type' => 'application/json',
'Authorization' => $authorization,
'X-Amz-Date'    => $zdate
);
write_log(json_encode($header_array));
$post_data = array (
'postalcode' => $zip
);

$curl = curl_init( AWS_TAXRATE_URL );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array);
curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_data );

// make call and send results
$curl_response = curl_exec( $curl );

Я также попытался скопировать то, что использовалось в Postman в качестве заголовка (где я получаю другой тип ошибки):

$authorization = 'AWS4-HMAC-SHA256 Credential=' . AWS_LABMDA_KEY . '/' . $formatted_date . '/'
. AWS_SQS_REGION . '/execute-api/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, '
. 'Signature=' . $signature;

Это тоже не сработало.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector