-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Closed
Labels
Description
AWSTemplateFormatVersion: '2010-09-09'
Description: lambda-dynamodb
Transform: AWS::Serverless-2016-10-31
Resources:
getAllItemsFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/get-all-items.getAllItemsHandler
Runtime: nodejs14.x
MemorySize: 128
Timeout: 100
Description: A simple example includes a HTTP get method to get all items from a DynamoDB table.
Environment:
Variables:
SAMPLE_TABLE: !Ref SampleTable
Events:
Api:
Type: Api
Properties:
Path: /
Method: GET
getByIdFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/get-by-id.getByIdHandler
Runtime: nodejs14.x
MemorySize: 128
Timeout: 100
Description: A simple example includes a HTTP get method to get one item by id from a DynamoDB table.
Environment:
Variables:
SAMPLE_TABLE: !Ref SampleTable
Events:
Api:
Type: Api
Properties:
Path: /{id}
Method: GET
putItemFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/put-item.putItemHandler
Runtime: nodejs14.x
MemorySize: 128
Timeout: 100
Description: A simple example includes a HTTP post method to add one item to a DynamoDB table.
Environment:
Variables:
SAMPLE_TABLE: !Ref SampleTable
Events:
Api:
Type: Api
Properties:
Path: /
Method: POST
SampleTable:
Type: AWS::Serverless::SimpleTable
Properties:
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 2
WriteCapacityUnits: 2
LambdaToDynamoConnectorPut:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: putItemFunction
Destination:
Id: SampleTable
Permissions:
- Write
LambdaToDynamoConnectorGetById:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: getByIdFunction
Destination:
Id: SampleTable
Permissions:
- Read
LambdaToDynamoConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: getAllItemsFunction
Destination:
Id: SampleTable
Permissions:
- Read
StateMachine:
Type: AWS::Serverless::StateMachine
Properties:
Name: !Sub ${AWS::StackName}-StateMachine
Definition:
StartAt: Start
States:
Start:
Type: Pass
Next: TaskState
TaskState:
Comment: Stackery creates an attachment point for each 'Task' state
Type: Task
Next: Done
Resource: arn:aws:states:::lambda:invoke
Parameters:
FunctionName: ${FunctionArn}
Payload.$: $
Done:
Type: Pass
End: true
Logging:
Level: ALL
IncludeExecutionData: true
Destinations:
- CloudWatchLogsLogGroup:
LogGroupArn: !GetAtt StateMachineLogGroup.Arn
Policies:
- AWSXrayWriteOnlyAccess
- Statement:
- Effect: Allow
Action:
- logs:CreateLogDelivery
- logs:GetLogDelivery
- logs:UpdateLogDelivery
- logs:DeleteLogDelivery
- logs:ListLogDeliveries
- logs:PutResourcePolicy
- logs:DescribeResourcePolicies
- logs:DescribeLogGroups
Resource: '*'
- LambdaInvokePolicy:
FunctionName: !Ref Function
Tracing:
Enabled: true
Type: STANDARD
DefinitionSubstitutions:
FunctionArn: !GetAtt Function.Arn
StateMachineLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub /stackery/stateMachine/${AWS::StackName}-StateMachine
Function:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${AWS::StackName}-Function
Description: !Sub
- Stack ${StackTagName} Environment ${EnvironmentTagName} Function ${ResourceName}
- ResourceName: Function
CodeUri: src/Function
Handler: index.handler
Runtime: nodejs14.x
MemorySize: 3008
Timeout: 30
Tracing: Active
Policies:
- AWSXrayWriteOnlyAccess
Function2:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${AWS::StackName}-Function2
Description: !Sub
- Stack ${StackTagName} Environment ${EnvironmentTagName} Function ${ResourceName}
- ResourceName: Function2
CodeUri: src/Function2
Handler: index.handler
Runtime: nodejs14.x
MemorySize: 3008
Timeout: 30
Tracing: Active
Policies:
- AWSXrayWriteOnlyAccess
Outputs:
WebEndpoint:
Description: API Gateway endpoint URL for Prod stage
Value: !Sub https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/
Parameters:
StackTagName:
Type: String
Description: Stack Name
EnvironmentTagName:
Type: String
Description: Environment Name