Tạo DynamoDB với CDK
Tạo DynamoDB với CDK
- Trước tiên ta mở file ProductsServiceStack.java trong constuctor khởi tạo đối tượng Table với ID là
ProductsDdb
Table productsDdb = new Table(this, "ProductsDdb",
TableProps.builder()
.build());

- Xác định khóa phân vùng (partition key) của table. Trong workshop này, ta sẽ sử dụng thuộc tính id làm partition key với kiểu dữ liệu là STRING.
.partitionKey(Attribute.builder()
.name("id")
.type(AttributeType.STRING)
.build())

- Đặt tên cho DynamoDB table là
products.

- Tiếp theo ta cấu hình xoá table khi tài nguyên CDK stack của bạn bị xóa
.removalPolicy(RemovalPolicy.DESTROY)

- Tiếp theo chúng ta cần xác định chế độ thanh toán (billing mode) của table. Ở đây, chế độ PROVISIONED được sử dụng, nghĩa là bạn cần chỉ định đủ khả năng đọc và ghi (read và write capacity) cho table.
.billingMode(BillingMode.PROVISIONED)

- Cuối cùng,ta đặt capacity units (đơn vị khả năng) cho table. Trong trường hợp này, đặt read capacity và write capacity là 1, nghĩa là table sẽ có đủ tài nguyên để đọc và ghi ở mức rất thấp.
.readCapacity(1)
.writeCapacity(1)

Cấp quyền để product service có thể truy cập vào dynamoDB
- Tiếp theo, ta hiện việc cấp quyền cho vai trò của task definition trong Fargate để có thể đọc và ghi dữ liệu vào DynamoDB table productsDdb. Điều này đảm bảo rằng các task trong Fargate có thể tương tác với DynamoDB table này một cách an toàn và theo quy định của IAM (Identity and Access Management) trong AWS.
productsDdb.grantReadWriteData(fargateTaskDefinition.getTaskRole());

- Thêm 2 biến mối trường là table name và region cho task definition
envVariables.put("AWS_PRODUCTSDDB_NAME", productsDdb.getTableName());
envVariables.put("AWS_REGION", this.getRegion());
