Skip to content

StepFunctions

Task

Invoke Lambda

"GetLinks": {
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke",
  "Parameters": {
    "FunctionName": "arn:aws:lambda:eu-central-1:951313074793:function:test-api-branch_io-links:$LATEST",
    "Payload": {
      "Input.$": "$"
    }
  },
  "OutputPath": "$.Payload",
  "Next": "SendLinkToSQSQueue"
}

DynamoDB

Put Item

"StoreDeviceInDynamoDB": {
  "Type": "Task",
  "Resource": "arn:aws:states:::dynamodb:putItem",
  "Parameters": {
    "TableName": "Devices",
    "Item": {
      "DeviceID": {
        "N.$": "$.DeviceID"
      },
      "Name": {
        "S.$": "$.Name"
      }
    }
  },
  "Retry": [ {
     "ErrorEquals": [ "States.Timeout" ],
     "IntervalSeconds": 3,
     "MaxAttempts": 2,
     "BackoffRate": 1.5
  } ]
}

Map

SQS: Callback Pattern

"SendLinkToSQSQueue": {
  "Type": "Map",
  "MaxConcurrency": 20,
  "ItemsPath": "$",
  "Iterator": {
    "StartAt": "Send Link to SQS",
    "States": {
      "Send Link to SQS": {
        "Type": "Task",
        "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
        "Parameters": {
          "QueueUrl": "https://sqs.eu-central-1.amazonaws.com/951313074793/test--branch_io-queue",
          "MessageBody": {
            "Url.$": "$.MessageBody",
            "TaskToken.$": "$$.Task.Token"
          },
          "MessageAttributes.$": "$.MessageAttributes"
        },
        "End": true
      }
    }
  },
  "Next": "World"
}