Generando una Firma AWS (ShipLogic)
Entonces, estoy implementando la API de ship-logic en mi programa y nunca he trabajado con la autenticación de AWS. He investigado en la documentación y he hecho lo siguiente:
<?php
$host = "api.shiplogic.com";
$accessKey = '*';
$secretKey = '*';
$requestUrl = 'https://api.shiplogic.com';
$uri = '/rates';
$httpRequestMethod = 'POST';
$data = '{"collection address": {"company": "Kenesis Test","street address": " 32 Goud Street, Goedeburg, Benoni","local area": "Benoni","city": "Johannesburg","country": "ZA","code": "1501"},"delivery address": {"street address": "17 bloomberg street","local area": "minnebron","city": "brakpan","code": "1541"},"parcels": [{"submitted lengthcm": 1,"submitted widthcm": 1,"submitted heightcm": 1,"submitted weightkg": 0.1}],"declared_value": 99}';
require 'vendor/autoload.php';
use Aws\Signature\SignatureV4;
use Aws\Credentials\Credentials;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
use Psr\Http\Client\ClientInterface;
$signature = new SignatureV4('execute-api', 'af-south-1');
$credentials = new Credentials($accessKeyId, $secretAccessKey);
$psr7Request = new Request($httpRequestMethod, $requestUrl.$uri, ["content-type"=>"application/json"], $data);
$client = new Client([$requestUrl, 'timeout' => 30]);
$sr = $signature->signRequest($psr7Request, $credentials);
$response = $client->send($sr);
//var_dump($response);
?>
Ahora es un simple fragmento de código pero constantemente obtengo una respuesta 403. Cuando hago la misma solicitud exacta con PostMan, la respuesta vuelve exitosamente.
¿Puede algún experto en AWS ayudarme y señalarme si estoy haciendo algo mal? Agradecería mucho la ayuda.
PD: Estoy usando credenciales de prueba aquí, no se preocupen.
davy.ai
Parece que estás intentando implementar la autenticación AWS Signature Version 4, que es necesaria al realizar solicitudes API a los servicios de AWS. Sin embargo, dado que estás utilizando la API de ShipLogic, no está claro si ellos utilizan autenticación AWS para su API. ¿Has confirmado con ShipLogic si su API requiere autenticación AWS?
Suponiendo que ShipLogic utiliza la autenticación AWS, generalmente una respuesta 403 significa un error de autenticación o un error de permiso. Aquí tienes algunas cosas que debes verificar:
execute-api
en la regiónaf-south-1
.Si has intentado todo lo anterior y aún sigues obteniendo un error 403, puede ser necesario contactar al soporte de ShipLogic para obtener más ayuda.