У меня есть сервер node.js
, работающий внутри контейнера Docker на экземпляре эластичного бобового стебля.
Я пытаюсь использовать предопределенные URL-адреса, чтобы разрешить загрузку изображений с клиентов в корзину S3. Клиент делает запрос к серверу, имеет объект s3, который принимает мои учетные данные, которые предоставляют доступ для генерации положенных URL-адресов, после чего этот URL-адрес возвращается клиенту для использования.
настройка s3
const s3 = new aws.S3({
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
region: 'eu-west-2',
signatureVersion: "v4"
});
получить код preignedUrl
let key = `${profileId}/${uuid()}/${[...Array(108)].map(i=>(~~(Math.random()*36)).toString(36)).join('')}.jpeg`;
s3.getSignedUrl('putObject', {
Bucket: process.env.S3_IMAGE_BUCKET,
ContentType: 'image/jpeg',
Key: key,
Expires: 60 * 5
}, (err, url) => {
if (err) {
console.log(err);
return res.send(err);
}
key = `${process.env.S3_IMAGE_BUCKET}/${key}`;
return res.send({key, url, rid: '1036086'});
})
Когда я проверяю это локально с помощью почтальона, я получаю url response
который работает
однако, когда я делаю запрос от сервера, работающего на эластичном бобовом стебле, я получаю Url
Который при использовании возвращает этот ответ
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
<AWSAccessKeyId>ASIAU45GETJDSE7N5MSL</AWSAccessKeyId>
<StringToSign>
AWS4-HMAC-SHA256 20190618T083455Z 20190618/eu-west-2/s3/aws4_request d58ac7357d24b7394e044b7e05f0bd0e12b243ec8d2ff5c09869c61a6df84738
</StringToSign>
<SignatureProvided>
bb72d0fc14f751f54605a28641ade119d0ad1602aa4557b5726a47fe5c666bca
</SignatureProvided>
<StringToSignBytes>
41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 0a 32 30 31 39 30 36 31 38 54 30 38 33 34 35 35 5a 0a 32 30 31 39 30 36 31 38 2f 65 75 2d 77 65 73 74 2d 32 2f 73 33 2f 61 77 73 34 5f 72 65 71 75 65 73 74 0a 64 35 38 61 63 37 33 35 37 64 32 34 62 37 33 39 34 65 30 34 34 62 37 65 30 35 66 30 62 64 30 65 31 32 62 32 34 33 65 63 38 64 32 66 66 35 63 30 39 38 36 39 63 36 31 61 36 64 66 38 34 37 33 38
</StringToSignBytes>
<CanonicalRequest>
GET /5d025fbfb36593001995ca49/f2d2f880-91a3-11e9-a974-e957309a542d/w1f09oq01rux3cepy6t1u4i063k0l6ppi8uay3fvhbd5qolfli66zvhrd9q7oiu6usgoctfad9ukwp4phchelxd2qfm1o77iv6fgmr2pg63i.jpeg Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAU45GETJDSE7N5MSL%2F20190618%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20190618T083455Z&X-Amz-Expires=300&X-Amz-Security-Token=AgoJb3JpZ2luX2VjECEaCWV1LXdlc3QtMiJHMEUCIHl7GX4OznoFpcK96YRKW5cEU0xHL7N%2FGaGrEA8FDaeGAiEAjehaSOvd1AnwHTats9aVmfMoF%2BT9WFz6WEpuJgo4MO8q2gMIWRAAGgwzMzY5NjY0OTA2OTUiDHAlaceH5jXyKiyzmSq3Az%2BeNg%2BmNa2BnEK3NnQr29KaIgGopD83mZEJy7OFnF%2FW0kACQXReDFGte247nfY29F1QuIpnQChlvFw8w1%2BQNyGCk3TOjXZSfESpnPH%2BNsj7Y7fcJgg0SsuyxWYTpSPSLpQ6%2FPIyxojKGESTzWcBv3Cct2%2FigsR0anEnxc7CHu1RYP6HvJgiJe9hzyKkqhW234V%2BE%2FpdAQpwYFpUUgiSKpBcrXj3qKKCEqzdLvgZDk7ZWpSdomJWVSnR9FwGhKcVu6M2i2m1wEn5daLChb8SFAaU6z0YVxK6lRPpTqAsK6Q%2B2dU7qIUGikl%2FPjGOTGscHfu1kvnbdvI8RFtM7vYOLxOPiY4nAKK4vCDdqGWIM8MnD6QCcJiCWbSafa8DTnoGK3TQV2wyz77nBv6hzA3QXnubNaGUYoIfHvkCzoi5wnu0cypMuiEj3nuoWLU2o%2B63K3M%2BXxGD1y4oBi4nSRbRIIsmSNhZYOrQpKzsaw3Wxew9t%2Fd%2BpfUMaYlQHKtFsj%2BTrF73h36JHGwGj%2Fh%2ByAM1q%2FuOXEFcpQ%2FCkXfXGrrVjlh%2Bpgu67C2oqCBG%2BjVZ2UoyORfOhSYrkfQwo7ui6AU6tAF1KcItN21N%2BsCd3eSl6Mpc0W9zKt4aT9l3u5EJHOiIn5SpbaLtHFyKD3cnUuFWZ%2B20OCSLJmmr2RfbMziBdjy6kibG%2FR8WBD3zZaouY4c0U59z5g1QntzjwDXyfq6ubPPC2Bzj3GtVsGTMtQ9D6HGuG5C2JG74ghooDdTq%2BdiMaC6kttOCpRrSE%2BfIyBHRBAzjXDSNBEomM4%2BIFwEp6Xj5fva1UepJ%2BezSM9ycRJI92dS%2BRps%3D&X-Amz-SignedHeaders=host host:r2djpd-cpib-rt03qn.s3.eu-west-2.amazonaws.com host UNSIGNED-PAYLOAD
</CanonicalRequest>
<CanonicalRequestBytes>
47 45 54 0a 2f 35 64 30 32 35 66 62 66 62 33 36 35 39 33 30 30 31 39 39 35 63 61 34 39 2f 66 32 64 32 66 38 38 30 2d 39 31 61 33 2d 31 31 65 39 2d 61 39 37 34 2d 65 39 35 37 33 30 39 61 35 34 32 64 2f 77 31 66 30 39 6f 71 30 31 72 75 78 33 63 65 70 79 36 74 31 75 34 69 30 36 33 6b 30 6c 36 70 70 69 38 75 61 79 33 66 76 68 62 64 35 71 6f 6c 66 6c 69 36 36 7a 76 68 72 64 39 71 37 6f 69 75 36 75 73 67 6f 63 74 66 61 64 39 75 6b 77 70 34 70 68 63 68 65 6c 78 64 32 71 66 6d 31 6f 37 37 69 76 36 66 67 6d 72 32 70 67 36 33 69 2e 6a 70 65 67 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3d 69 6d 61 67 65 25 32 46 6a 70 65 67 26 58 2d 41 6d 7a 2d 41 6c 67 6f 72 69 74 68 6d 3d 41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 26 58 2d 41 6d 7a 2d 43 72 65 64 65 6e 74 69 61 6c 3d 41 53 49 41 55 34 35 47 45 54 4a 44 53 45 37 4e 35 4d 53 4c 25 32 46 32 30 31 39 30 36 31 38 25 32 46 65 75 2d 77 65 73 74 2d 32 25 32 46 73 33 25 32 46 61 77 73 34 5f 72 65 71 75 65 73 74 26 58 2d 41 6d 7a 2d 44 61 74 65 3d 32 30 31 39 30 36 31 38 54 30 38 33 34 35 35 5a 26 58 2d 41 6d 7a 2d 45 78 70 69 72 65 73 3d 33 30 30 26 58 2d 41 6d 7a 2d 53 65 63 75 72 69 74 79 2d 54 6f 6b 65 6e 3d 41 67 6f 4a 62 33 4a 70 5a 32 6c 75 58 32 56 6a 45 43 45 61 43 57 56 31 4c 58 64 6c 63 33 51 74 4d 69 4a 48 4d 45 55 43 49 48 6c 37 47 58 34 4f 7a 6e 6f 46 70 63 4b 39 36 59 52 4b 57 35 63 45 55 30 78 48 4c 37 4e 25 32 46 47 61 47 72 45 41 38 46 44 61 65 47 41 69 45 41 6a 65 68 61 53 4f 76 64 31 41 6e 77 48 54 61 74 73 39 61 56 6d 66 4d 6f 46 25 32 42 54 39 57 46 7a 36 57 45 70 75 4a 67 6f 34 4d 4f 38 71 32 67 4d 49 57 52 41 41 47 67 77 7a 4d 7a 59 35 4e 6a 59 30 4f 54 41 32 4f 54 55 69 44 48 41 6c 61 63 65 48 35 6a 58 79 4b 69 79 7a 6d 53 71 33 41 7a 25 32 42 65 4e 67 25 32 42 6d 4e 61 32 42 6e 45 4b 33 4e 6e 51 72 32 39 4b 61 49 67 47 6f 70 44 38 33 6d 5a 45 4a 79 37 4f 46 6e 46 25 32 46 57 30 6b 41 43 51 58 52 65 44 46 47 74 65 32 34 37 6e 66 59 32 39 46 31 51 75 49 70 6e 51 43 68 6c 76 46 77 38 77 31 25 32 42 51 4e 79 47 43 6b 33 54 4f 6a 58 5a 53 66 45 53 70 6e 50 48 25 32 42 4e 73 6a 37 59 37 66 63 4a 67 67 30 53 73 75 79 78 57 59 54 70 53 50 53 4c 70 51 36 25 32 46 50 49 79 78 6f 6a 4b 47 45 53 54 7a 57 63 42 76 33 43 63 74 32 25 32 46 69 67 73 52 30 61 6e 45 6e 78 63 37 43 48 75 31 52 59 50 36 48 76 4a 67 69 4a 65 39 68 7a 79 4b 6b 71 68 57 32 33 34 56 25 32 42 45 25 32 46 70 64 41 51 70 77 59 46 70 55 55 67 69 53 4b 70 42 63 72 58 6a 33 71 4b 4b 43 45 71 7a 64 4c 76 67 5a 44 6b 37 5a 57 70 53 64 6f 6d 4a 57 56 53 6e 52 39 46 77 47 68 4b 63 56 75 36 4d 32 69 32 6d 31 77 45 6e 35 64 61 4c 43 68 62 38 53 46 41 61 55 36 7a 30 59 56 78 4b 36 6c 52 50 70 54 71 41 73 4b 36 51 25 32 42 32 64 55 37 71 49 55 47 69 6b 6c 25 32 46 50 6a 47 4f 54 47 73 63 48 66 75 31 6b 76 6e 62 64 76 49 38 52 46 74 4d 37 76 59 4f 4c 78 4f 50 69 59 34 6e 41 4b 4b 34 76 43 44 64 71 47 57 49 4d 38 4d 6e 44 36 51 43 63 4a 69 43 57 62 53 61 66 61 38 44 54 6e 6f 47 4b 33 54 51 56 32 77 79 7a 37 37 6e 42 76 36 68 7a 41 33 51 58 6e 75 62 4e 61 47 55 59 6f 49 66 48 76 6b 43 7a 6f 69 35 77 6e 75 30 63 79 70 4d 75 69 45 6a 33 6e 75 6f 57 4c 55 32 6f 25 32 42 36 33 4b 33 4d 25 32 42 58 78 47 44 31 79 34 6f 42 69 34 6e 53 52 62 52 49 49 73 6d 53 4e 68 5a 59 4f 72 51 70 4b 7a 73 61 77 33 57 78 65 77 39 74 25 32 46 64 25 32 42 70 66 55 4d 61 59 6c 51 48 4b 74 46 73 6a 25 32 42 54 72 46 37 33 68 33 36 4a 48 47 77 47 6a 25 32 46 68 25 32 42 79 41 4d 31 71 25 32 46 75 4f 58 45 46 63 70 51 25 32 46 43 6b 58 66 58 47 72 72 56 6a 6c 68 25 32 42 70 67 75 36 37 43 32 6f 71 43 42 47 25 32 42 6a 56 5a 32 55 6f 79 4f 52 66 4f 68 53 59 72 6b 66 51 77 6f 37 75 69 36 41 55 36 74 41 46 31 4b 63 49 74 4e 32 31 4e 25 32 42 73 43 64 33 65 53 6c 36 4d 70 63 30 57 39 7a 4b 74 34 61 54 39 6c 33 75 35 45 4a 48 4f 69 49 6e 35 53 70 62 61 4c 74 48 46 79 4b 44 33 63 6e 55 75 46 57 5a 25 32 42 32 30 4f 43 53 4c 4a 6d 6d 72 32 52 66 62 4d 7a 69 42 64 6a 79 36 6b 69 62 47 25 32 46 52 38 57 42 44 33 7a 5a 61 6f 75 59 34 63 30 55 35 39 7a 35 67 31 51 6e 74 7a 6a 77 44 58 79 66 71 36 75 62 50 50 43 32 42 7a 6a 33 47 74 56 73 47 54 4d 74 51 39 44 36 48 47 75 47 35 43 32 4a 47 37 34 67 68 6f 6f 44 64 54 71 25 32 42 64 69 4d 61 43 36 6b 74 74 4f 43 70 52 72 53 45 25 32 42 66 49 79 42 48 52 42 41 7a 6a 58 44 53 4e 42 45 6f 6d 4d 34 25 32 42 49 46 77 45 70 36 58 6a 35 66 76 61 31 55 65 70 4a 25 32 42 65 7a 53 4d 39 79 63 52 4a 49 39 32 64 53 25 32 42 52 70 73 25 33 44 26 58 2d 41 6d 7a 2d 53 69 67 6e 65 64 48 65 61 64 65 72 73 3d 68 6f 73 74 0a 68 6f 73 74 3a 72 32 64 6a 70 64 2d 63 70 69 62 2d 72 74 30 33 71 6e 2e 73 33 2e 65 75 2d 77 65 73 74 2d 32 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 0a 0a 68 6f 73 74 0a 55 4e 53 49 47 4e 45 44 2d 50 41 59 4c 4f 41 44
</CanonicalRequestBytes>
<RequestId>AA39DFE521DEDF64</RequestId>
<HostId>
JzqxMk1A8F6dyq9LCAc/wEIOu0mdX2lfuLvSx/btMiaLjoCcZzuExm2d4DnX0r8tHzMYFXBMXFk=
</HostId>
</Error>
Мои ключи доступа и Id одинаковы в обоих местах.
URL, который, кажется, не работает, содержит раздел «токен безопасности», из которого не возвращается URL, возвращающийся при локальном запуске кода.
Есть мысли, что может быть причиной этой проблемы?