{
  "AWSTemplateFormatVersion": "2010-09-09",
    "Parameters": {
      "myPublicSubnet1": {
        "Type": "String"
      },
      "myBastionSecGrp": {
        "Type": "String"
      },
      "myBastionInstProf": {
        "Type": "String"
      },
      "myDBOracleSecGrp": {
        "Type": "String"
      },
      "myRDSParamGroup": {
        "Type": "String"
      },     
      "parEc2KeyPair": {
        "Type": "String"
      },
      "parS3Bucket": {
        "Type": "String"
      },
      "parRDSMonitoringRoleARN": {
        "Type": "String"
      },
      "parLambdaRoleARN": {
        "Type": "String"
      },
      "parDbPassword": {
        "Type": "String"
      }
    },
    "Resources": {
      "myBastion": {
        "Type": "AWS::EC2::Instance",
        "Properties": {
          "DisableApiTermination": "false",
          "InstanceInitiatedShutdownBehavior": "stop",
          "ImageId": "ami-035be7bafff33b6b6",
          "InstanceType": "t2.micro",
          "KeyName": { "Ref" : "parEc2KeyPair" },
          "Monitoring": "true",
          "SecurityGroupIds" : [
            {
              "Ref" : "myBastionSecGrp"
            }
          ],
          "SubnetId": {
            "Ref": "myPublicSubnet1"
          },
          "IamInstanceProfile": {
            "Ref": "myBastionInstProf"
          },
          "UserData" : {"Fn::Base64" : { "Fn::Join" : ["",[
            "#!/bin/bash","\n",
            "yum install -y jq","\n",
            "yum install -y mysql","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/binaries/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm .","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/binaries/oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm .","\n",
            "rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm","\n",
            "rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/scripts/bash_profile.txt .","\n",
            "mv -f bash_profile.txt /home/ec2-user/.bash_profile","\n",
            "chown ec2-user:ec2-user /home/ec2-user/.bash_profile","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/scripts/oracle_tablespaceusage.sql /home/ec2-user/","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/scripts/oracle_statusdb.sql /home/ec2-user/","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/scripts/mysql_statusdb.sql /home/ec2-user/","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/scripts/oracle_checkparameter.sql /home/ec2-user/","\n",
            "aws s3 cp s3://alexards-virginia-bucket-2019/scripts/oracle_show_top_session_by_cpu.sql /home/ec2-user/","\n",
            "chown ec2-user:ec2-user /home/ec2-user/*.sql","\n",
            "#End UserData"]]}
          }
        }
      },
      "myDBOracle": {
        "Type" : "AWS::RDS::DBInstance",
        "Properties" :
        {
          "AllocatedStorage" : "20",
          "BackupRetentionPeriod" : "1",
          "CharacterSetName" : "AL32UTF8",
          "CopyTagsToSnapshot" : true,
          "DBInstanceClass" : "db.r4.xlarge",
          "DBInstanceIdentifier" : "db12201j",
          "DBName" : "DB12201J",
          "DBParameterGroupName" : { "Ref" : "myRDSParamGroup" },
          "DBSubnetGroupName" : "alexardsdbsubnetgrp",
          "EnableIAMDatabaseAuthentication" : false,
          "EnablePerformanceInsights" : true,
          "Engine" : "oracle-ee",
          "EngineVersion" : "12.2.0.1.ru-2018-10.rur-2018-10.r1",
          "LicenseModel" : "bring-your-own-license",
          "MasterUsername" : "orclsys",
          "MasterUserPassword" : { "Ref" : "parDbPassword" },
          "MonitoringRoleArn" : { "Ref" : "parRDSMonitoringRoleARN" },
          "MonitoringInterval" : 60,
          "MultiAZ" : true,
          "OptionGroupName" : "default:oracle-ee-12-2",
          "Port" : "1521",
          "PreferredBackupWindow" : "22:00-22:30",
          "PreferredMaintenanceWindow" : "tue:20:00-tue:20:30",
          "PubliclyAccessible" : false,
          "StorageEncrypted" : false,
          "StorageType" : "gp2",
          "VPCSecurityGroups" : [
            {
              "Ref" : "myDBOracleSecGrp"
            }
          ],
        }
      },
      "myLambda": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
          "Code": {
            "S3Bucket": { "Ref" : "parS3Bucket" },
            "S3Key": "scripts/lambda_function.zip"
          },
          "FunctionName" : "alexardsdemo",
          "Environment": {
            "Variables": { 
              "Notifications":"off" 
            },
          },
          "Role": { "Ref" : "parLambdaRoleARN" },
          "Timeout": 60,
          "Handler": "lambda_function.lambda_handler",
          "Runtime": "python3.6",
          "MemorySize": 128
        }
      }
    },
    "Description": "alexards_compute"
}