Как уже говорили другие, вам необходимо реализовать Bucket Policy , такую как эта:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadForGetBucketObjects",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::{NAME_OF_YOUR_BUCKET_HERE}/*"
}
]
}
Это можно сделать в консоли AWS. выбрав Bucket , затем Permissions , затем Bucket Policy . Похоже, @Milan C. указывает, как объявить это в файле serverless.yml .
Вполне уверенные UUID "достаточно хороши". Существует 340,282,366,920,938,463,463,374,607,431,770,000,000 доступных UUID.
http://www.wilybeagle.com/guid_store/guid_explain.htm
"Для рассматривания этих чисел в истинном свете ежегодный риск того, чтобы быть пораженным метеоритом, как оценивается, является одним шансом в 17 миллиардах, который означает, что вероятность - приблизительно 0,00000000006 (6 × 10−11), эквивалентный разногласиям создания нескольких десятков из триллионов UUID через год и наличия одного дубликата. Другими словами, только после генерации 1 миллиарда UUID каждую секунду в течение следующих 100 лет, вероятности создания всего один дубликат составил бы приблизительно 50%. Вероятность одного дубликата составила бы приблизительно 50%, если каждый человек на земле владеет 600 миллионами UUID"
public class UniqueID {
private static long startTime = System.currentTimeMillis();
private static long id;
public static synchronized String getUniqueID() {
return "id." + startTime + "." + id++;
}
}
Если это должно быть уникально на пк: Вы могли, вероятно, использовать (System.currentTimeMillis() << 4) | (staticCounter++ & 15)
или что-то как этот.
Это позволило бы Вам генерировать 16 в мс. Если Вы нуждаетесь в больше, смещаетесь 5 и и это с 31...
если это должно быть уникально через несколько ПК, необходимо также объединиться в MAC-адресе основной сетевой платы.
править: разъясниться
private static int staticCounter=0;
private final int nBits=4;
public long getUnique() {
return (currentTimeMillis() << nBits) | (staticCounter++ & 2^nBits-1);
}
и измените nBits на квадратный корень наибольшего числа, которое необходимо должны быть генерировать в мс.
Это в конечном счете перевернется. Вероятно, 20 лет или что-то с nBits в 4.
Из памяти RMI удаленные пакеты содержит генератор UUID. Я не знаю, стоит ли это изучить.
Когда я должен был генерировать их, я обычно использую MD5 hashsum времени текущей даты, имени пользователя и IP-адреса компьютера. В основном идея состоит в том, чтобы взять все, что можно узнать о компьютере/человеке и затем генерировать хеш MD5 этой информации.
Это работает действительно хорошо и невероятно быстро (после того как Вы инициализировали MessageDigest впервые).