https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-cloudwatch-events-s3.html


Create functions

Create State Machine

Add S3 Buckets for Event to occur

Add S3 Bucket for State Machine Logging Storage

Add a Cloud Trail

Add a Cloud Watch Event


IAM Roles & Polcies

Lambda Functions need AWSLambdaFullAccess policy to run

State Machine needs AWSLamdaFullAccess policy to run


Printing Event when file is uploaded will provide JSON Output Record you can parse:


{
  "version": "0",
  "id": "88af1952-66fe-5fa0-ab59-9ff7a2a9e1a5",
  "detail-type": "AWS API Call via CloudTrail",
  "source": "aws.s3",
  "account": "811315030605",
  "time": "2019-07-16T02:16:12Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "eventVersion": "1.05",
    "userIdentity": {
      "type": "IAMUser",
      "principalId": "AIDAIK2YZTSXMVLFWRMH2",
      "arn": "arn:aws:iam::811315030605:user/jbarnett",
      "accountId": "811315030605",
      "accessKeyId": "ASIA3ZZRE5JGU4DSXPUR",
      "userName": "jbarnett",
      "sessionContext": {
        "attributes": {
          "creationDate": "2019-07-15T19:28:42Z",
          "mfaAuthenticated": "false"
        }
      },
      "invokedBy": "signin.amazonaws.com"
    },
    "eventTime": "2019-07-16T02:16:12Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "PutObject",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "156.68.176.184",
    "userAgent": "signin.amazonaws.com",
    "requestParameters": {
      "X-Amz-Date": "20190716T021612Z",
      "bucketName": "sdt-data",
      "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
      "x-amz-acl": "private",
      "X-Amz-SignedHeaders": "content-md5;host;x-amz-acl;x-amz-storage-class",
      "Host": "s3.amazonaws.com",
      "X-Amz-Expires": "300",
      "key": "ceres/SYN1deg-1Hour/Terra-Aqua-MODIS_Edition4A/2018/06/CER_SYN1deg-1Hour_Terra-Aqua-MODIS_Edition4A_407406.20180601.hdf",
      "x-amz-storage-class": "STANDARD"
    },
    "responseElements": null,
    "additionalEventData": {
      "SignatureVersion": "SigV4",
      "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
      "bytesTransferredIn": 354,
      "AuthenticationMethod": "QueryString",
      "x-amz-id-2": "BLGSosTkdNrHZwL+fBXujdFxW4US+IHJjA0/lH+rdcwyHsbwzNQq66FkFbDr4YEZRG+t3NjBXl8=",
      "bytesTransferredOut": 0
    },
    "requestID": "3952169B4B65B650",
    "eventID": "1a4f25e6-cb0a-4971-afd3-329d1dc0b68c",
    "readOnly": false,
    "resources": [
      {
        "type": "AWS::S3::Object",
        "ARN": "arn:aws:s3:::sdt-data/ceres/SYN1deg-1Hour/Terra-Aqua-MODIS_Edition4A/2018/06/CER_SYN1deg-1Hour_Terra-Aqua-MODIS_Edition4A_407406.20180601.hdf"
      },
      {
        "accountId": "811315030605",
        "type": "AWS::S3::Bucket",
        "ARN": "arn:aws:s3:::sdt-data"
      }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "811315030605"
  }
}