Kêu gọi tất cả các nhà phát triển SAP ABAP – Các bạn được mời đến Bữa tiệc Amazon Bedrock!

bởi Luciana Decristofaro, Jon Friesen và João Bozelli vào ngày 28 tháng 3 năm 2025 trong Amazon Bedrock, SAP trên AWS, Technical How-to

Giới thiệu

Trong hơn một thập kỷ, Amazon Web Services (AWS) đã giúp khách hàng hiện đại hóa doanh nghiệp của họ. AWS cung cấp quyền truy cập đơn giản, dựa trên API vào một loạt các dịch vụ, bao gồm Mạng, Điện toán, Phân tích, Nhắn tin, Bảo mật và Nhận dạng, Dịch vụ Di động và Trí tuệ Nhân tạo (AI). Các dịch vụ này cho phép khách hàng thử nghiệm và đổi mới với tốc độ nhanh hơn mà không yêu cầu cam kết ban đầu lớn. Bằng cách cung cấp một bộ dịch vụ đám mây toàn diện, AWS cho phép khách hàng tập trung vào các mục tiêu kinh doanh cốt lõi của họ trong khi vẫn được hưởng lợi từ khả năng mở rộng, độ tin cậy và bảo mật của nền tảng AWS. Phương pháp này đã giúp vô số tổ chức hiện đại hóa hoạt động, thúc đẩy đổi mới và đạt được lợi thế cạnh tranh trong các ngành tương ứng.

Việc tích hợp các hệ thống ABAP và dịch vụ AWS trước đây gặp nhiều thách thức do sự khác biệt về xác thực và định dạng dữ liệu. Để giải quyết vấn đề này, AWS đã phát triển AWS SDK cho SAP ABAP, cho phép các nhà phát triển ABAP kết nối trực tiếp với hơn 240 dịch vụ AWS và hiện đại hóa quy trình kinh doanh SAP của họ bằng ngôn ngữ lập trình ABAP. AWS SDK cho SAP ABAP cho phép khách hàng:

Tăng tốc đổi mới quy trình kinh doanh bằng cách cung cấp cho các nhà phát triển ABAP quyền truy cập vào hơn 240 dịch vụ AWS.

Giảm độ phức tạp về kiến ​​trúc bằng cách loại bỏ nhu cầu tạo thủ công các tích hợp phức tạp giữa các dịch vụ SAP và AWS, cả trong chế độ tự quản lý và RISE với các triển khai SAP.

Duy trì trạng thái bảo mật mạnh mẽ bằng cách mã hóa tất cả các tải trọng bằng HTTPS và thực thi các quyền cấp SAP.

Trong bài viết này, chúng tôi sẽ hướng dẫn cách các nhà phát triển ABAP có thể nhanh chóng cung cấp hệ thống sandbox SAP trên AWS bằng cách sử dụng hình ảnh docker bản dùng thử ABAP Cloud Developer 2022 của SAP, cài đặt AWS SDK cho SAP ABAP và bắt đầu thử nghiệm với hơn 240 dịch vụ AWS. Bài viết này cũng cung cấp mã mẫu để tích hợp SAP ABAP với Amazon Bedrock, các dịch vụ được quản lý hoàn toàn của AWS cung cấp quyền truy cập dựa trên API vào nhiều mô hình nền tảng (FM) hiệu suất cao từ các công ty AI hàng đầu. Trong số đó có Amazon Nova, một mô hình nền tảng tiên tiến (SOTA) thế hệ tiếp theo, độc quyền thông qua Amazon Bedrock, cung cấp trí tuệ tiên tiến với hiệu suất giá cả hàng đầu trong ngành.

Tại sao nên chọn AWS cho Phát triển SAP ABAP?

Trước khi tìm hiểu cách triển khai hình ảnh docker SAP trên AWS, trước tiên hãy cùng xem xét lý do tại sao các nhà phát triển ABAP nên tận dụng dịch vụ AWS để giải quyết các thách thức kinh doanh của họ.

Hiệu quả về chi phí: Với AWS, bạn chỉ phải trả cho các tài nguyên bạn thực sự sử dụng, giảm thiểu chi phí không cần thiết cho cả nhà phát triển và doanh nghiệp.

Khả năng mở rộng: AWS cho phép bạn dễ dàng tăng hoặc giảm quy mô tài nguyên tùy thuộc vào nhu cầu của ứng dụng ABAP, đảm bảo hiệu suất tối ưu ở mọi giai đoạn phát triển.

Tính linh hoạt: Cho dù bạn đang phát triển, thử nghiệm hay chạy khối lượng công việc sản xuất, AWS giúp bạn dễ dàng triển khai nhiều phiên bản ABAP Cloud Developer Trial 2022, bao gồm cả thông qua hình ảnh Docker của SAP để thiết lập nhanh chóng.

Bảo mật: AWS SDK cho SAP ABAP cung cấp nhiều lớp bảo mật, bao gồm xác thực mạnh mẽ và kiểm soát truy cập chi tiết. SDK này hỗ trợ các vai trò IAM để quản lý quyền, đồng thời tích hợp vào khuôn khổ ủy quyền riêng của SAP. Điều này cho phép quản trị viên ánh xạ các vai trò IAM logic với các vai trò người dùng SAP, đảm bảo rằng người dùng có ít đặc quyền cần thiết nhất cho tác vụ của họ. Ngoài ra, SDK còn hỗ trợ các hoạt động bảo mật thông qua HTTPS, mã hóa và xác thực dựa trên chứng chỉ với IAM Roles Anywhere cho các hệ thống bên ngoài AWS.

Tích hợp: AWS SDK cho SAP ABAP cung cấp quyền truy cập vào hơn 240 dịch vụ AWS, cho phép các nhà phát triển tích hợp các chức năng gốc đám mây vào môi trường ABAP của họ. Bao gồm các dịch vụ hàng đầu như Amazon S3 cho lưu trữ có thể mở rộng, Amazon SQS cho nhắn tin, Amazon SNS cho thông báo, Amazon Textract cho phân tích tài liệu và Amazon Rekognition cho nhận dạng hình ảnh và video. Một dịch vụ AWS quan trọng khác được hỗ trợ là Amazon Bedrock, cho phép các nhà phát triển ABAP sử dụng các mô hình AI tạo sinh tiên tiến.

Triển khai Bản dùng thử ABAP Cloud Developer trên AWS

Có nhiều cách để triển khai cơ sở hạ tầng trên nền tảng đám mây AWS. Trong bài viết này, chúng tôi sẽ tập trung vào việc sử dụng Giao diện Dòng lệnh (CLI) của AWS để triển khai theo chương trình một phiên bản Windows Server sẽ được sử dụng làm máy chủ bastion và một phiên bản Amazon Linux sẽ lưu trữ hình ảnh docker SAP.

Yêu cầu:

Để triển khai giải pháp trong bài viết này, bạn cần:

  • Người dùng IAM và Vai trò IAM: Làm theo các bước thiết lập IAM trong hướng dẫn được tham chiếu và đảm bảo người dùng có các quyền được liệt kê trong Phụ lục. Xác minh rằng tất cả các Vai trò IAM và cấu hình ABAP cần thiết đã được tạo để có thể kết nối với các phiên bản và chạy chương trình demo thành công.
  • Đám mây Riêng Ảo (VPC) của AWS: Sử dụng Đám mây Riêng Ảo (VPC) Mặc định hiện có hoặc tạo một đám mây riêng để đảm bảo cấu hình mạng phù hợp cho các phiên bản của bạn. Để biết thêm chi tiết, hãy xem Cấu hình Đám mây Riêng Ảo.
  • Cặp Khóa SSH: Tạo cặp khóa SSH để truy cập an toàn vào các phiên bản EC2 của bạn. Bạn có thể tạo cặp khóa bằng bảng điều khiển Amazon EC2. Để biết thêm thông tin, hãy xem bài viết Tạo cặp khóa bằng Amazon EC2.

Triển khai Windows Bastion Server

Trong bài viết này, chúng ta sẽ sử dụng AWS CloudShell để triển khai cơ sở hạ tầng. AWS CloudShell là một shell dựa trên trình duyệt, cung cấp quyền truy cập trực tiếp vào các dịch vụ AWS thông qua dòng lệnh, được cấu hình sẵn bằng các công cụ như AWS CLI. Để truy cập CloudShell, hãy đăng nhập vào AWS Management Console và sau đó nhấp vào biểu tượng terminal ở góc trên bên phải. Nếu bạn chưa quen với bảng điều khiển, hãy tham khảo hướng dẫn Bắt đầu với AWS Management Console để biết thông tin chi tiết.

Mẹo: Trước khi khởi chạy tài nguyên, hãy chọn một AWS Region bằng cách sử dụng bộ chọn vùng trong thanh điều hướng góc trên bên phải của Bảng điều khiển Quản lý AWS. Vùng ảnh hưởng đến độ trễ và chi phí, với mức giá khác nhau tùy theo vị trí. Để có chi phí thấp nhất, hãy sử dụng vùng US East 1 (Bắc Virginia). Để biết thêm chi tiết, hãy xem AWS Pricing.

Bước tiếp theo là chọn mạng cho các phiên bản EC2 của bạn. Để tìm ID VPC, hãy mở Bảng điều khiển VPC trong Bảng điều khiển Quản lý AWS, điều hướng đến VPC của bạn và sao chép ID VPC (ví dụ: vpc-123abc456) từ danh sách. Hãy giữ ID này ở nơi dễ tìm, vì nó sẽ được sử dụng trong các bước sau.

Giờ đây, bạn đã có các yêu cầu tối thiểu để triển khai môi trường Dùng thử ABAP Cloud Developer, hãy tạo Security Group cho máy chủ Windows Bastion của bạn. Nhóm này sẽ cho phép máy chủ Windows kết nối với các cổng SAP cần thiết từ phiên bản Dùng thử ABAP Cloud Developer.

Sử dụng lệnh AWS CLI bên dưới để tạo Security Group

# aws ec2 create-security-group \

--group-name WIN-HOST-SG \

--description "Security group for Windows host to access ABAP Cloud Developer Trial" \

--vpc-id <your-vpc-id> \

--tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value=WIN-HOST-SG}]'

Hãy chắc chắn thay thế <your-vpc-id> bằng ID VPC thực tế của bạn.

Lưu ý ID Nhóm Bảo mật: Điều hướng đến Bảng điều khiển VPC trong Bảng điều khiển Quản lý AWS, nhấp vào Nhóm Bảo mật, tìm mục có tên WIN-HOST-SG và sao chép ID Nhóm Bảo mật (ví dụ: sg-00x0000000x000000). ID này sẽ được yêu cầu trong các bước tiếp theo.

Sau khi tạo Nhóm Bảo mật thành công, chúng tôi sẽ khởi chạy Bastion Host bằng AMI Microsoft Windows Server 2025 Full Locale English do Amazon cung cấp, trên phiên bản EC2 m6a.large. Phiên bản này cũng bao gồm một ổ đĩa EBS 50 GB để lưu trữ, ổ đĩa này sẽ tự động bị xóa khi phiên bản kết thúc.

Bạn sẽ cần chỉ định Key Pair, Security Group Subnet để hoàn tất cấu hình.

  • Để tìm Key Pair, hãy truy cập Bảng điều khiển EC2 và chọn Key pairs trong mục Network & Security; bạn có thể sử dụng cặp khóa hiện có hoặc tạo một cặp khóa mới.
  • Đối với Security Group, hãy điều hướng đến Bảng điều khiển VPC, nhấp vào Security Group và ghi lại Security Group ID cho nhóm bạn định sử dụng.
  • Để tìm Subnet của bạn, hãy vào Subnets trong Bảng điều khiển VPC và sao chép Subnet ID của mạng con mong muốn. Những ID này sẽ được yêu cầu cho các lệnh thiết lập.
# aws ec2 run-instances \

--image-id resolve:ssm:/aws/service/ami-windows-latest/Windows_Server-2025-English-Full-Base \

--instance-type m6a.large \

--key-name <your-key-pair> \

--block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":50,"DeleteOnTermination":true}}]' \

--security-group-ids <your-windows-security-group-id> \

--subnet-id <your-subnet-id> \

--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Bastion-Host}]'

Hãy chắc chắn thay <your-subnet-id> bằng ID của Private Subnet, <your-key-pair> bằng Key Pair của bạn, và <Bastion-Host-security-group-id> bằng Security Group ID(không phải Tên).

Khởi chạy Máy chủ Dùng thử ABAP Cloud Developer

Trước khi khởi chạy phiên bản EC2 sẽ lưu trữ hệ thống SAP ABAP, hãy bắt đầu bằng cách tạo Nhóm Bảo mật cho máy chủ SAP ABAP của bạn và cấp quyền truy cập vào các cổng SAP cần thiết. Các cổng này sẽ có thể truy cập được từ Nhóm Bảo mật mà chúng ta đã tạo trước đó cho Máy chủ Bastion. Thiết lập này đảm bảo máy chủ có thể kết nối an toàn với phiên bản SAP ABAP của bạn cho các tác vụ phát triển và quản lý.

# aws ec2 create-security-group \

--group-name SAP-ABAP-SG \

--description "Security group for ABAP Cloud Developer Trial access" \

--vpc-id <your-vpc-id> \

--tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value=SAP-ABAP-SG}]'

Hãy chắc chắn thay thế <your-vpc-id> bằng ID VPC thực tế của bạn.

Lưu ý  Security Group ID: Điều hướng đến Bảng điều khiển VPC trong AWS Management Console, nhấp vào Security Groups, tìm mục có tên SAP-ABAP-SG và sao chép Security Group ID (ví dụ: sg-00x0000000x000000). ID này sẽ được yêu cầu ở bước tiếp theo để ủy quyền lưu lượng truy cập từ máy chủ Windows Bastion đến máy chủ này bằng các lệnh sau:

# aws ec2 authorize-security-group-ingress \

--group-id <SAP-ABAP-SG-security-group-id> \

--ip-permissions '[{"IpProtocol": "tcp", "FromPort": 3200, "ToPort": 3200, "UserIdGroupPairs": [{"GroupId": "<Bastion-Host-security-group-id>", "Description": "SAPGUI Instance 00"}]}]'

Hãy chắc chắn thay thế <SAP-ABAP-SG-security-group-id> và <Bastion-Host-security-group-id> bằng Security Group ID thực tế của bạn cho phiên bản SAP ABAP (ví dụ: ID SG: sg-00x0000000x000000).

Bây giờ, chúng ta sẽ khởi chạy một phiên bản EC2 r6a.xlarge với ổ đĩa EBS 150GB sẽ lưu trữ hình ảnh Docker của chúng ta. Phiên bản này chạy Amazon Linux 2023:

Lưu ý: Để kiểm tra các loại phiên bản khả dụng trong khu vực bạn đã chọn, hãy tham khảo hướng dẫn Tìm loại phiên bản Amazon EC2.

# aws ec2 run-instances \

--image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 \

--instance-type r6a.xlarge \ 

--key-name <your-key-pair> \

--block-device-mappings '[{"DeviceName":"/dev/xvda","Ebs":{"VolumeSize":150,"DeleteOnTermination":true}}]' \

--security-group-ids <your-SAP-ABAP-SG-security-group-id> \ --subnet-id <private-subnet-id> \

--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=ABAP-Cloud-Dev-Trial-Instance}]' \

--user-data '#!/bin/bash yum update -y yum install docker -y sudo service docker start sudo usermod -a -G docker ec2-user docker pull sapse/abap-cloud-developer-trial:ABAPTRIAL_2022_SP01'

Đừng quên sửa đổi các tham số sau bằng giá trị của riêng bạn:

  • <your-key-pair>
  • <your-SAP-ABAP-SG-security-group-id>
  • <your-vpc-id>
  • <private-subnet-id>

Tập ​​lệnh User Data này sẽ cập nhật phiên bản, cài đặt Docker, khởi động dịch vụ và thêm quyền cho người dùng EC2 chạy các lệnh Docker. Sau đó, tập lệnh sẽ tải xuống hình ảnh ABAP Cloud Developer Trial Docker, quá trình này có thể mất khoảng 30 phút do kích thước của hình ảnh docker. Sau khi hoàn tất, phiên bản của bạn sẽ sẵn sàng chạy SAP ABAP trong Docker.

Chạy lệnh sau để lấy địa chỉ IP riêng của phiên bản SAP. Hãy nhớ ghi lại địa chỉ IP này, vì bạn sẽ cần nó sau này để truy cập hệ thống SAP:

# aws ec2 describe-instances \

--filters "Name=tag:Name,Values=ABAP-Cloud-Dev-Trial-Instance" \

--query "Reservations[].Instances[].PrivateIpAddress" \

--output text

Để kết nối với máy chủ Amazon Linux, trên Bảng điều khiển AWS, hãy điều hướng đến EC2 → Instances (đang chạy) và chọn ABAP-Cloud-Dev-Trial-Instance. Nhấp vào Kết nối → Trình quản lý Phiên → Kết nối.

Lưu ý: Trình quản lý Phiên có giá trị thời gian chờ phiên nhàn rỗi là 20 phút theo mặc định. Để tăng giá trị này (tối đa 60 phút), hãy tham khảo tài liệu AWS. Chỉ định giá trị thời gian chờ phiên nhàn rỗi.

Để theo dõi trạng thái của lệnh docker pull, bạn có thể kiểm tra tệp nhật ký /var/log/cloud-init-output.log bên trong máy chủ Amazon Linux.

# tail -f /var/log/cloud-init-output.log

Lệnh Docker pull sẽ hoàn tất và hiển thị thông báo tương tự như bên dưới trong tệp nhật ký.

Digest: sha256:8980d8fe17073ee1427ec1ae3fbd5cde7db0a9bc613efa6aea6ce9f179e38b96

Status: Downloaded newer image for sapse/abap-cloud-developer-trial:ABAPTRIAL_2022_SP01

docker.io/sapse/abap-cloud-developer-trial:ABAPTRIAL_2022_SP01

Cloud-init v. 22.2.2 finished at Mon, 25 Nov 2024 16:39:05 +0000. Datasource DataSourceEc2.  Up 776.09 seconds

Lưu ý: Đầu ra bảng điều khiển hiển thị ở đây chỉ là ví dụ. Đầu ra thực tế có thể hơi khác nhau tùy thuộc vào môi trường, cấu hình hệ thống hoặc phiên bản Docker image cụ thể đang được tải.

Để khởi động hệ thống, bạn cần chấp nhận Giấy phép SAP DEVELOPER, giấy phép này sẽ xuất hiện khi container Docker khởi động. Trên máy chủ Amazon Linux. Để tránh sự cố trong trường hợp phiên làm việc của bạn bị ngắt kết nối, hãy thực hiện lệnh thông qua màn hình.

Đầu tiên, hãy cài đặt tiện ích màn hình trên máy chủ Amazon Linux bằng lệnh bên dưới:

# yum install screen -y

Sau đó, chạy các lệnh sau để chấp nhận giấy phép trong phiên làm việc màn hình. Thao tác này cho phép quy trình tiếp tục chạy ở chế độ nền:

screen -l

docker run --sysctl kernel.shmmax=21474836480 --sysctl kernel.shmmni=32768 --sysctl kernel.shmall=5242880 --sysctl kernel.msgmni=1024 --sysctl kernel.sem="1250 256000 100 8192" --ulimit nofile=1048576:1048576 --stop-timeout 3600 -it --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 50000:50000 -p 50001:50001 -p 8000:8000 sapse/abap-cloud-developer-trial:ABAPTRIAL_2022_SP01 -skip-limits-check -agree-to-sap-license

To exit screen, press the keys:

ctrl + A + D

Chạy lệnh với screen sẽ đảm bảo hệ thống không bị dừng trong trường hợp phiên làm việc của bạn bị gián đoạn. Bạn sẽ thấy một thông báo tương tự như sau:

Bây giờ phiên bản SAP của bạn đã hoạt động, đã đến lúc kết nối với nó thông qua Bastion Host. Để thực hiện việc này, chúng ta sẽ sử dụng Fleet Manager. Fleet Manager là một tính năng của AWS Systems Manager cho phép bạn quản lý và tương tác an toàn với các phiên bản Windows Server Amazon Elastic Compute Cloud (Amazon EC2) bằng Giao thức Máy tính Từ xa (RDP). Trên Bảng điều khiển AWS, hãy điều hướng đến EC2Phiên bản (đang chạy) và chọn phiên bản Bastion-Host. Nhấp vào Kết nốiMáy khách RDP. Trong Kiểu kết nối, hãy chọn Kết nối bằng Fleet Manager.

Để lấy lại mật khẩu Quản trị viên, hãy nhấp vào Lấy mật khẩu và tải lên cặp khóa bảo mật mà bạn đã tạo ở đầu hướng dẫn này. Thao tác này sẽ giải mã mật khẩu, cho phép bạn truy cập phiên bản Windows. Khi được nhắc, hãy đăng nhập vào phiên bản của bạn bằng tên người dùng và mật khẩu đã chỉ định.

Để biết thêm thông tin, hãy xem Thiết lập môi trường của bạn trong Hướng dẫn sử dụng AWS Systems Manager.

Sau khi kết nối với Bastion Host, bước tiếp theo là cài đặt Giao diện SAP (SAP GUI cho Windows) như bạn thường làm. Trước tiên, hãy truy cập Trung tâm Phần mềm SAP để tải phiên bản SAP GUI mới nhất. Tải xuống gói cài đặt từ mục Thành phần Giao diện Người dùng SAP, và sau khi tải xuống, hãy tiến hành cài đặt trên máy của bạn. Sau khi cài đặt hoàn tất, hãy thêm mục nhập phiên bản SAP ABAP của bạn vào SAP GUI để kết nối với môi trường SAP. Để thực hiện việc này, hãy thêm một hệ thống được chỉ định tùy chỉnh và đặt Máy chủ Ứng dụng thành địa chỉ IP riêng của phiên bản SAP ABAP mà bạn đã lấy trước đó bằng dòng lệnh hoặc sử dụng vhcala4hci nếu bạn đã cập nhật tệp máy chủ Windows. Đặt Phiên bản thành 00 và SID thành A4H. Để biết hướng dẫn chi tiết, hãy tham khảo Hướng dẫn Cài đặt SAP Frontend mới nhất và tài liệu Docker.

Cập nhật Giấy phép thông qua SAP GUI (SLICENSE)

Để kết nối với phiên bản SAP và cập nhật giấy phép, bạn có thể kiểm tra ngày hết hạn của giấy phép bằng giao dịch SLICENSE trong SAP GUI. Giấy phép ABAP đi kèm với hình ảnh Docker chỉ có hiệu lực trong ba tháng. Bạn nên đặt lời nhắc cập nhật giấy phép trước khi hết hạn để tránh bị gián đoạn. Hãy làm theo các bước sau để tải xuống và nhập giấy phép demo:

  1. Đăng nhập vào hệ thống ABAP của bạn với người dùng SAP*, máy khách 000, sử dụng cùng mật khẩu với DEVELOPER (lưu ý rằng DEVELOPER, máy khách 001, đã bị khóa). Mật khẩu được chỉ định trong tài liệu hướng dẫn sử dụng Cloud ABAP Developer Trial Docker.
  2. Khởi động giao dịch SLICENSE và sao chép khóa phần cứng.
  3. Nhận giấy phép từ MiniSAP, chọn hệ thống A4H.
  4. Quay lại hệ thống SAP ABAP của bạn, khởi động lại SLICENSE và nhấp vào Cài đặt để nhập giấy phép mới.
  5. Đăng xuất, sau đó đăng nhập với người dùng DEVELOPER, máy khách 001.
  6. Khởi động lại SLICENSE và xóa các giấy phép cũ không hợp lệ (lưu ý rằng SAP* không được phép xóa giấy phép).

Kích hoạt cấu hình TMS (STMS)

Để bật nhập vận chuyển, bạn cần kích hoạt cấu hình TMS. Mật khẩu người dùng được chỉ định trong tài liệu hướng dẫn sử dụng Cloud ABAP Developer Trial Docker.

  1. Đăng nhập vào hệ thống bằng tên người dùng DEVELOPER
  2. Điều hướng đến mã giao dịch STMS, sau đó vào Tổng quan > Nhập.
  3. Chọn Môi trường > Tổng quan Hệ thống.
  4. Nhấp vào Tiện ích bổ sung > Phân phối và Kích hoạt Cấu hình.
  5. Hệ thống SAP của bạn hiện đã sẵn sàng để nhập dữ liệu vận chuyển.

Bắt đầu với AWS SDK cho SAP ABAP

Cài đặt và Thiết lập

Trên máy chủ Amazon Linux, hãy cài đặt AWS SDK cho SAP ABAP bằng các tập lệnh mẫu từ kho lưu trữ GitHub công khai của AWS Labs, awslabs/aws-sap-automation. Các tập lệnh này, trong mục cài đặt AWS SDK cho SAP ABAP @ tính năng SAP ABAP Cloud Developer Trial Edition, sẽ tự động thiết lập Docker và môi trường SAP ABAP. Để biết chi tiết về nội dung và các bước của tập lệnh, hãy tham khảo tệp README.md trong thư mục GitHub.

Chạy các lệnh sau trên phiên bản ABAP Cloud Developer Trial:

# cd /tmp

# wget https://github.com/awslabs/aws-sap-automation/blob/main/abapsdk_abap_cloud_developer_trial/aws-sap-dockersetup.sh

# chmod +x aws-sap-dockersetup.sh

# ./aws-sap-dockersetup.sh docker_setup

# CONTAINER_ID=$(docker ps -q)

# docker exec -it $CONTAINER_ID sudo su - a4hadm -c '/tmp/aws-sap-dockersetup.sh sap_setup'

Lưu ý: Tập lệnh này thực hiện lệnh tp import all để nhập tất cả các phương thức vận chuyển từ AWS SDK cho SAP ABAP vào hệ thống cùng một lúc. Nếu bạn đang điều chỉnh tập lệnh này cho một hệ thống khác ngoài hệ thống ABAP Cloud Developer Trial, hãy đảm bảo hàng đợi nhập SAP của bạn được xóa trước khi chạy tập lệnh.

Trong tập lệnh aws-sap-dockersetup.sh, biến tla_values ​​chỉ định các mô-đun sẽ được nhập vào hệ thống SAP. Theo mặc định, tập lệnh bao gồm danh sách các mô-đun được chọn trước cho một số dịch vụ AWS được sử dụng phổ biến nhất. Bạn có thể tùy chỉnh danh sách này để chỉ bao gồm các mô-đun phù hợp với nhu cầu của mình. Tham khảo Danh sách Mô-đun AWS SDK cho SAP ABAP để biết danh sách đầy đủ các mô-đun khả dụng. Ngoài ra, bạn có thể tiếp tục với các mô-đun mặc định được chỉ định trong tập lệnh.

Sau khi AWS SDK cho SAP ABAP đã được cài đặt, hãy đảm bảo rằng nó được cấu hình theo tài liệu AWS. Để biết thêm chi tiết, hãy tham khảo Cấu hình AWS SDK cho SAP ABAP và Bắt đầu với AWS SDK cho SAP ABAP.

Trường hợp sử dụng mẫu: Tích hợp với Amazon Bedrock

Trước khi tích hợp hệ thống SAP ABAP của bạn với Amazon Bedrock, hãy đảm bảo bạn đã yêu cầu quyền truy cập vào (các) mô hình nền tảng mà bạn dự định sử dụng. Trong Bảng điều khiển AWS, hãy điều hướng đến Bedrock → Cấu hình Bedrock → Truy cập Mô hình. Chọn các mô hình cơ sở mà bạn muốn sử dụng, kiểm tra Trạng thái truy cập của chúng và nhấp vào Có sẵn để yêu cầu cho đến khi chúng hiển thị là “Đã cấp quyền truy cập”.

Để biết thêm chi tiết, vui lòng tham khảo mục Truy cập các mô hình nền tảng Amazon Bedrock.

Lưu ý: Hãy đảm bảo bạn xem lại Thỏa thuận Cấp phép Người dùng Cuối hoặc EULA trước khi sử dụng FM của bên thứ ba.

Mẫu mã ABAP dưới đây minh họa cách giao tiếp với Amazon Bedrock bằng giao dịch SE38 trong hệ thống SAP ABAP của bạn. Bản demo này sử dụng Amazon Nova Micro, một mô hình chỉ văn bản thuộc dòng Amazon Nova. Với độ trễ thấp, hiệu suất cao trong các tác vụ như hiểu ngôn ngữ, lập luận và hoàn thiện mã, cùng tốc độ tạo hơn 200 token mỗi giây, Nova Micro là lựa chọn lý tưởng cho các ứng dụng yêu cầu phản hồi nhanh chóng và tiết kiệm chi phí.

*&---------------------------------------------------------------------*

*& Report ZAWS_BEDROCK_DEMO

*&---------------------------------------------------------------------*

REPORT ZAWS_BEDROCK_DEMO LINE-SIZE 255.

PARAMETERS: sdkpfl TYPE /aws1/rt_profile_id OBLIGATORY DEFAULT 'DEMO',

            modelid type /aws1/bdrconversationalmodelid OBLIGATORY default 'us.amazon.nova-micro-v1:0' LOWER CASE.

DATA av_prompt(255).

DATA av_linno TYPE i.

CLASS lc_conversation DEFINITION.

  PUBLIC SECTION.

    METHODS constructor.

    METHODS write.

    METHODS prompt.

  PRIVATE SECTION.

    DATA ao_bdr TYPE REF TO /aws1/if_bdr.

    DATA at_messages TYPE /aws1/cl_bdrmessage=>tt_messages.

    METHODS write_multiline IMPORTING iv_text TYPE clike.

    METHODS append_message IMPORTING iv_role TYPE string

                                     iv_text TYPE clike.

ENDCLASS.

CLASS lc_conversation IMPLEMENTATION.

  METHOD constructor.

    TRY.

      DATA(lo_session) = /aws1/cl_rt_session_aws=>create( sdkpfl ).

      ao_bdr = /aws1/cl_bdr_factory=>create( lo_session ).

    CATCH /AWS1/CX_RT_SERVICE_GENERIC INTO DATA(lo_ex).

      WRITE : / lo_ex->get_text( ) COLOR COL_NEGATIVE.

    ENDTRY.

  ENDMETHOD.

  METHOD write.

    FORMAT RESET.

    SET BLANK LINES ON.

    IF lines( at_messages ) > 0.

      WRITE: / 'Conversation history' COLOR COL_HEADING.

      LOOP AT at_messages INTO DATA(lo_msg).

        DATA(lt_content) = lo_msg->get_content( ).

        DATA(lo_content) = lt_content[ 1 ]. " assume just one text stanza

        IF lo_msg->get_role( ) = 'user'.

          FORMAT color COL_TOTAL.

        ELSE.

          FORMAT color COL_NORMAL.

        ENDIF.

        write_multiline( lo_content->get_text( ) ).

      ENDLOOP.

      ULINE.

    ENDIF.

    WRITE: / 'Enter your next prompt and press F8:' COLOR COL_HEADING.

    CLEAR av_prompt.

    WRITE / av_prompt INPUT ON.

    av_linno = sy-linno.

*   Scroll down to command field

    DATA line TYPE i.

    line = sy-linno - sy-srows + 3.

    SCROLL LIST INDEX 1 TO LAST PAGE LINE line.

    SET CURSOR FIELD 'CMD' LINE sy-linno.

    CLEAR sy-lsind.

  ENDMETHOD.

  METHOD write_multiline.

    DATA: lv_text      TYPE string,

          lv_remaining TYPE string,

          lv_line      TYPE string,

          lv_width     TYPE i.

    lv_width = sy-scols - 2.

    SPLIT iv_text AT cl_abap_char_utilities=>newline INTO TABLE DATA(lt_text).

    LOOP AT lt_text ASSIGNING FIELD-SYMBOL(<text>).

      lv_remaining = <text>.

      WHILE strlen( lv_remaining ) > 0.

        IF strlen( lv_remaining ) <= lv_width.

          WRITE: / lv_remaining.

          CLEAR lv_remaining.

        ELSE.

          DATA(lv_pos) = lv_width.

          WHILE lv_pos > 0.

            IF lv_remaining+lv_pos(1) CA ' '.

              lv_line = lv_remaining(lv_pos).

              lv_remaining = lv_remaining+lv_pos.

              SHIFT lv_remaining LEFT DELETING LEADING space.

              EXIT.

            ENDIF.

            lv_pos = lv_pos - 1.

          ENDWHILE.

          IF lv_pos = 0.

            lv_line = lv_remaining(lv_width).

            lv_remaining = lv_remaining+lv_width.

          ENDIF.

          WRITE: / lv_line.

        ENDIF.

      ENDWHILE.

    ENDLOOP.

  ENDMETHOD.

  METHOD append_message.

    APPEND NEW /aws1/cl_bdrmessage( iv_role = iv_role it_content = VALUE /aws1/cl_bdrcontentblock=>tt_contentblocks( ( NEW /aws1/cl_bdrcontentblock( iv_text = CONV string( iv_text ) ) ) ) ) TO at_messages.

  ENDMETHOD.

  METHOD prompt.

    READ LINE av_linno FIELD VALUE av_prompt.

    DATA lo_ex TYPE REF TO cx_root.

      append_message( iv_role = 'user' iv_text = av_prompt ).

      TRY.

        DATA(lo_result) = ao_bdr->converse( EXPORTING iv_modelid = modelid

                                                      it_messages = at_messages

                                                      io_inferenceconfig = NEW /aws1/cl_bdrinferenceconf( iv_maxtokens = 2000 ) ).

        DATA(lt_blocks) = lo_result->get_output( )->get_message( )->get_content( ).

        LOOP AT lt_blocks ASSIGNING FIELD-SYMBOL(<block>).

          append_message( iv_role = 'assistant' iv_text = <block>->get_text( ) ).

        ENDLOOP. CATCH /aws1/cx_bdrresourcenotfoundex INTO lo_ex.

          WRITE : / lo_ex->get_text( ) COLOR COL_NEGATIVE.

        CATCH /aws1/cx_bdrvalidationex INTO lo_ex.

          WRITE : / lo_ex->get_text( ) COLOR COL_NEGATIVE.

          WRITE: / 'It may not be available in this region'.

        CATCH /aws1/cx_bdraccessdeniedex INTO lo_ex.

          WRITE : / lo_ex->get_text( ) COLOR COL_NEGATIVE.

          WRITE: / 'You will need to go to the Bedrock console and select the "Model Access" feature to request access to it'.

        ENDTRY.

  ENDMETHOD.

ENDCLASS.

INITIALIZATION.

  DATA(go_convo) = NEW lc_conversation( ).

START-OF-SELECTION.

  go_convo->write( ). AT PF8.

  go_convo->prompt( ).

  go_convo->write( ).

Ước tính chi phí

Sau đây là bảng phân tích chi phí ước tính dựa trên giá của AWS North Virginia (us-east-1) với giả định sử dụng 2 giờ mỗi ngày:

EC2 Instances

Bastion Host (m6a.large, Windows Server): 0,1784 đô la/giờ. Chi phí: ~0,36 đô la/ngày hoặc ~10,70 đô la/tháng.

SAP ABAP Host (r6a.xlarge, Linux): 0,2268 đô la/giờ. Chi phí: ~0,45 đô la/ngày hoặc ~13,61 đô la/tháng.

EBS Volumes

Windows Host (50 GB): 0,08 đô la/GB/tháng. Chi phí: 4,00 đô la/tháng.

SAP ABAP Host (150 GB): 0,08 đô la/GB/tháng. Chi phí: 12,00 đô la/tháng.

Data Transfer

Truyền dữ liệu ra: 1 GB đầu tiên được miễn phí. Tổng chi phí: 0,00 đô la.

Ước tính chi phí với Amazon Bedrock (Ví dụ)

Nếu bạn sử dụng AWS SDK cho SAP ABAP để tích hợp với Amazon Bedrock, chi phí sẽ phụ thuộc vào số lượng token đầu vào và đầu ra được xử lý bởi mô hình nền tảng đã chọn. Ví dụ này giả định xử lý 500.000 token đầu vào và 250.000 token đầu ra mỗi tháng với mô hình nền tảng như Amazon Nova Micro:

Token đầu vào (500.000): 0,000035 đô la/1.000 token. Chi phí: 0,0175 đô la/tháng.

Token đầu ra (250.000): 0,00014 đô la/1.000 token. Chi phí: 0,035 đô la/tháng.

Tổng cộng: 0,0525 đô la/tháng.

Lưu ý: Để biết chi tiết về token hóa và cách tính token, hãy tham khảo Bảng giá Amazon Bedrock và Hướng dẫn Token hóa.

Tổng cộng (30 ngày, 3 giờ/ngày):

  • Các phiên bản EC2: ~24,31 đô la.
  • Lưu trữ EBS (Hàng tháng): 16,00 đô la.
  • Truyền dữ liệu ra: 0,00 đô la.
  • Amazon Bedrock: 0,0525 đô la.

     Tổng cộng hàng tháng: ~40,36 đô la.

Lưu ý: Chi phí thực tế có thể thay đổi tùy theo mô hình sử dụng và cập nhật giá AWS. Luôn tham khảo Công cụ tính giá AWS để có ước tính chính xác nhất.

Dọn dẹp

Để tránh các khoản phí không cần thiết, hãy dọn dẹp các tài nguyên đã triển khai:

Chấm dứt các Phiên bản EC2 và xóa các Khối lượng EBS chưa sử dụng: Sử dụng Bảng điều khiển EC2 để chấm dứt các phiên bản, dừng tính phí tính toán. Đảm bảo xóa mọi khối lượng EBS được đính kèm nếu không còn cần thiết.

Xóa Cặp Khóa: Nếu đã tạo cặp khóa, hãy xóa cặp khóa đó khỏi Bảng điều khiển EC2 trong mục Cặp Khóa.

Xóa Cổng NAT (nếu đã tạo): Nếu sử dụng VPC tùy chỉnh với Cổng NAT để tải xuống bản vá, hãy xóa cổng đó thông qua Bảng điều khiển VPC để ngừng tính phí theo giờ và phí truyền dữ liệu.

Lưu ý: Cổng NAT phát sinh chi phí theo giờ và phí truyền dữ liệu. Tìm hiểu thêm trong Hướng dẫn Giá Cổng NAT.

Kết luận

AWS SDK for SAP ABAP cho phép các nhà phát triển ABAP khai thác hơn 240 dịch vụ AWS để giải quyết các vấn đề kinh doanh. Việc sử dụng hệ thống Bản dùng thử ABAP Cloud Developer của SAP kết hợp với AWS SDK for SAP ABAP là một cách nhanh chóng và dễ dàng để bắt đầu mở rộng hệ thống SAP của bạn với AWS.

Việc triển khai Bản dùng thử ABAP Cloud Developer trên AWS chưa bao giờ dễ dàng hơn thế, nhờ tính linh hoạt của các phiên bản AWS EC2 và sự tiện lợi của Docker. Chỉ với vài bước, bạn có thể thiết lập một môi trường ABAP an toàn và có khả năng mở rộng, sẵn sàng cho việc phát triển. Ngoài ra, AWS SDK cho SAP ABAP còn nâng cao các ứng dụng ABAP của bạn bằng cách tích hợp liền mạch với hơn 240 dịch vụ AWS, mở ra những khả năng mới cho tự động hóa, AI và hơn thế nữa.

Giờ là thời điểm hoàn hảo để bắt đầu triển khai SAP ABAP của riêng bạn trên AWS. Hãy bắt đầu ngay hôm nay bằng cách làm theo tài liệu và tài nguyên do AWS cung cấp, đồng thời khám phá các công cụ mạnh mẽ mà bạn có. Để biết thêm các bài thực hành và ví dụ, hãy xem Hội thảo AWS SDK cho SAP ABAP của chúng tôi. Bạn sẽ tìm thấy các ví dụ để tích hợp với các dịch vụ như Amazon S3,  Amazon SNS, Amazon Textract, AWS Lambda, and Amazon DynamoDB.

Phụ lục

Quyền IAM cho Người dùng Quản trị của Bạn

Sau khi tạo người dùng Quản trị đầu tiên (xem phần Yêu cầu, nơi bạn thiết lập người dùng IAM), hãy gán cho họ chính sách AdministratorAccess do AWS quản lý. Chính sách này cấp quyền truy cập đầy đủ vào các dịch vụ và tài nguyên AWS, cho phép họ quản lý môi trường của bạn một cách hiệu quả. Để biết các bước chi tiết, hãy tham khảo Chính sách và quyền trong AWS Identity and Access Management.

Lưu ý: Mặc dù chính sách AdministratorAccess thuận tiện cho việc thiết lập ban đầu, nhưng việc tuân thủ nguyên tắc đặc quyền tối thiểu là phương pháp tốt nhất. Chỉ cấp các quyền cần thiết cho các tác vụ cụ thể để tăng cường bảo mật trong môi trường AWS của bạn.

Quyền IAM cho Bản dùng thử ABAP Cloud Developer của Bạn

Với SDK cho SAP ABAP, các quyền SAP có thể được ánh xạ trực tiếp đến các vai trò IAM bằng cách sử dụng các cấu hình nhóm các thiết lập kỹ thuật cho các tình huống cụ thể. Cấu hình ABAP SDK xác định các thiết lập cần thiết cho một tình huống ứng dụng cụ thể. Bạn có thể tạo bao nhiêu cấu hình SDK tùy ý để phù hợp với các cấu hình người dùng hoặc tình huống ứng dụng khác nhau. Trong bản demo blog của chúng tôi, chúng tôi sẽ tạo một cấu hình có tên là ZBEDROCK để minh họa cách thức này đơn giản hóa việc cấp quyền và tích hợp với các dịch vụ AWS. Để biết thêm chi tiết, hãy truy cập AWS SDK cho Cấu hình Ứng dụng SAP ABAP.

Lưu ý: Mặc dù các cấu hình này quản lý quyền cấp người dùng, nhưng phiên bản EC2 đang chạy Bản dùng thử ABAP Cloud Developer yêu cầu vai trò IAM riêng. Vai trò này cho phép phiên bản EC2 đảm nhận vai trò hồ sơ người dùng (như ZBEDROCK), cho phép tương tác an toàn với các dịch vụ AWS.

Để tạo vai trò IAM cho hồ sơ người dùng để truy cập các dịch vụ Amazon Bedrock, hãy bắt đầu bằng cách điều hướng đến Bảng điều khiển IAM. Tạo một vai trò mới và đặt tên là ZBEDROCK. Gán chính sách được quản lý AmazonBedrockFullAccess cho vai trò này. Chính sách này đảm bảo rằng vai trò có các quyền cần thiết để tương tác với Amazon Bedrock ở chế độ chỉ đọc. Bây giờ, hãy điều hướng đến phần Mối quan hệ Tin cậy và sử dụng trình soạn thảo trực quan JSON để thêm các quyền sau:

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Principal": {

                "AWS": "arn:aws:iam::111111111111:root"

            },

            "Action": "sts:AssumeRole"

        }

    ]

}

Lưu ý: Hãy đảm bảo thay thế 11111111111 bằng ID Tài khoản AWS thực tế của bạn. Bạn có thể tìm thấy ID Tài khoản AWS của mình ở góc trên bên phải của Bảng điều khiển Quản lý AWS, bên dưới tên tài khoản hoặc địa chỉ email của bạn.

Trên phiên bản SAP của bạn, bạn cũng phải tạo một cấu hình ABAP SDK phù hợp với vai trò IAM này. Cấu hình ABAP này phải được cấu hình để phù hợp với vai trò ZBEDROCK, cho phép ánh xạ ủy quyền. Tham khảo Bước 2.3 của blog Bắt đầu với AWS SDK cho SAP ABAP để biết hướng dẫn chi tiết về quy trình cấu hình ứng dụng.

Sau khi đã tạo vai trò người dùng chức năng, bước tiếp theo là tạo vai trò IAM cho phép phiên bản EC2 dùng thử ABAP Cloud Developer đảm nhận vai trò ZBEDROCK. Bắt đầu bằng cách tạo một vai trò IAM mới có tên là abapcloudrole. Trong phần Thêm Quyền, hãy đính kèm chính sách được quản lý AmazonSSMManagedInstanceCore. Chính sách này cho phép phiên bản EC2 sử dụng AWS Systems Manager, cho phép bạn kết nối với phiên bản thông qua AWS Session Manager mà không cần truy cập SSH. Sau khi lưu vai trò, hãy quay lại bảng điều khiển IAM chính và chọn abapcloudrole mới tạo. Tiếp theo, trong phần Thêm Quyền, hãy nhấp vào nút Tạo Chính sách Nội tuyến. Mở tab trình soạn thảo JSON và nhập thủ công chính sách sau để cho phép phiên bản EC2 đảm nhận vai trò ZBEDROCK, đặt tên cho chính sách và lưu các thay đổi. Thao tác này hoàn tất việc thiết lập abapcloudrole.

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Action": "sts:AssumeRole",

            "Resource": [

                "arn:aws:iam::111111111111:role/zbedrock"

            ],

            "Effect": "Allow"

        }

    ]

}

Lưu ý: Hãy nhớ thay thế 111111111111 bằng ID Tài khoản AWS thực tế của bạn. Bạn có thể tìm thấy ID Tài khoản AWS ở góc trên bên phải của Bảng điều khiển Quản lý AWS, bên dưới tên tài khoản hoặc địa chỉ email của bạn.

Sau khi vai trò được tạo, hãy mở AWS CloudShell trong Bảng điều khiển Quản lý AWS và chạy các lệnh sau để gắn abapcloudrole mới tạo vào ABAP Cloud Developer của bạn. Trước tiên, chúng tôi sẽ xác định ID Phiên bản được liên kết với Phiên bản dùng thử ABAP Cloud Developer của bạn:

# aws ec2 describe-instances \

--query "Reservations[].Instances[].{InstanceId:InstanceId,Name:Tags[?Key=='Name']|[0].Value,PrivateIp:PrivateIpAddress,State:State.Name}" \

--output table

Bạn sẽ thấy một bảng liệt kê tất cả các phiên bản EC2 đã dừng và đang chạy, bao gồm ID phiên bản, thẻ, địa chỉ IP riêng và trạng thái của chúng. Tìm mục nhập cho Phiên bản dùng thử ABAP Cloud Developer của bạn và ghi lại ID phiên bản. Nó sẽ trông tương tự như sau: i-00000000x0xxxx000.

Sau khi có ID phiên bản, hãy sử dụng lệnh sau để gắn vai trò IAM abapcloudrole vào phiên bản của bạn:

# aws ec2 associate-iam-instance-profile \

--instance-id i-00000000x0xxxx000 \

--iam-instance-profile Name=abapcloudrole

Lưu ý: Thay thế i-00000000x0xxxx000 bằng ID phiên bản thực tế mà bạn đã xác định ở bước trước.

Quyền IAM cho Máy chủ Windows Bastion của bạn

Tạo một vai trò IAM mới có tên là winbastionrole. Trong phần Thêm Quyền, hãy đính kèm chính sách do AWS quản lý AmazonSSMManagedInstanceCore. Chính sách này cho phép phiên bản EC2 sử dụng AWS Systems Manager, cho phép kết nối an toàn thông qua AWS Session Manager mà không cần truy cập SSH. Chính sách này cũng cấp quyền truy cập vào Fleet Manager, cho phép bạn quản lý và giám sát Máy chủ Windows Bastion của mình một cách hiệu quả thông qua bảng điều khiển tập trung.

Cách Dừng và Khởi động Hệ thống Dùng thử ABAP Cloud Developer của Bạn

Dừng Hệ thống SAP

Để dừng container SAP một cách bình thường, hãy chạy lệnh sau:

# docker stop -t 7200 a4h

Khởi động Hệ thống SAP

Việc khởi động lại một container SAP đã dừng yêu cầu chế độ tương tác để giải quyết các sự cố tiềm ẩn trong quá trình khởi động. Sử dụng lệnh này:

# docker start -ai a4h

Lưu ý: -a đảm bảo bạn có thể xem đầu ra của container. -i cho phép bạn tương tác và phản hồi mọi sự cố khởi động. Bằng cách gắn vào container, bạn có thể theo dõi quá trình khởi động của hệ thống và khắc phục sự cố hiệu quả nếu cần.

TAGS: #saponaws, ABAP, RISE with SAP, SAP, SAP applications