- vừa được xem lúc

Hướng dẫn chi tiết cài đặt AWS CDK

0 0 25

Người đăng: VNTechies

Theo Viblo Asia

AWS Cloud Development Kit

AWS Cloud Development Kit (AWS CDK) là một khung phát triển phần mềm mã nguồn mở để xác định tài nguyên ứng dụng đám mây bằng các ngôn ngữ lập trình quen thuộc. Đây là công cụ tổng hợp (synthesize) ứng dụng AWS CDK và tạo ra các AWS CloudFormation stacks để triển khai trên AWS Cloud.

Để cài đặt AWS CDK, bạn chỉ cần chạy câu lệnh sau trên terminal của bạn npm install -g aws-cdk.

Thao tác này sẽ cài đặt AWS CDK trên máy của bạn, từ đó bạn có thể tạo dự án đầu tiên của mình, bắt đầu xây dựng và triển khai trên AWS Cloud.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt AWS CDK và thiết lập cấu hình để bắt đầu xây dựng và triển khai ứng dụng CDK đầu tiên của mình.

Cách cài đặt AWS Cloud Development Kit (CDK)

Chúng ta sử dụng NPM package manager để cài đặt AWS CDK. Đây là phương pháp cài đặt chung cho tất cả các hệ điều hành (MacOS, Windows, Linux,...). Chạy câu lệnh sau trên terminal của bạn để cài đặt AWS CDK toolkit

npm install -g aws-cdk
# Kiểm tra version của AWS CDK sau khi cài đặt
cdk version
# List các các câu lệnh của cdk
cdk --help

AWS CDK v1 sẽ vào chế độ bảo trì (chỉ nhận được fix cho critical bug và các bản vá bảo mật) từ 1/7/2022 [^1]. Chính vì thế các bạn nên sử dụng AWS SDK v2 để sử dụng các tính năng, cập nhật mới.

Tạo một AWS CDK project

Để khởi tạo một project AWS CDK mới, bạn có thể chạy lệnh cdk init, bạn có thể tuỳ chọn mẫu và ngôn ngữ lập trình mong muốn của mình. Dưới đây là các lựa chọn cho bạn

cdk init --list
# output
Available templates:
* app: Template for a CDK Application └─ cdk init app --language=[csharp|fsharp|go|java|javascript|python|typescript]
* lib: Template for a CDK Construct Library └─ cdk init lib --language=typescript
* sample-app: Example CDK Application with some constructs └─ cdk init sample-app --language=[csharp|fsharp|go|java|javascript|python|typescript]

Đây có thể là lần đầu tiên bạn sử dụng AWS CDK, chính vì vậy hãy bắt đầu với sample-app. Project này sẽ giúp bạn hiểu được một stack được tạo ra như thế nào trên AWS Cloud thông qua AWS CDK.

Chúng ta sẽ sử dụng python cho project này

mkdir aws-cdk-sample-app
cd aws-cdk-sample-app
cdk init sample-app --language=python

Câu lệnh sẽ tự động sinh ra code cho project với cấu trúc như dưới Đây

./
├── README.md
├── app.py
├── aws_cdk_sample_app
│ ├── __init__.py
│ └── aws_cdk_sample_app_stack.py
├── cdk.json
├── requirements-dev.txt
├── requirements.txt
├── source.bat
└── tests ├── __init__.py └── unit ├── __init__.py └── test_aws_cdk_sample_app_stack.py
# Cài đặt môi trường ảo cho python
python3 -m venv .venv
# Cài đặt các dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt

Bạn có thể thấy trong thư mục aws_cdk_sample_app chứa một stack, trong đó chứa code cho việc tạo một SQS queue và SNS topic + subscription. Vì chúng ta sử dụng AWS CDK với sample-app nên các tài nguyên này đã được định nghĩa trước.

Build ứng dụng AWS CDK

Sau khi chúng ta tạo mới một AWS CDK project với một stack (aws_cdk_sample_app_stack.py) bao gồm các tài nguyên được config trong sample-app. Để build ứng dụng, chúng ta dùng câu lệnh cdk synth. Câu lệnh này sẽ tổng hợp (các) stacks được định nghĩa trong ứng dụng AWS CDK thành một CloudFormation template.

cdk synth
Resources: AwsCdkSampleAppQueueDC253127: Type: AWS::SQS::Queue Properties: VisibilityTimeout: 300 UpdateReplacePolicy: Delete DeletionPolicy: Delete Metadata: aws:cdk:path: aws-cdk-sample-app/AwsCdkSampleAppQueue/Resource AwsCdkSampleAppQueuePolicy59F8BB88: Type: AWS::SQS::QueuePolicy Properties: PolicyDocument: Statement: - Action: sqs:SendMessage Condition: ArnEquals: aws:SourceArn: Ref: AwsCdkSampleAppTopic7344763E Effect: Allow Principal: Service: sns.amazonaws.com Resource: Fn::GetAtt: - AwsCdkSampleAppQueueDC253127 - Arn Version: "2012-10-17" Queues: - Ref: AwsCdkSampleAppQueueDC253127 Metadata: aws:cdk:path: aws-cdk-sample-app/AwsCdkSampleAppQueue/Policy/Resource AwsCdkSampleAppQueueawscdksampleappAwsCdkSampleAppTopic84AF6D45EC13CEA3: Type: AWS::SNS::Subscription Properties: Protocol: sqs TopicArn: Ref: AwsCdkSampleAppTopic7344763E Endpoint: Fn::GetAtt: - AwsCdkSampleAppQueueDC253127 - Arn Metadata: aws:cdk:path: aws-cdk-sample-app/AwsCdkSampleAppQueue/awscdksampleappAwsCdkSampleAppTopic84AF6D45/Resource AwsCdkSampleAppTopic7344763E: Type: AWS::SNS::Topic Metadata: aws:cdk:path: aws-cdk-sample-app/AwsCdkSampleAppTopic/Resource CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:H4sIAAAAAAAA/1WNQQrCMBBFz9J9MloL4r4XqK17adOIY2vSZhKkhNzdJgHBzfz/Hw/mBNUFyqL/EBfjxGccwHe2FxPb0d3TSuCvTjrJ6ofKJd1Gzyi2H8wzMFK737mBhMHFolbR+Ns3vaCINJUQYm0laWdE+lFrNWI0A2s2+9TqUEF5hHPxIkRunLL4ltDm/AKawROWvgAAAA== Metadata: aws:cdk:path: aws-cdk-sample-app/CDKMetadata/Default Condition: CDKMetadataAvailable
Conditions: CDKMetadataAvailable: Fn::Or: - Fn::Or: - Fn::Equals: - Ref: AWS::Region - af-south-1 - Fn::Equals: - Ref: AWS::Region - ap-east-1 - Fn::Equals: - Ref: AWS::Region - ap-northeast-1 - Fn::Equals: - Ref: AWS::Region - ap-northeast-2 - Fn::Equals: - Ref: AWS::Region - ap-south-1 - Fn::Equals: - Ref: AWS::Region - ap-southeast-1 - Fn::Equals: - Ref: AWS::Region - ap-southeast-2 - Fn::Equals: - Ref: AWS::Region - ca-central-1 - Fn::Equals: - Ref: AWS::Region - cn-north-1 - Fn::Equals: - Ref: AWS::Region - cn-northwest-1 - Fn::Or: - Fn::Equals: - Ref: AWS::Region - eu-central-1 - Fn::Equals: - Ref: AWS::Region - eu-north-1 - Fn::Equals: - Ref: AWS::Region - eu-south-1 - Fn::Equals: - Ref: AWS::Region - eu-west-1 - Fn::Equals: - Ref: AWS::Region - eu-west-2 - Fn::Equals: - Ref: AWS::Region - eu-west-3 - Fn::Equals: - Ref: AWS::Region - me-south-1 - Fn::Equals: - Ref: AWS::Region - sa-east-1 - Fn::Equals: - Ref: AWS::Region - us-east-1 - Fn::Equals: - Ref: AWS::Region - us-east-2 - Fn::Or: - Fn::Equals: - Ref: AWS::Region - us-west-1 - Fn::Equals: - Ref: AWS::Region - us-west-2
Parameters: BootstrapVersion: Type: AWS::SSM::Parameter::Value<String> Default: /cdk-bootstrap/hnb659fds/version Description: Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]
Rules: CheckBootstrapVersion: Assertions: - Assert: Fn::Not: - Fn::Contains: - - "1" - "2" - "3" - "4" - "5" - Ref: BootstrapVersion AssertDescription: CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.

Như bạn có thể thấy, câu lệnh cdk synth hiển thị một CloudFormation template trên terminal của bạn. Template này cũng được lưu lại dưới dạng JSON trong folder cdk.out để có thể sử dụng khi deploy lên AWS.

Deploy ứng dụng AWS CDK

Để deploy ứng dụng sau khi được tổng hợp bởi câu lệnh cdk synth, bạn cần cài đặt AWS CLI và AWS profile trên máy của bạn.

Sau khi bạn cài đặt xong, bạn có thể tiếp tục với việc deploy ứng dụng AWS CDK.

Bạn cần phải bootstrap ứng dụng AWS CDK trước khi có thể deploy lên AWS, việc này giúp tạo các tài nguyên cần thiết để CDK toolkit có thể deploy ứng dụng của bạn, chúng bao gồm: S3 bucket, IAM roles, SSM Parameter,...

cdk bootstrap --profile vntechies # thay bằng profile của bạn
cdk deploy --profile vntechies

Kết quả deploy bằng AWS CDK

Tổng kết

Qua bài hướng dẫn này, bạn đã học cách cài đặt AWS CDK, thiết lập và khởi tạo một AWS CDK project, tổng hợp lại thành một CloudFormation template và deploy lên AWS Cloud. Nếu bạn muốn xóa stack vừa được tạo khỏi tài khoản AWS của mình, hãy chạy lệnh sau

cdk destroy --profile vntechies # thay bằng profile của bạn

Bài viết gốc

Reference

Bình luận

Bài viết tương tự

- vừa được xem lúc

PDF Export, cẩn thận với những input có thể truyền vào

Giới thiệu. Dạo gần đây mình tình cờ gặp rất nhiều lỗi XSS, tuy nhiên trang đó lại có sử dụng dữ liệu người dùng input vào để export ra PDF.

0 0 66

- vừa được xem lúc

Giới thiệu về AWS Batch

Khi sử dụng hệ thống cloud service, điều chúng ta thường phải quan tâm đến không chỉ là hiệu suất hoạt động (performance) mà còn phải chú ý đến cả chi phí bỏ ra để duy trì hoạt động của hệ thống. Chắn hẳn là hệ thống lớn hay nhỏ nào cũng đã từng phải dùng đến những instance chuyên để chạy batch thực

0 0 143

- vừa được xem lúc

Tìm hiểu về AWS KMS

1. AWS KMS là gì. Ở KMS bạn có thể lựa chọn tạo symetric key (khóa đối xứng) hoặc asymetric key (khóa bất đối xứng) để làm CMK (Customer Master Key). Sau khi tạo key thì có thể thiết đặt key policy để control quyền access và sử dụng key.

0 0 66

- vừa được xem lúc

AWS VPC cho người mới bắt đầu

Tuần này, tôi trình bày lại những gì tôi đã học được về Virtual Private Cloud (VPC) của Amazon. Nếu bạn muốn xem những gì tôi đã học được về AWS, hãy xem Tổng quan về DynamoDB và Tổng quan về S3. VPC là gì. Những điều cần lưu ý:.

0 0 84

- vừa được xem lúc

AWS Essentials (Phần 6): Guildline SNS Basic trên AWS

Tiếp tục với chuỗi bài viết về Basic AWS Setting, chúng ta tiếp tục tìm hiểu tiếp tới SNS (Simple Notification Service). Đây là một service của AWS cho phép người dùng setting thực hiện gửi email, text message hay push notification tự động tới mobile device dựa trên event người dùng setting phía AWS

0 0 145

- vừa được xem lúc

Sử dụng Amazon CloudFront Content Delivery Network với Private S3 Bucket — Signing URLs

Trong nhiều trường hợp, thì việc sử dụng CDN là bắt buộc. Mình đã trải nghiệm với một số CDN nhưng cuối cùng mình lựa chọn sử dụng AWS CloudFront.

0 0 117