aws(学习笔记第二十四课) 使用sam开发step functions

aws(学习笔记第二十四课)

  • 使用sam开发step functions

学习内容:

  • 生成samstep functions实例程序
  • 什么是SAM amazon Serverless Application Model
  • SAM程序结构
  • SAM执行程序

1. 生成samstep functions实例程序

  1. 参照文档
    这里参照AWS的官方文档SAM amazon Serverless Application Model
  2. 什么是SAM amazon Serverless Application Model
    • 整体架构
      SAM就是一个基于Cloudformation的应用程序框架,主要目的正如名字(Serverless Application Model),方便进行Serverless Application的开发。
      开发的一般步骤如下:
      • 开发lambdaserverless application
      • 利用step functionsserverless application。当然,其中可以调用lambda
      • 之后利用上面的serverless application,进行Cloudformationtemplate定义。
      • 最后经过sam buildsam deploy部署到AWS的环境中。
        在这里插入图片描述

3. SAM程序结构

  1. 开始使用SAM
    • 这里使用SAM提供的实例程序进行练习
      • HourlyTradingSchedule是一个AWS EventBridge的规则,这里定义了股票投资程序的调用周期。类似于linuxcron job
      • StockTradingStateMachine就是股票交易的StateMachine
      • 股票交易的StateMachine里面包括三个lambda
        • StockCheckerFunction这里随机产生股票的价格(进行简单的股票市场的模拟)
        • 中间其实有一个choice state,进行判断。这里没有画出来
        • 之后根据判断,如果股票高过某个固定价格,那么进行StockBuyerFunction的调用
        • 如果股票高过某个固定价格,那么进行StockSellerFunction的调用
        • 最后,不管买还是卖的操作,都进行TransactionTable的写入(使用DynamoDB记录交易)
          在这里插入图片描述
    • 进行实际代码的实验
      • 实验环境
        这里还是使用非常给力的工具CloudShell
        在这里插入图片描述
      • 构建代码
        • 创建代码的父路径
          mkdir demo-sam
          cd demo-sam
          
        • 使用sam生成股票实例代码(这个代码是sam自带的)
          在这里插入图片描述
          之后进行一些runtime的相关设定。
          在这里插入图片描述
          到这里,代码就会被生成出来,而且cloudformationtemplate文件都是yaml格式的。
          在这里插入图片描述
    • cloudshell环境中的代码通过S3取到本地
      • 创建传输文件的S3 bucket
        因为cloudshell不是很容易和本地传输文件,所以使用S3 bucket
        在这里插入图片描述
      • SAM代码打包,copyS3 bucket
        tar zcvf demo-sam.tar.gz demo-sam/
        aws s3 cp demo-sam.tar.gz s3://finlay-cloudshell/
        
        在这里插入图片描述
      • SAM init生成的实例程序代码,下载到本地
        在这里插入图片描述
        本地文件夹如下所示。
        在这里插入图片描述
      • SAM init生成的实例程序代码使用vscode打开(这里单纯的可以更加容易编辑代码)
        • template文件
          AWSTemplateFormatVersion: '2010-09-09'
          Transform: AWS::Serverless-2016-10-31
          Description: |
            demo-sam
            Sample SAM Template for demo-sam
          
          Resources:
            StockTradingStateMachine:
              Type: AWS::Serverless::StateMachine # More info about State Machine Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html
              Properties:
                DefinitionSubstitutions:
                  StockCheckerFunctionArn: !GetAtt StockCheckerFunction.Arn
                  StockSellerFunctionArn: !GetAtt StockSellerFunction.Arn
                  StockBuyerFunctionArn: !GetAtt StockBuyerFunction.Arn
                  DDBPutItem: !Sub arn:${
                     AWS::Partition}:states:::dynamodb:putItem
                  DDBTable: !Ref TransactionTable
                Events:
                  HourlyTradingSchedule:
                    Type: Schedule # More info about Schedule Event Source: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-statemachine-schedule.html
                    Properties:
                      Description: Schedule to run the stock trading state machine every hour
                      Enabled: false # This schedule is disabled by default to avoid incurring charges.
                      Schedule: rate(1 hour)
                Policies:
                  # Find
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值