Поместить файл в корзину S3 с использованием заранее заданного URL не удается на сервере, работает локально - PullRequest
2 голосов
/ 18 июня 2019

У меня есть сервер 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, возвращающийся при локальном запуске кода.

Есть мысли, что может быть причиной этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...