Created
November 23, 2014 03:07
-
-
Save neftaly/e3fda0d6147cf96ec082 to your computer and use it in GitHub Desktop.
YAML version of https://s3-us-west-2.amazonaws.com/cloudformation-templates-us-west-2/CloudWatch_Logs.template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
AWSTemplateFormatVersion: "2010-09-09" | |
Description: "AWS CloudFormation Sample Template CloudWatch_Logs: Provisions a minimal web application, and demonstrates how to stream the provisioning logs (cloud-init.log, cfn-init.log, cfn-hup.log, and cfn-wire.log) to CloudWatch Logs. This eliminates the need to SSH into an EC2 instance for debugging provisioning issues. Simply view the logs in the AWS CloudWatch console. **WARNING** You will be billed for the AWS resources if you create a stack from this template." | |
Parameters: | |
InstanceType: | |
Description: "WebServer EC2 instance type" | |
Type: "String" | |
Default: "m1.small" | |
AllowedValues: | |
- "t1.micro" | |
- "t2.micro" | |
- "t2.small" | |
- "t2.medium" | |
- "m1.small" | |
- "m1.medium" | |
- "m1.large" | |
- "m1.xlarge" | |
- "m2.xlarge" | |
- "m2.2xlarge" | |
- "m2.4xlarge" | |
- "m3.medium" | |
- "m3.large" | |
- "m3.xlarge" | |
- "m3.2xlarge" | |
- "c1.medium" | |
- "c1.xlarge" | |
- "c3.large" | |
- "c3.xlarge" | |
- "c3.2xlarge" | |
- "c3.4xlarge" | |
- "c3.8xlarge" | |
- "g2.2xlarge" | |
- "r3.large" | |
- "r3.xlarge" | |
- "r3.2xlarge" | |
- "r3.4xlarge" | |
- "r3.8xlarge" | |
- "i2.xlarge" | |
- "i2.2xlarge" | |
- "i2.4xlarge" | |
- "i2.8xlarge" | |
- "hi1.4xlarge" | |
- "hs1.8xlarge" | |
- "cr1.8xlarge" | |
- "cc2.8xlarge" | |
- "cg1.4xlarge" | |
ConstraintDescription: "must be a valid EC2 instance type." | |
KeyName: | |
Description: "Name of an existing EC2 KeyPair to enable SSH access to the instances" | |
Type: "AWS::EC2::KeyPair::KeyName" | |
ConstraintDescription: "must be the name of an existing EC2 KeyPair." | |
SSHLocation: | |
Description: "The IP address range that can be used to SSH to the EC2 instances" | |
Type: "String" | |
MinLength: "9" | |
MaxLength: "18" | |
Default: "0.0.0.0/0" | |
AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})" | |
ConstraintDescription: "must be a valid IP CIDR range of the form x.x.x.x/x." | |
Mappings: | |
AWSInstanceType2Arch: | |
t1.micro: | |
Arch: "PV64" | |
t2.micro: | |
Arch: "HVM64" | |
t2.small: | |
Arch: "HVM64" | |
t2.medium: | |
Arch: "HVM64" | |
m1.small: | |
Arch: "PV64" | |
m1.medium: | |
Arch: "PV64" | |
m1.large: | |
Arch: "PV64" | |
m1.xlarge: | |
Arch: "PV64" | |
m2.xlarge: | |
Arch: "PV64" | |
m2.2xlarge: | |
Arch: "PV64" | |
m2.4xlarge: | |
Arch: "PV64" | |
m3.medium: | |
Arch: "HVM64" | |
m3.large: | |
Arch: "HVM64" | |
m3.xlarge: | |
Arch: "HVM64" | |
m3.2xlarge: | |
Arch: "HVM64" | |
c1.medium: | |
Arch: "PV64" | |
c1.xlarge: | |
Arch: "PV64" | |
c3.large: | |
Arch: "HVM64" | |
c3.xlarge: | |
Arch: "HVM64" | |
c3.2xlarge: | |
Arch: "HVM64" | |
c3.4xlarge: | |
Arch: "HVM64" | |
c3.8xlarge: | |
Arch: "HVM64" | |
g2.2xlarge: | |
Arch: "HVMG2" | |
r3.large: | |
Arch: "HVM64" | |
r3.xlarge: | |
Arch: "HVM64" | |
r3.2xlarge: | |
Arch: "HVM64" | |
r3.4xlarge: | |
Arch: "HVM64" | |
r3.8xlarge: | |
Arch: "HVM64" | |
i2.xlarge: | |
Arch: "HVM64" | |
i2.2xlarge: | |
Arch: "HVM64" | |
i2.4xlarge: | |
Arch: "HVM64" | |
i2.8xlarge: | |
Arch: "HVM64" | |
hi1.4xlarge: | |
Arch: "HVM64" | |
hs1.8xlarge: | |
Arch: "HVM64" | |
cr1.8xlarge: | |
Arch: "HVM64" | |
cc2.8xlarge: | |
Arch: "HVM64" | |
AWSRegionArch2AMI: | |
us-east-1: | |
PV64: "ami-50842d38" | |
HVM64: "ami-08842d60" | |
HVMG2: "ami-3a329952" | |
us-west-2: | |
PV64: "ami-af86c69f" | |
HVM64: "ami-8786c6b7" | |
HVMG2: "ami-47296a77" | |
us-west-1: | |
PV64: "ami-c7a8a182" | |
HVM64: "ami-cfa8a18a" | |
HVMG2: "ami-331b1376" | |
eu-west-1: | |
PV64: "ami-aa8f28dd" | |
HVM64: "ami-748e2903" | |
HVMG2: "ami-00913777" | |
ap-southeast-1: | |
PV64: "ami-20e1c572" | |
HVM64: "ami-d6e1c584" | |
HVMG2: "ami-fabe9aa8" | |
ap-northeast-1: | |
PV64: "ami-21072820" | |
HVM64: "ami-35072834" | |
HVMG2: "ami-5dd1ff5c" | |
ap-southeast-2: | |
PV64: "ami-8b4724b1" | |
HVM64: "ami-fd4724c7" | |
HVMG2: "ami-e98ae9d3" | |
sa-east-1: | |
PV64: "ami-9d6cc680" | |
HVM64: "ami-956cc688" | |
HVMG2: "NOT_SUPPORTED" | |
cn-north-1: | |
PV64: "ami-a857c591" | |
HVM64: "ami-ac57c595" | |
HVMG2: "NOT_SUPPORTED" | |
eu-central-1: | |
PV64: "ami-a03503bd" | |
HVM64: "ami-b43503a9" | |
HVMG2: "ami-b03503ad" | |
Region2Principal: | |
us-east-1: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
us-west-2: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
us-west-1: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
eu-west-1: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
ap-southeast-1: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
ap-northeast-1: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
ap-southeast-2: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
sa-east-1: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
cn-north-1: | |
EC2Principal: "ec2.amazonaws.com.cn" | |
OpsWorksPrincipal: "opsworks.amazonaws.com.cn" | |
eu-central-1: | |
EC2Principal: "ec2.amazonaws.com" | |
OpsWorksPrincipal: "opsworks.amazonaws.com" | |
Region2ARNPrefix: | |
us-east-1: | |
ARNPrefix: "arn:aws:" | |
us-west-1: | |
ARNPrefix: "arn:aws:" | |
us-west-2: | |
ARNPrefix: "arn:aws:" | |
eu-west-1: | |
ARNPrefix: "arn:aws:" | |
ap-northeast-1: | |
ARNPrefix: "arn:aws:" | |
ap-southeast-1: | |
ARNPrefix: "arn:aws:" | |
ap-southeast-2: | |
ARNPrefix: "arn:aws:" | |
sa-east-1: | |
ARNPrefix: "arn:aws:" | |
cn-north-1: | |
ARNPrefix: "arn:aws-cn:" | |
eu-central-1: | |
ARNPrefix: "arn:aws:" | |
Resources: | |
LogRole: | |
Type: "AWS::IAM::Role" | |
Properties: | |
AssumeRolePolicyDocument: | |
Version: "2012-10-17" | |
Statement: | |
- | |
Effect: "Allow" | |
Principal: | |
Service: | |
- | |
Fn::FindInMap: | |
- "Region2Principal" | |
- | |
Ref: "AWS::Region" | |
- "EC2Principal" | |
Action: | |
- "sts:AssumeRole" | |
Path: "/" | |
Policies: | |
- | |
PolicyName: "LogRolePolicy" | |
PolicyDocument: | |
Version: "2012-10-17" | |
Statement: | |
- | |
Effect: "Allow" | |
Action: | |
- "logs:*" | |
Resource: | |
- | |
Fn::Join: | |
- "" | |
- | |
- | |
Fn::FindInMap: | |
- "Region2ARNPrefix" | |
- | |
Ref: "AWS::Region" | |
- "ARNPrefix" | |
- "logs:*:*:*" | |
LogRoleInstanceProfile: | |
Type: "AWS::IAM::InstanceProfile" | |
Properties: | |
Path: "/" | |
Roles: | |
- | |
Ref: "LogRole" | |
CloudFormationLogs: | |
Type: "AWS::Logs::LogGroup" | |
Properties: | |
RetentionInDays: 7 | |
WebServerInstance: | |
Type: "AWS::EC2::Instance" | |
Metadata: | |
AWS::CloudFormation::Init: | |
configSets: | |
install_all: | |
- "install_cfn" | |
- "install_app" | |
- "install_logs" | |
install_cfn: | |
files: | |
/etc/cfn/cfn-hup.conf: | |
content: | |
Fn::Join: | |
- "" | |
- | |
- "[main]\n" | |
- "stack=" | |
- | |
Ref: "AWS::StackId" | |
- "\n" | |
- "region=" | |
- | |
Ref: "AWS::Region" | |
- "\n" | |
mode: "000400" | |
owner: "root" | |
group: "root" | |
/etc/cfn/hooks.d/cfn-auto-reloader.conf: | |
content: | |
Fn::Join: | |
- "" | |
- | |
- "[cfn-auto-reloader-hook]\n" | |
- "triggers=post.update\n" | |
- "path=Resources.WebServerInstance.Metadata.AWS::CloudFormation::Init\n" | |
- "action=/opt/aws/bin/cfn-init -v " | |
- " --stack " | |
- | |
Ref: "AWS::StackName" | |
- " --resource WebServerInstance " | |
- " --configsets install_all " | |
- " --region " | |
- | |
Ref: "AWS::Region" | |
- "\n" | |
- "runas=root\n" | |
services: | |
sysvinit: | |
cfn-hup: | |
enabled: "true" | |
ensureRunning: "true" | |
files: | |
- "/etc/cfn/cfn-hup.conf" | |
- "/etc/cfn/hooks.d/cfn-auto-reloader.conf" | |
install_app: | |
packages: | |
yum: | |
httpd: [] | |
files: | |
/var/www/html/index.html: | |
content: | |
Fn::Join: | |
- "\n" | |
- | |
- "<img src=\"https://s3.amazonaws.com/cloudformation-examples/cloudformation_graphic.png\" alt=\"AWS CloudFormation Logo\"/>" | |
- "<h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1>" | |
mode: "000644" | |
owner: "root" | |
group: "root" | |
services: | |
sysvinit: | |
httpd: | |
enabled: "true" | |
ensureRunning: "true" | |
install_logs: | |
packages: | |
yum: | |
awslogs: [] | |
files: | |
/etc/awslogs/awslogs.conf: | |
content: | |
Fn::Join: | |
- "" | |
- | |
- "[general]\n" | |
- "state_file= /var/awslogs/state/agent-state\n" | |
- "[/var/log/cloud-init.log]\n" | |
- "file = /var/log/cloud-init.log\n" | |
- "log_group_name = " | |
- | |
Ref: "CloudFormationLogs" | |
- "\n" | |
- "log_stream_name = {instance_id}/cloud-init.log\n" | |
- "datetime_format = \n" | |
- "[/var/log/cloud-init-output.log]\n" | |
- "file = /var/log/cloud-init-output.log\n" | |
- "log_group_name = " | |
- | |
Ref: "CloudFormationLogs" | |
- "\n" | |
- "log_stream_name = {instance_id}/cloud-init-output.log\n" | |
- "datetime_format = \n" | |
- "[/var/log/cfn-init.log]\n" | |
- "file = /var/log/cfn-init.log\n" | |
- "log_group_name = " | |
- | |
Ref: "CloudFormationLogs" | |
- "\n" | |
- "log_stream_name = {instance_id}/cfn-init.log\n" | |
- "datetime_format = \n" | |
- "[/var/log/cfn-hup.log]\n" | |
- "file = /var/log/cfn-hup.log\n" | |
- "log_group_name = " | |
- | |
Ref: "CloudFormationLogs" | |
- "\n" | |
- "log_stream_name = {instance_id}/cfn-hup.log\n" | |
- "datetime_format = \n" | |
- "[/var/log/cfn-wire.log]\n" | |
- "file = /var/log/cfn-wire.log\n" | |
- "log_group_name = " | |
- | |
Ref: "CloudFormationLogs" | |
- "\n" | |
- "log_stream_name = {instance_id}/cfn-wire.log\n" | |
- "datetime_format = \n" | |
- "[/var/log/httpd]\n" | |
- "file = /var/log/httpd/*\n" | |
- "log_group_name = " | |
- | |
Ref: "CloudFormationLogs" | |
- "\n" | |
- "log_stream_name = {instance_id}/httpd\n" | |
- "datetime_format = %d/%b/%Y:%H:%M:%S\n" | |
mode: "000444" | |
owner: "root" | |
group: "root" | |
commands: | |
01_create_state_directory: | |
command: "mkdir -p /var/awslogs/state" | |
services: | |
sysvinit: | |
awslogs: | |
enabled: "true" | |
ensureRunning: "true" | |
files: | |
- "/etc/awslogs/awslogs.conf" | |
Properties: | |
SecurityGroups: | |
- | |
Ref: "InstanceSecurityGroup" | |
KeyName: | |
Ref: "KeyName" | |
InstanceType: | |
Ref: "InstanceType" | |
IamInstanceProfile: | |
Ref: "LogRoleInstanceProfile" | |
ImageId: | |
Fn::FindInMap: | |
- "AWSRegionArch2AMI" | |
- | |
Ref: "AWS::Region" | |
- | |
Fn::FindInMap: | |
- "AWSInstanceType2Arch" | |
- | |
Ref: "InstanceType" | |
- "Arch" | |
UserData: | |
Fn::Base64: | |
Fn::Join: | |
- "" | |
- | |
- "#!/bin/bash -xe\n" | |
- "yum update -y aws-cfn-bootstrap\n" | |
- "/opt/aws/bin/cfn-init -v " | |
- " --stack " | |
- | |
Ref: "AWS::StackName" | |
- " --resource WebServerInstance " | |
- " --configsets install_all " | |
- " --region " | |
- | |
Ref: "AWS::Region" | |
- "\n" | |
- "/opt/aws/bin/cfn-signal -e $? " | |
- " --stack " | |
- | |
Ref: "AWS::StackName" | |
- " --resource WebServerInstance " | |
- " --region " | |
- | |
Ref: "AWS::Region" | |
- "\n" | |
CreationPolicy: | |
ResourceSignal: | |
Timeout: "PT15M" | |
InstanceSecurityGroup: | |
Type: "AWS::EC2::SecurityGroup" | |
Properties: | |
GroupDescription: "Enable SSH access and HTTP access on the inbound port" | |
SecurityGroupIngress: | |
- | |
IpProtocol: "tcp" | |
FromPort: "22" | |
ToPort: "22" | |
CidrIp: | |
Ref: "SSHLocation" | |
- | |
IpProtocol: "tcp" | |
FromPort: "80" | |
ToPort: "80" | |
CidrIp: "0.0.0.0/0" | |
Outputs: | |
URL: | |
Description: "URL of the sample website" | |
Value: | |
Fn::Join: | |
- "" | |
- | |
- "http://" | |
- | |
Fn::GetAtt: | |
- "WebServerInstance" | |
- "PublicDnsName" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment