# Access S3 buckets With AWS S3 Client SDK

## Prerequisite

* ต้องมี bucket สร้างเอาไว้แล้ว ([ขั้นตอนในการสร้าง bucket](https://docs-epc.gitbook.io/ncs-documents/storage/object-storage-s3/create-an-object-storage-bucket))
* มีการสร้าง subuser และ ให้สิทธิ์การเข้าถึง bucket เอาไว้แล้ว ([ขั้นตอนการสร้าง subuser และ access key](https://docs-epc.gitbook.io/ncs-documents/~/changes/U2SVceQUXXCaek3t7CoE/object-storage/create-object-storage-sub-user))

## Preparing

* ทำการติดตั้ง Package aws-sdk/client-s3

```sh
npm install @aws-sdk/client-s3
```

<figure><img src="https://1352697161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq2BYmWTMiaonrEL8QBP2%2Fuploads%2Fh7IUqLaHoKyMZquLTKbs%2FScreenshot%202566-11-08%20at%2009.40.54.png?alt=media&#x26;token=ad4441f0-a930-4aa4-b32d-971df203e871" alt=""><figcaption><p>package.json</p></figcaption></figure>

## Getting started

### Import

* ทำการ import S3Client และ Command ที่ต้องการใช้งาน

จากตัวอย่างข้างล่างนี้ คือการ import S3Client และ Command ที่ต้องการใช้งานคือ ListBucketsCommand

```ts
import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";
```

### การทำงานเบื้องต้น

* ทำการประกาศตัวแปรจาก S3Client เพื่อใช้สำหรับการ configuration และการส่ง request ต่างๆ
* ทำการประกาศตัวแปรจาก command ที่ต้องการใช้งาน และใส่ parameter ตามความต้องการของ command นั้น
* เรียกใช้งานคำสั่ง send จาก S3Client เพื่อทำการส่ง request โดยมี command ที่ต้องการใช้งานเป็น parameter

ตัวอย่างการทำงานเบื้องต้น

```js
import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";

const client = new S3Client({
  /** configuration */
});

const params = {
  /** input parameters */
};

const command = new ListBucketsCommand(params);

try {
  const data = await client.send(command);
  // process data.
} catch (error) {
  // error handling.
}
```
