AWS S3 Java-val

1. Bemutatkozás

Ebben az oktatóanyagban megtudhatjuk, hogyan lehet programszerűen, Java-ból kölcsönhatásba lépni az Amazon S3 (Simple Storage Service) tárolórendszerrel.

Ne feledje, hogy az S3 nagyon egyszerű felépítésű - minden csoportban tetszőleges számú objektum tárolható, amelyhez SOAP interfész vagy REST stílusú API segítségével férhet hozzá.

A továbbiakban az AWS SDK for Java segítségével fogjuk létrehozni, felsorolni és törölni az S3 vödröket. Ezekben a csoportokban objektumokat is feltöltünk, felsorolunk, letöltünk, másolunk, áthelyezünk, átnevezünk és törölünk.

2. Maven-függőségek

Mielőtt belekezdenénk, deklarálnunk kell az AWS SDK függőségét a projektünkben:

 com.amazonaws aws-java-sdk 1.11.163 

A legújabb verzió megtekintéséhez ellenőrizze a Maven Central alkalmazást.

3. Előfeltételek

Az AWS SDK használatához néhány dologra lesz szükségünk:

  1. AWS-fiók: szükségünk van egy Amazon Web Services-fiókra. Ha még mindig nincs, hozzon létre egy fiókot
  2. AWS biztonsági hitelesítő adatok: Ezek azok a hozzáférési kulcsok, amelyek lehetővé teszik számunkra, hogy programozott hívásokat indítsunk az AWS API-műveletekhez. Ezeket a hitelesítő adatokat kétféleképpen is megszerezhetjük, akár az AWS gyökérfiók hitelesítő adatok használatával a Biztonsági hitelesítő adatok oldal hozzáférési kulcsok szakaszából, akár az IAM felhasználói hitelesítő adatok használatával az IAM konzolról
  3. Az AWS régió kiválasztása: Ki kell választanunk egy AWS régió (ka) t, ahol tárolni szeretnénk az Amazon S3 adatainkat. Ne feledje, hogy az S3 tároló árak régiónként változnak. További részletekért keresse fel a hivatalos dokumentációt. Ehhez az oktatóanyaghoz az USA keleti részét (Ohio) (régió) fogjuk használni us-kelet-2)

4. Ügyfélkapcsolat létrehozása

Először létre kell hoznunk egy ügyfélkapcsolatot az Amazon S3 webes szolgáltatás eléréséhez. Majd használjuk AmazonS3 interfész erre a célra:

AWSCredentials hitelesítő adatok = új BasicAWSC hitelesítő adatok ("", ""); 

Ezután konfigurálja az ügyfelet:

AmazonS3 s3client = AmazonS3ClientBuilder .standard () .withCredentials (új AWSStaticCredentialsProvider (hitelesítő adatok)) .withRegion (Regions.US_EAST_2) .build ();

5. Amazon S3 vödör műveletek

5.1. Vödör létrehozása

Fontos megjegyezni, hogy a tárterület névterét a rendszer minden felhasználója megosztja. Tehát a vödörnevünknek egyedinek kell lennie az Amazon S3 összes meglévő sávnevében (megtudjuk, hogyan lehet ezt ellenőrizni egy pillanat alatt).

Ezenkívül a hivatalos dokumentációban előírtak szerint a Bucket neveknek meg kell felelniük a következő követelményeknek:

  • a nevek nem tartalmazhatnak aláhúzást
  • a neveknek 3 és 63 karakter között kell lenniük
  • a neveknek nem szabad kötőjellel végződni
  • a nevek nem tartalmazhatnak szomszédos periódusokat
  • a nevek nem tartalmazhatnak kötőjelet a pontok mellett (pl. a „my-.bucket.com” és a „my.-bucket” érvénytelen)
  • a nevek nem tartalmazhatnak nagybetűket

Hozzunk létre egy vödröt:

String bucketName = "baeldung-bucket"; if (s3client.doesBucketExist (bucketName)) {LOG.info ("A vödör neve nem érhető el." + "Próbálkozzon újra más vödör névvel."); Visszatérés; } s3client.createBucket (bucketName);

Itt használjuk s3vevő amelyet az előző lépésben hoztunk létre. Mielőtt létrehoznánk egy vödröt, a használatával ellenőrizzük, hogy elérhető-e a vödörünk neve doesBucketExist () módszer. Ha ez a név elérhető, akkor a createBucket () módszer.

5.2. Vödrök felsorolása

Most, hogy létrehoztunk néhány vödröt, most nyomtassunk egy listát az S3 környezetünkben elérhető összes vödörről a listaVödrök () módszer. Ez a módszer visszaadja az összes vödör listáját:

Listavezérek = s3client.listBuckets (); for (Vödör vödör: vödrök) {System.out.println (vödör.getName ()); }

Ez felsorolja az összes S3 környezetünkben lévő csoportot:

baeldung-bucket baeldung-bucket-test2 gumibabszár-us-kelet-2

5.3. Vödör törlése

Fontos megbizonyosodni arról, hogy a vödörünk üres, mielőtt törölhetnénk. Ellenkező esetben kivételt dobunk. Vegye figyelembe azt is, hogy csak egy vödör tulajdonosa törölheti azt az engedélyektől függetlenül (Hozzáférés-vezérlési házirendek):

próbáld ki a {s3client.deleteBucket ("baeldung-bucket-test2") parancsot; } catch (AmazonServiceException e) {System.err.println ("e.getErrorMessage ()); return;}

6. Amazon S3 Object Operations

Az Amazon S3 vázában lévő fájl vagy adatgyűjtemény objektumként ismert. Számos műveletet hajthatunk végre olyan objektumokkal, mint a feltöltés, felsorolás, letöltés, másolás, áthelyezés, átnevezés és törlés.

6.1. Objektumok feltöltése

Az objektum feltöltése elég egyszerű folyamat. Használjuk a putObject () módszer, amely három paramétert fogad el:

  1. bucketName: A tároló neve, ahová objektumot akarunk feltölteni
  2. kulcs: Ez a fájl teljes elérési útja
  3. fájl: A feltöltött adatokat tartalmazó tényleges fájl
s3client.putObject (bucketName, "Document / hello.txt", új File ("/ Users / user / Document / hello.txt"));

6.2. Objektumok felsorolása

Majd használjuk listObjects () módszer az S3 vödörben elérhető összes objektum felsorolásához:

ObjectListing objectListing = s3client.listObjects (bucketName); for (S3ObjectSummary os: objectListing.getObjectSummaries ()) {LOG.info (os.getKey ()); }

Hívás listObjects () módszere s3vevő objektum adja a ObjectListing objektum, amely felhasználható az összes objektum-összefoglaló listájának lekérdezéséhez a megadott vödörben. Csak kinyomtatjuk a kulcsot, de van néhány más lehetőség is, például méret, tulajdonos, utoljára módosított, tárolási osztály stb.

Ez most kinyomtatja a vödörben lévő összes objektum listáját:

Dokumentum / hello.txt

6.3. Objektum letöltése

Egy objektum letöltéséhez először a getObject () módszer be s3vevő amely egy S3Object tárgy. Amint ezt megkapjuk, felhívjuk getObjectContent () ezen kap egy S3ObjectInputStream objektum, amely úgy viselkedik, mint egy hagyományos Java InputStream.

S3Object s3object = s3client.getObject (vödörNév, "kép / pic.png"); S3ObjectInputStream inputStream = s3object.getObjectContent (); FileUtils.copyInputStreamToFile (inputStream, új File ("/ Users / user / Desktop / hello.txt"));

Itt használjuk FileUtils.copyInputStreamToFile () módszer az Apache Commons által. Megtekintheti ezt a Baeldung cikket is, hogy megismerje az an átalakításának egyéb módjait InputStream a File.

6.4. Objektumok másolása, átnevezése és áthelyezése

Hívással másolhatunk egy objektumot copyObject () módszer a mi s3vevő amely négy paramétert fogad el:

  1. forrás vödör neve
  2. objektumkulcs a forráscsoportban
  3. rendeltetési hely neve (ugyanaz lehet, mint a forrás)
  4. objektumkulcs a célsávban
s3client.copyObject ("baeldung-bucket", "picture / pic.png", "baeldung-bucket2", "document / picture.png");

Megjegyzés: Használhatjuk ezek kombinációját copyObject () módszer deleteObject () mozgó és átnevező feladatok elvégzéséhez. Ez magában foglalja az objektum első másolását, majd törlését a régi helyéről.

6.5. Objektum törlése

Objektum törléséhez felhívjuk deleteObject () módszer be s3vevő és adja át a vödör nevét és az objektumkulcsot:

s3client.deleteObject ("baeldung-bucket", "picture / pic.png");

6.6. Több objektum törlése

Több objektum törléséhez először létre kell hoznunk a DeleteObjectsRequest objektumot, és adja át a vödör nevét a kivitelezőjének. Ezután átadunk egy tömböt az összes törölni kívánt objektumkulcsból.

Ha ez megvan DeleteObjectsRequest objektum, átadhatjuk neki deleteObjects () módszerünk s3vevő érvként. Ha ez sikerül, akkor ez törli az összes általunk szállított objektumot:

String objkeyArr [] = {"dokumentum / hello.txt", "dokumentum / pic.png"}; DeleteObjectsRequest delObjReq = új DeleteObjectsRequest ("baeldung-bucket") .withKeys (objkeyArr); s3client.deleteObjects (delObjReq);

7. Következtetés

Ebben a cikkben az Amazon S3 webszolgáltatással való interakció alapjaira összpontosítottunk - mind a tároló, mind az objektum szintjén.

Mint mindig, ennek az oktatóanyagnak a teljes megvalósítása megtalálható a Github oldalon.