CloudFormation là ngôn ngữ cho phép bạn khởi tạo tài nguyên trên môi trường Cloud. Mã code là các file định dạng YAML hoặc JSON.

Trong bài viết này chúng tôi hướng dẫn các bạn việc tạo máy chủ EC2 bằng Cloud Formation và giải thích các khái niệm liên quan để bạn có thể hiểu rõ hơn về cách thức hoạt động của Cloud Formation.

Chúng ta cùng nhau đi vào phân tích 1 ví dụ cụ thể để hiểu được các khái niệm liên quan đến Cloud Formation.

Khai báo EC2 Instance

  • Type: ánh xạ với loại tài nguyên đang cần tạo
  • Properties: là đặc tính của tài nguyên đó

Tài nguyên EC2 Instance này trình bày một vài cách sử dụng Ref. Ref là một cách để gọi đến các giá trị từ các phần khác của mẫu. Ví dụ, Ref: InstanceSecurityGroup gọi đến đến tài nguyên duy nhất khác trong mẫu này, nhóm SecurityGroup sẽ được tạo. Dưới đây là định nghĩa của tài nguyên đó:

Ref: InstanceType cũng đề cập đến những tham số InstanceType có thể được truyền vào. Phần Tham số level cao nhất là nơi tham số InstanceType đến từ đó. Hãy xem phần đó của mục Parameter:

Tạo Cloud Formation stack

Bạn có thể thấy rằng tham số mặc định cho kiểu Instance EC2 để khởi tạo là t2.small. Bạn có thể ghi đè giá trị này khi bạn khởi động instance nếu bạn muốn. Đối với các tham số có giá trị mặc định, bạn không cần phải cung cấp tham số. Đối với các tham số không có giá trị mặc định, bạn sẽ cần phải cung cấp giá trị. Trong template cụ thể này, tham số bắt buộc duy nhất là KeyNameKeyName là sử dụng ssh key để truy cập vào instance. Bạn có thể tạo khóa ssh bằng menu EC2 Console trong “Key Pairs”. Với hướng dẫn này, tôi đã tạo ra một tutorial keypair và sẽ sử dụng nó.

  • $ aws cloudformation create-stack –template-body file://templates/single_instance.yml –stack-name single-instance –parameters ParameterKey=KeyName,ParameterValue=tutorial ParameterKey=InstanceType,ParameterValue=t2.micro

Sau khi bật thành công Stack CloudFormation, bận sẽ thấy output giống như sau:

  • {
  • “StackId”: “arn:aws:cloudformation:us-west-2:1606191131234:stack/single-instance/3401e900-3d83-11e7-bb7e-503f2a2cee4a”
  • }

Xóa Cloud Formation Stack

  • aws cloudformation delete-stack –stack-name single-instance

Hàm tham chiếu nội tại

AWS CloudFormation cung cấp một số chức năng tích hợp giúp bạn quản lý ngăn xếp của mình. Sử dụng các hàm nội tại trong các mẫu của bạn để gán giá trị cho các thuộc tính không khả dụng cho đến khi chạy.

Ví dụ: Fn::FindInMap cho phép tìm kiếm trong danh sách khai báo sẵn.

  • “Mappings” : {
  • “AWSInstanceType2Arch” : {
  • “t1.micro” : { “Arch” : “64” },
  • “m1.small” : { “Arch” : “32” },
  • “m1.large” : { “Arch” : “64” },
  • “m1.xlarge” : { “Arch” : “64” },
  • “m2.xlarge” : { “Arch” : “64” },
  • “m2.2xlarge” : { “Arch” : “64” },
  • “m2.4xlarge” : { “Arch” : “64” },
  • “c1.medium” : { “Arch” : “32” },
  • “c1.xlarge” : { “Arch” : “64” },
  • “cc1.4xlarge” : { “Arch” : “64” }
  • },
  • “AWSRegionArch2AMI” : {
  • “us-east-1” : { “32” : “ami-6411e20d”, “64” : “ami-7a11e213” },
  • “us-west-1” : { “32” : “ami-c9c7978c”, “64” : “ami-cfc7978a” },
  • “eu-west-1” : { “32” : “ami-37c2f643”, “64” : “ami-31c2f645” },
  • “ap-southeast-1” : { “32” : “ami-66f28c34”, “64” : “ami-60f28c32” },
  • “ap-northeast-1” : { “32” : “ami-9c03a89d”, “64” : “ami-a003a8a1” }
  • }
  • },

Tham khảo

https://viblo.asia/p/gioi-thieu-ve-cloud-formation-va-cach-su-dung-co-ban-ByEZk9Lx5Q0