AWS SDK-PHP

Dịch vụ đám mây AWS của Amazon là dịch vụ được các nhà phát triển sử dụng nhiều nhất hiện nay. Các dịch vụ này đã cung cấp sức mạnh không giới hạn và dung lượng lưu trữ không giới hạn cho Nhà phát triển. Trong bài viết này, chúng tôi nói về cách làm việc với bộ lưu trữ không giới hạn AWS i. e. AWS S3 với PHP. 'S3' là viết tắt của 'Dịch vụ lưu trữ đơn giản'

Để lưu trữ tệp của bạn trong AWS S3, S3 yêu cầu bạn tạo 'Bộ chứa lưu trữ' được gọi là 'Bộ chứa' theo thuật ngữ của AWS. Các thùng này có thể lưu trữ tất cả các loại Tệp và Thư mục. Các nhóm cũng có thể có một hệ thống phân cấp các thư mục, giống như hệ thống tệp cục bộ của chúng tôi. Mỗi nhóm đi kèm với một bộ 'Quyền truy cập' riêng, theo mặc định áp dụng cho tất cả các tệp và thư mục trong nhóm đó. Tuy nhiên, chúng tôi cũng có thể áp dụng 'Quyền riêng lẻ' cho các tệp này, trong trường hợp như vậy, các Quyền đối với tệp riêng lẻ này sẽ được áp dụng thay vì Quyền của Nhóm mặc định

Theo thuật ngữ của AWS, tất cả các tệp được lưu trữ trong S3 được gọi là 'Đối tượng'. Mọi đối tượng đều có 'Chủ sở hữu', 'Chủ sở hữu' là tài khoản được sử dụng để thực sự tải tệp cụ thể đó lên S3. Mọi Đối tượng có thể có quyền truy cập 'công khai' hoặc 'riêng tư'. Các tệp công khai có sẵn để tải xuống qua một liên kết duy nhất. Các tệp riêng tư không có sẵn để tải xuống cho đến khi liên kết tải xuống được đính kèm với mã thông báo. Mã thông báo duy nhất này được tạo nhanh chóng và hết hạn sau thời gian đã chỉ định [chúng tôi chỉ định mã thông báo sẽ có hiệu lực trong bao lâu]

[Thiết lập cơ bản]
Trong bài viết này, chúng ta sẽ thực hiện các thao tác CRUD trên S3 bằng PHP. AWS đã phát hành SDK chính thức dành cho Nhà phát triển PHP, giúp thực hiện tất cả các tác vụ này rất dễ dàng. Hiện tại, SDK chính thức ở mức '3. 44. phiên bản 2’. Chúng tôi sẽ sử dụng SDK này cho tất cả các ví dụ mã của chúng tôi trong hướng dẫn này.

Trước khi tiếp tục, trước tiên chúng ta cần có một Tài khoản AWS đang hoạt động. AWS cung cấp 'Cấp miễn phí' cho Người dùng mới, quá đủ để bắt đầu và sử dụng các dịch vụ mà không phải trả một xu nào

Khi tài khoản được tạo và xác minh, trước tiên chúng tôi tạo một 'Bộ chứa' với 'quyền truy cập đọc công khai' từ bảng điều khiển AWS. Chúng tôi sẽ sử dụng chính Bucket này cho tất cả các nội dung tải lên và tải xuống trong hướng dẫn này

Mỗi nhóm được lưu trữ trong một 'khu vực cụ thể' trên thế giới nơi lưu trữ tất cả các tệp trong nhóm cụ thể này. Đối với các mẫu mã trong hướng dẫn này, chúng tôi đã tạo nhóm của mình ở khu vực 'Mumbai, Ấn Độ'. Vì vậy, tất cả các tệp của bạn được lưu trữ trong Trung tâm dữ liệu Amazon Mumbai. Bạn có thể chọn khu vực gần bạn hơn

Bây giờ, chúng ta cần tải xuống AWS SDK chính thức cho PHP. SDK PHP chính thức nằm ở. https. //github. com/aws/aws-sdk-php. Bạn có thể trực tiếp tải xuống SDK này từ đó.
Người dùng Composer có thể cài đặt SDK này thông qua lệnh này. 'nhà soạn nhạc yêu cầu aws/aws-sdk-php'. Kho lưu trữ chính thức cho gói này là tại. ‘https. // người đóng gói. org/gói/aws/aws-sdk-php‘.

Để truy cập các dịch vụ S3 qua API, chúng tôi cần có 'Khóa truy cập'. Bạn có thể tạo các 'khóa truy cập' này từ 'Bảng điều khiển AWS' trong phần 'Thông tin xác thực bảo mật của tôi'. Sau khi hoàn thành, tất cả chúng ta đã sẵn sàng để bắt đầu viết mã của mình

[Khởi tạo S3]
Điều đầu tiên mà chúng tôi phải làm là khởi tạo Phiên bản S3. Chúng tôi làm điều này như sau.

 
 

Bạn có thể giữ mã này trong một tệp duy nhất và đặt tên là 'khởi tạo. php'. Chúng tôi sẽ bao gồm tệp này trong tất cả các ví dụ mã của chúng tôi. Biến ‘$config’ bao gồm tất cả các thuộc tính được yêu cầu để khởi tạo phiên bản S3 của chúng tôi. Sau đó, chúng tôi bao gồm tập lệnh tự động tải của nhà soạn nhạc để khởi tạo SDK AWS của chúng tôi. Trong bước thứ ba, chúng tôi tạo đối tượng S3 thực tế sẽ được sử dụng cho tất cả các hoạt động CRUD của chúng tôi

[Đang tải tệp 'có quyền đọc công khai' lên Bộ chứa]
Trong ví dụ này, chúng tôi tải một tệp văn bản cơ bản lên S3 có 'quyền đọc công khai'. Điều này có nghĩa là tệp đã tải lên sẽ có sẵn để tải xuống qua một liên kết. Vui lòng xem ví dụ mã sau.

 
 

Trước khi chạy đoạn mã trên, hãy đảm bảo tạo tệp 'lullaby. txt’ trước để tránh các lỗi có thể xảy ra. Chúng tôi đã tạo tệp 'bài hát ru. txt’ với nội dung sau [bạn có thể tạo tệp này với nội dung tùy ý]

 
Lullaby, and good night, in the skies stars are bright. 
May the moon's silvery beams bring you sweet dreams. 
Close your eyes now and rest, may these hours be blessed. 
'Til the sky's bright with dawn, when you wake with a yawn. 

Lullaby, and good night, you are mother's delight. 
I'll protect you from harm, and you'll wake in my arms. 

Sleepyhead, close your eyes, for I'm right beside you. 
Guardian angels are near, so sleep without fear. 
Lullaby, and good night, with roses bedight. 
Lilies o'er head, lay thee down in thy bed. 

Lullaby, and good night, you are mother's delight. 
I'll protect you from harm, and you'll wake in my arms. 

Lullaby, and sleep tight, my darling sleeping. 
On sheets white as cream, with a head full of dreams. 
Sleepyhead, close your eyes, I'm right beside you. 
Lay thee down now and rest, may your slumber be blessed. 

Go to sleep, little one, think of puppies and kittens. 
Go to sleep, little one, think of butterflies in spring. 
Go to sleep, little one, think of sunny bright mornings. 
Hush, darling one, sleep through the night, 
Sleep through the night, 
Sleep through the night. 

Listen to this lullaby! 

Mã php khá dễ hiểu. Một điều đáng chú ý là chúng tôi cung cấp ‘Tài nguyên tệp’ cho đối tượng S3 để tải tệp này lên S3. Tài nguyên này có 'chế độ tệp' được đặt thành 'rb', yêu cầu PHP 'mở tệp để đọc ở chế độ nhị phân'. Đây là chế độ ưu tiên để tải tệp lên S3 [trừ khi bạn biết mình đang làm gì]

Sau khi tải lên thành công, một Đối tượng AWS được trả về bao gồm 'Dữ liệu siêu dữ liệu', 'Trạng thái tải lên' cùng với 'URL đối tượng'. Trong ví dụ này, chúng tôi đã in tất cả thông tin được trả về sau khi tải lên thành công

[Đang tải tệp 'với quyền truy cập đọc riêng tư' lên Bộ chứa]
Trong ví dụ này, chúng tôi tải tệp văn bản cơ bản lên S3 với 'quyền truy cập riêng tư'. Điều này có nghĩa là tệp đã tải lên sẽ có sẵn để tải xuống thông qua 'liên kết được mã hóa' [sau này chúng ta sẽ xem cách tạo liên kết được mã hóa cho các tệp riêng tư]. Vui lòng xem ví dụ mã sau.

 
 

Thay đổi duy nhất trong đoạn mã trên so với mẫu mã trước đó là 'tên tệp' thực tế cùng với 'ACL' được áp dụng, hiện được đặt thành 'riêng tư'. ACL là viết tắt của 'Danh sách kiểm soát truy cập'. Trong ví dụ này, chúng tôi đang yêu cầu S3 tạo một tệp riêng tư trong Bộ chứa S3 của chúng tôi

Đối tượng được trả về giống với 'Đối tượng kết quả' với 'thuộc tính tương tự' như trong ví dụ mã trước. Bạn có thể kiểm tra các tệp đã tải lên này trong Bảng điều khiển AWS S3 của mình

[Liệt kê tất cả các tệp trong Bộ chứa AWS]
Trong ví dụ này, chúng tôi tìm nạp thông tin của tất cả các tệp tồn tại trong Bộ chứa S3 của chúng tôi. Chúng tôi cũng tạo các liên kết tải xuống cho các tệp này. Vui lòng xem ví dụ mã sau.

 
 

Đoạn mã trên, chỉ cần tìm nạp các thuộc tính của tất cả các tệp trong Bộ chứa S3 của chúng tôi. Sau đó, chúng tôi lặp lại 'Trình tạo' được trả về và in ra thông tin cho mọi tệp. Đối tượng được trả về này bao gồm 'Dữ liệu siêu dữ liệu' trong số các thông tin khác về các tệp trong Bộ chứa của chúng tôi. SDK S3 cung cấp một phương thức để tạo liên kết tải xuống cho những tệp này có tên là 'getObjectUrl' mà chúng tôi đang sử dụng để tạo liên kết tải xuống của mình

Xin lưu ý rằng các liên kết này sẽ hoạt động hoàn hảo đối với Tệp công khai, nhưng đối với Tệp riêng tư, các URL này khi được truy cập sẽ hiển thị lỗi 'Truy cập bị từ chối' XML. Điều này là do, Tệp riêng tư yêu cầu URL phải được mã hóa trước. Chúng tôi xem cách mã hóa các URL của chúng tôi trong ví dụ tiếp theo

[Tạo liên kết tải xuống cho ‘Tệp riêng tư’]
Chúng tôi đã tạo cả Tệp công khai cũng như Tệp riêng tư trong Bộ chứa S3 của mình. Tạo Liên kết Tải xuống cho Tệp Công khai của chúng tôi rất đơn giản. Nhưng đây không phải là trường hợp tương tự đối với các tệp riêng tư. Tất nhiên, chúng tôi không muốn các tệp riêng tư của mình có thể tải xuống mà chúng tôi không biết, vì vậy đây là một tính năng rất quan trọng. Trong ví dụ này, chúng tôi sửa đổi mã ở trên bằng cách liệt kê tất cả thông tin của các tệp từ Bộ chứa S3 của chúng tôi, với phần bổ sung để tạo 'URL được mã hóa' cho 'Tệp riêng tư'. Vui lòng xem đoạn mã sau.

 
 

Trong ví dụ mã trên, chúng tôi chỉ cần yêu cầu tất cả các tệp trong Bộ chứa S3 của chúng tôi. Chúng tôi được cung cấp một Trình tạo mà chúng tôi khởi tạo cho biến có tên '$ files'. Sử dụng Trình tạo này, sau đó chúng tôi lặp lại các thuộc tính tệp được trả về. Trong khi lặp lại, trước tiên chúng tôi tìm ra ACL [Danh sách kiểm soát truy cập] của các tệp này. Sử dụng danh sách truy cập này, chúng tôi kiểm tra xem danh sách này có bao gồm quyền truy cập 'ĐỌC' vào 'Tất cả người dùng' hay không. Nếu tìm thấy quyền truy cập như vậy, tệp là 'công khai' nếu không thì đó là 'tệp riêng tư'. Khi chúng tôi biết rằng tệp là riêng tư, chúng tôi tạo một 'URL được mã hóa' bằng cách sử dụng phương thức SDK có tên 'createPresignedRequest'. Chúng tôi đang đặt thời hạn sử dụng của url được mã hóa này thành '2 phút'. Điều này có nghĩa là, bằng cách sử dụng URL được mã hóa mới tạo này, tệp có thể được tải xuống nhưng yêu cầu cần được thực hiện trong vòng 2 phút. Nếu URL được mã hóa này được truy cập sau 2 phút, nó sẽ chỉ đưa ra lỗi 'Truy cập bị từ chối' XML vì mã thông báo không còn hợp lệ

[Tải xuống tệp từ Bộ chứa S3 bằng SDK S3]
Thay vì tải xuống tệp từ S3 qua liên kết, cũng có tùy chọn tải tệp trực tiếp xuống hệ thống tệp bằng SDK AWS . Đây là một tính năng hữu ích khi bạn không muốn cung cấp URL bộ chứa S3 cho người dùng của mình, vì vậy trước tiên bạn chỉ cần tải tệp xuống máy chủ rồi sau đó cung cấp tệp đó để người dùng của bạn tải xuống từ hệ thống tệp của máy chủ.

Vì vậy, để tải trực tiếp các tệp từ Bộ chứa S3 xuống Hệ thống tệp của bạn, bạn có thể sử dụng phương thức AWS SDK có tên là 'getObject'. Xin lưu ý rằng bạn cần có quyền truy cập 'ĐỌC' vào tệp trước khi sử dụng phương pháp này. Nếu bạn đã tải tệp lên ngay từ đầu, thì bạn đã có 'Toàn quyền' để truy cập tệp này. Hoạt động của phương pháp này được thể hiện dưới đây

 
 

Ví dụ mã trên, chỉ cần sử dụng phương thức 'getObject' với các tham số được đặt thành 'Tên bộ chứa', 'Đường dẫn tệp thực' trên Bộ chứa S3' và 'Đường dẫn hệ thống tệp cục bộ' mà tệp sẽ được lưu vào đó. Khi tải xuống thành công, 'Đối tượng Aws\Result' cũng được trả về có chứa thông tin tệp đã tải xuống

AWS PHP SDK là gì?

SDK AWS dành cho PHP cho phép các nhà phát triển PHP sử dụng Amazon Web Services từ mã PHP của họ , đồng thời xây dựng các ứng dụng và phần mềm mạnh mẽ bằng cách sử dụng các dịch vụ như .

Làm cách nào để cài đặt AWS SDK trong PHP?

Cài đặt bằng Composer .
Mở một cửa sổ đầu cuối và điều hướng đến thư mục lưu trữ dự án của bạn. .
Tạo một tệp ở cấp gốc của dự án của bạn có tên là nhà soạn nhạc. json và thêm phần phụ thuộc sau cho AWS PHP SDK. .
Cài đặt các phụ thuộc bằng cách chạy lệnh cài đặt của Composer

Tôi có thể sử dụng PHP trong AWS không?

Bắt đầu nhanh chóng sử dụng AWS với AWS SDK dành cho PHP . SDK là một thư viện PHP mã nguồn mở, hiện đại giúp dễ dàng tích hợp ứng dụng PHP của bạn với các dịch vụ AWS như Amazon S3, Amazon Glacier và Amazon DynamoDB.

Làm cách nào để sử dụng SDK trong PHP?

Để tải xuống SDK PHP, hãy thực hiện các bước sau. .
Tải xuống SDK PHP
Tạo thư mục phụ thuộc trong thư mục dự án của bạn và di chuyển tệp đã tải xuống. .
Tải xuống lớp MabeEnum
Tạo một thư mục có tên thư mục marc-mabe bên trong các phần phụ thuộc và di chuyển thư mục php-enum sang marc-mabe

Chủ Đề