Презентация подготовлена по материалам выступления Ксении Перепечиной на витебском MiniQ#19, который был проведен 10 октября 2019:
https://vk.com/miniq19;
https://communities.by/events/miniq-vitebsk-19.
Про доклад:
Мы побеседуем про Infrastructure As A Code на примере использования AWS Cloudformation и Serverless Application Model, про особенности этих сервисов и некоторые практические полезные советы по их использованию.
7. Template Structure
AWSTemplateFormatVersion: "version date"
Description:
String
Metadata:
template metadata
Parameters:
set of parameters
Mappings:
set of mappings
Conditions:
set of conditions
Transform:
set of transforms
Resources:
set of resources
Outputs:
set of outputs
AWSTemplateFormatVersion: "2010-09-09"
Description: "CloudFormation template Example"
Metadata:
Databases: "Information about databases"
Instances: "Information about EC2 instances"
Parameters:
KinesisShardCount:
Type: Number
Default: 3
MinValue: 1
MaxValue: 10
Environment:
Type: String
Default: qa
AllowedValues:
- "prod"
- "qa"
- "dev"
8. Template Structure
AWSTemplateFormatVersion: "version date"
Description:
String
Metadata:
template metadata
Parameters:
set of parameters
Mappings:
set of mappings
Conditions:
set of conditions
Transform:
set of transforms
Resources:
set of resources
Outputs:
set of outputs
Mappings:
TemplateMapping:
prod:
lambdaName: "ProdLambda"
apiGatewayStageName: "prod01"
qa:
lambdaName: "QaLambda"
apiGatewayStageName: "qa02"
dev:
lambdaName: "DevLambda"
apiGatewayStageName: "dev"
FunctionName:
Fn::FindInMap: ["TemplateMapping", !Ref Environment, "lambdaName"]
9. Template Structure
AWSTemplateFormatVersion: "version date"
Description:
String
Metadata:
template metadata
Parameters:
set of parameters
Mappings:
set of mappings
Conditions:
set of conditions
Transform:
set of transforms
Resources:
set of resources
Outputs:
set of outputs
Conditions:
ProdEnvironment: !Equals [!Ref Environment, "prod"]
Resources:
KinesisStream:
Type: "AWS::Kinesis::Stream"
Condition: ProdEnvironment
DeletionPolicy: Delete
Properties:
...
Outputs:
kinesisId:
Value: !Ref KinesisStream
Export:
Name: !Sub "${Environment}-kinesis-id"