Мой вопрос касается данных, которые я хранил в корзине S3 с ледником класса хранения. Я хотел бы получить его с помощью самой быстрой опции, доступной, но я не могу найти подходящий метод для достижения этой цели. Похоже, что запрос по умолчанию использует стандартную опцию поиска.
В документах aws я нашел хороший способ восстановить данные.
С здесь У меня есть пример кода:
import java.io.IOException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.RestoreObjectRequest;
public class RestoreArchivedObject {
public static void main(String[] args) throws IOException {
String clientRegion = "*** Client region ***";
String bucketName = "*** Bucket name ***";
String keyName = "*** Object key ***";
try {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();
// Create and submit a request to restore an object from Glacier for two days.
RestoreObjectRequest requestRestore = new RestoreObjectRequest(bucketName, keyName, 2);
s3Client.restoreObjectV2(requestRestore);
// Check the restoration status of the object.
ObjectMetadata response = s3Client.getObjectMetadata(bucketName, keyName);
Boolean restoreFlag = response.getOngoingRestore();
System.out.format("Restoration status: %s.\n",
restoreFlag ? "in progress" : "not in progress (finished or failed)");
}
catch(AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
}
catch(SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}
Это хорошо и работает. Но я не могу найти в документации, как установить параметр поиска, если я хочу выбрать между:
- Массовый поиск 5-12 часов
- Ускоренный перевод 1-5 минут
- Стандартный перевод 3-5 часов
здесь - это класс RestoreObjectRequest из документов aws. Там я вижу функцию setType (String type) Устанавливает тип запроса на восстановление. Но нет описания установки одного из упомянутых параметров (1-3). Было бы неплохо, если бы кто-то мог сказать мне, если это возможно установить с помощью java sdk aws.
EDIT:
Здесь я могу прочитать, что setTier (уровень строк) должен это делать.
Уровень доступа к данным, используемый при восстановлении архива. Стандартное значение по умолчанию.
Тип: Enum
Допустимые значения: ускорено | Стандарт | Bulk
Предки: RestoreRequest А теперь у меня появляется сообщение об ошибке, если я изменяю Запрос по умолчанию:
RestoreObjectRequest requestRestore = new RestoreObjectRequest(bucketName, keyName, 2).withTier("Standard");
Исключение в потоке "main" com.amazonaws.services.s3.model.AmazonS3Exception: предоставленный вами XML не был правильно сформирован или не соответствует нашей опубликованной схеме
используя как-то старую версию Java SDK
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.386</version>
</dependency>