Aws serverless php

Serverless Framework cần quyền truy cập vào tài khoản nhà cung cấp đám mây của bạn để có thể thay mặt bạn tạo và quản lý tài nguyên

Hướng dẫn này dành cho nhà cung cấp Dịch vụ web Amazon [AWS], vì vậy chúng tôi sẽ hướng dẫn từng bước về quy trình thiết lập thông tin xác thực cho AWS và sử dụng chúng với Serverless

Đăng ký tài khoản AWS

Nếu bạn đã có tài khoản AWS, hãy chuyển sang bước tiếp theo để

Để tạo tài khoản AWS

  • Một phần của quy trình đăng ký liên quan đến việc nhận cuộc gọi điện thoại và nhập mã PIN bằng bàn phím điện thoại

Lưu ý ID tài khoản AWS của bạn, vì bạn sẽ cần nó cho tác vụ tiếp theo

Tất cả người dùng AWS đều có quyền truy cập Bậc miễn phí cho AWS Lambda. AWS Lambda là một phần của phiên bản không hết hạn. Khi ở Bậc miễn phí của AWS, bạn có thể xây dựng toàn bộ ứng dụng trên AWS Lambda, AWS API Gateway, v.v. mà không bị tính phí trong một năm hoặc lâu hơn, trong một số trường hợp, miễn là bạn không vượt quá tài nguyên trong Bậc miễn phí

Nếu bạn chưa quen với Amazon Web Services, hãy đảm bảo rằng bạn đã nạp thẻ tín dụng. Nếu bạn chưa thiết lập thẻ tín dụng, bạn có thể không triển khai được tài nguyên của mình và bạn có thể gặp phải lỗi này

AWS Access Key Id needs a subscription for the service

Tạo một người dùng IAM và khóa truy cập

Bây giờ bạn đã có tài khoản AWS, bạn cần định cấu hình thông tin đăng nhập AWS để serverless có thể triển khai lên AWS. Bạn có thể

  • hoặc sử dụng Serverless Dashboard để quản lý thông tin đăng nhập AWS,
  • hoặc tạo các khóa truy cập AWS và định cấu hình chúng trên máy của bạn

Sử dụng Serverless Dashboard để quản lý thông tin đăng nhập AWS

Serverless Dashboard cho phép bạn quản lý thông tin đăng nhập AWS với Serverless Framework

Làm thế nào nó hoạt động. Serverless Dashboard sử dụng Vai trò truy cập AWS để truy cập vào tài khoản AWS của bạn. Sau đó, nó tạo các khóa truy cập AWS tạm thời để xác thực serverless CLI trên mỗi lệnh

Serverless Framework tận dụng Dịch vụ mã thông báo bảo mật AWS và API AssumeRole để tự động tạo và sử dụng thông tin đăng nhập tạm thời [sẽ hết hạn sau một giờ]

Để bắt đầu với Serverless Dashboard, hãy chạy serverless trong một dự án hiện có hoặc làm theo tài liệu này

Tạo khóa truy cập AWS

Nếu không muốn sử dụng Serverless Dashboard, thì bạn cần định cấu hình CLI Serverless Framework để sử dụng các khóa truy cập AWS

Xem hướng dẫn bằng video về cách thiết lập thông tin xác thực

Làm theo các bước sau để tạo khóa truy cập AWS mới

  1. Đăng nhập vào tài khoản AWS của bạn và truy cập trang Quản lý truy cập và nhận dạng [IAM]

  2. Nhấp vào Người dùng và sau đó Thêm người dùng. Nhập tên vào trường đầu tiên để nhắc bạn rằng người dùng này có liên quan đến Serverless Framework, chẳng hạn như

    serverless config credentials \
      --provider aws \
      --key AKIAIOSFODNN7EXAMPLE \
      --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    
    1. Bật quyền truy cập có lập trình bằng cách nhấp vào hộp kiểm. Nhấp vào Tiếp theo để chuyển đến trang Quyền. Nhấp trực tiếp vào Đính kèm các chính sách hiện có. Tìm kiếm và chọn AdministratorAccess sau đó bấm Next. Xem xét lại. Kiểm tra để đảm bảo mọi thứ đều ổn và nhấp vào Tạo người dùng

  3. Xem và sao chép API Key & Secret vào một nơi tạm thời. Đây là các khóa truy cập AWS của bạn

Lưu ý rằng các bước trên cấp quyền truy cập quản trị Serverless Framework vào tài khoản của bạn. Mặc dù điều này làm cho mọi thứ trở nên đơn giản khi bắt đầu, chúng tôi khuyên bạn nên tạo và sử dụng các quyền chi tiết hơn sau khi bạn xác định phạm vi của các ứng dụng serverless của mình và đưa chúng vào sản xuất

Để giới hạn quyền truy cập của Serverless Framework vào tài khoản AWS của bạn, hãy làm theo các bước sau để tạo Người dùng IAM và đính kèm chính sách tệp JSON tùy chỉnh cho Người dùng IAM mới của bạn. Người dùng IAM này sẽ có bộ Khóa truy cập AWS của riêng mình

  1. Đăng nhập vào Tài khoản AWS của bạn và truy cập trang Quản lý truy cập và nhận dạng [IAM]

  2. Nhấp vào Người dùng và sau đó Thêm người dùng. Nhập tên vào trường đầu tiên để nhắc bạn Người dùng này có liên quan đến Dịch vụ mà bạn đang triển khai với Serverless Framework, chẳng hạn như

    serverless config credentials \
      --provider aws \
      --key AKIAIOSFODNN7EXAMPLE \
      --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    
    2. Bật quyền truy cập có lập trình bằng cách nhấp vào hộp kiểm. Nhấp vào Tiếp theo để chuyển đến trang Quyền. Nhấp vào Tạo chính sách. Chọn tab JSON và thêm tệp JSON. Bạn có thể sử dụng ý chính này như một hướng dẫn

Khi bạn hoàn tất, hãy chọn Xem lại chính sách. Bạn có thể gán cho chính sách này một Tên và Mô tả, sau đó chọn Tạo Chính sách. Kiểm tra để đảm bảo mọi thứ đều ổn và nhấp vào Tạo người dùng. Sau đó, bạn có thể tạo Người dùng IAM khác nhau cho các ứng dụng khác nhau và các giai đoạn khác nhau của các ứng dụng đó. Nghĩa là, nếu bạn không sử dụng các tài khoản AWS riêng biệt cho các giai đoạn/ứng dụng, điều phổ biến nhất

  1. Xem và sao chép API Key & Secret vào một nơi tạm thời. Đây là các khóa truy cập AWS của bạn

Sử dụng Khóa truy cập AWS

Bạn có thể định cấu hình Serverless Framework để sử dụng các khóa truy cập AWS của mình theo hai cách

Cài đặt nhanh

Là một thiết lập nhanh để bắt đầu, bạn có thể xuất chúng dưới dạng các biến môi trường để Serverless và AWS SDK trong trình bao của bạn có thể truy cập chúng

Xin lưu ý. Nếu bạn đang sử dụng chứng chỉ tự ký, bạn sẽ cần thực hiện một trong những thao tác sau

Sử dụng Hồ sơ AWS

Để có giải pháp lâu dài hơn, bạn cũng có thể thiết lập thông tin xác thực thông qua hồ sơ AWS. Dưới đây là các phương pháp khác nhau mà bạn có thể sử dụng để làm như vậy

Thiết lập bằng lệnh
serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
3

Serverless cung cấp một cách thuận tiện để định cấu hình cấu hình AWS với sự trợ giúp của lệnh

serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
3

Đây là một ví dụ về cách bạn có thể định cấu hình cấu hình AWS

serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
5

serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Hãy xem tài liệu tham khảo CLI của

serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
6 để biết thêm thông tin về cấu hình thông tin xác thực

Thiết lập với
serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
7

Để thiết lập chúng thông qua

serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
7, hãy cài đặt nó trước, sau đó chạy
serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
9 để định cấu hình aws-cli và thông tin đăng nhập

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER

Thông tin xác thực được lưu trữ ở định dạng INI trong

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
0, bạn có thể chỉnh sửa trực tiếp nếu cần. Bạn có thể thay đổi đường dẫn đến tệp thông tin xác thực thông qua biến môi trường AWS_SHARED_CREDENTIALS_FILE. Đọc thêm về tập tin đó trong

Bạn thậm chí có thể thiết lập các cấu hình khác nhau cho các tài khoản khác nhau, Serverless cũng có thể sử dụng cấu hình này. Để chỉ định cấu hình mặc định sẽ sử dụng, bạn có thể thêm cài đặt

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
1 vào cấu hình
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
2 của mình trong
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
3

service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
Sử dụng Hồ sơ AWS hiện có

Để dễ dàng chuyển đổi giữa các dự án mà không cần thực hiện

serverless config credentials \
  --provider aws \
  --key AKIAIOSFODNN7EXAMPLE \
  --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
9 mỗi khi bạn có thể sử dụng các biến môi trường. Ví dụ: bạn xác định các cấu hình khác nhau trong
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
0

[profileName1]
aws_access_key_id=***************
aws_secret_access_key=***************

[profileName2]
aws_access_key_id=***************
aws_secret_access_key=***************

Bây giờ bạn có thể chuyển đổi trên mỗi dự án [/ API] bằng cách thực hiện một lần khi bạn bắt đầu dự án của mình

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
6

trong nhà ga. Bây giờ mọi thứ đã được thiết lập để thực thi tất cả các tùy chọn CLI của serverless như

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
8

Sử dụng tùy chọn
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
9

Bạn luôn có thể chỉ định cấu hình sẽ được sử dụng thông qua tùy chọn

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
9 như thế này

serverless deploy --aws-profile devProfile
Sử dụng mã thông báo nhận dạng web

Để sử dụng xác thực mã thông báo nhận dạng web, môi trường

service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
1 và
service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
2 cần được đặt. Nó được đặt tự động nếu bạn chỉ định tài khoản dịch vụ trong AWS EKS

Mỗi hồ sơ giai đoạn

Là trường hợp sử dụng nâng cao, bạn có thể triển khai các giai đoạn khác nhau cho các tài khoản khác nhau bằng cách sử dụng các cấu hình khác nhau cho mỗi giai đoạn. Để sử dụng các cấu hình khác nhau cho mỗi giai đoạn, bạn phải tận dụng các biến và cài đặt cấu hình nhà cung cấp

Đoạn mã

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
3 ví dụ này sẽ tải cấu hình tùy thuộc vào giai đoạn được chỉ định trong tùy chọn dòng lệnh [hoặc mặc định là 'dev' nếu không được chỉ định];

service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  profile: ${self:custom.profiles.${sls:stage}}
custom:
  profiles:
    dev: devProfile
    prod: prodProfile

Hồ sơ tại chỗ với lệnh 'gọi cục bộ'

hãy nhận biết. Do cách AWS IAM và môi trường cục bộ hoạt động, nếu bạn gọi cục bộ các hàm lambda của mình bằng cách sử dụng lệnh CLI

service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
4 thì vai trò/hồ sơ IAM có thể [và có thể là] khác với vai trò/hồ sơ được thiết lập trong tệp cấu hình
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
3. Do đó, rất có thể, một nhóm quyền khác sẽ được áp dụng, thay đổi sự tương tác giữa các hàm lambda của bạn và các tài nguyên AWS khác

Vui lòng tham khảo tài liệu lệnh CLI để biết thêm chi tiết

Đảm nhận vai trò khi triển khai

Có thể sử dụng thông tin đăng nhập AWS cục bộ để đảm nhận một vai trò AWS khác

Điều đó cho phép triển khai [và tất cả các lệnh CLI khác] được thực hiện dưới một vai trò khác. Để đạt được điều này, hãy làm theo tài liệu này từ AWS

Lưu ý rằng

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
3 cũng cung cấp tùy chọn
service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
8. Điều này cho phép chúng tôi buộc CloudFormation sử dụng một vai trò khác khi triển khai

provider:
  iam:
    deploymentRole: arn:aws:iam::123456789012:role/deploy-role

Điều quan trọng là phải hiểu rằng

service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
9 chỉ ảnh hưởng đến vai trò mà CloudFormation sẽ đảm nhận. Tất cả các tương tác khác từ serverless CLI với AWS sẽ không sử dụng
service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
9 đó

Đây là lý do tại sao chúng tôi thường khuyên bạn nên sử dụng phương pháp "đảm nhận vai trò" được mô tả ở trên thay vì

service: new-service
provider:
  name: aws
  runtime: nodejs14.x
  stage: dev
  profile: devProfile
9

Chủ Đề