1. Используйте AWS Amplify или AWS SDK для браузера
Если вам необходимо выполнить это действие в браузере, одним из решений является использование AWS Amplify или комбинации других сервисы, которые обеспечивают взаимодействие на основе браузера без необходимости управления закрытыми ключами в браузере.Однако подписывание URL-адресов обычно не следует выполнять непосредственно в коде на стороне клиента, поскольку это раскрывает ваши личные данные. ключ, что представляет угрозу безопасности. Вместо этого вам следует выполнить эту операцию на стороне сервера, а затем передать подписанный URL-адрес клиенту.
const configureAWS = () => {
const {AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION} = config;
AWS.config.update({
accessKeyId: AWS_ACCESS_KEY_ID,
secretAccessKey: AWS_SECRET_ACCESS_KEY,
region: AWS_REGION,
});
};
export const AwsDownloadWithSignedUrlVideo = async (
bucketName,
key,
Expires = 60,
) => {
try {
configureAWS(); // Ensure AWS is configured
const {
CLOUDFRONT_URL,
CLOUDFRONT_KEY_PAIR_ID,
CLOUDFRONT_PRIVATE_KEY_PATH,
} = Config;
const cloudFrontUrl = `${CLOUDFRONT_URL}/${key}`;
const cloudFront = new AWS.CloudFront.Signer(
CLOUDFRONT_KEY_PAIR_ID,
CLOUDFRONT_PRIVATE_KEY_PATH,
);
const signedUrlCloudFront = cloudFront.getSignedUrl({
url: cloudFrontUrl,
expires: Math.floor(Date.now() / 1000) + Expires,
});
return signedUrlCloudFront;
} catch (error) {
console.error('Error generating signed URL for video from S3:', error);
return null;
}
};
Подробнее здесь: https://stackoverflow.com/questions/793 ... act-native