@ask-utils/sam-boilerplate
v0.1.0
Published
Boilerplate generater for Alexa Skill backend by AWS CDK
Maintainers
Readme
SAM template Boilerplate for Alexa Skill Backend
Simply boilerplate for Alexa Skill Backend.
Usage
By CLI
Simple generate boilerplate by following command.
$ npx @ask-utils/sam-boilerplateAs script
const { generateBoilerplate } = require('sam-boilerplate');
const stack = generateBoilerplate({
format: 'yaml'
})You can get SAM template
Transform: 'AWS::Serverless-2016-10-31'
Parameters:
Stage:
Type: String
Default: production
Description: stage
Conditions:
IsProduction:
'Fn::Equals':
- Ref: Stage
- production
Resources:
LambdaRole3A44B857:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: 'sts:AssumeRole'
Effect: Allow
Principal:
Service:
'Fn::Join':
- ''
- - lambda.
- Ref: 'AWS::URLSuffix'
Version: '2012-10-17'
Path: /service-role/
AlexaSkillFunction:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: src
Handler: index.handler
Runtime: nodejs8.10
AutoPublishAlias:
Ref: Stage
DeploymentPreference:
Enabled: true
Type:
'Fn::If':
- IsProduction
- Linear10PercentEvery1Minute
- AllAtOnce
Events:
AlexaSkill:
Properties: {}
Type: AlexaSkill
Role:
'Fn::GetAtt':
- LambdaRole3A44B857
- Arn
SkillFunctionLogGroup:
Type: 'AWS::Logs::LogGroup'
Properties:
LogGroupName:
'Fn::Join':
- /
- - /aws/lambda
- Ref: AlexaSkillFunction
RetentionInDays: 14And you can easy to get SAM stack with IAM role for S3 and DynamoDB
console.log(generateBoilerplate({
format: 'yaml',
dbTableNames: ['test'],
s3BucketNames: ['brabra']
}))This is the result
Transform: 'AWS::Serverless-2016-10-31'
Parameters:
Stage:
Type: String
Default: production
Description: stage
Conditions:
IsProduction:
'Fn::Equals':
- Ref: Stage
- production
Resources:
LambdaPolicy7FF67BE6:
Type: 'AWS::IAM::Policy'
Properties:
PolicyDocument:
Statement:
- Action:
- 'dynamodb:PutItem'
- 'dynamodb:DeleteItem'
- 'dynamodb:GetItem'
Effect: Allow
Resource: 'arn:aws:dynamodb:*:*:table/test'
- Action:
- 's3:PutObject'
- 's3:GetObject'
- 's3:DeleteObject'
Effect: Allow
Resource: 'arn:aws:s3:::brabra/*'
Version: '2012-10-17'
PolicyName: BoilerPlateStackInlinePolicy
Roles:
- Ref: LambdaRole3A44B857
LambdaRole3A44B857:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: 'sts:AssumeRole'
Effect: Allow
Principal:
Service:
'Fn::Join':
- ''
- - lambda.
- Ref: 'AWS::URLSuffix'
Version: '2012-10-17'
Path: /service-role/
AlexaSkillFunction:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: src
Handler: index.handler
Runtime: nodejs8.10
AutoPublishAlias:
Ref: Stage
DeploymentPreference:
Enabled: true
Type:
'Fn::If':
- IsProduction
- Linear10PercentEvery1Minute
- AllAtOnce
Events:
AlexaSkill:
Properties: {}
Type: AlexaSkill
Role:
'Fn::GetAtt':
- LambdaRole3A44B857
- Arn
SkillFunctionLogGroup:
Type: 'AWS::Logs::LogGroup'
Properties:
LogGroupName:
'Fn::Join':
- /
- - /aws/lambda
- Ref: AlexaSkillFunction
RetentionInDays: 14Function
generateBoilerplate()
Generate SAM template.
const stack = generateBoilerplate( {
name: 'BoilerPlateStack',
codeUri: 'src',
handler: 'index.handler',
s3BucketNames: [],
dbTableNames: [],
productionStageName: 'production',
format: 'json'
}
)