AWSTemplateFormatVersion: "2010-09-09"

Description: Amazon Transcribe Post Call Analytics - PCA Server - Load sample audio files 

Transform: AWS::Serverless-2016-10-31

Parameters:

  SupportFilesBucketName:
    Type: AWS::SSM::Parameter::Value<String>
    Default: SupportFilesBucketName
    
  InputBucketName:
    Type: AWS::SSM::Parameter::Value<String>
    Default: InputBucketName

  InputBucketRawAudio:
    Type: AWS::SSM::Parameter::Value<String>
    Default: InputBucketRawAudio
  
  # DependsOn parameters used only to force conditional dependency from main stack
  DependsOnPCAServer:
    Type: String
    Default: NotRequired
  DependsOnPCADashboards:
    Type: String
    Default: NotRequired

Globals:
  Function:
    Runtime: python3.8
    MemorySize: 1024
    Timeout: 60

Resources:

  CopySamplesRole:
    Type: "AWS::IAM::Role"
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action:
              - "sts:AssumeRole"
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
      Policies:
        - PolicyName: s3-input-bucket-write-policy
          PolicyDocument:
            Statement:
              Effect: Allow
              Action:
                - s3:PutObject
              Resource:
                - !Sub arn:aws:s3:::${InputBucketName}/*
                - !Sub arn:aws:s3:::${SupportFilesBucketName}/*


  CopySamplesFunction:
    Type: "AWS::Lambda::Function"
    Properties:
      Code:  ./src
      Handler: copy-samples.lambda_handler
      Runtime: python3.8
      Timeout: 300
      Role: !GetAtt CopySamplesRole.Arn
      Environment:
        Variables:
          SUPPORTFILES_BUCKET_NAME: !Ref SupportFilesBucketName
          INPUT_BUCKET_NAME: !Ref InputBucketName
          INPUT_BUCKET_RAW_AUDIO: !Ref InputBucketRawAudio

  CopySamples:
    Type: "AWS::CloudFormation::CustomResource"
    Properties:
      ServiceToken: !GetAtt CopySamplesFunction.Arn
      # trigger update to re-copy files when params below change
      SamplesVersion: 0.3
      DependsOnPCADashboards: !Ref DependsOnPCADashboards 

Outputs:

  RolesForKMSKey:
    Value: !Join
      - ', '
      - - !Sub '"${CopySamplesRole.Arn}"'