Попробуйте запустить скрипт ниже:
npm install style-loader --save
Измените конфигурацию webpack, добавьте поле modulesDirectories
в resolve
.
resolve: {
extensions: ['', '.js', '.jsx', '.css'],
modulesDirectories: [
'node_modules'
]
}
Нет никакого способа, если вы
не перечислите их все партиями по 1000 (что может быть медленным и отнимать пропускную способность - amazon, похоже, никогда не сжимает XML-ответы) или
войдите в свою учетную запись на S3 и перейдите Учетная запись - Использование. Похоже, отдел биллинга точно знает, сколько объектов вы сохранили!
Простая загрузка списка всех ваших объектов на самом деле займет некоторое время и будет стоить некоторых денег, если у вас хранится 50 миллионов объектов.
Также см. этот поток о StorageObjectCount - который находится в данных об использовании.
S3 API, чтобы получить хотя бы основы, даже если ему уже несколько часов, было бы здорово.
Вот boto3 версия сценария Python, встроенного выше.
import sys
import boto3
s3 = boto3.resource('s3')
s3bucket = s3.Bucket(sys.argv[1])
size = 0
totalCount = 0
for key in s3bucket.objects.all():
totalCount += 1
size += key.size
print('total size:')
print("%.3f GB" % (size*1.0/1024/1024/1024))
print('total count:')
print(totalCount)`
Следующее - то, как можно сделать это с помощью клиента Java.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.519</version>
</dependency>
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectListing;
public class AmazonS3Service {
private static final String S3_ACCESS_KEY_ID = "ACCESS_KEY";
private static final String S3_SECRET_KEY = "SECRET_KEY";
private static final String S3_ENDPOINT = "S3_URL";
private AmazonS3 amazonS3;
public AmazonS3Service() {
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProtocol(Protocol.HTTPS);
clientConfiguration.setSignerOverride("S3SignerType");
BasicAWSCredentials credentials = new BasicAWSCredentials(S3_ACCESS_KEY_ID, S3_SECRET_KEY);
AWSStaticCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
AmazonS3ClientBuilder.EndpointConfiguration endpointConfiguration = new AmazonS3ClientBuilder.EndpointConfiguration(S3_ENDPOINT, null);
amazonS3 = AmazonS3ClientBuilder.standard().withCredentials(credentialsProvider).withClientConfiguration(clientConfiguration)
.withPathStyleAccessEnabled(true).withEndpointConfiguration(endpointConfiguration).build();
}
public int countObjects(String bucketName) {
int count = 0;
ObjectListing objectListing = amazonS3.listObjects(bucketName);
int currentBatchCount = objectListing.getObjectSummaries().size();
while (currentBatchCount != 0) {
count += currentBatchCount;
objectListing = amazonS3.listNextBatchOfObjects(objectListing);
currentBatchCount = objectListing.getObjectSummaries().size();
}
return count;
}
}
Один из самых простых способов считать количество объектов в s3:
Step1: Выберите корневую папку Step2: Нажмите на Actions-> Delete (Obviously, быть осторожным не удаляют его), Step3: Ожидайте в течение нескольких минут aws, покажет Вам количество объектов и его общего размера.
UpVote, если Вы находите решение.
Ни один из API-интерфейсов не даст вам подсчет, потому что на самом деле не существует специального API-интерфейса Amazon для этого. Вам нужно просто запустить список содержимого и подсчитать количество возвращаемых результатов.
API вернет список с шагом 1000. Проверьте свойство IsTruncated, чтобы узнать, есть ли еще другие. Если есть, вам нужно сделать еще один вызов и передать последний полученный ключ в качестве свойства Marker при следующем вызове. Затем вы продолжите такой цикл до тех пор, пока IsTruncated не станет ложным.
См. Этот документ Amazon для получения дополнительной информации: Итерация многостраничных результатов