service: serverless-c24-api
plugins:
-
serverless-step-functions
-
serverless-pseudo-parameters
provider:
name: aws
runtime: nodejs12.x
stage: dev
region: us-east-1
profile: default
timeout: 10
memory: 128
iamRoleStatement:
- Effect: "Allow"
Action:
# - dynamodb:DescribeTable
# - dynamodb:Query
# - dynamodb:Scan
# - dynamodb:GetItem
# - dynamodb:PutItem
# - dynamodb:UpdateItem
# - dynamodb:DeleteItem
- "s3:ListBucket"
- "s3:GetObject"
- "s3:PutObject"
- "states:ListStateMachines"
- "states:StartExecution"
Resource:
- "arn:aws:s3:::auto-c24-api-bucket/*"
- "arn:aws:states:*:*:*"
functions:
writeToThequeue: # pre-condition lambda
handler: handler.writeToThequeue
events:
- s3:
bucket: auto-c24-api-bucket
event: s3:ObjectCreated:*
existing: true
retrieveFromQueue:
handler: app.retrieveFromQueue
reservedConcurrency: 10
environment:
statemachine_arn: ${self:resources.Outputs.MyStateMachine.Value}
events:
- sqs: arn:aws:sqs:us-east-1:204378596018:auto-c24-api-bucket
bellProcessor:
handler: bell.processor
attProcessor:
handler: att.processor
rogersProcessor:
handler: rogers.processor
tisProcessor:
handler: tis.processor
resources:
Outputs:
MyStateMachine:
Description: The ARN of the state machine
Value:
Ref: MyStateMachine
Resources:
S3OperationBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: auto-c24-api-bucket
MyQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: auto-c24-api-bucket
MyAccountTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${self:provider.stage}-account
AttributeDefinitions:
- AttributeName: sim
AttributeType: S
KeySchema:
- AttributeName: sim
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
stepFunctions:
stateMachines:
activateDeactivateSim:
name: myStateMachine
definition:
Comment: "How to activate and deactivate sim for different provider"
StartAt: Choosesim
States:
Choosesim:
Type: Choice
Choices:
- Variable: "$.mySimPattern"
StringEquals: 8930269
Next: ProcessBell
- Variable: "$.mySimPattern"
StringEquals: 8930272
Next: ProcessRogers
- Variable: "$.mySimPattern"
StringEquals: 8901410
Next: ProcessATT
Default: DefaultState
ProcessBell:
Type: Task
Resource: arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:${self:service}-${opt:stage}-bellProcessor
TimeOutSeconds: 60
Next: SNSNotification
ProcessRogers:
Type: Task
Resource: arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:${self:service}-${opt:stage}-rogersProcessor
TimeOutSeconds: 60
Next: SNSNotification
ProcessATT:
Type: Task
Resource: arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:${self:service}-${opt:stage}-attProcessor
TimeOutSeconds: 60
Next: SNSNotification
DefaultState:
Type: Fail
SNSNotification:
Type: Succeed