Hướng dẫn aws php sdk credentials - aws php thông tin đăng nhập sdk

Để biết thông tin tham khảo về các cơ chế thông tin đăng nhập có sẵn cho AWS SDK, hãy xem Thông tin đăng nhập và truy cập trong Hướng dẫn tham khảo AWS SDK và Công cụ.

Để thực hiện các yêu cầu cho Amazon Web Services, cung cấp các khóa truy cập AWS, còn được gọi là thông tin đăng nhập, cho AWS SDK cho PHP.

Bạn có thể làm điều này theo những cách sau:

  • Sử dụng chuỗi nhà cung cấp thông tin xác thực mặc định (được đề xuất).

  • Sử dụng một nhà cung cấp thông tin cụ thể hoặc chuỗi nhà cung cấp (hoặc tạo riêng của bạn).

  • Tự cung cấp thông tin đăng nhập. Đây có thể là thông tin đăng nhập tài khoản gốc, thông tin xác thực IAM hoặc thông tin đăng nhập tạm thời được lấy từ AWS STS.

Để bảo mật, chúng tôi thực sự khuyên bạn nên không sử dụng tài khoản gốc để truy cập AWS. Luôn luôn tham khảo các thực tiễn tốt nhất bảo mật trong IAM trong Hướng dẫn sử dụng IAM để biết các khuyến nghị bảo mật mới nhất.not use the root account for AWS access. Always refer to the Security best practices in IAM in the IAM User Guide for the latest security recommendations.

Sử dụng chuỗi nhà cung cấp thông tin xác thực mặc định

Khi bạn khởi tạo một ứng dụng khách dịch vụ mới mà không cung cấp bất kỳ đối số thông tin xác thực nào, SDK sử dụng chuỗi nhà cung cấp thông tin xác thực mặc định để tìm thông tin đăng nhập AWS. SDK sử dụng nhà cung cấp đầu tiên trong chuỗi trả về thông tin đăng nhập mà không có lỗi.

Chuỗi nhà cung cấp mặc định tìm kiếm và sử dụng thông tin đăng nhập như sau, theo thứ tự này:

  1. Sử dụng thông tin xác thực từ các biến môi trường.

    Đặt các biến môi trường là hữu ích nếu bạn đang thực hiện công việc phát triển trên một máy không phải là phiên bản Amazon EC2.

  2. Sử dụng tệp và hồ sơ thông tin xác thực được chia sẻ AWS.

    Tệp thông tin đăng nhập này là cùng một tệp được sử dụng bởi các SDK khác và AWS CLI. Nếu bạn đã sử dụng tệp thông tin đăng nhập được chia sẻ, bạn có thể sử dụng tệp đó cho mục đích này.

    Chúng tôi sử dụng phương pháp này trong hầu hết các ví dụ mã PHP của chúng tôi.

  3. Giả sử vai trò IAM.

    Vai trò IAM cung cấp các ứng dụng trên ví dụ với thông tin bảo mật tạm thời để thực hiện các cuộc gọi AWS. Ví dụ, vai trò IAM cung cấp một cách dễ dàng để phân phối và quản lý thông tin đăng nhập trên nhiều trường hợp Amazon EC2.

Những cách khác để thêm thông tin đăng nhập

Bạn cũng có thể thêm thông tin đăng nhập theo những cách này:

  • Sử dụng một nhà cung cấp thông tin xác thực.

    Cung cấp logic tùy chỉnh cho thông tin đăng nhập khi xây dựng máy khách.

  • Sử dụng thông tin tạm thời từ AWS STS.

    Khi sử dụng mã thông báo xác thực đa yếu tố (MFA) để xác thực hai yếu tố, hãy sử dụng AWS STS để cung cấp thông tin tạm thời của người dùng để truy cập Dịch vụ AWS hoặc sử dụng AWS SDK cho PHP.

  • Sử dụng thông tin đăng nhập được mã hóa cứng (không được khuyến nghị).

Mã hóa cứng thông tin đăng nhập của bạn có thể nguy hiểm, bởi vì nó dễ dàng vô tình đưa thông tin đăng nhập của bạn vào kho lưu trữ SCM. Điều này có thể có khả năng phơi bày thông tin đăng nhập của bạn với nhiều người hơn bạn dự định. Nó cũng có thể gây khó khăn cho việc xoay vòng thông tin trong tương lai. Không gửi mã với thông tin đăng nhập được mã hóa cứng cho kiểm soát nguồn của bạn.

  • Tạo khách hàng ẩn danh.

    Tạo một máy khách không liên quan đến bất kỳ thông tin đăng nhập nào khi dịch vụ cho phép truy cập ẩn danh.

Để xác thực các yêu cầu, các dịch vụ AWS yêu cầu bạn cung cấp các khóa truy cập AWS của bạn, còn được gọi là khóa truy cập AWS và khóa truy cập bí mật của bạn. Trong AWS SDK cho PHP, các khóa truy cập này thường được gọi chung là thông tin đăng nhập của bạn. Hướng dẫn này trình bày cách cung cấp thông tin đăng nhập của bạn cho AWS SDK cho SDK bằng một trong các phương pháp sau:access key ID and secret access key. In the AWS SDK for PHP, these access keys are often referred to collectively as your credentials. This guide demonstrates how to provide your credentials to the AWS SDK for SDK using one of the following methods:

  1. Sử dụng thông tin đăng nhập từ các biến môi trường
  2. Sử dụng vai trò IAM cho các trường hợp Amazon EC2
  3. Sử dụng vai trò IAM cho các tác vụ dịch vụ container của Amazon EC2
  4. Sử dụng tệp thông tin xác thực AWS và hồ sơ thông tin đăng nhập
  5. Sử dụng thông tin mã hóa cứng
  6. Sử dụng nhà cung cấp thông tin xác thực
  7. Sử dụng thông tin đăng nhập tạm thời từ AWS STS
  8. Sử dụng thông tin đăng nhập vai trò

Nói chung, bạn nên sử dụng vai trò IAM khi chạy ứng dụng của mình trên Amazon EC2 và sử dụng các cấu hình thông tin xác thực hoặc các biến môi trường ở nơi khác. Bất kể bạn cung cấp thông tin đăng nhập cho SDK như thế nào, bạn được khuyến khích theo dõi các thực tiễn tốt nhất của IAM khi quản lý thông tin đăng nhập của bạn.

Sử dụng thông tin đăng nhập từ các biến môi trường

Nếu bạn không cung cấp thông tin đăng nhập cho đối tượng máy khách tại thời điểm khởi tạo, SDK sẽ cố gắng tìm thông tin đăng nhập trong môi trường của bạn. Vị trí đầu tiên SDK sẽ kiểm tra thông tin đăng nhập là trong các biến môi trường của bạn. SDK sẽ sử dụng hàm

php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
0 để tìm kiếm các biến môi trường
php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
1,
php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
2 và
php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
3. Các thông tin này được gọi là thông tin về môi trường.environment credentials.

Sử dụng vai trò IAM cho các trường hợp Amazon EC2

Sử dụng vai trò IAM là kỹ thuật ưa thích để cung cấp thông tin đăng nhập cho các ứng dụng chạy trên Amazon EC2. Vai trò IAM loại bỏ sự cần thiết phải lo lắng về quản lý thông tin từ ứng dụng của bạn. Họ cho phép một thể hiện "đảm nhận" một vai trò bằng cách truy xuất các thông tin tạm thời từ máy chủ siêu dữ liệu của phiên bản EC2. Các thông tin tạm thời này, thường được gọi là thông tin xác thực hồ sơ thể hiện, cho phép truy cập vào các hành động và tài nguyên mà chính sách của vai trò cho phép.instance profile credentials, allow access to the actions and resources that the role's policy allows.

Khi khởi chạy một thể hiện EC2, bạn có thể chọn liên kết nó với vai trò IAM. Bất kỳ ứng dụng nào chạy trên thể hiện EC2 đó sau đó được phép đảm nhận vai trò liên quan. Amazon EC2 xử lý tất cả các công việc của các trường hợp xác thực an toàn cho dịch vụ IAM để đảm nhận vai trò và định kỳ làm mới thông tin về vai trò được truy xuất, giữ cho ứng dụng của bạn an toàn mà hầu như không có công việc nào.

Nếu bạn không cung cấp thông tin đăng nhập một cách rõ ràng cho đối tượng máy khách và không có thông tin xác thực biến môi trường, SDK sẽ cố gắng truy xuất thông tin xác thực hồ sơ thể hiện từ dịch vụ siêu dữ liệu phiên bản Amazon EC2. Các thông tin này chỉ có sẵn khi chạy trên các trường hợp Amazon EC2 đã được cấu hình với vai trò IAM.

Ghi chú

Thông tin xác thực hồ sơ thể hiện và thông tin tạm thời khác được tạo bởi Dịch vụ mã thông báo AWS Security (AWS STS) không được mọi dịch vụ hỗ trợ. Vui lòng kiểm tra xem dịch vụ bạn đang sử dụng hỗ trợ thông tin tạm thời bằng cách đọc các dịch vụ AWS hỗ trợ AWS STS.

Để tránh truy cập dịch vụ siêu dữ liệu mỗi lần, một ví dụ là

php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
4 có thể được truyền dưới dạng tùy chọn
php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
5 cho hàm tạo máy khách. Điều này cho phép SDK sử dụng thông tin xác thực hồ sơ thể hiện bộ nhớ cache thay thế. Để biết thêm thông tin, xem tùy chọn
php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
5.

Để biết thêm thông tin, hãy xem vai trò IAM cho Amazon EC2.

Sử dụng vai trò IAM cho các nhiệm vụ dịch vụ container Amazon EC2

Với vai trò IAM cho các tác vụ của Amazon ECS, bạn có thể chỉ định vai trò IAM có thể được sử dụng bởi các container trong một nhiệm vụ. Điều này cung cấp một chiến lược để quản lý thông tin đăng nhập cho các ứng dụng của bạn sử dụng, tương tự như cách mà hồ sơ thể hiện của Amazon EC2 cung cấp thông tin đăng nhập cho các phiên bản EC2.

Thay vì tạo và phân phối thông tin đăng nhập AWS của bạn cho các thùng chứa hoặc sử dụng vai trò phiên bản EC2, bạn có thể liên kết vai trò IAM với định nghĩa tác vụ ECS hoặc hoạt động API

php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
7.

Ghi chú

Thông tin xác thực hồ sơ thể hiện và thông tin tạm thời khác được tạo bởi Dịch vụ mã thông báo AWS Security (AWS STS) không được mọi dịch vụ hỗ trợ. Vui lòng kiểm tra xem dịch vụ bạn đang sử dụng hỗ trợ thông tin tạm thời bằng cách đọc các dịch vụ AWS hỗ trợ AWS STS.

Để tránh truy cập dịch vụ siêu dữ liệu mỗi lần, một ví dụ là

php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
4 có thể được truyền dưới dạng tùy chọn
php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
5 cho hàm tạo máy khách. Điều này cho phép SDK sử dụng thông tin xác thực hồ sơ thể hiện bộ nhớ cache thay thế. Để biết thêm thông tin, xem tùy chọn
php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
5.

Để biết thêm thông tin, hãy xem vai trò IAM cho Amazon EC2.

Sử dụng vai trò IAM cho các nhiệm vụ dịch vụ container Amazon EC2

Với vai trò IAM cho các tác vụ của Amazon ECS, bạn có thể chỉ định vai trò IAM có thể được sử dụng bởi các container trong một nhiệm vụ. Điều này cung cấp một chiến lược để quản lý thông tin đăng nhập cho các ứng dụng của bạn sử dụng, tương tự như cách mà hồ sơ thể hiện của Amazon EC2 cung cấp thông tin đăng nhập cho các phiên bản EC2.

$assumeRoleCredentials = new AssumeRoleCredentialProvider([
    'client' => new StsClient([
        'region' => 'us-west-2',
        'version' => '2011-06-15'
    ]),
    'assume_role_params' => [
        'RoleArn' => '', // REQUIRED
        'RoleSessionName' => '', // REQUIRED
        ...
    ]
]);

Thay vì tạo và phân phối thông tin đăng nhập AWS của bạn cho các thùng chứa hoặc sử dụng vai trò phiên bản EC2, bạn có thể liên kết vai trò IAM với định nghĩa tác vụ ECS hoặc hoạt động API 'project1', 'region' => 'us-west-2', 'version' => 'latest' ]); 7.

Bắt đầu với AWS SDK cho Php phiên bản 2.6.2, bạn có thể sử dụng tệp thông tin đăng nhập AWS để chỉ định thông tin đăng nhập của mình. Đây là một tệp đặc biệt, được định dạng trong thư mục nhà của bạn và là một cách tốt để quản lý thông tin đăng nhập cho môi trường phát triển của bạn. Tệp phải được đặt tại

$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
3, trong đó
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
4 đại diện cho thư mục nhà của bạn.

Sử dụng tệp thông tin đăng nhập AWS cung cấp một vài lợi ích:

  1. Thông tin đăng nhập của các dự án của bạn được lưu trữ bên ngoài các dự án của bạn, vì vậy không có cơ hội vô tình đưa chúng vào kiểm soát phiên bản.
  2. Bạn có thể xác định và đặt tên cho nhiều bộ thông tin đăng nhập ở một nơi.
  3. Bạn có thể dễ dàng sử dụng lại thông tin tương tự giữa các dự án.
  4. Các hỗ trợ AWS SDKS và Công cụ AWS khác, hoặc sẽ sớm hỗ trợ, cùng tệp thông tin đăng nhập này. Điều này cho phép bạn sử dụng lại thông tin đăng nhập của bạn với các công cụ khác.

Định dạng của tệp thông tin xác thực AWS sẽ trông giống như sau:

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY

Mỗi phần (ví dụ:

$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
5,
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
6), đại diện cho một cấu hình thông tin xác thực riêng biệt. Hồ sơ có thể được tham chiếu từ tệp cấu hình SDK hoặc khi bạn khởi tạo máy khách, sử dụng tùy chọn
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
7:profile. Profiles can be referenced from a SDK configuration file, or when you are instantiating a client, using the
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
7 option:

php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);

Nếu không có thông tin xác thực hoặc hồ sơ được cung cấp rõ ràng cho SDK và không có thông tin đăng nhập nào được xác định trong các biến môi trường, nhưng tệp thông tin đăng nhập được xác định, SDK sẽ sử dụng cấu hình "mặc định". Bạn có thể thay đổi cấu hình mặc định bằng cách chỉ định tên cấu hình thay thế trong biến môi trường

$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
8.

Sử dụng thông tin đăng nhập mã hóa cứng

Bạn có thể cung cấp thông tin đăng nhập được mã hóa cứng cho máy khách SDK bằng cách cung cấp "khóa", "bí mật" và các cặp giá trị khóa "mã thông báo" tùy chọn cho tùy chọn "thông tin xác thực" của hàm tạo máy khách.

$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);

Cảnh báo

Mã hóa cứng thông tin của bạn có thể nguy hiểm, bởi vì thật dễ dàng để vô tình đưa thông tin đăng nhập của bạn vào kho lưu trữ SCM, có khả năng đưa thông tin đăng nhập của bạn cho nhiều người hơn dự định. Nó cũng có thể gây khó khăn cho việc xoay vòng thông tin trong tương lai.

Sử dụng một nhà cung cấp thông tin xác thực

Nhà cung cấp thông tin xác thực là một hàm trả về một

$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
9 được hoàn thành với một ví dụ
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
0 hoặc bị từ chối với
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
1. Bạn có thể sử dụng nhà cung cấp thông tin đăng nhập để thực hiện logic tùy chỉnh của riêng bạn để tạo thông tin đăng nhập hoặc để tối ưu hóa tải thông tin đăng nhập.

Các nhà cung cấp chứng thực được chuyển vào tùy chọn Trình xây dựng máy khách

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
2. Các nhà cung cấp chứng chỉ không đồng bộ, buộc họ phải được đánh giá một cách lười biếng mỗi khi hoạt động API được gọi. Do đó, việc chuyển chức năng nhà cung cấp thông tin xác thực cho hàm tạo máy khách SDK sẽ không xác nhận ngay thông tin đăng nhập. Nếu nhà cung cấp thông tin xác thực không trả về đối tượng thông tin đăng nhập, hoạt động API sẽ bị từ chối với
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
1.

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);

Các tàu SDK với một số nhà cung cấp tích hợp có thể được kết hợp với nhau cùng với bất kỳ nhà cung cấp tùy chỉnh nào.

Quan trọng

Các nhà cung cấp thông tin được gọi mỗi khi hoạt động API được thực hiện. Nếu tải thông tin đăng nhập là một nhiệm vụ tốn kém (ví dụ: tải từ đĩa hoặc tài nguyên mạng) hoặc nếu thông tin đăng nhập không được nhà cung cấp của bạn lưu trữ, thì bạn nên xem xét gói nhà cung cấp thông tin của mình trong hàm

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
4. Nhà cung cấp thông tin xác thực mặc định được SDK sử dụng được tự động ghi nhớ.

Nhà cung cấp env

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
5 cố gắng tải thông tin xác thực từ các biến môi trường.

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);

Nhà cung cấp Ini

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
6 cố gắng tải thông tin đăng nhập từ tệp thông tin xác thực INI. SDK theo mặc định sẽ cố gắng tải cấu hình "mặc định" từ một tệp nằm ở
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
3.ini credential file. The SDK will by default attempt to load the "default" profile from a file located at
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
3.

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ini();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation.
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);

Bạn có thể sử dụng một cấu hình tùy chỉnh hoặc vị trí tệp INI bằng cách cung cấp các đối số cho chức năng tạo nhà cung cấp.

$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);

Nhà cung cấp ví dụ

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
8 Cố gắng tải thông tin đăng nhập từ hồ sơ thể hiện của Amazon EC2.

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);

Ghi chú

Nỗ lực này để tải từ các cấu hình thể hiện của Amazon EC2 có thể bị vô hiệu hóa bằng cách đặt biến môi trường

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
9 thành
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
0.

Nhà cung cấp ECSCredentials

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
1 cố gắng tải thông tin xác thực theo yêu cầu
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
2, có URI được chỉ định bởi biến môi trường
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
3 trong container.

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ecsCredentials();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);

Nhà cung cấp DefaultProvider

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
4 là nhà cung cấp thông tin xác thực mặc định. Nhà cung cấp này được sử dụng nếu bạn bỏ qua tùy chọn
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
2 khi tạo máy khách. Trước tiên, nó cố gắng tải thông tin đăng nhập từ các biến môi trường, sau đó từ một tệp INI (tệp
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
6 đầu tiên, tiếp theo là tệp
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
7), sau đó từ một cấu hình thể hiện (
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
8 trước tiên, theo sau là siêu dữ liệu
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
9).

Ghi chú

Nỗ lực này để tải từ các cấu hình thể hiện của Amazon EC2 có thể bị vô hiệu hóa bằng cách đặt biến môi trường

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
9 thành
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
0.

Nhà cung cấp ECSCredentials

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
1 cố gắng tải thông tin xác thực theo yêu cầu
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
2, có URI được chỉ định bởi biến môi trường
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
3 trong container.

Để tránh thông tin đăng nhập STS không cần thiết trên mỗi hoạt động API, bạn có thể sử dụng chức năng ____62 xử lý tự động làm mới thông tin đăng nhập khi chúng hết hạn.

Xem chi tiết với mã ví dụ sau.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
0

Tạo một nhà cung cấp tùy chỉnh

Các nhà cung cấp thông tin xác thực chỉ đơn giản là các chức năng mà khi được gọi trở lại một lời hứa (

$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
9) được thực hiện với một đối tượng
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
0 hoặc bị từ chối với
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client.
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
1.

Một thông lệ tốt nhất để tạo nhà cung cấp là tạo ra một chức năng được gọi để tạo nhà cung cấp thông tin thực tế. Ví dụ, đây là nguồn của nhà cung cấp

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ini();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation.
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
6 (ví dụ như được sửa đổi một chút). Lưu ý rằng đó là một chức năng trả về chức năng nhà cung cấp thực tế. Điều này cho phép bạn dễ dàng soạn thảo các nhà cung cấp thông tin xác thực và vượt qua chúng dưới dạng giá trị.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
1

Ghi nhớ thông tin đăng nhập

Đôi khi cần phải tạo một nhà cung cấp thông tin ghi nhớ giá trị trả lại trước đó. Điều này có thể hữu ích cho hiệu suất khi tải thông tin đăng nhập là một hoạt động đắt tiền hoặc khi sử dụng lớp

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ini();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation.
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
7 để chia sẻ nhà cung cấp thông tin xác thực trên nhiều máy khách. Bạn có thể thêm ghi nhớ cho nhà cung cấp thông tin xác thực bằng cách gói chức năng nhà cung cấp thông tin xác thực trong hàm
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ini();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation.
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
2:

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
2

Khi thông tin ghi nhớ đã hết hạn, trình bao bọc ghi nhớ sẽ gọi nhà cung cấp được gói trong nỗ lực làm mới thông tin đăng nhập.

Chuỗi nhà cung cấp

Các nhà cung cấp chứng thực có thể được xích bằng hàm

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ini();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation.
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
9. Hàm này chấp nhận một số lượng đối số khác nhau, mỗi đối số là các chức năng của nhà cung cấp thông tin xác thực. Hàm này sau đó trả về một hàm mới là thành phần của các hàm được cung cấp sao cho chúng được gọi lần lượt cho đến khi một trong những nhà cung cấp trả lại một lời hứa được thực hiện thành công.

$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
0 sử dụng thành phần này để kiểm tra nhiều nhà cung cấp trước khi thất bại. Nguồn gốc của
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
0 cho thấy việc sử dụng hàm
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
2.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
3

Sử dụng thông tin đăng nhập tạm thời từ AWS STS¶

Dịch vụ mã thông báo AWS Security (AWS STS) cho phép bạn yêu cầu ưu tiên giới hạn, thông tin đăng nhập tạm thời cho người dùng AWS IAM hoặc cho người dùng mà bạn xác thực thông qua Liên đoàn Nhận dạng. Một trường hợp sử dụng phổ biến để sử dụng thông tin tạm thời là cấp các ứng dụng di động hoặc phía khách hàng truy cập vào tài nguyên AWS bằng cách xác thực người dùng thông qua các nhà cung cấp nhận dạng bên thứ ba (đọc thêm về Liên đoàn nhận dạng web).temporary credentials for AWS IAM users or for users that you authenticate via identity federation. One common use case for using temporary credentials is to grant mobile or client-side applications access to AWS resources by authenticating users through third-party identity providers (read more about Web Identity Federation).

Ghi chú

Thông tin tạm thời được tạo bởi AWS STS không được mọi dịch vụ hỗ trợ. Vui lòng kiểm tra xem dịch vụ bạn đang sử dụng hỗ trợ thông tin tạm thời bằng cách đọc các dịch vụ AWS hỗ trợ AWS STS.

Nhận thông tin tạm thời

AWS STS có một số hoạt động trả về thông tin tạm thời, nhưng hoạt động

$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
3 là đơn giản nhất cho mục đích trình diễn. Giả sử bạn có một thể hiện
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
4 được lưu trữ trong biến
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
5, đây là cách bạn gọi nó:

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
4

Kết quả cho các hoạt động AWS STS khác luôn chứa giá trị

$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
7. Nếu bạn in kết quả (ví dụ:
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
8), nó trông giống như sau:

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
5

Cung cấp thông tin tạm thời cho SDK¶

Bạn có thể sử dụng thông tin đăng nhập tạm thời với một máy khách AWS khác bằng cách khởi tạo máy khách và truyền trực tiếp các giá trị nhận được từ AWS STS.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
6

Bạn cũng có thể xây dựng một đối tượng

$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
9 và sử dụng nó khi khởi tạo máy khách.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
7

Tuy nhiên, cách tốt nhất để cung cấp thông tin tạm thời là sử dụng phương pháp trợ giúp

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);
0 đi kèm với
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => 'my-access-key-id',
        'secret' => 'my-secret-access-key',
    ],
]);
0. Phương pháp này trích xuất dữ liệu từ kết quả AWS STS và tạo đối tượng
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);
2 cho bạn.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
8

Để biết thêm thông tin về lý do tại sao bạn có thể cần sử dụng thông tin đăng nhập tạm thời trong ứng dụng hoặc dự án của mình, hãy xem các kịch bản để cấp quyền truy cập tạm thời trong tài liệu AWS STS.

Tạo khách hàng ẩn danh Bur

Trong một số trường hợp, bạn có thể muốn tạo một máy khách không liên quan đến bất kỳ thông tin đăng nhập nào. Điều này cho phép bạn thực hiện các yêu cầu ẩn danh cho một dịch vụ. Ví dụ, cả hai đối tượng S3 và miền CloudSearch có thể được cấu hình để cho phép truy cập ẩn danh.

Để tạo một máy khách ẩn danh, bạn có thể đặt tùy chọn

php

use Aws\DynamoDb\DynamoDbClient;

// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
    'profile' => 'project1',
    'region'  => 'us-west-2',
    'version' => 'latest'
]);
5 thành
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);
4.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
9