SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
AWS CloudFormation Under the Hood
Adam Thomas, Amazon Web Services
DJ Edwards, Amazon Web Services
November 14, 2013

© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
So, what is CloudFormation?
This talk will not answer that question
• DMG201 - Zero to Sixty: AWS
CloudFormation
– Has already happened, but will be available online

• Hands-on Labs
– Working with CloudFormation
– Launching and Managing a Web Application with
CloudFormation
– Creating an Amazon Virtual Private Cloud (VPC) with
CloudFormation
This talk will answer these questions:
•
•
•
•

What is a custom resource?
What can they do for me?
How do I write one for myself?
What’s new in cfn-init?
Custom Resources
What can custom resources do?
•
•
•
•

Add New Resources
Interact with the CloudFormation Workflow
Inject dynamic data into a stack
Extend the capabilities of existing resources
What is a custom resource?
• An SNS topic…
• …hooked up to a service that can:
– Respond to JSON messages from CloudFormation
– Manage the lifecycle of resources
How are custom resources defined?
"myCustomResource" : {
"Type": "Custom::MyCustomResource",
"Version" : "1.0",
"Properties" : {
"ServiceToken": "arn:aws:sns:us-east-1:84969EXAMPLE:CRTest",
"CustomProperty" : "foo"
}
}
How are custom resources defined?
"myCustomResource" : {
"Type": “Custom::MyCustomResource",
"Version" : "1.0",
"Properties" : {
"ServiceToken": "arn:aws:sns:us-east-1:84969EXAMPLE:CRTest",
"CustomProperty" : "foo"
}
}
How are custom resources defined?
"myCustomResource" : {
"Type": “Custom::MyCustomResource",
"Version" : "1.0",
"Properties" : {
"ServiceToken": "arn:aws:sns:us-east-1:84969EXAMPLE:CRTest",
"CustomProperty" : "foo"
}
}
What can custom resources do?
•
•
•
•

Add New Resources
Interact with the CloudFormation Workflow
Inject dynamic data into a stack
Extend the capabilities of existing resources
Adding New Resources
• Something that can be Created, Updated,
and/or Deleted
• Can be a software resource
– Database schema, Docker container
Meet Steve
• Steve loves RDBMS
• The schema is very
important to Steve – it
defines his application
• Running SQL scripts by
hand is Steve’s worst
nightmare
Steve’s requirements
• The Template should
define the schema
explicitly
• The schema should be
updated by updating the
stack
• If the update fails, the
schema should roll back
Steve’s solution
• Steve is very familiar with
Liquibase
• Liquibase supports JSON
formatting!
• Steve writes a custom
resource with inline JSON
schema
DB Schema Template Snippet
"appSchema" : {
"Type" : "Custom::DatabaseSchema",
"Properties" : {
"databaseChangeLog" :
[{ "changeSet" : {
"id" : "1",
"author" : “adam",
"changes" :
[{ "createTable" : {
"tableName" : "person",
"columns" : …
DB Schema Template Snippet
"appSchema" : {
"Type" : "Custom::DatabaseSchema",
"Properties" : {
"databaseChangeLog" :
[{ "changeSet" : {
"id" : "1",
"author" : “adam",
"changes" :
[{ "createTable" : {
"tableName" : "person",
"columns" : …
DB Schema Demo
What can custom resources do?
•
•
•
•

Add New Resources
Interact with the CloudFormation Workflow
Inject dynamic data into a stack
Extend the capabilities of existing resources
Interacting with the CloudFormation
Workflow
• Use custom resources as a hook into
create/update/delete workflows
• Built-in example: WaitCondition
• Can react to workflow, halt it, or fail it under
certain conditions
Meet Frank
• Frank analyzes data
stored on EBS
• Frank uses
CloudFormation’s
Snapshot on Delete
feature to save his
analysis results
Frank’s requirements
• Frank wants a consistent
EBS snapshot when the
stack is deleted
• Before CloudFormation
attempts to detach his EBS
volume, it should:
– Cleanly shut down his
analysis service
– Unmount the volume
Why is this a challenge?
• CloudFormation can detach volumes without
any issues – if you never mount them
• What CloudFormation does not do, it cannot
undo
• Custom resources let you model your steps
within the workflow
Frank’s solution
• 3 simple bash scripts
• A “local” Custom
Resource – runs directly
on the instance
• Create and Update mount
the drive; Delete
unmounts it.
Volume Mount Template Snippet
“VolumeAttach" : {
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" : …
},

"VolumeMount" : {
"Type" : "Custom::VolumeMount",
"Properties" : {
"Device" : “/dev/xvdh”,
“MountPoint” : “/mnt/analysis”
}
}
Volume Mount Template Snippet
“VolumeAttach" : {
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" : …
},

"VolumeMount" : {
"Type" : "Custom::VolumeMount",
"Properties" : {
"Device" : “/dev/xvdh”,
“MountPoint” : “/mnt/analysis”
}
}
Volume Mount Template Snippet
“VolumeAttach" : {
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" : …
},

"VolumeMount" : {
"Type" : "Custom::VolumeMount",
"Properties" : {
"Device" : “/dev/xvdh”,
“MountPoint” : “/mnt/analysis”
}
}
Volume Mount Template Snippet
“VolumeAttach" : {
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" : …
},

"VolumeMount" : {
"Type" : "Custom::VolumeMount",
"Properties" : {
"Device" : “/dev/xvdh”,
“MountPoint” : “/mnt/analysis”
}
}
Volume Mount Demo
What can custom resources do?
•
•
•
•

Add New Resources
Interact with the CloudFormation Workflow
Inject dynamic data into a stack
Extend the capabilities of existing resources
Injecting Dynamic Data into a Stack
• Parameters are standard route into a stack
– Allow free-form user input
– Constrainable, but on a per-stack level

• Mappings are traditionally used to map humanreadable input to static values
– AMI IDs, instance type architectures, regional URLs
Injecting Data into a Stack
• Custom resources allow for centralized selection
logic
• Lookups in:
–
–
–
–

S3
DynamoDB/RDS
APIs (EC2.DescribeImages, etc)
Third Party datastore
Meet Bill
• Bill is the head of operations
at a large tech firm
• Each of Bill’s 44 services
must run on a fully validated
and tested AMI
• Bill keeps track of these
AMIs in a sweet multitabbed Excel spreadsheet
Bill’s requirements
• New AMIs should be
rolled out centrally
• Bill does not want to edit
the Mappings section of
44 templates for every
release
• Bill wants to audit where
AMIs are being used
Bill’s solution
• A manifest of named,
approved AMIs stored in a
versioned S3 file
• A simple python script that
looks up the AMI ID by
region and os,
architecture, and version
AMI Lookup Template Snippet
"AMILookup": {
"Type": "Custom::AmiLookup",
"Properties": {
"os": "ubuntu",
"version": “13.04",
"arch": "64"
}
},
"WebServer": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId" : { “Ref" : “AMILookup” }
}
}
AMI Lookup Template Snippet
"AMILookup": {
"Type": "Custom::AmiLookup",
"Properties": {
"os": "ubuntu",
"version": "13.04",
"arch": "64"
}
},
"WebServer": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId" : { “Ref" : “AMILookup” }
}
}
AMI Lookup Template Snippet
"AMILookup": {
"Type": "Custom::AmiLookup",
"Properties": {
"os": "ubuntu",
"version": "13.04",
"arch": "64"
}
},
"WebServer": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId" : { “Ref" : “AMILookup” }
}
}
AMI Lookup Demo
What can custom resources do?
•
•
•
•

Add New Resources
Interact with the CloudFormation Workflow
Inject dynamic data into a stack
Extend the capabilities of existing resources
Extending Resource Capabilities
• CloudFormation is concerned only with Create,
Update, and Delete
• Some services, like AutoScaling, have lifecycles
outside of these phases
• No place in template to encapsulate longrunning, resource-based business logic
Meet Tom
• Tom manages a fleet of
virtual desktops in AWS
• Tom uses AutoScaling for
consistent fleet size
• Tom’s users use VNC to
connect to their virtual
desktops
Tom’s requirements
• Servers should be named
using his clever, easy-toremember Simpsons
scheme
• Names should be
recycled as machines are
replaced
Tom’s solution
• Python scripts respond to
Auto Scaling notifications
to manage Route53
records
• Names are managed in a
simple DynamoDB table
Auto Scaled DNS Snippet (1 of 2)
"DNSProcessor" : {
"Type": "Custom::DNSProcessor",
"Properties": {
"HostedZoneId" : { "Ref" : "HostedZone" },
"DNSPattern" : {"Fn::Join" : [".",[“{{simpsons_name}}", { "Ref" :
"AWS::Region" }, “{{hosted_zone_name}}"]] }
}
},
Auto Scaled DNS Snippet (1 of 2)
"DNSProcessor" : {
"Type": "Custom::DNSProcessor",
"Properties": {
"HostedZoneId" : { "Ref" : "HostedZone" },
"DNSPattern" : {"Fn::Join" : [".",[“{{simpsons_name}}", { "Ref" :
"AWS::Region" }, “{{hosted_zone_name}}"]] }
}
},
Auto Scaled DNS Snippet (2 of 2)
"WebServerGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"NotificationConfiguration" : {
"TopicARN" : { "Fn::GetAtt" : ["DNSProcessor", “Topic"] },
"NotificationTypes" : [
"autoscaling:EC2_INSTANCE_LAUNCH","autoscaling:EC2_INSTANCE_TERMINATE"]
},
"Tags" : [{ "Key" : "ProcessorId",
"Value" : { "Ref" : "DNSProcessor" },
"PropagateAtLaunch" : false }]
}
}
Auto Scaled DNS Snippet (2 of 2)
"WebServerGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"NotificationConfiguration" : {
"TopicARN" : { "Fn::GetAtt" : ["DNSProcessor", “Topic"] },
"NotificationTypes" : [
"autoscaling:EC2_INSTANCE_LAUNCH","autoscaling:EC2_INSTANCE_TERMINATE"]
},
"Tags" : [{ "Key" : "ProcessorId",
"Value" : { "Ref" : "DNSProcessor" },
"PropagateAtLaunch" : false }]
}
}
Auto Scaled DNS Demo
Building Your Own Custom Resource
• Write code to respond to Create, Update, and
Delete events
• Route Custom Resource SNS Topic to an SQS
Queue for maximum fault tolerance
Can you give me a diagram?
CloudFormation Stack Workflow starts building Custom Resource

CloudFormation sends CREATE notification to Custom Resource
Custom Resource creates resource and returns JSON message
CloudFormation processes JSON message and stores result
Stack workflow continues
Other resources access Custom Resource attributes via GetAtt and Ref
How about an architectural overview?

SQS Queue

Custom Resource Topic

AWS CloudFormation

Custom Resource
Implementation
Auto scaling Group

Region
Can you add VPC?
Custom Resource Topic

SQS Queue

AWS CloudFormation

Custom Resource
Implementation

Region

VPN

Existing Service
Corporate Data center
What makes for a good resource?
• Good resources are: idempotent
– One unique request, n times == one unique response

• Immediately usable when complete
• Can be deleted cleanly from any state
• Represent one standalone piece of functionality
– Embedded resources look convenient, but are hard to update
– Elastic Load Balancers embed Policies, which can depend on
each other, yet this is not modeled in the template
You keep telling me it’s simple…
• It’s really simple if you use aws-cfn-resourcebridge
• Cross-platform hook-based daemon
• Simply supply scripts for Create, Update, and
Delete
• Open source (Apache 2.0)
• Install or fork from https://github.com/aws/awscfn-resource-bridge
Example Code
• All examples from this talk are available at
https://github.com/awslabs/aws-cfn-customresource-examples
• Stealing from others is the easiest way to get
started
– And the best way to use CloudFormation!
cfn-init
cfn-init
• Simple library for “getting bits on the box”
• Install packages, download files, start services
• Works on Windows, Linux, and any platform with
Python 2.6, 2.7
{{cfn-init}}
•
•
•
•

Fn::Join can be hard to follow
Many configuration files are largely boilerplate
Files can process Mustache templates
Simply add context
Wordpress config
"/var/www/html/wordpress/wp-config.php" : {
"content" : { "Fn::Join" : ["", [
"<?phpn",
"define('DB_NAME',
'", {"Ref" : "DBName"}, "');n",
"define('DB_USER',
'", {"Ref" : "DBUser"}, "');n",
"define('DB_PASSWORD',
'", {"Ref" : "DBPassword" }, "');n",
"define('DB_HOST',
'", {"Fn::GetAtt" : [“MyDB",
"Endpoint.Address"]},"');n",
"define('DB_CHARSET',
'utf8');n",
"define('DB_COLLATE',
'');n",
"define('AUTH_KEY',
'f@A17vs{
mO0}:&I,6SB.QzV`E?!`/tN5:~GZX%=@ZA%!_T0-]9>g]4ll6~,6G|R');n",
Wordpress config
"/var/www/html/wordpress/wp-config.php" : {
"content" : { "Fn::Join" : ["", [
"<?phpn",
"define('DB_NAME',
'", {"Ref" : "DBName"}, "');n",
"define('DB_USER',
'", {"Ref" : "DBUser"}, "');n",
"define('DB_PASSWORD',
'", {"Ref" : "DBPassword" }, "');n",
"define('DB_HOST',
'", {"Fn::GetAtt" : [“MyDB",
"Endpoint.Address"]},"');n",
"define('DB_CHARSET',
'utf8');n",
"define('DB_COLLATE',
'');n",
"define('AUTH_KEY',
'f@A17vs{
mO0}:&I,6SB.QzV`E?!`/tN5:~GZX%=@ZA%!_T0-]9>g]4ll6~,6G|R');n",
Wordpress config
"define('SECURE_AUTH_KEY',
'gTFTI|~rYHY)|mlu:Cv7RN]GQ^3ngyUbw;L0o!12]0c-ispR<-yt3qj]xjquz^&9');n",
"define('LOGGED_IN_KEY',
'Jd:HG9M)1p5t2<v~+R-vd{pQ*|*RB^&PUI{vIrydAEEiV!{HS{jN:nErCmLv`p}');n",
"define('NONCE_KEY',
'4aMj4KZV;,Gu7(B|qOCve[c5?*J5x1+x93i:Ey6hh/6jXh+V_{V4+hw!qE^d*U,-');n",
"define('AUTH_SALT',
'_Y_&8m)FH)Cns)8}Yb8b88KDSn:p1#p(qBa<~VW&Y1v}P.*9/8S8@P`{mkNxV lC');n",
"define('SECURE_AUTH_SALT',
'%nG3Ag41^Lew5c86,#zbN:yPFs.GA5a)z5*:Oce1>v6uF~D`,.o1pzS)F8[bM9i[');n",
"define('LOGGED_IN_SALT',
'~K<y+Ly+_Ww1~dtq>;rSQ^+{P5/k|=!]k%RXAFY@XMY6GSp+wJ5{(|rCzaWjZ%/');n",
"define('NONCE_SALT',
',Bs_*Y9:b/1Z:apVLHtz35uim|okkA,b|Jt[&Nla=T{<l_#D?~6Tj-.2.]FonI~');n",
Wordpress config
"define('WPLANG'
, '');n",
"define('WP_DEBUG'
, false);n",
"$table_prefix = 'wp_';n",
"if ( !defined('ABSPATH') )n",
"
define('ABSPATH', dirname(__FILE__) . '/');n",
"require_once(ABSPATH . 'wp-settings.php');n"
]] }
}
{{cfn-init}} Wordpress Config
“files” : {
"/var/www/html/wordpress/wp-config.php" : {
“source” : “https://github.com/FAKEPATH/wp-config.mustache”,
“context” : {
“DbEndpoint” : {“Fn::GetAtt” : [“MyDB”, “Endpoint.Address”]},
“DbName” : { “Ref” : “DbName” },
“DbUser” : { “Ref” : “DbUser” },
“DbPassword” : { “Ref” : “DbPassword” }
}
}
}
{{cfn-init}} Wordpress Config
“files” : {
"/var/www/html/wordpress/wp-config.php" : {
“source” : “https://github.com/FAKEPATH/wp-config.mustache”,
“context” : {
“DbEndpoint” : {“Fn::GetAtt” : [“MyDB”, “Endpoint.Address”]},
“DbName” : { “Ref” : “DbName” },
“DbUser” : { “Ref” : “DbUser” },
“DbPassword” : { “Ref” : “DbPassword” }
}
}
}
{{cfn-init}} Wordpress Config
“files” : {
"/var/www/html/wordpress/wp-config.php" : {
“source” : “https://github.com/FAKEPATH/wp-config.mustache”,
“context” : {
“DbEndpoint” : {“Fn::GetAtt” : [“MyDB”, “Endpoint.Address”]},
“DbName” : { “Ref” : “DbName” },
“DbUser” : { “Ref” : “DbUser” },
“DbPassword” : { “Ref” : “DbPassword” }
}
}
}
Roleplaying
• cfn-init can use roles to download from S3
• Secured files are not just for proprietary code
– Non-AWS credentials
– Private service endpoints
– Dynamic code (enabling or disabling features)
Roleplaying Template Snippet
“AWS::CloudFormation::Authentication” : {
“roleCreds” : {
“type” : “S3”,
“roleName” : “MyS3Role”
}
}
…
“files” : {
“/etc/secrets.txt” : {
“source” : “https://s3.amazonaws.com/mybucket/secrets.txt”,
“authentication” : “roleCreds”
}
}
Roleplaying Template Snippet
“AWS::CloudFormation::Authentication” : {
“roleCreds” : {
“type” : “S3”,
“roleName” : “MyS3Role”
}
}
…
“files” : {
“/etc/secrets.txt” : {
“source” : “https://s3.amazonaws.com/mybucket/secrets.txt”,
“authentication” : “roleCreds”
}
}
Roleplaying Template Snippet
“AWS::CloudFormation::Authentication” : {
“roleCreds” : {
“type” : “S3”,
“roleName” : “MyS3Role”
}
}
…
“files” : {
“/etc/secrets.txt” : {
“source” : “https://s3.amazonaws.com/mybucket/secrets.txt”,
“authentication” : “roleCreds”
}
}
cfn-hup
•
•
•
•

Not new, but not often used in samples
Installed in same package as cfn-init
Available as Linux and Windows service
Listens for changes to the stack and runs scripts
when they occur
– Usually just runs or re-runs cfn-init
Custom Resources vs. cfn-hup
• Custom Resources require an SNS topic, and
usually an SQS queue
• cfn-hup cannot interact with CloudFormation
workflow
– Workflow will not wait for cfn-hup
– cfn-hup cannot fail workflow
– cfn-hup cannot inject data into stack
Summary
• Custom Resources let you extend
CloudFormation beyond the existing Resource
Library
• For more than just “things that can be created”
• cfn-init lets you use Mustache and Roles to
create simple, secure configuration
Corner us in the Developer Lounge
Adam Thomas

DJ Edwards
Please give us your feedback on this
presentation
DMG303 - AWS CloudFormation Under the Hood

As a thank you, we will select prize
winners daily for completed surveys!

Contenu connexe

Tendances

SRV302 Deep Dive on Serverless Application Development
SRV302 Deep Dive on Serverless Application DevelopmentSRV302 Deep Dive on Serverless Application Development
SRV302 Deep Dive on Serverless Application DevelopmentAmazon Web Services
 
AWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAmazon Web Services
 
February 2016 Webinar Series - EC2 Container Service Deep Dive
February 2016 Webinar Series - EC2 Container Service Deep Dive February 2016 Webinar Series - EC2 Container Service Deep Dive
February 2016 Webinar Series - EC2 Container Service Deep Dive Amazon Web Services
 
EC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel Aviv
EC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel AvivEC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel Aviv
EC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel AvivAmazon Web Services
 
Scaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersScaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersAmazon Web Services
 
AWS Webcast - Highly Available SQL Server on AWS
AWS Webcast - Highly Available SQL Server on AWS  AWS Webcast - Highly Available SQL Server on AWS
AWS Webcast - Highly Available SQL Server on AWS Amazon Web Services
 
Deep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSDeep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSAmazon Web Services
 
AWS Webcast - Build high-scale applications with Amazon DynamoDB
AWS Webcast - Build high-scale applications with Amazon DynamoDBAWS Webcast - Build high-scale applications with Amazon DynamoDB
AWS Webcast - Build high-scale applications with Amazon DynamoDBAmazon Web Services
 
IAM Best Practices to Live By - Pop-up Loft Tel Aviv
IAM Best Practices to Live By - Pop-up Loft Tel AvivIAM Best Practices to Live By - Pop-up Loft Tel Aviv
IAM Best Practices to Live By - Pop-up Loft Tel AvivAmazon Web Services
 
Containers and the Evolution of Computing
Containers and the Evolution of ComputingContainers and the Evolution of Computing
Containers and the Evolution of ComputingAmazon Web Services
 
Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...Amazon Web Services
 
SEC303 Automating Security in cloud Workloads with DevSecOps
SEC303 Automating Security in cloud Workloads with DevSecOpsSEC303 Automating Security in cloud Workloads with DevSecOps
SEC303 Automating Security in cloud Workloads with DevSecOpsAmazon Web Services
 
(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014Amazon Web Services
 
(SEC314) AWS for the Enterprise: Implementing Policy, Governance & Security
(SEC314) AWS for the Enterprise: Implementing Policy, Governance & Security(SEC314) AWS for the Enterprise: Implementing Policy, Governance & Security
(SEC314) AWS for the Enterprise: Implementing Policy, Governance & SecurityAmazon Web Services
 
(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...
(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...
(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...Amazon Web Services
 
Build A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million UsersBuild A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million UsersAmazon Web Services
 
Deep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftDeep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftAmazon Web Services
 
Amazon ECS with Docker | AWS Public Sector Summit 2016
Amazon ECS with Docker | AWS Public Sector Summit 2016Amazon ECS with Docker | AWS Public Sector Summit 2016
Amazon ECS with Docker | AWS Public Sector Summit 2016Amazon Web Services
 
Running Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar SeriesRunning Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar SeriesAmazon Web Services
 

Tendances (20)

SRV302 Deep Dive on Serverless Application Development
SRV302 Deep Dive on Serverless Application DevelopmentSRV302 Deep Dive on Serverless Application Development
SRV302 Deep Dive on Serverless Application Development
 
AWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAWS CloudFormation Best Practices
AWS CloudFormation Best Practices
 
February 2016 Webinar Series - EC2 Container Service Deep Dive
February 2016 Webinar Series - EC2 Container Service Deep Dive February 2016 Webinar Series - EC2 Container Service Deep Dive
February 2016 Webinar Series - EC2 Container Service Deep Dive
 
EC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel Aviv
EC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel AvivEC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel Aviv
EC2 Container Service - Distributed Applications at Scale - Pop-up Loft Tel Aviv
 
Scaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersScaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million Users
 
Amazon EC2:Masterclass
Amazon EC2:MasterclassAmazon EC2:Masterclass
Amazon EC2:Masterclass
 
AWS Webcast - Highly Available SQL Server on AWS
AWS Webcast - Highly Available SQL Server on AWS  AWS Webcast - Highly Available SQL Server on AWS
AWS Webcast - Highly Available SQL Server on AWS
 
Deep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSDeep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECS
 
AWS Webcast - Build high-scale applications with Amazon DynamoDB
AWS Webcast - Build high-scale applications with Amazon DynamoDBAWS Webcast - Build high-scale applications with Amazon DynamoDB
AWS Webcast - Build high-scale applications with Amazon DynamoDB
 
IAM Best Practices to Live By - Pop-up Loft Tel Aviv
IAM Best Practices to Live By - Pop-up Loft Tel AvivIAM Best Practices to Live By - Pop-up Loft Tel Aviv
IAM Best Practices to Live By - Pop-up Loft Tel Aviv
 
Containers and the Evolution of Computing
Containers and the Evolution of ComputingContainers and the Evolution of Computing
Containers and the Evolution of Computing
 
Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...
 
SEC303 Automating Security in cloud Workloads with DevSecOps
SEC303 Automating Security in cloud Workloads with DevSecOpsSEC303 Automating Security in cloud Workloads with DevSecOps
SEC303 Automating Security in cloud Workloads with DevSecOps
 
(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
 
(SEC314) AWS for the Enterprise: Implementing Policy, Governance & Security
(SEC314) AWS for the Enterprise: Implementing Policy, Governance & Security(SEC314) AWS for the Enterprise: Implementing Policy, Governance & Security
(SEC314) AWS for the Enterprise: Implementing Policy, Governance & Security
 
(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...
(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...
(SEC311) Architecting for End-to-End Security in the Enterprise | AWS re:Inve...
 
Build A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million UsersBuild A Website on AWS for Your First 10 Million Users
Build A Website on AWS for Your First 10 Million Users
 
Deep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftDeep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLift
 
Amazon ECS with Docker | AWS Public Sector Summit 2016
Amazon ECS with Docker | AWS Public Sector Summit 2016Amazon ECS with Docker | AWS Public Sector Summit 2016
Amazon ECS with Docker | AWS Public Sector Summit 2016
 
Running Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar SeriesRunning Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar Series
 

En vedette

Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Amazon Web Services
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationAmazon Web Services
 
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Amazon Web Services
 
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIsAmazon Web Services
 
Build and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayBuild and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayAmazon Web Services
 
7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...
7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...
7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...Amazon Web Services
 
Building Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API GatewayBuilding Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API GatewayAmazon Web Services
 
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...Amazon Web Services
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesAmazon Web Services
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesAmazon Web Services
 
Introducing Amazon Simple Workflow (Amazon SWF)
Introducing Amazon Simple Workflow (Amazon SWF)Introducing Amazon Simple Workflow (Amazon SWF)
Introducing Amazon Simple Workflow (Amazon SWF)Amazon Web Services
 
Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013
Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013
Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013Amazon Web Services
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldAmazon Web Services
 
AWS Customer Presentation - Cruxy.com
AWS Customer Presentation - Cruxy.com AWS Customer Presentation - Cruxy.com
AWS Customer Presentation - Cruxy.com Amazon Web Services
 
Leveraging Hybid IT for More Robust Business Services
Leveraging Hybid IT for More Robust Business ServicesLeveraging Hybid IT for More Robust Business Services
Leveraging Hybid IT for More Robust Business ServicesAmazon Web Services
 
AWS Webinar: What is Cloud Computing? November 2013
AWS Webinar: What is Cloud Computing?  November 2013AWS Webinar: What is Cloud Computing?  November 2013
AWS Webinar: What is Cloud Computing? November 2013Amazon Web Services
 
AWS Customer Presentation - ORbyte
AWS Customer Presentation - ORbyteAWS Customer Presentation - ORbyte
AWS Customer Presentation - ORbyteAmazon Web Services
 

En vedette (20)

Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormation
 
AWS CloudFormation Masterclass
AWS CloudFormation MasterclassAWS CloudFormation Masterclass
AWS CloudFormation Masterclass
 
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
 
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
(DEV203) Amazon API Gateway & AWS Lambda to Build Secure APIs
 
Build and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayBuild and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API Gateway
 
7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...
7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...
7 Use Cases in 7 Minutes Each : The Power of Workflows and Automation (SVC101...
 
Building Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API GatewayBuilding Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API Gateway
 
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Introducing Amazon Simple Workflow (Amazon SWF)
Introducing Amazon Simple Workflow (Amazon SWF)Introducing Amazon Simple Workflow (Amazon SWF)
Introducing Amazon Simple Workflow (Amazon SWF)
 
Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013
Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013
Automate Your Big Data Workflows (SVC201) | AWS re:Invent 2013
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 
AWS Customer Presentation - Cruxy.com
AWS Customer Presentation - Cruxy.com AWS Customer Presentation - Cruxy.com
AWS Customer Presentation - Cruxy.com
 
Leveraging Hybid IT for More Robust Business Services
Leveraging Hybid IT for More Robust Business ServicesLeveraging Hybid IT for More Robust Business Services
Leveraging Hybid IT for More Robust Business Services
 
AWS Webinar: What is Cloud Computing? November 2013
AWS Webinar: What is Cloud Computing?  November 2013AWS Webinar: What is Cloud Computing?  November 2013
AWS Webinar: What is Cloud Computing? November 2013
 
AWS Customer Presentation - ORbyte
AWS Customer Presentation - ORbyteAWS Customer Presentation - ORbyte
AWS Customer Presentation - ORbyte
 

Similaire à AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013

AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...
AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...
AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...Amazon Web Services
 
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS Amazon Web Services
 
Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018
Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018
Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018Amazon Web Services
 
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2Amazon Web Services
 
Tech connect aws
Tech connect  awsTech connect  aws
Tech connect awsBlake Diers
 
Utah Codecamp Cloud Computing
Utah Codecamp Cloud ComputingUtah Codecamp Cloud Computing
Utah Codecamp Cloud ComputingTom Creighton
 
Continuous Integration and Deployment Best Practices on AWS
 Continuous Integration and Deployment Best Practices on AWS  Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS Amazon Web Services
 
Amazon Web Services OverView
Amazon Web Services OverViewAmazon Web Services OverView
Amazon Web Services OverViewAriel K
 
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...Amazon Web Services
 
Serverless Web Apps using API Gateway, Lambda and DynamoDB
Serverless Web Apps using API Gateway, Lambda and DynamoDBServerless Web Apps using API Gateway, Lambda and DynamoDB
Serverless Web Apps using API Gateway, Lambda and DynamoDBAmazon Web Services
 
Serverless Architecture Patterns
Serverless Architecture PatternsServerless Architecture Patterns
Serverless Architecture PatternsAmazon Web Services
 
serverless_architecture_patterns_london_loft.pdf
serverless_architecture_patterns_london_loft.pdfserverless_architecture_patterns_london_loft.pdf
serverless_architecture_patterns_london_loft.pdfAmazon Web Services
 
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...Amazon Web Services
 
Dev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL WebinarDev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL WebinarAmazon Web Services
 
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션Amazon Web Services Korea
 
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew WebinarDev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew WebinarBoaz Ziniman
 

Similaire à AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013 (20)

AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...
AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...
AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Effi...
 
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018
Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018
Build AWS CloudFormation Custom Resources (DEV417-R2) - AWS re:Invent 2018
 
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
 
Tech connect aws
Tech connect  awsTech connect  aws
Tech connect aws
 
Running Lean Architectures
Running Lean ArchitecturesRunning Lean Architectures
Running Lean Architectures
 
Utah Codecamp Cloud Computing
Utah Codecamp Cloud ComputingUtah Codecamp Cloud Computing
Utah Codecamp Cloud Computing
 
Continuous Integration and Deployment Best Practices on AWS
 Continuous Integration and Deployment Best Practices on AWS  Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
Amazon Web Services OverView
Amazon Web Services OverViewAmazon Web Services OverView
Amazon Web Services OverView
 
Running Lean Architectures
Running Lean ArchitecturesRunning Lean Architectures
Running Lean Architectures
 
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
AWS Summit Sydney 2014 | Continuous Integration and Deployment Best Practices...
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Carlos Conde : AWS Game Days - TIAD Paris
Carlos Conde : AWS Game Days - TIAD ParisCarlos Conde : AWS Game Days - TIAD Paris
Carlos Conde : AWS Game Days - TIAD Paris
 
Serverless Web Apps using API Gateway, Lambda and DynamoDB
Serverless Web Apps using API Gateway, Lambda and DynamoDBServerless Web Apps using API Gateway, Lambda and DynamoDB
Serverless Web Apps using API Gateway, Lambda and DynamoDB
 
Serverless Architecture Patterns
Serverless Architecture PatternsServerless Architecture Patterns
Serverless Architecture Patterns
 
serverless_architecture_patterns_london_loft.pdf
serverless_architecture_patterns_london_loft.pdfserverless_architecture_patterns_london_loft.pdf
serverless_architecture_patterns_london_loft.pdf
 
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
AWS Summit Auckland 2014 | Continuous Integration and Deployment Best Practic...
 
Dev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL WebinarDev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL Webinar
 
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
 
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew WebinarDev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew Webinar
 

Plus de Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Plus de Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Dernier

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 

Dernier (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 

AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013

  • 1. AWS CloudFormation Under the Hood Adam Thomas, Amazon Web Services DJ Edwards, Amazon Web Services November 14, 2013 © 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
  • 2. So, what is CloudFormation?
  • 3. This talk will not answer that question • DMG201 - Zero to Sixty: AWS CloudFormation – Has already happened, but will be available online • Hands-on Labs – Working with CloudFormation – Launching and Managing a Web Application with CloudFormation – Creating an Amazon Virtual Private Cloud (VPC) with CloudFormation
  • 4. This talk will answer these questions: • • • • What is a custom resource? What can they do for me? How do I write one for myself? What’s new in cfn-init?
  • 6. What can custom resources do? • • • • Add New Resources Interact with the CloudFormation Workflow Inject dynamic data into a stack Extend the capabilities of existing resources
  • 7. What is a custom resource? • An SNS topic… • …hooked up to a service that can: – Respond to JSON messages from CloudFormation – Manage the lifecycle of resources
  • 8. How are custom resources defined? "myCustomResource" : { "Type": "Custom::MyCustomResource", "Version" : "1.0", "Properties" : { "ServiceToken": "arn:aws:sns:us-east-1:84969EXAMPLE:CRTest", "CustomProperty" : "foo" } }
  • 9. How are custom resources defined? "myCustomResource" : { "Type": “Custom::MyCustomResource", "Version" : "1.0", "Properties" : { "ServiceToken": "arn:aws:sns:us-east-1:84969EXAMPLE:CRTest", "CustomProperty" : "foo" } }
  • 10. How are custom resources defined? "myCustomResource" : { "Type": “Custom::MyCustomResource", "Version" : "1.0", "Properties" : { "ServiceToken": "arn:aws:sns:us-east-1:84969EXAMPLE:CRTest", "CustomProperty" : "foo" } }
  • 11. What can custom resources do? • • • • Add New Resources Interact with the CloudFormation Workflow Inject dynamic data into a stack Extend the capabilities of existing resources
  • 12. Adding New Resources • Something that can be Created, Updated, and/or Deleted • Can be a software resource – Database schema, Docker container
  • 13. Meet Steve • Steve loves RDBMS • The schema is very important to Steve – it defines his application • Running SQL scripts by hand is Steve’s worst nightmare
  • 14. Steve’s requirements • The Template should define the schema explicitly • The schema should be updated by updating the stack • If the update fails, the schema should roll back
  • 15. Steve’s solution • Steve is very familiar with Liquibase • Liquibase supports JSON formatting! • Steve writes a custom resource with inline JSON schema
  • 16. DB Schema Template Snippet "appSchema" : { "Type" : "Custom::DatabaseSchema", "Properties" : { "databaseChangeLog" : [{ "changeSet" : { "id" : "1", "author" : “adam", "changes" : [{ "createTable" : { "tableName" : "person", "columns" : …
  • 17. DB Schema Template Snippet "appSchema" : { "Type" : "Custom::DatabaseSchema", "Properties" : { "databaseChangeLog" : [{ "changeSet" : { "id" : "1", "author" : “adam", "changes" : [{ "createTable" : { "tableName" : "person", "columns" : …
  • 19. What can custom resources do? • • • • Add New Resources Interact with the CloudFormation Workflow Inject dynamic data into a stack Extend the capabilities of existing resources
  • 20. Interacting with the CloudFormation Workflow • Use custom resources as a hook into create/update/delete workflows • Built-in example: WaitCondition • Can react to workflow, halt it, or fail it under certain conditions
  • 21. Meet Frank • Frank analyzes data stored on EBS • Frank uses CloudFormation’s Snapshot on Delete feature to save his analysis results
  • 22. Frank’s requirements • Frank wants a consistent EBS snapshot when the stack is deleted • Before CloudFormation attempts to detach his EBS volume, it should: – Cleanly shut down his analysis service – Unmount the volume
  • 23. Why is this a challenge? • CloudFormation can detach volumes without any issues – if you never mount them • What CloudFormation does not do, it cannot undo • Custom resources let you model your steps within the workflow
  • 24. Frank’s solution • 3 simple bash scripts • A “local” Custom Resource – runs directly on the instance • Create and Update mount the drive; Delete unmounts it.
  • 25. Volume Mount Template Snippet “VolumeAttach" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : … }, "VolumeMount" : { "Type" : "Custom::VolumeMount", "Properties" : { "Device" : “/dev/xvdh”, “MountPoint” : “/mnt/analysis” } }
  • 26. Volume Mount Template Snippet “VolumeAttach" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : … }, "VolumeMount" : { "Type" : "Custom::VolumeMount", "Properties" : { "Device" : “/dev/xvdh”, “MountPoint” : “/mnt/analysis” } }
  • 27. Volume Mount Template Snippet “VolumeAttach" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : … }, "VolumeMount" : { "Type" : "Custom::VolumeMount", "Properties" : { "Device" : “/dev/xvdh”, “MountPoint” : “/mnt/analysis” } }
  • 28. Volume Mount Template Snippet “VolumeAttach" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : … }, "VolumeMount" : { "Type" : "Custom::VolumeMount", "Properties" : { "Device" : “/dev/xvdh”, “MountPoint” : “/mnt/analysis” } }
  • 30. What can custom resources do? • • • • Add New Resources Interact with the CloudFormation Workflow Inject dynamic data into a stack Extend the capabilities of existing resources
  • 31. Injecting Dynamic Data into a Stack • Parameters are standard route into a stack – Allow free-form user input – Constrainable, but on a per-stack level • Mappings are traditionally used to map humanreadable input to static values – AMI IDs, instance type architectures, regional URLs
  • 32. Injecting Data into a Stack • Custom resources allow for centralized selection logic • Lookups in: – – – – S3 DynamoDB/RDS APIs (EC2.DescribeImages, etc) Third Party datastore
  • 33. Meet Bill • Bill is the head of operations at a large tech firm • Each of Bill’s 44 services must run on a fully validated and tested AMI • Bill keeps track of these AMIs in a sweet multitabbed Excel spreadsheet
  • 34. Bill’s requirements • New AMIs should be rolled out centrally • Bill does not want to edit the Mappings section of 44 templates for every release • Bill wants to audit where AMIs are being used
  • 35. Bill’s solution • A manifest of named, approved AMIs stored in a versioned S3 file • A simple python script that looks up the AMI ID by region and os, architecture, and version
  • 36. AMI Lookup Template Snippet "AMILookup": { "Type": "Custom::AmiLookup", "Properties": { "os": "ubuntu", "version": “13.04", "arch": "64" } }, "WebServer": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId" : { “Ref" : “AMILookup” } } }
  • 37. AMI Lookup Template Snippet "AMILookup": { "Type": "Custom::AmiLookup", "Properties": { "os": "ubuntu", "version": "13.04", "arch": "64" } }, "WebServer": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId" : { “Ref" : “AMILookup” } } }
  • 38. AMI Lookup Template Snippet "AMILookup": { "Type": "Custom::AmiLookup", "Properties": { "os": "ubuntu", "version": "13.04", "arch": "64" } }, "WebServer": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId" : { “Ref" : “AMILookup” } } }
  • 40. What can custom resources do? • • • • Add New Resources Interact with the CloudFormation Workflow Inject dynamic data into a stack Extend the capabilities of existing resources
  • 41. Extending Resource Capabilities • CloudFormation is concerned only with Create, Update, and Delete • Some services, like AutoScaling, have lifecycles outside of these phases • No place in template to encapsulate longrunning, resource-based business logic
  • 42. Meet Tom • Tom manages a fleet of virtual desktops in AWS • Tom uses AutoScaling for consistent fleet size • Tom’s users use VNC to connect to their virtual desktops
  • 43. Tom’s requirements • Servers should be named using his clever, easy-toremember Simpsons scheme • Names should be recycled as machines are replaced
  • 44. Tom’s solution • Python scripts respond to Auto Scaling notifications to manage Route53 records • Names are managed in a simple DynamoDB table
  • 45. Auto Scaled DNS Snippet (1 of 2) "DNSProcessor" : { "Type": "Custom::DNSProcessor", "Properties": { "HostedZoneId" : { "Ref" : "HostedZone" }, "DNSPattern" : {"Fn::Join" : [".",[“{{simpsons_name}}", { "Ref" : "AWS::Region" }, “{{hosted_zone_name}}"]] } } },
  • 46. Auto Scaled DNS Snippet (1 of 2) "DNSProcessor" : { "Type": "Custom::DNSProcessor", "Properties": { "HostedZoneId" : { "Ref" : "HostedZone" }, "DNSPattern" : {"Fn::Join" : [".",[“{{simpsons_name}}", { "Ref" : "AWS::Region" }, “{{hosted_zone_name}}"]] } } },
  • 47. Auto Scaled DNS Snippet (2 of 2) "WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "NotificationConfiguration" : { "TopicARN" : { "Fn::GetAtt" : ["DNSProcessor", “Topic"] }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH","autoscaling:EC2_INSTANCE_TERMINATE"] }, "Tags" : [{ "Key" : "ProcessorId", "Value" : { "Ref" : "DNSProcessor" }, "PropagateAtLaunch" : false }] } }
  • 48. Auto Scaled DNS Snippet (2 of 2) "WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "NotificationConfiguration" : { "TopicARN" : { "Fn::GetAtt" : ["DNSProcessor", “Topic"] }, "NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH","autoscaling:EC2_INSTANCE_TERMINATE"] }, "Tags" : [{ "Key" : "ProcessorId", "Value" : { "Ref" : "DNSProcessor" }, "PropagateAtLaunch" : false }] } }
  • 50. Building Your Own Custom Resource • Write code to respond to Create, Update, and Delete events • Route Custom Resource SNS Topic to an SQS Queue for maximum fault tolerance
  • 51. Can you give me a diagram? CloudFormation Stack Workflow starts building Custom Resource CloudFormation sends CREATE notification to Custom Resource Custom Resource creates resource and returns JSON message CloudFormation processes JSON message and stores result Stack workflow continues Other resources access Custom Resource attributes via GetAtt and Ref
  • 52. How about an architectural overview? SQS Queue Custom Resource Topic AWS CloudFormation Custom Resource Implementation Auto scaling Group Region
  • 53. Can you add VPC? Custom Resource Topic SQS Queue AWS CloudFormation Custom Resource Implementation Region VPN Existing Service Corporate Data center
  • 54. What makes for a good resource? • Good resources are: idempotent – One unique request, n times == one unique response • Immediately usable when complete • Can be deleted cleanly from any state • Represent one standalone piece of functionality – Embedded resources look convenient, but are hard to update – Elastic Load Balancers embed Policies, which can depend on each other, yet this is not modeled in the template
  • 55. You keep telling me it’s simple… • It’s really simple if you use aws-cfn-resourcebridge • Cross-platform hook-based daemon • Simply supply scripts for Create, Update, and Delete • Open source (Apache 2.0) • Install or fork from https://github.com/aws/awscfn-resource-bridge
  • 56. Example Code • All examples from this talk are available at https://github.com/awslabs/aws-cfn-customresource-examples • Stealing from others is the easiest way to get started – And the best way to use CloudFormation!
  • 58. cfn-init • Simple library for “getting bits on the box” • Install packages, download files, start services • Works on Windows, Linux, and any platform with Python 2.6, 2.7
  • 59. {{cfn-init}} • • • • Fn::Join can be hard to follow Many configuration files are largely boilerplate Files can process Mustache templates Simply add context
  • 60. Wordpress config "/var/www/html/wordpress/wp-config.php" : { "content" : { "Fn::Join" : ["", [ "<?phpn", "define('DB_NAME', '", {"Ref" : "DBName"}, "');n", "define('DB_USER', '", {"Ref" : "DBUser"}, "');n", "define('DB_PASSWORD', '", {"Ref" : "DBPassword" }, "');n", "define('DB_HOST', '", {"Fn::GetAtt" : [“MyDB", "Endpoint.Address"]},"');n", "define('DB_CHARSET', 'utf8');n", "define('DB_COLLATE', '');n", "define('AUTH_KEY', 'f@A17vs{ mO0}:&I,6SB.QzV`E?!`/tN5:~GZX%=@ZA%!_T0-]9>g]4ll6~,6G|R');n",
  • 61. Wordpress config "/var/www/html/wordpress/wp-config.php" : { "content" : { "Fn::Join" : ["", [ "<?phpn", "define('DB_NAME', '", {"Ref" : "DBName"}, "');n", "define('DB_USER', '", {"Ref" : "DBUser"}, "');n", "define('DB_PASSWORD', '", {"Ref" : "DBPassword" }, "');n", "define('DB_HOST', '", {"Fn::GetAtt" : [“MyDB", "Endpoint.Address"]},"');n", "define('DB_CHARSET', 'utf8');n", "define('DB_COLLATE', '');n", "define('AUTH_KEY', 'f@A17vs{ mO0}:&I,6SB.QzV`E?!`/tN5:~GZX%=@ZA%!_T0-]9>g]4ll6~,6G|R');n",
  • 63. Wordpress config "define('WPLANG' , '');n", "define('WP_DEBUG' , false);n", "$table_prefix = 'wp_';n", "if ( !defined('ABSPATH') )n", " define('ABSPATH', dirname(__FILE__) . '/');n", "require_once(ABSPATH . 'wp-settings.php');n" ]] } }
  • 64. {{cfn-init}} Wordpress Config “files” : { "/var/www/html/wordpress/wp-config.php" : { “source” : “https://github.com/FAKEPATH/wp-config.mustache”, “context” : { “DbEndpoint” : {“Fn::GetAtt” : [“MyDB”, “Endpoint.Address”]}, “DbName” : { “Ref” : “DbName” }, “DbUser” : { “Ref” : “DbUser” }, “DbPassword” : { “Ref” : “DbPassword” } } } }
  • 65. {{cfn-init}} Wordpress Config “files” : { "/var/www/html/wordpress/wp-config.php" : { “source” : “https://github.com/FAKEPATH/wp-config.mustache”, “context” : { “DbEndpoint” : {“Fn::GetAtt” : [“MyDB”, “Endpoint.Address”]}, “DbName” : { “Ref” : “DbName” }, “DbUser” : { “Ref” : “DbUser” }, “DbPassword” : { “Ref” : “DbPassword” } } } }
  • 66. {{cfn-init}} Wordpress Config “files” : { "/var/www/html/wordpress/wp-config.php" : { “source” : “https://github.com/FAKEPATH/wp-config.mustache”, “context” : { “DbEndpoint” : {“Fn::GetAtt” : [“MyDB”, “Endpoint.Address”]}, “DbName” : { “Ref” : “DbName” }, “DbUser” : { “Ref” : “DbUser” }, “DbPassword” : { “Ref” : “DbPassword” } } } }
  • 67. Roleplaying • cfn-init can use roles to download from S3 • Secured files are not just for proprietary code – Non-AWS credentials – Private service endpoints – Dynamic code (enabling or disabling features)
  • 68. Roleplaying Template Snippet “AWS::CloudFormation::Authentication” : { “roleCreds” : { “type” : “S3”, “roleName” : “MyS3Role” } } … “files” : { “/etc/secrets.txt” : { “source” : “https://s3.amazonaws.com/mybucket/secrets.txt”, “authentication” : “roleCreds” } }
  • 69. Roleplaying Template Snippet “AWS::CloudFormation::Authentication” : { “roleCreds” : { “type” : “S3”, “roleName” : “MyS3Role” } } … “files” : { “/etc/secrets.txt” : { “source” : “https://s3.amazonaws.com/mybucket/secrets.txt”, “authentication” : “roleCreds” } }
  • 70. Roleplaying Template Snippet “AWS::CloudFormation::Authentication” : { “roleCreds” : { “type” : “S3”, “roleName” : “MyS3Role” } } … “files” : { “/etc/secrets.txt” : { “source” : “https://s3.amazonaws.com/mybucket/secrets.txt”, “authentication” : “roleCreds” } }
  • 71. cfn-hup • • • • Not new, but not often used in samples Installed in same package as cfn-init Available as Linux and Windows service Listens for changes to the stack and runs scripts when they occur – Usually just runs or re-runs cfn-init
  • 72. Custom Resources vs. cfn-hup • Custom Resources require an SNS topic, and usually an SQS queue • cfn-hup cannot interact with CloudFormation workflow – Workflow will not wait for cfn-hup – cfn-hup cannot fail workflow – cfn-hup cannot inject data into stack
  • 73. Summary • Custom Resources let you extend CloudFormation beyond the existing Resource Library • For more than just “things that can be created” • cfn-init lets you use Mustache and Roles to create simple, secure configuration
  • 74. Corner us in the Developer Lounge Adam Thomas DJ Edwards
  • 75. Please give us your feedback on this presentation DMG303 - AWS CloudFormation Under the Hood As a thank you, we will select prize winners daily for completed surveys!