You are a helpful assistant.
system
Phát triển tập lệnh Node.js kết nối với vùng lưu trữ AWS S3, đảm bảo xác thực người dùng, liệt kê tất cả các đối tượng trong vùng lưu trữ, đồng thời thực hiện xử lý lỗi, ghi lại đầu ra vào tệp và in tên cũng như kích thước khóa của chúng lên bảng điều khiển và định dạng JSON, với hiệu suất tối ưu.
user
Để phát triển một tập lệnh Node.js kết nối với vùng lưu trữ AWS S3, bạn cần sử dụng AWS SDK cho JavaScript. Dưới đây là một ví dụ về cách thực hiện các yêu cầu của bạn:

1. **Cài đặt AWS SDK**: Trước tiên, bạn cần cài đặt AWS SDK cho JavaScript. Bạn có thể làm điều này bằng cách chạy lệnh sau trong thư mục dự án của bạn:

   ```bash
   npm install aws-sdk
   ```

2. **Tạo tập lệnh Node.js**: Dưới đây là một tập lệnh mẫu thực hiện các yêu cầu của bạn:

   ```javascript
   const AWS = require('aws-sdk');
   const fs = require('fs');
   const path = require('path');

   // Cấu hình AWS SDK với thông tin xác thực
   AWS.config.update({
     accessKeyId: 'YOUR_ACCESS_KEY_ID',
     secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
     region: 'YOUR_REGION'
   });

   const s3 = new AWS.S3();
   const bucketName = 'YOUR_BUCKET_NAME';

   // Hàm liệt kê các đối tượng trong vùng lưu trữ
   async function listObjects() {
     try {
       const params = {
         Bucket: bucketName
       };

       const data = await s3.listObjectsV2(params).promise();
       const objects = data.Contents;

       // Ghi dữ liệu vào tệp
       const outputFilePath = path.join(__dirname, 's3_objects.json');
       fs.writeFileSync(outputFilePath, JSON.stringify(objects, null, 2));

       // In dữ liệu ra bảng điều khiển
       console.log('Danh sách các đối tượng trong vùng lưu trữ:');
       objects.forEach(obj => {
         console.log(`Tên: ${obj.Key}, Kích thước: ${obj.Size}`);
       });

       console.log(`Dữ liệu đã được ghi vào tệp: ${outputFilePath}`);
     } catch (error) {
       console.error('Đã xảy ra lỗi khi liệt kê các đối tượng:', error);
     }
   }

   // Gọi hàm liệt kê đối tượng
   listObjects();
   ```

3. **Chạy tập lệnh**: Đảm bảo bạn đã thay thế `YOUR_ACCESS_KEY_ID`, `YOUR_SECRET_ACCESS_KEY`, `YOUR_REGION`, và `YOUR_BUCKET_NAME` bằng thông tin thực tế của bạn. Sau đó, bạn có thể chạy tập lệnh bằng lệnh:

   ```bash
   node your_script_name.js
   ```

**Chú ý**: Đảm bảo rằng thông tin xác thực AWS của bạn được bảo mật và không chia sẻ công khai. Bạn có thể sử dụng các phương pháp bảo mật hơn như IAM roles hoặc AWS Secrets Manager để quản lý thông tin xác thực.

Tập lệnh trên sẽ liệt kê tất cả các đối tượng trong vùng lưu trữ S3, ghi thông tin vào tệp JSON, và in tên cùng kích thước của các đối tượng lên bảng điều khiển. Nó cũng xử lý lỗi và thông báo lỗi nếu có vấn đề xảy ra.
assistant