iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Cloud Native

AWS AI交易室實戰系列 第 25

Day 25 - 演算法交易 資源環境配置

  • 分享至 

  • xImage
  •  

~ 藍圖決定了發展 ~
code github: https://github.com/slindevel/modern-aws-marathon

我們今天來一步一步建置整個環境所需要的資源配置,使用 cloudformation

配置 VPC

幾乎不論何種資源服務部署至 AWS 都需要配置 VPC 讓我們得以控制其網路存取環境,這次我們也不例外,我們建立一個傳統配置的 VPC,可以存取網際網路,也有私有子網隱藏我們的服務:(相關程式碼:Day25/vpc.yaml)
vpc
這個配置幾乎可以算是一個新系統的標準配置了,注意其中的 NAT, EIP 是要收費的

詳細說明可以參考 Day 5 - 建立 VPC 的說明

配置 S3 Bucket,使用指令 aws s3 mb s3://<algo-bucket-name>
在之後的 cloudformation 中會加入以下 code 來參照到這個 S3 bucket

Parameters:
  S3Bucket:
      Description: Please specify your S3 bucket
      Type: String
      Default: <algo-bucket-name>

配置 ECR

ECR:
    Type: AWS::ECR::Repository
    Properties: 
      RepositoryName: !Sub ${EnvironmentName}_ecr

配置 SageMaker

AlgorithmicTradingInstance:
    Type: AWS::SageMaker::NotebookInstance
    Properties:
      InstanceType: ml.t2.large
      DefaultCodeRepository: https://github.com/aws-samples/algorithmic-trading
      RoleArn: !GetAtt 'SageMakerExecutionRole.Arn'

配置 SageMaker 執行角色權限:

SageMakerExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - sagemaker.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
        - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess
        - arn:aws:iam::aws:policy/AmazonAthenaFullAccess
        - arn:aws:iam::aws:policy/AWSCloudFormationReadOnlyAccess 
        - arn:aws:iam::aws:policy/AmazonECS_FullAccess
        - arn:aws:iam::aws:policy/AmazonKinesisReadOnlyAccess
        - !Ref 'S3Policy'

其中 S3Policy內容如下:

S3Policy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      Description: S3 Permission
      Path: /
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Action:
              - s3:GetObject
              - s3:PutObject
              - s3:DeleteObject
              - s3:ListBucket
            Resource:
              - !Sub
                - arn:aws:s3:::${S3Bucket}/*
                - S3Bucket: !Ref 'S3Bucket'

配置 Glue & Glue Database & Athena 相關(程式碼請參考 Day25/glue.yaml)

在配置之前請先依照 Day 17 所述,把 AWS Data Exchange 的資料倒到 S3Bucket 跟目錄下面
這個 glue.yaml 配置了以下項目(採用 ChatGPT 的解釋)
- GlueDatabase: 創建了一個 AWS Glue 數據庫,名稱為 "algo_data",用於存儲數據表。
- GlueHistDataDailyGlueHistDataIntraday: 這些資源是 AWS Glue 表,用於描述每日價格數據和分鐘價格數據的結構。它們定義了數據的格式、位置以及相關的配置。
- AthenaWorkgroup: 創建了一個 Athena 工作組,名稱為 "MyWorkGroup",用於運行 Athena 查詢。這個工作組允許啟用 Requester Pays 功能,並定義了查詢結果的輸出位置。
- AlgoHistDataDailyAlgoHistDataIntraday: 這些資源是 Athena 命名查詢,用於定義要在 Athena 中運行的 SQL 查詢。這些查詢可以用於查詢先前定義的 Glue 表中的數據。
- GlueTableFeedDB: 創建了一個 AWS Glue 表,用於描述德國波爾瑟交易所(Deutsche Boerse Xetra)的市場數據的結構。這個表還定義了分區鍵,允許根據日期對數據進行分區。

大功告成,最主要的設定是以 SageMaker 為核心,資料存於 S3,透過 Glue & Athena 存取資料,架構在傳統 VPC 架構上的概念寫成的,另外還有 ECS 的配置,如果我們選擇在 SageMaker 裡面 local 端訓練模型,則不需要配置 ECS 資源就可以建立我們的模型,而 ECS 服務則是等到要上線部署的時候會需要,到時我們再一並設定囉

參考資料:

https://github.com/aws-samples/algorithmic-trading
https://aws.amazon.com/tw/blogs/industries/algorithmic-trading-on-aws-with-amazon-sagemaker-and-aws-data-exchange/
https://chat.openai.com/


上一篇
Day 24 - 演算法交易 - AWS 資源架構
下一篇
Day 26 - 演算法交易 - 資料準備
系列文
AWS AI交易室實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言