start using amazon web services in your coldfusion apps · rds redshift cloud front glacier s3...

125
Start Using Amazon Web Services in Your ColdFusion Apps Brian Klaas Johns Hopkins Bloomberg School of Public Health [email protected] @brian_klaas

Upload: others

Post on 25-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Start Using Amazon Web Services in Your ColdFusion Apps

Brian KlaasJohns Hopkins Bloomberg School of Public [email protected]@brian_klaas

Page 2: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

WELCOME TO DEVOPS ADVENTURE! YOU ARE STANDING INSIDE AWS. NEARBY IS AN ANGRY ELB. THERE ARE SOME SSH KEYS ON THE GROUND.

– @dysinger

Page 3: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Best decision we ever make in startup was outsource all site outage to Cloud provider.

– @Devops_Borat

Page 4: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Start Using Amazon Web Services in Your ColdFusion Apps

Brian KlaasJohns Hopkins Bloomberg School of Public [email protected]@brian_klaas

Page 5: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Morefeatures servers

storage services

customers

bugs

tools

platforms

languages

browsers

messages

memory

options

everything

Page 6: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Stefan Tell@Flickr

Page 7: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Network

Servers

Storage

Services

Apps

Page 8: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Start Using Amazon Web Services in Your ColdFusion Apps

Brian KlaasJohns Hopkins Bloomberg School of Public [email protected]@brian_klaas

Page 9: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

How does AWS fit with CF ?

How do I run CF in AWS?

Page 10: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

1

2

3

4

5

Hello AWS

Simple, Cheap Storage with S3

Plugging Other AWS Services into CF

Running ColdFusion 10 on AWS

Lessons Learned Running with AWS

Page 11: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Hello AWS

Or, what can AWS do for me?

Page 12: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

AWS = Utility Computing

1Hello AWS

Page 13: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

EC2Route

53VPC

Elastic Map

Reduce

DirectConnect

Cloud Formation

Cloud Watch

Data Pipeline

Elastic BeanStalk

IAMOps

Works

Cloud Search

Elastic Transcoder SES SNS SQS SWF

DynamoDB

ElastiCache

RDS Redshift

CloudFront Glacier S3 Storage

Gateway

Page 14: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

AWS is HTTP–based development

1Hello AWS

Page 15: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

1Hello AWS

PUT /photos/puppy.jpg HTTP/1.1Content-Type: image/jpegContent-Length: 94328Host: mybucket.s3.amazonaws.comDate: Tue, 27 Mar 2013 21:15:45 +0000

Authorization: AWS AKIAIOSFODNN7EXAMPLE:MyyxeRY7whkBe+bq8fHCL/2kKUg=

Page 16: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

1Hello AWS

AWS SDKs for:

*ColdFusion

■ Java*

■ PHP

■ Ruby

■ Node.js

■ Python

■ .NET

■ Android

■ iOS

Page 17: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

CF: Making Stuff Easy

1Hello AWS

Page 18: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Simple, Cheap Storage with S3

Page 19: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

S3Simple Storage Service

Page 20: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Store all the things.

Page 21: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

You can't delete anything.

EVER

Page 22: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

1 byte

5 terabytes

Page 23: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Regions

■ US Standard (NoVA)

■ US West (Oregon)

■ US West (NorCal)

■ EU (Ireland)

■ Asia Pacific (Singapore)

■ Asia Pacific (Sydney)

■ Asia Pacific (Tokyo)

■ South America (São Paulo)

Page 24: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

99.999999999% durability*

99.99% availability

*Stuff rarely gets lost.

Page 25: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

$0.095 per GB stored

$0.004 per 10,000 GET

$0.005 per 1,000 PUT

$0.12 per GB out after 1GB

Page 26: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Bucket

myfiles.s3.amazonaws.com

Page 27: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Bucket

Object

Page 28: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Everything is an object

Page 29: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Objects have metadata

Page 30: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Everything in S3 is private by default.

Page 31: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Page 32: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

http://mybucket.s3.amazonaws.com/path/to/file.png

Page 33: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

C:/

s3://

Page 34: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Basic ColdFusion Integration<cffile action=“read”file=“s3://somebucket/somefile.txt” variable=“fileData” />

<cffile action=“write”file=“s3://somebucket/somefile.txt”output=“#someStuff#” />

<cffile action=“delete”file=“s3://somebucket/somefile.txt” />

Page 35: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Basic ColdFusion Integration

<cfdirectory action=“create”directory=“s3://somebucket/someDirectory” />

<cfdirectory action=“list”directory=“s3://somebucket/someDirectory” />

Page 36: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

ColdFusion Example

<cfif not directoryExists("s3://somebucket.s3.amazonaws.com")>    <cfset perms = [        {group="all", permission="read"},{id="canonicalIDofYourAWSAccount", permission="full_control"}    ]>    <cfdirectory action="create" directory="s3://somebucket.s3.amazonaws.com" storeacl="#perms#"></cfif>

<cfset fileWrite("s3://somebucket.s3.amazonaws.com/myFile.txt", "#someOutput#")>

<cfset files = directoryList("s3://somebucket.s3.amazonaws.com")>

Page 37: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Tags and Functions Which Support S3

*Except rename† Looping over directory information

■ cffile*

■ cfdirectory

■ cfdocument

■ cfftp

■ cffeed

■ cfimage

■ cfloop†

■ fileOpen

■ fileClose

■ fileCopy

■ fileDelete

■ fileExists

■ fileisEOF

■ fileMove

■ fileWrite

■ fileRead

■ fileReadBinary

■ fileReadLine

■ fileSetLastModified

■ getFileInfo

■ getDirectoryFromPath

■ directoryCreate

■ directoryDelete

■ directoryExists

■ directoryList

■ imageNew

■ imageRead

■ imageWrite

■ imageWriteBase64

■ isImageFile

■ isPDFFile

Page 38: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Um, don’t you need credentials?

Page 39: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

A Brief Detour into AWS Security Basics

Page 40: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Master AWS AccountIAM Account Key Pair

Access KeySecret Key

Key Pair IDPublic KeyPrivate Key

Page 41: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Master AWS Account

Groups ACL

Authenticated UsersAll Users

Log Delivery{Custom}

Policies

Page 42: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Sample Policy{ "Version":"2008-10-17", "Statement":[{ "Sid":"Add Read Permissions", "Effect":"Allow", "Principal": { "AWS": "*" }, "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::bucket/*" ] } ]}

Page 43: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Requests from a Specific Domain Policy{ "Version":"2008-10-17", "Id":"http referrer policy example", "Statement":[ { "Sid":"Allow get requests referred by www.mysite.com and mysite.com", "Effect":"Allow", "Principal":"*", "Action":"s3:GetObject", "Resource":"arn:aws:s3:::example-bucket/*", "Condition":{ "StringLike":{ "aws:Referer":[ "http://www.mysite.com/*", "http://mysite.com/*" ] } } } ]}

Page 44: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

S3 requests in CFrequire IAM credentials.

Page 45: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Setting AWS IAM credentials

1. In the individual S3 call

2. In application.cfc

Page 46: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Setting AWS IAM credentials

<cffile action=“read”file=“s3://accessKey:awsSecretKey@somebucket/somefile.txt” variable=“fileData” />

Page 47: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Setting AWS IAM credentials

In application.cfc:

this.s3.accessKeyId="accessKey"; this.s3.awsSecretKey="secretKey";

Page 48: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

ColdFusion Example

<cfif not directoryExists("s3://somebucket.s3.amazonaws.com")>    <cfset perms = [        {group="all", permission="read"},{id="canonicalIDofYourAWSAccount", permission="full_control"}    ]>    <cfdirectory action="create" directory="s3://somebucket.s3.amazonaws.com" storeacl="#perms#"></cfif>

<cfset fileWrite("s3://somebucket.s3.amazonaws.com/myFile.txt", "#someOutput#")>

<cfset files = directoryList("s3://somebucket.s3.amazonaws.com")>

Page 49: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Everything in S3 is private by default.

Page 50: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

ColdFusion Example

<cfif not directoryExists("s3://somebucket.s3.amazonaws.com")>    <cfset perms = [        {group="all", permission="read"},{id="canonicalIDofYourAWSAccount", permission="full_control"}    ]>    <cfdirectory action="create" directory="s3://somebucket.s3.amazonaws.com" storeacl="#perms#"></cfif>

<cfset fileWrite("s3://somebucket.s3.amazonaws.com/myFile.txt", "#someOutput#")>

<cfset files = directoryList("s3://somebucket.s3.amazonaws.com")>

Page 51: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Get/set file ACL with storeGetACL()storeSetACL()

Page 52: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Setting permissions with ACLs

<cfset permissions = storeGetACL(fileOnS3) /><cfset arrayAppend(permissions,{group="all",permission="read"}) /><cfset storeSetACL(fileOnS3, "#permissions#") />

Page 53: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Get/set object metadata with storeGetMetadata() storeSetMetadata()

Page 54: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

<cfset metadataStruct.content_type="video/webm" /><cfset storeSetMetadata(s3File, "#metadataStruct#") />

Setting content type

Page 55: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

More cool stuff

Expire URLs

Changing file properties on a per-request basis

Upload to S3 from the browser

Requires request signing.

Page 56: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

S3RequestSigningUtils on GitHub

github.com/brianklaas/ctlS3Utils

*Requires CF10

Page 57: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

Some issues to consider:

Page 58: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

What happens when an upload fails?

Page 59: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

S3 is storage, not a file system

Can get basic file info with<cfhttp url="http://bucket.s3.amazonaws.com/filename" method="head">

Page 60: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

2Storage with S3

What happens when S3 goes down?

Page 61: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Plugging Other AWS Services into CF

Page 62: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

3Other AWS Services + CF

SESBulk email service

SQSHigh–performance message queue service

DynamoDBNoSQL database service

CloudFrontCheap global content delivery network

Page 63: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

3Other AWS Services + CF

Relational Database ServiceRDS

Page 64: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

IOPS

3Other AWS Services + CF

Page 65: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

3Other AWS Services + CF

RDS Costs

■ Database license

■ IOPS

■ Data transfer in/out

■ You can’t alter the server setup.

Page 66: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

3Other AWS Services + CF

AWS is HTTP–based development

Page 67: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Running CF10 in AWS

Or, exploring the official ColdFusion 10 AMI

Page 68: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

EC2

4Running CF10 on AWS

Page 69: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

EC2 Instance Types

4Running CF10 on AWS

Page 70: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

AMI on EC2

4Running CF10 on AWS

Page 71: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

The Official Adobe CF10 AMI

■ Windows 2008 R2 SP1

■ Standard Large - $0.51/hr = ~$370/month

■ Standard XL - $1.02/hr = ~$740/month

■ Ubuntu 12.0.4

■ Standard Large - $0.39/hr = ~$281/month

■ Standard XL - $0.78/hr = ~$561/month

■ Includes EC2 charges

■ Includes Adobe Support

4Running CF10 on AWS

Page 72: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Large vs. XL Instances■ m1.large

■ 7.5GB RAM

■ 4 ECUs (2 cores x 2 units)

■ 850GB storage

■ Moderate IO performance (500 Mbps)

■ m1.xlarge

■ 15GB RAM

■ 8 ECUs (4 cores x 2 units)

■ 1690GB storage

■ High IO performance (1000 Mbps)

4Running CF10 on AWS

ECU = 1–1.2 Ghz processor

Page 73: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

AMI Setup

■ CF10 Enterprise, Hotfix 7

■ JRE 1.7.0_15

■ Windows: IIS 7.5

■ Linux: Apache 2.2.4

■ Both: MySQL 5.5

4Running CF10 on AWS

Page 74: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Launching the CF10 AMI

Page 75: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Stuff You Need Before You Start

■ Custom Security Group (preferred)

■ Key pair

■ RDP (Windows) or SSH client (Linux)

4Running CF10 on AWS

Page 76: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Security Groups

4Running CF10 on AWS

Found in the AWS Console underEC2 ➡ Security Groups

Page 77: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Key Pair

4Running CF10 on AWS

Found in the AWS Console underEC2 ➡ Key Pairs

■ Public/private key

■ Tied to a specific region

■ Only one opportunity to download!

Page 78: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Purchase the AMI4

Running CF10 on AWS

■ Select region and instance size (L or XL)

■ EC2 Classic or VPC

■ Use preconfigured security group or one of your own

■ Select a key pair

Page 79: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Once you launch an instance, you

start paying for it.

4Running CF10 on AWS

Page 80: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Connecting to the Instance

4Running CF10 on AWS

■ Retrieve the Windows admin password

■ Connect via RDP as “Administrator”

■ Go through the Jumpstart Tool

Page 81: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 82: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 83: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 84: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 85: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 86: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 87: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

The Jumpstart Tool

Page 88: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 89: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Jumpstart Steps

■ Agree to the license

■ Secure profile is turned on by default

■ Specify the IP addresses that can connect to the CF Administrator

■ CF Administrator credentials

Page 90: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 91: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

You are now responsible.

Page 92: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

You are responsible for security.

Page 93: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

You are responsible for software updates.

Page 94: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

You are responsible for everything.

Page 95: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

First Steps Post–Jumpstart

■ Install CF10 Update 11

■ Update the JRE

■ Change the JVM allocation

■ Shut off MySQL

Page 96: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 97: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Create your own AMI.

Page 98: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 99: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 100: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Page 101: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Create your own AMIfrom scratch.

Page 102: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

CF10 Licensing for the Cloud

■ 16 ECUs per CF10 Enterprise license

■ Large instance = 4 ECUs

■ One license = 4 large instances

blogs.coldfusion.com/post.cfm/coldfusion-10-eula

Page 103: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

Zero to Your Own CF AMI■ Create a Windows or Linux instance

using a pre–existing AMI, VMware instance or using EC2 tools.

■ Configure the OS, Web Server, etc.

■ Install CF10

■ Update CF, configure as needed

■ Create an AMI

Page 104: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

4Running CF10 on AWS

It’s not hard.

*Remember: you’re the sysadmin.

Page 105: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Lessons Learned Running with AWS

Page 106: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

Everything fails.

Page 107: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

You are responsible for redundancy.

Page 108: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

CF + IIS CF + IIS CF + IIS

Load Balancer

DatabaseMaster

DatabaseSlave

File Share 1

File Share 2

Scheduled Task Server

Load Balancer

Static Asset 1

Static Asset 2

Page 109: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

EC2 + AMI EC2 + AMI EC2 + AMI

ELB

DB Master EC2 + AMI

DB Slave EC2 + AMI

Task EC2 + AMI

EBS EBS EBS

User ContentS3

Static Asset S3

EBS

EBS

EBS

EBS

EBS

Page 110: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

EC2 + AMI EC2 + AMI EC2 + AMI

ELB

Task EC2 + AMI

EBS EBS EBS

User ContentS3

Static Asset S3

EBS

RDS

Page 111: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

EC2 + AMI EC2 + AMI EC2 + AMI

ELB

Task EC2 + AMI

User ContentS3

Static Asset S3 RDS

Page 112: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

But still:You are responsible for

redundancy.

Page 113: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

Autoscale.

Page 114: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

CloudWatch

CloudFormation

OpsWorks

Elastic Beanstalk

Page 115: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

Considering an EC2 instance as a normal server that you ssh into and apt-get update/upgrade is plain wrong.

– Werner Vogels, Amazon CTO

Page 116: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

Autoscale is not required.

Page 117: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

Legal and Regulatory Issues

EU data storage law != US data storage law

Page 118: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

5Lessons Learned about AWS

Every service incurs a charge.

http://calculator.s3.amazonaws.com/calc5.html

Page 119: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

You get what you pay for.

5Lessons Learned about AWS

Page 120: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Go Do

Page 121: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Thank you!

Brian KlaasJohns Hopkins Bloomberg School of Public [email protected]@brian_klaaswww.iterateme.com

Page 122: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Resources

■ Amazon AWSaws.amazon.com

■ Ben Nadel’s excellent example of uploading to S3 directly from the browser:www.bennadel.com/blog/2500-Uploading-Files-To-Amazon-S3-Using-A-Form-Post-And-ColdFusion.htm

■ The CF10 AMI on AWS:https://aws.amazon.com/marketplace/pp/B00BR6SYHW (Ubuntu)https://aws.amazon.com/marketplace/pp/B00BQNEX5S (Windows)

Page 123: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Resources

■ Tutorial on Deploying a CF WAR to Elastic Beanstalkquetwo.com/tag/elastic-beanstalk/

■ Setting up the Adobe CF10 AMI Walkthroughwww.adobe.com/devnet/coldfusion/articles/coldfusion-cloud-aws.html

■ Ports needed by CF10 for cloud deploymenthelpx.adobe.com/coldfusion/release-note/coldfusion-10-cloud.html

■ The Official Word on CF10 Licensing Changesblogs.coldfusion.com/post.cfm/coldfusion-10-eula

Page 124: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Resources

■ Amazon’s complete walkthrough of setting up instances and then a load–balanced cluster in EC2Windows – docs.aws.amazon.com/gettingstarted/latest/computebasics/web-app-hosting-intro.htmlLinux – docs.aws.amazon.com/gettingstarted/latest/computebasics-linux/web-app-hosting-intro.html

■ Setting Up EC2 Security Groupsdocs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

Page 125: Start Using Amazon Web Services in Your ColdFusion Apps · RDS Redshift Cloud Front Glacier S3 Storage Gateway. AWS is HTTP–based development 1 Hello AWS. 1 ... Authenticated Users

Resources

■ Wharton’s Chef recipes for installing CF10github.com/wharton/chef-coldfusion10

■ EC2 Instance and Pricing Comparatorwww.ec2instances.info