lono 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +3 -1
  4. data/exe/lono +1 -1
  5. data/lib/lono.rb +17 -15
  6. data/lib/lono/cfn.rb +54 -24
  7. data/lib/lono/cfn/base.rb +95 -17
  8. data/lib/lono/cfn/create.rb +5 -29
  9. data/lib/lono/cfn/current.rb +95 -0
  10. data/lib/lono/cfn/delete.rb +15 -1
  11. data/lib/lono/cfn/preview.rb +5 -3
  12. data/lib/lono/cfn/status.rb +212 -0
  13. data/lib/lono/cfn/update.rb +6 -12
  14. data/lib/lono/cfn/util.rb +2 -2
  15. data/lib/lono/cli.rb +4 -6
  16. data/lib/lono/core.rb +23 -5
  17. data/lib/lono/default/settings.yml +1 -1
  18. data/lib/lono/file_uploader.rb +119 -0
  19. data/lib/lono/help/cfn/current.md +18 -0
  20. data/lib/lono/help/cfn/status.md +19 -0
  21. data/lib/lono/script/build.rb +2 -1
  22. data/lib/lono/script/upload.rb +1 -1
  23. data/lib/lono/template/helper.rb +8 -0
  24. data/lib/lono/template/upload.rb +13 -1
  25. data/lib/lono/upgrade.rb +16 -0
  26. data/lib/lono/{upgrade4.rb → upgrade/upgrade4.rb} +1 -1
  27. data/lib/lono/upgrade/upgrade42.rb +36 -0
  28. data/lib/lono/version.rb +1 -1
  29. data/lib/starter_projects/autoscaling/.gitignore +1 -0
  30. data/lib/starter_projects/autoscaling/README.md +1 -1
  31. data/lib/starter_projects/autoscaling/config/settings.yml +1 -1
  32. data/lib/starter_projects/ec2/.gitignore +1 -0
  33. data/lib/starter_projects/ec2/config/settings.yml +1 -1
  34. data/lib/starter_projects/skeleton/.gitignore +1 -0
  35. data/lib/starter_projects/skeleton/config/settings.yml +1 -1
  36. data/lono.gemspec +1 -0
  37. data/spec/fixtures/cfn/stack-events-complete.json +1080 -0
  38. data/spec/fixtures/cfn/stack-events-in-progress.json +1080 -0
  39. data/spec/fixtures/cfn/stack-events-update-rollback-complete.json +1086 -0
  40. data/spec/fixtures/lono_project/config/settings.yml +1 -1
  41. data/spec/lib/lono/cfn/status_spec.rb +77 -0
  42. metadata +33 -4
@@ -2,25 +2,43 @@ require 'pathname'
2
2
 
3
3
  module Lono
4
4
  module Core
5
+ extend Memoist
5
6
  autoload :Config, 'lono/core/config'
6
7
 
7
- @@config = nil
8
8
  def config
9
- @@config ||= Config.new
9
+ Config.new
10
10
  end
11
+ memoize :config
11
12
 
12
13
  def root
13
14
  path = ENV['LONO_ROOT'] || '.'
14
15
  Pathname.new(path)
15
16
  end
17
+ memoize :root
16
18
 
17
- @@env = nil
18
19
  def env
19
- return @@env if @@env
20
20
  ufo_env = env_from_profile(ENV['AWS_PROFILE']) || 'development'
21
21
  ufo_env = ENV['LONO_ENV'] if ENV['LONO_ENV'] # highest precedence
22
- @@env = ufo_env
22
+ ufo_env
23
23
  end
24
+ memoize :env
25
+
26
+ # Precedence (highest to lowest)
27
+ # 1. LONO_SUFFIX
28
+ # 2. .current/lono
29
+ # 3. config/settings.yml
30
+ def suffix
31
+ suffix = ENV['LONO_SUFFIX'] # highest precedence
32
+ suffix ||= Cfn::Current.suffix
33
+ unless suffix
34
+ settings = Setting.new.data
35
+ suffix ||= settings["stack_name_suffix"] # lowest precedence
36
+ end
37
+
38
+ return if suffix&.empty?
39
+ suffix
40
+ end
41
+ memoize :suffix
24
42
 
25
43
  private
26
44
  # Do not use the Setting class to load the profile because it can cause an
@@ -17,7 +17,7 @@ base:
17
17
  # default: mybucket/folder
18
18
  # aws_profile1: mybucket/folder
19
19
  # aws_profile2: another-bucket/storage/folder
20
- # randomize_stack_name: true # tack on a 3 char random string at the end of the stack name for lono cfn create
20
+ # stack_name_suffix: random # tack on a 3 char random string at the end of the stack name for lono cfn create
21
21
 
22
22
 
23
23
  development:
@@ -0,0 +1,119 @@
1
+ module Lono
2
+ class FileUploader
3
+ include Lono::Template::AwsService
4
+ extend Memoist
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ @checksums = {}
9
+ @prefix = "#{folder_key}/#{Lono.env}/files" # s3://s3-bucket/folder/development/files
10
+ end
11
+
12
+ def upload_all
13
+ puts "Uploading app/files..."
14
+ load_checksums!
15
+
16
+ pattern = "#{Lono.root}/app/files/**/*"
17
+ Dir.glob(pattern).each do |path|
18
+ next if ::File.directory?(path)
19
+ s3_upload(path)
20
+ end
21
+ end
22
+
23
+ def load_checksums!
24
+ resp = s3.list_objects(bucket: s3_bucket, prefix: @prefix)
25
+ resp.contents.each do |object|
26
+ # key does not include the bucket name
27
+ # full path = s3://my-bucket/s3_folder/files/production/my-template.yml
28
+ # key = s3_folder/files/production/my-template.yml
29
+ # etag is the checksum as long as the file is not a multi-part file upload
30
+ # it has extra double quotes wrapped around it.
31
+ # etag = "\"9cb437490cee2cc96101baf326e5ca81\""
32
+ @checksums[object.key] = strip_surrounding_quotes(object.etag)
33
+ end
34
+ @checksums
35
+ end
36
+
37
+ # used for file_s3_key helper
38
+ def md5(path)
39
+ Digest::MD5.file(path).to_s[0..7]
40
+ end
41
+ memoize :md5
42
+
43
+ def md5_key(path)
44
+ pretty_path = path.sub(/^\.\//, '')
45
+ key = "#{@prefix}/#{pretty_path.sub(%r{app/files/},'')}"
46
+ # add the short md5sum to the file
47
+ key = key.sub(/\.(\w+)$/,'') # strip extension
48
+ ext = $1
49
+ md5 = md5(path)
50
+ "#{key}-#{md5}.#{ext}"
51
+ end
52
+
53
+ def s3_upload(path)
54
+ pretty_path = path.sub(/^\.\//, '')
55
+ key = md5_key(path)
56
+ s3_full_path = "s3://#{s3_bucket}/#{key}"
57
+
58
+ local_checksum = Digest::MD5.hexdigest(IO.read(path))
59
+ remote_checksum = remote_checksum(key)
60
+ if local_checksum == remote_checksum
61
+ puts("Not modified: #{pretty_path} to #{s3_full_path}".colorize(:yellow)) unless @options[:noop]
62
+ return # do not upload unless the checksum has changed
63
+ else
64
+ # Example output:
65
+ # Uploaded: app/files/docker.yml to s3://boltops-dev/s3_folder/templates/development/docker.yml
66
+ # Uploaded: app/files/ecs/private.yml to s3://boltops-dev/s3_folder/templates/development/ecs/private.yml
67
+ message = "Uploading: #{pretty_path} to #{s3_full_path}".colorize(:green)
68
+ message = "NOOP: #{message}" if @options[:noop]
69
+ puts message
70
+ end
71
+
72
+ resp = s3.put_object(
73
+ body: IO.read(path),
74
+ bucket: s3_bucket,
75
+ key: key,
76
+ storage_class: "REDUCED_REDUNDANCY"
77
+ ) unless @options[:noop]
78
+ end
79
+
80
+ # key example: cloudformation/production/files/lifecycle-0719ab81.zip
81
+ # s3 path: s3://boltops-dev/cloudformation/production/files/lifecycle-0719ab81.zip
82
+ # s3_folder: s3://boltops-dev/cloudformation
83
+ def remote_checksum(key)
84
+ @checksums[key]
85
+ end
86
+
87
+ def s3_bucket
88
+ s3_folder.sub('s3://','').split('/').first
89
+ end
90
+
91
+ def s3_folder
92
+ setting = Lono::Setting.new
93
+ setting.s3_folder
94
+ end
95
+
96
+ # The folder_key is the s3_folder setting with the s3 bucket.
97
+ #
98
+ # Example:
99
+ # s3_bucket('s3://mybucket/files/storage/path')
100
+ # => files/storage/path
101
+ def folder_key
102
+ return nil if @options[:noop] # to get spec passing
103
+ return nil unless s3_folder
104
+ s3_folder.sub('s3://','').split('/')[1..-1].join('/')
105
+ end
106
+
107
+ def strip_surrounding_quotes(string)
108
+ string.sub(/^"/,'').sub(/"$/,'')
109
+ end
110
+
111
+ def s3_resource
112
+ @s3_resource ||= Aws::S3::Resource.new
113
+ end
114
+
115
+ def s3
116
+ @s3 ||= Aws::S3::Client.new
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,18 @@
1
+ Set current values like stack name and suffix.
2
+
3
+ {% include current-options.md %}
4
+
5
+ ## Static Example
6
+
7
+ lono cfn create demo
8
+ lono cfn current --name demo
9
+ lono cfn update
10
+
11
+ ## Suffix Example
12
+
13
+ lono cfn current --suffix random
14
+ lono cfn create demo
15
+ lono cfn update demo-abc # generated random suffix was abc
16
+ lono cfn current --name demo-abc
17
+ lono cfn update
18
+ lono cfn update # update again
@@ -0,0 +1,19 @@
1
+ Shows the status of the stack. If the stack is in progress then tail the status and provide live updates.
2
+
3
+ ## Examples
4
+
5
+ $ lono cfn status ecs-asg
6
+ The current status for the stack ecs-asg is UPDATE_COMPLETE
7
+ Stack events:
8
+ 11:52:28PM UPDATE_IN_PROGRESS AWS::CloudFormation::Stack ecs-asg User Initiated
9
+ 11:52:32PM UPDATE_IN_PROGRESS AWS::CloudWatch::Alarm HighMemory
10
+ 11:52:32PM UPDATE_IN_PROGRESS AWS::CloudWatch::Alarm HighCpu
11
+ 11:52:32PM UPDATE_COMPLETE AWS::CloudWatch::Alarm HighMemory
12
+ 11:52:33PM UPDATE_COMPLETE AWS::CloudWatch::Alarm HighCpu
13
+ 11:52:35PM UPDATE_COMPLETE_CLEANUP_IN_PROGRESS AWS::CloudFormation::Stack ecs-asg
14
+ 11:52:36PM UPDATE_COMPLETE AWS::CloudFormation::Stack ecs-asg
15
+
16
+ If current name is set.
17
+
18
+ lono cfn current --name ecs-asg
19
+ lono cfn status
@@ -35,7 +35,8 @@ class Lono::Script
35
35
 
36
36
  def create_tarball
37
37
  # https://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how-can-i-avoid-them
38
- sh "cd app && dot_clean ." if system("type dot_clean > /dev/null")
38
+ # using system to avoid displaying command
39
+ system "cd app && dot_clean ." if system("type dot_clean > /dev/null")
39
40
 
40
41
  # https://serverfault.com/questions/110208/different-md5sums-for-same-tar-contents
41
42
  # Using tar czf directly results in a new m5sum each time because the gzip
@@ -8,7 +8,7 @@ class Lono::Script
8
8
  return unless scripts_built?
9
9
 
10
10
  upload(tarball_path)
11
- puts "Uploaded #{File.basename(s3_dest)} to s3}"
11
+ puts "Uploaded #{File.basename(s3_dest)} to s3."
12
12
  end
13
13
 
14
14
  def upload(tarball_path)
@@ -122,6 +122,14 @@ BASH_CODE
122
122
  path && File.exist?(path)
123
123
  end
124
124
 
125
+ def file_s3_key(name)
126
+ s3_folder = setting.s3_folder
127
+ return nil unless s3_folder
128
+
129
+ uploader = Lono::FileUploader.new
130
+ uploader.md5_key("#{Lono.root}/app/files/#{name}")
131
+ end
132
+
125
133
  def current_region
126
134
  region = Aws.config[:region]
127
135
  region ||= ENV['AWS_REGION']
@@ -9,13 +9,14 @@ class Lono::Template::Upload
9
9
  def initialize(options={})
10
10
  @options = options
11
11
  @checksums = {}
12
- @prefix = "#{folder_key}/#{Lono.env}/templates" # s3://s3-bucket/folder/developemnt/templates
12
+ @prefix = "#{folder_key}/#{Lono.env}/templates" # s3://s3-bucket/folder/development/templates
13
13
  end
14
14
 
15
15
  def run
16
16
  ensure_s3_setup!
17
17
  load_checksums!
18
18
 
19
+ say "Uploading CloudFormation templates..."
19
20
  paths = Dir.glob("#{Lono.config.output_path}/templates/**/*")
20
21
  paths.select { |p| File.file?(p) }.each do |path|
21
22
  upload(path)
@@ -97,6 +98,17 @@ class Lono::Template::Upload
97
98
  "https://s3.amazonaws.com/#{s3_bucket}/#{@prefix}/#{template_path}"
98
99
  end
99
100
 
101
+ # used for cfn/base.rb def set_template_body!(params)
102
+ def s3_presigned_url(template_output_path)
103
+ template_path = template_output_path.sub('output/templates/','')
104
+ key = "#{@prefix}/#{template_path}"
105
+ s3_presigner.presigned_url(:get_object, bucket: s3_bucket, key: key)
106
+ end
107
+
108
+ def s3_presigner
109
+ @signer ||= Aws::S3::Presigner.new
110
+ end
111
+
100
112
  # Parse the s3_folder setting and remove the folder portion to leave the
101
113
  # "s3_bucket" portion
102
114
  # Example:
@@ -0,0 +1,16 @@
1
+ require "thor"
2
+
3
+ class Lono::Upgrade < Lono::Command
4
+ autoload :Upgrade4, 'lono/upgrade/upgrade4'
5
+ autoload :Upgrade42, 'lono/upgrade/upgrade42'
6
+
7
+ desc "v3to4", "Upgrade from version 3 to 4."
8
+ def v3to4
9
+ Upgrade4.new(options).run
10
+ end
11
+
12
+ desc "v4to4_2", "Upgrade from version 4.0 to 4.2"
13
+ def v4to4_2
14
+ Upgrade42.start
15
+ end
16
+ end
@@ -1,7 +1,7 @@
1
1
  require 'fileutils'
2
2
  require 'yaml'
3
3
 
4
- module Lono
4
+ class Lono::Upgrade
5
5
  class Upgrade4
6
6
  def initialize(options)
7
7
  @options = options
@@ -0,0 +1,36 @@
1
+ require 'fileutils'
2
+ require 'yaml'
3
+
4
+ class Lono::Upgrade
5
+ class Upgrade42 < Lono::Sequence
6
+ def upsert_gitignore
7
+ text =<<-EOL
8
+ .lono/current
9
+ EOL
10
+ if File.exist?(".gitignore")
11
+ append_to_file ".gitignore", text
12
+ else
13
+ create_file ".gitignore", text
14
+ end
15
+ end
16
+
17
+ def update_settings_yaml
18
+ path = "config/settings.yml"
19
+ puts "Updating #{path}."
20
+ data = YAML.load_file(path)
21
+
22
+ if data["base"].has_key?("randomize_stack_name")
23
+ randomize = data["base"]["randomize_stack_name"]
24
+ if randomize
25
+ data["base"]["stack_name_suffix"] = "random"
26
+ end
27
+
28
+ data["base"].delete("randomize_stack_name")
29
+ puts "Updated randomize_stack_name with stack_name_suffix."
30
+ end
31
+
32
+ text = YAML.dump(data)
33
+ IO.write(path, text)
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Lono
2
- VERSION = "4.1.0"
2
+ VERSION = "4.2.0"
3
3
  end
@@ -1 +1,2 @@
1
+ .lono
1
2
  output
@@ -109,7 +109,7 @@ lono new autoscaling
109
109
  cd autoscaling
110
110
  lono import https://s3-us-west-2.amazonaws.com/cloudformation-templates-us-west-2/AutoScalingMultiAZWithNotifications.template --name autoscaling
111
111
  VPC=$(aws ec2 describe-vpcs | jq -r '.Vpcs[] | select(.IsDefault == true) | .VpcId')
112
- SUBNETS=$(aws ec2 describe-subnets | jq -r '.Subnets[].SubnetId' | tr -s '\n' ',' | sed 's/,*$//g')
112
+ SUBNETS=$(aws ec2 describe-subnets --filters Name=vpc-id,Values=$VPC | jq -r '.Subnets[].SubnetId' | tr -s '\n' ',' | sed 's/,*$//g')
113
113
  EMAIL=email@domain.com
114
114
  KEY_NAME=default
115
115
  sed "s/VpcId=/VpcId=$VPC/; s/Subnets=/Subnets=$SUBNETS/; s/OperatorEMail=/OperatorEMail=$EMAIL/; s/KeyName=/KeyName=$KEY_NAME/;" config/params/base/autoscaling.txt > config/params/base/autoscaling.txt.1
@@ -17,7 +17,7 @@ base:
17
17
  # default: mybucket/folder
18
18
  # aws_profile1: mybucket/folder
19
19
  # aws_profile2: another-bucket/storage/folder
20
- # randomize_stack_name: true # tack on a 3 char random string at the end of the stack name for lono cfn create
20
+ # stack_name_suffix: random # tack on a 3 char random string at the end of the stack name for lono cfn create
21
21
 
22
22
 
23
23
  development:
@@ -1 +1,2 @@
1
+ .lono
1
2
  output
@@ -17,7 +17,7 @@ base:
17
17
  # default: mybucket/folder
18
18
  # aws_profile1: mybucket/folder
19
19
  # aws_profile2: another-bucket/storage/folder
20
- # randomize_stack_name: true # tack on a 3 char random string at the end of the stack name for lono cfn create
20
+ # stack_name_suffix: random # tack on a 3 char random string at the end of the stack name for lono cfn create
21
21
 
22
22
 
23
23
  development:
@@ -1 +1,2 @@
1
+ .lono
1
2
  output
@@ -17,7 +17,7 @@ base:
17
17
  # default: mybucket/path
18
18
  # aws_profile1: mybucket/path
19
19
  # aws_profile2: another-bucket/storage/path
20
- # randomize_stack_name: true # tack on a 3 char random string at the end of the stack name for lono cfn create
20
+ # stack_name_suffix: random # tack on a 3 char random string at the end of the stack name for lono cfn create
21
21
 
22
22
 
23
23
  development:
@@ -32,6 +32,7 @@ Gem::Specification.new do |gem|
32
32
  gem.add_dependency "rb-fsevent"
33
33
  gem.add_dependency "thor"
34
34
  gem.add_dependency "render_me_pretty"
35
+ gem.add_dependency "memoist"
35
36
  # gem.add_dependency "plissken" # dependency for vendor/lono-params
36
37
  # using the vendor fork version: https://github.com/tongueroo/plissken
37
38
  # until https://github.com/futurechimp/plissken/pull/6 gets merged
@@ -0,0 +1,1080 @@
1
+ {
2
+ "stack_events": [
3
+ {
4
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
5
+ "event_id": "4543a350-7362-11e8-9cba-50d5cd16c68e",
6
+ "stack_name": "demo-web",
7
+ "logical_resource_id": "demo-web",
8
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
9
+ "resource_type": "AWS::CloudFormation::Stack",
10
+ "timestamp": "2018-06-19 01:44:14 UTC",
11
+ "resource_status": "UPDATE_COMPLETE"
12
+ },
13
+ {
14
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
15
+ "event_id": "ElbSecurityGroup-543beb17-2e99-43ed-b191-b15d5e11da79",
16
+ "stack_name": "demo-web",
17
+ "logical_resource_id": "ElbSecurityGroup",
18
+ "physical_resource_id": "sg-e3da72a8",
19
+ "resource_type": "AWS::EC2::SecurityGroup",
20
+ "timestamp": "2018-06-19 01:44:13 UTC",
21
+ "resource_status": "DELETE_COMPLETE"
22
+ },
23
+ {
24
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
25
+ "event_id": "ElbSecurityGroup-b915d3d7-0136-43af-86f5-7e0f2aa25811",
26
+ "stack_name": "demo-web",
27
+ "logical_resource_id": "ElbSecurityGroup",
28
+ "physical_resource_id": "sg-e3da72a8",
29
+ "resource_type": "AWS::EC2::SecurityGroup",
30
+ "timestamp": "2018-06-19 01:43:25 UTC",
31
+ "resource_status": "DELETE_IN_PROGRESS"
32
+ },
33
+ {
34
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
35
+ "event_id": "Elb-48e41804-9d23-4302-97f6-12023a7179e1",
36
+ "stack_name": "demo-web",
37
+ "logical_resource_id": "Elb",
38
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a",
39
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
40
+ "timestamp": "2018-06-19 01:43:23 UTC",
41
+ "resource_status": "DELETE_COMPLETE"
42
+ },
43
+ {
44
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
45
+ "event_id": "Elb-807571cb-2d4a-43b7-b2f0-5f801b4f7b14",
46
+ "stack_name": "demo-web",
47
+ "logical_resource_id": "Elb",
48
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a",
49
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
50
+ "timestamp": "2018-06-19 01:43:23 UTC",
51
+ "resource_status": "DELETE_IN_PROGRESS"
52
+ },
53
+ {
54
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
55
+ "event_id": "TargetGroup-ec634c43-b887-4bde-a525-7c69782865a6",
56
+ "stack_name": "demo-web",
57
+ "logical_resource_id": "TargetGroup",
58
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1",
59
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
60
+ "timestamp": "2018-06-19 01:43:22 UTC",
61
+ "resource_status": "DELETE_COMPLETE"
62
+ },
63
+ {
64
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
65
+ "event_id": "TargetGroup-3b2887fb-00d0-4629-bc21-c6343de22da4",
66
+ "stack_name": "demo-web",
67
+ "logical_resource_id": "TargetGroup",
68
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1",
69
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
70
+ "timestamp": "2018-06-19 01:43:21 UTC",
71
+ "resource_status": "DELETE_IN_PROGRESS"
72
+ },
73
+ {
74
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
75
+ "event_id": "EcsService-65a49928-5719-417c-8b88-d46615a819e0",
76
+ "stack_name": "demo-web",
77
+ "logical_resource_id": "EcsService",
78
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1N7ADZ6ZXNSHZ",
79
+ "resource_type": "AWS::ECS::Service",
80
+ "timestamp": "2018-06-19 01:43:20 UTC",
81
+ "resource_status": "DELETE_COMPLETE"
82
+ },
83
+ {
84
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
85
+ "event_id": "EcsSecurityGroupRule-cd75e919-18d3-4358-a079-1ce5601f1472",
86
+ "stack_name": "demo-web",
87
+ "logical_resource_id": "EcsSecurityGroupRule",
88
+ "physical_resource_id": "EcsSecurityGroupRule",
89
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
90
+ "timestamp": "2018-06-19 01:42:50 UTC",
91
+ "resource_status": "DELETE_COMPLETE"
92
+ },
93
+ {
94
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
95
+ "event_id": "Listener-40b1dc95-4c2c-43b4-9a3f-a72c0a9a8db2",
96
+ "stack_name": "demo-web",
97
+ "logical_resource_id": "Listener",
98
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a/0269156c6f8a5d37",
99
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
100
+ "timestamp": "2018-06-19 01:42:50 UTC",
101
+ "resource_status": "DELETE_COMPLETE"
102
+ },
103
+ {
104
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
105
+ "event_id": "EcsSecurityGroupRule-426d9090-c431-41f7-a9eb-58dbfa5754ec",
106
+ "stack_name": "demo-web",
107
+ "logical_resource_id": "EcsSecurityGroupRule",
108
+ "physical_resource_id": "EcsSecurityGroupRule",
109
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
110
+ "timestamp": "2018-06-19 01:42:49 UTC",
111
+ "resource_status": "DELETE_IN_PROGRESS"
112
+ },
113
+ {
114
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
115
+ "event_id": "Listener-edc90e3f-5d30-4470-be0f-eaf821cdaf96",
116
+ "stack_name": "demo-web",
117
+ "logical_resource_id": "Listener",
118
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a/0269156c6f8a5d37",
119
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
120
+ "timestamp": "2018-06-19 01:42:49 UTC",
121
+ "resource_status": "DELETE_IN_PROGRESS"
122
+ },
123
+ {
124
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
125
+ "event_id": "EcsService-60b2bae3-abb1-40bc-add1-901baf9cbc38",
126
+ "stack_name": "demo-web",
127
+ "logical_resource_id": "EcsService",
128
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1N7ADZ6ZXNSHZ",
129
+ "resource_type": "AWS::ECS::Service",
130
+ "timestamp": "2018-06-19 01:42:49 UTC",
131
+ "resource_status": "DELETE_IN_PROGRESS"
132
+ },
133
+ {
134
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
135
+ "event_id": "1191b0b0-7362-11e8-8f9f-500c285eae99",
136
+ "stack_name": "demo-web",
137
+ "logical_resource_id": "demo-web",
138
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
139
+ "resource_type": "AWS::CloudFormation::Stack",
140
+ "timestamp": "2018-06-19 01:42:47 UTC",
141
+ "resource_status": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
142
+ },
143
+ {
144
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
145
+ "event_id": "EcsService-UPDATE_COMPLETE-2018-06-19T01:42:45.150Z",
146
+ "stack_name": "demo-web",
147
+ "logical_resource_id": "EcsService",
148
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-COSKF0KEJ778",
149
+ "resource_type": "AWS::ECS::Service",
150
+ "timestamp": "2018-06-19 01:42:45 UTC",
151
+ "resource_status": "UPDATE_COMPLETE",
152
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/my-elb/0158af4eb596cfd2\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
153
+ },
154
+ {
155
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
156
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-19T01:40:43.817Z",
157
+ "stack_name": "demo-web",
158
+ "logical_resource_id": "EcsService",
159
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-COSKF0KEJ778",
160
+ "resource_type": "AWS::ECS::Service",
161
+ "timestamp": "2018-06-19 01:40:43 UTC",
162
+ "resource_status": "UPDATE_IN_PROGRESS",
163
+ "resource_status_reason": "Resource creation Initiated",
164
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/my-elb/0158af4eb596cfd2\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
165
+ },
166
+ {
167
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
168
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-19T01:40:43.135Z",
169
+ "stack_name": "demo-web",
170
+ "logical_resource_id": "EcsService",
171
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1N7ADZ6ZXNSHZ",
172
+ "resource_type": "AWS::ECS::Service",
173
+ "timestamp": "2018-06-19 01:40:43 UTC",
174
+ "resource_status": "UPDATE_IN_PROGRESS",
175
+ "resource_status_reason": "Requested update requires the creation of a new physical resource; hence creating one.",
176
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/my-elb/0158af4eb596cfd2\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
177
+ },
178
+ {
179
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
180
+ "event_id": "c32cb870-7361-11e8-aa12-500c28b3e29a",
181
+ "stack_name": "demo-web",
182
+ "logical_resource_id": "demo-web",
183
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
184
+ "resource_type": "AWS::CloudFormation::Stack",
185
+ "timestamp": "2018-06-19 01:40:35 UTC",
186
+ "resource_status": "UPDATE_IN_PROGRESS",
187
+ "resource_status_reason": "User Initiated"
188
+ },
189
+ {
190
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
191
+ "event_id": "b17cfae0-7361-11e8-8652-500c524058c6",
192
+ "stack_name": "demo-web",
193
+ "logical_resource_id": "demo-web",
194
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
195
+ "resource_type": "AWS::CloudFormation::Stack",
196
+ "timestamp": "2018-06-19 01:40:06 UTC",
197
+ "resource_status": "UPDATE_COMPLETE"
198
+ },
199
+ {
200
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
201
+ "event_id": "EcsService-7817b4fd-6a5d-473d-a098-fffc31f8be02",
202
+ "stack_name": "demo-web",
203
+ "logical_resource_id": "EcsService",
204
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-3WUGSQGMX5D7",
205
+ "resource_type": "AWS::ECS::Service",
206
+ "timestamp": "2018-06-19 01:40:05 UTC",
207
+ "resource_status": "DELETE_COMPLETE"
208
+ },
209
+ {
210
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
211
+ "event_id": "EcsService-40f58304-ce99-4a1c-8457-0c1d4c659a8a",
212
+ "stack_name": "demo-web",
213
+ "logical_resource_id": "EcsService",
214
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-3WUGSQGMX5D7",
215
+ "resource_type": "AWS::ECS::Service",
216
+ "timestamp": "2018-06-19 01:39:34 UTC",
217
+ "resource_status": "DELETE_IN_PROGRESS"
218
+ },
219
+ {
220
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
221
+ "event_id": "9d9ffd10-7361-11e8-b9a6-50fae984a0d1",
222
+ "stack_name": "demo-web",
223
+ "logical_resource_id": "demo-web",
224
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
225
+ "resource_type": "AWS::CloudFormation::Stack",
226
+ "timestamp": "2018-06-19 01:39:32 UTC",
227
+ "resource_status": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
228
+ },
229
+ {
230
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
231
+ "event_id": "EcsService-UPDATE_COMPLETE-2018-06-19T01:39:30.206Z",
232
+ "stack_name": "demo-web",
233
+ "logical_resource_id": "EcsService",
234
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1N7ADZ6ZXNSHZ",
235
+ "resource_type": "AWS::ECS::Service",
236
+ "timestamp": "2018-06-19 01:39:30 UTC",
237
+ "resource_status": "UPDATE_COMPLETE",
238
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
239
+ },
240
+ {
241
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
242
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-19T01:37:29.037Z",
243
+ "stack_name": "demo-web",
244
+ "logical_resource_id": "EcsService",
245
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1N7ADZ6ZXNSHZ",
246
+ "resource_type": "AWS::ECS::Service",
247
+ "timestamp": "2018-06-19 01:37:29 UTC",
248
+ "resource_status": "UPDATE_IN_PROGRESS",
249
+ "resource_status_reason": "Resource creation Initiated",
250
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
251
+ },
252
+ {
253
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
254
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-19T01:37:28.467Z",
255
+ "stack_name": "demo-web",
256
+ "logical_resource_id": "EcsService",
257
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-3WUGSQGMX5D7",
258
+ "resource_type": "AWS::ECS::Service",
259
+ "timestamp": "2018-06-19 01:37:28 UTC",
260
+ "resource_status": "UPDATE_IN_PROGRESS",
261
+ "resource_status_reason": "Requested update requires the creation of a new physical resource; hence creating one.",
262
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
263
+ },
264
+ {
265
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
266
+ "event_id": "Listener-CREATE_COMPLETE-2018-06-19T01:37:28.191Z",
267
+ "stack_name": "demo-web",
268
+ "logical_resource_id": "Listener",
269
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a/0269156c6f8a5d37",
270
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
271
+ "timestamp": "2018-06-19 01:37:28 UTC",
272
+ "resource_status": "CREATE_COMPLETE",
273
+ "resource_properties": "{\"LoadBalancerArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a\",\"DefaultActions\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1\",\"Type\":\"forward\"}],\"Port\":\"80\",\"Protocol\":\"HTTP\"}"
274
+ },
275
+ {
276
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
277
+ "event_id": "Listener-CREATE_IN_PROGRESS-2018-06-19T01:37:27.393Z",
278
+ "stack_name": "demo-web",
279
+ "logical_resource_id": "Listener",
280
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a/0269156c6f8a5d37",
281
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
282
+ "timestamp": "2018-06-19 01:37:27 UTC",
283
+ "resource_status": "CREATE_IN_PROGRESS",
284
+ "resource_status_reason": "Resource creation Initiated",
285
+ "resource_properties": "{\"LoadBalancerArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a\",\"DefaultActions\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1\",\"Type\":\"forward\"}],\"Port\":\"80\",\"Protocol\":\"HTTP\"}"
286
+ },
287
+ {
288
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
289
+ "event_id": "Listener-CREATE_IN_PROGRESS-2018-06-19T01:37:27.013Z",
290
+ "stack_name": "demo-web",
291
+ "logical_resource_id": "Listener",
292
+ "physical_resource_id": "",
293
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
294
+ "timestamp": "2018-06-19 01:37:27 UTC",
295
+ "resource_status": "CREATE_IN_PROGRESS",
296
+ "resource_properties": "{\"LoadBalancerArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a\",\"DefaultActions\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1\",\"Type\":\"forward\"}],\"Port\":\"80\",\"Protocol\":\"HTTP\"}"
297
+ },
298
+ {
299
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
300
+ "event_id": "TargetGroup-CREATE_COMPLETE-2018-06-19T01:37:24.475Z",
301
+ "stack_name": "demo-web",
302
+ "logical_resource_id": "TargetGroup",
303
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1",
304
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
305
+ "timestamp": "2018-06-19 01:37:24 UTC",
306
+ "resource_status": "CREATE_COMPLETE",
307
+ "resource_properties": "{\"HealthCheckIntervalSeconds\":\"60\",\"VpcId\":\"vpc-d79753ae\",\"HealthCheckPath\":\"/\",\"Port\":\"80\",\"TargetType\":\"ip\",\"TargetGroupAttributes\":[{\"Value\":\"0\",\"Key\":\"deregistration_delay.timeout_seconds\"}],\"UnhealthyThresholdCount\":\"10\",\"Protocol\":\"HTTP\"}"
308
+ },
309
+ {
310
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
311
+ "event_id": "TargetGroup-CREATE_IN_PROGRESS-2018-06-19T01:37:23.290Z",
312
+ "stack_name": "demo-web",
313
+ "logical_resource_id": "TargetGroup",
314
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-16TC4INRX3RED/f48205693f50b7a1",
315
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
316
+ "timestamp": "2018-06-19 01:37:23 UTC",
317
+ "resource_status": "CREATE_IN_PROGRESS",
318
+ "resource_status_reason": "Resource creation Initiated",
319
+ "resource_properties": "{\"HealthCheckIntervalSeconds\":\"60\",\"VpcId\":\"vpc-d79753ae\",\"HealthCheckPath\":\"/\",\"Port\":\"80\",\"TargetType\":\"ip\",\"TargetGroupAttributes\":[{\"Value\":\"0\",\"Key\":\"deregistration_delay.timeout_seconds\"}],\"UnhealthyThresholdCount\":\"10\",\"Protocol\":\"HTTP\"}"
320
+ },
321
+ {
322
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
323
+ "event_id": "TargetGroup-CREATE_IN_PROGRESS-2018-06-19T01:37:22.878Z",
324
+ "stack_name": "demo-web",
325
+ "logical_resource_id": "TargetGroup",
326
+ "physical_resource_id": "",
327
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
328
+ "timestamp": "2018-06-19 01:37:22 UTC",
329
+ "resource_status": "CREATE_IN_PROGRESS",
330
+ "resource_properties": "{\"HealthCheckIntervalSeconds\":\"60\",\"VpcId\":\"vpc-d79753ae\",\"HealthCheckPath\":\"/\",\"Port\":\"80\",\"TargetType\":\"ip\",\"TargetGroupAttributes\":[{\"Value\":\"0\",\"Key\":\"deregistration_delay.timeout_seconds\"}],\"UnhealthyThresholdCount\":\"10\",\"Protocol\":\"HTTP\"}"
331
+ },
332
+ {
333
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
334
+ "event_id": "Elb-CREATE_COMPLETE-2018-06-19T01:37:20.680Z",
335
+ "stack_name": "demo-web",
336
+ "logical_resource_id": "Elb",
337
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a",
338
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
339
+ "timestamp": "2018-06-19 01:37:20 UTC",
340
+ "resource_status": "CREATE_COMPLETE",
341
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-e3da72a8\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-23\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
342
+ },
343
+ {
344
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
345
+ "event_id": "EcsSecurityGroupRule-CREATE_COMPLETE-2018-06-19T01:35:18.518Z",
346
+ "stack_name": "demo-web",
347
+ "logical_resource_id": "EcsSecurityGroupRule",
348
+ "physical_resource_id": "EcsSecurityGroupRule",
349
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
350
+ "timestamp": "2018-06-19 01:35:18 UTC",
351
+ "resource_status": "CREATE_COMPLETE",
352
+ "resource_properties": "{\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\",\"SourceSecurityGroupId\":\"sg-e3da72a8\",\"GroupId\":\"sg-dc379997\"}"
353
+ },
354
+ {
355
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
356
+ "event_id": "Elb-CREATE_IN_PROGRESS-2018-06-19T01:35:18.390Z",
357
+ "stack_name": "demo-web",
358
+ "logical_resource_id": "Elb",
359
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-3VO09GCMW764/44104adf26b1873a",
360
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
361
+ "timestamp": "2018-06-19 01:35:18 UTC",
362
+ "resource_status": "CREATE_IN_PROGRESS",
363
+ "resource_status_reason": "Resource creation Initiated",
364
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-e3da72a8\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-23\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
365
+ },
366
+ {
367
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
368
+ "event_id": "EcsSecurityGroupRule-CREATE_IN_PROGRESS-2018-06-19T01:35:17.697Z",
369
+ "stack_name": "demo-web",
370
+ "logical_resource_id": "EcsSecurityGroupRule",
371
+ "physical_resource_id": "EcsSecurityGroupRule",
372
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
373
+ "timestamp": "2018-06-19 01:35:17 UTC",
374
+ "resource_status": "CREATE_IN_PROGRESS",
375
+ "resource_status_reason": "Resource creation Initiated",
376
+ "resource_properties": "{\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\",\"SourceSecurityGroupId\":\"sg-e3da72a8\",\"GroupId\":\"sg-dc379997\"}"
377
+ },
378
+ {
379
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
380
+ "event_id": "Elb-CREATE_IN_PROGRESS-2018-06-19T01:35:17.537Z",
381
+ "stack_name": "demo-web",
382
+ "logical_resource_id": "Elb",
383
+ "physical_resource_id": "",
384
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
385
+ "timestamp": "2018-06-19 01:35:17 UTC",
386
+ "resource_status": "CREATE_IN_PROGRESS",
387
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-e3da72a8\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-23\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
388
+ },
389
+ {
390
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
391
+ "event_id": "EcsSecurityGroupRule-CREATE_IN_PROGRESS-2018-06-19T01:35:17.523Z",
392
+ "stack_name": "demo-web",
393
+ "logical_resource_id": "EcsSecurityGroupRule",
394
+ "physical_resource_id": "",
395
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
396
+ "timestamp": "2018-06-19 01:35:17 UTC",
397
+ "resource_status": "CREATE_IN_PROGRESS",
398
+ "resource_properties": "{\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\",\"SourceSecurityGroupId\":\"sg-e3da72a8\",\"GroupId\":\"sg-dc379997\"}"
399
+ },
400
+ {
401
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
402
+ "event_id": "ElbSecurityGroup-CREATE_COMPLETE-2018-06-19T01:35:15.453Z",
403
+ "stack_name": "demo-web",
404
+ "logical_resource_id": "ElbSecurityGroup",
405
+ "physical_resource_id": "sg-e3da72a8",
406
+ "resource_type": "AWS::EC2::SecurityGroup",
407
+ "timestamp": "2018-06-19 01:35:15 UTC",
408
+ "resource_status": "CREATE_COMPLETE",
409
+ "resource_properties": "{\"GroupDescription\":\"Allow http to client host\",\"VpcId\":\"vpc-d79753ae\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}],\"SecurityGroupEgress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\"}],\"Tags\":[{\"Value\":\"demo-web-elb\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
410
+ },
411
+ {
412
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
413
+ "event_id": "ElbSecurityGroup-CREATE_IN_PROGRESS-2018-06-19T01:35:12.980Z",
414
+ "stack_name": "demo-web",
415
+ "logical_resource_id": "ElbSecurityGroup",
416
+ "physical_resource_id": "sg-e3da72a8",
417
+ "resource_type": "AWS::EC2::SecurityGroup",
418
+ "timestamp": "2018-06-19 01:35:12 UTC",
419
+ "resource_status": "CREATE_IN_PROGRESS",
420
+ "resource_status_reason": "Resource creation Initiated",
421
+ "resource_properties": "{\"GroupDescription\":\"Allow http to client host\",\"VpcId\":\"vpc-d79753ae\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}],\"SecurityGroupEgress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\"}],\"Tags\":[{\"Value\":\"demo-web-elb\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
422
+ },
423
+ {
424
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
425
+ "event_id": "ElbSecurityGroup-CREATE_IN_PROGRESS-2018-06-19T01:35:12.117Z",
426
+ "stack_name": "demo-web",
427
+ "logical_resource_id": "ElbSecurityGroup",
428
+ "physical_resource_id": "",
429
+ "resource_type": "AWS::EC2::SecurityGroup",
430
+ "timestamp": "2018-06-19 01:35:12 UTC",
431
+ "resource_status": "CREATE_IN_PROGRESS",
432
+ "resource_properties": "{\"GroupDescription\":\"Allow http to client host\",\"VpcId\":\"vpc-d79753ae\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}],\"SecurityGroupEgress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\"}],\"Tags\":[{\"Value\":\"demo-web-elb\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
433
+ },
434
+ {
435
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
436
+ "event_id": "ff4de5f0-7360-11e8-856b-50fae9882035",
437
+ "stack_name": "demo-web",
438
+ "logical_resource_id": "demo-web",
439
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
440
+ "resource_type": "AWS::CloudFormation::Stack",
441
+ "timestamp": "2018-06-19 01:35:07 UTC",
442
+ "resource_status": "UPDATE_IN_PROGRESS",
443
+ "resource_status_reason": "User Initiated"
444
+ },
445
+ {
446
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
447
+ "event_id": "badb9ed0-7360-11e8-ba23-503aca4a5835",
448
+ "stack_name": "demo-web",
449
+ "logical_resource_id": "demo-web",
450
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
451
+ "resource_type": "AWS::CloudFormation::Stack",
452
+ "timestamp": "2018-06-19 01:33:12 UTC",
453
+ "resource_status": "UPDATE_COMPLETE"
454
+ },
455
+ {
456
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
457
+ "event_id": "ElbSecurityGroup-a7a54761-56ba-4410-9e3f-1e219a8a4a90",
458
+ "stack_name": "demo-web",
459
+ "logical_resource_id": "ElbSecurityGroup",
460
+ "physical_resource_id": "sg-f5c26bbe",
461
+ "resource_type": "AWS::EC2::SecurityGroup",
462
+ "timestamp": "2018-06-19 01:33:11 UTC",
463
+ "resource_status": "DELETE_COMPLETE"
464
+ },
465
+ {
466
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
467
+ "event_id": "ElbSecurityGroup-da33b83e-80a5-49ce-b651-aca71f2e04c4",
468
+ "stack_name": "demo-web",
469
+ "logical_resource_id": "ElbSecurityGroup",
470
+ "physical_resource_id": "sg-f5c26bbe",
471
+ "resource_type": "AWS::EC2::SecurityGroup",
472
+ "timestamp": "2018-06-19 01:32:05 UTC",
473
+ "resource_status": "DELETE_IN_PROGRESS"
474
+ },
475
+ {
476
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
477
+ "event_id": "Elb-479bb2c6-00b0-41da-84ed-194b3e9c1168",
478
+ "stack_name": "demo-web",
479
+ "logical_resource_id": "Elb",
480
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158",
481
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
482
+ "timestamp": "2018-06-19 01:32:04 UTC",
483
+ "resource_status": "DELETE_COMPLETE"
484
+ },
485
+ {
486
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
487
+ "event_id": "Elb-31b43685-4613-41ed-aa71-cdd65d3a9ed0",
488
+ "stack_name": "demo-web",
489
+ "logical_resource_id": "Elb",
490
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158",
491
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
492
+ "timestamp": "2018-06-19 01:32:03 UTC",
493
+ "resource_status": "DELETE_IN_PROGRESS"
494
+ },
495
+ {
496
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
497
+ "event_id": "TargetGroup-d5082134-ddcc-4db2-bae1-3b5555a8893d",
498
+ "stack_name": "demo-web",
499
+ "logical_resource_id": "TargetGroup",
500
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209",
501
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
502
+ "timestamp": "2018-06-19 01:32:02 UTC",
503
+ "resource_status": "DELETE_COMPLETE"
504
+ },
505
+ {
506
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
507
+ "event_id": "TargetGroup-5ec17653-f24b-44c0-8a28-c88fdb59967b",
508
+ "stack_name": "demo-web",
509
+ "logical_resource_id": "TargetGroup",
510
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209",
511
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
512
+ "timestamp": "2018-06-19 01:32:02 UTC",
513
+ "resource_status": "DELETE_IN_PROGRESS"
514
+ },
515
+ {
516
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
517
+ "event_id": "EcsService-59707204-ad72-4eec-94d2-2ed97455b404",
518
+ "stack_name": "demo-web",
519
+ "logical_resource_id": "EcsService",
520
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-WB5L8HVGARBJ",
521
+ "resource_type": "AWS::ECS::Service",
522
+ "timestamp": "2018-06-19 01:32:01 UTC",
523
+ "resource_status": "DELETE_COMPLETE"
524
+ },
525
+ {
526
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
527
+ "event_id": "EcsSecurityGroupRule-b2b44dee-965c-48cd-940b-f743b6b5baf0",
528
+ "stack_name": "demo-web",
529
+ "logical_resource_id": "EcsSecurityGroupRule",
530
+ "physical_resource_id": "EcsSecurityGroupRule",
531
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
532
+ "timestamp": "2018-06-19 01:31:01 UTC",
533
+ "resource_status": "DELETE_COMPLETE"
534
+ },
535
+ {
536
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
537
+ "event_id": "Listener-36080d15-51a8-4a64-8e46-59e7b158ee74",
538
+ "stack_name": "demo-web",
539
+ "logical_resource_id": "Listener",
540
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158/8a3e327ae285dedb",
541
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
542
+ "timestamp": "2018-06-19 01:31:00 UTC",
543
+ "resource_status": "DELETE_COMPLETE"
544
+ },
545
+ {
546
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
547
+ "event_id": "Listener-51bdedbf-5dd3-4c58-9a04-8dd8e11ea07f",
548
+ "stack_name": "demo-web",
549
+ "logical_resource_id": "Listener",
550
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158/8a3e327ae285dedb",
551
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
552
+ "timestamp": "2018-06-19 01:31:00 UTC",
553
+ "resource_status": "DELETE_IN_PROGRESS"
554
+ },
555
+ {
556
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
557
+ "event_id": "EcsSecurityGroupRule-c3e534f1-ace5-41fa-bf63-c19fba8dbf02",
558
+ "stack_name": "demo-web",
559
+ "logical_resource_id": "EcsSecurityGroupRule",
560
+ "physical_resource_id": "EcsSecurityGroupRule",
561
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
562
+ "timestamp": "2018-06-19 01:31:00 UTC",
563
+ "resource_status": "DELETE_IN_PROGRESS"
564
+ },
565
+ {
566
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
567
+ "event_id": "EcsService-8ed38b67-3f65-41d5-9bf1-80a9d14fc3b2",
568
+ "stack_name": "demo-web",
569
+ "logical_resource_id": "EcsService",
570
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-WB5L8HVGARBJ",
571
+ "resource_type": "AWS::ECS::Service",
572
+ "timestamp": "2018-06-19 01:30:59 UTC",
573
+ "resource_status": "DELETE_IN_PROGRESS"
574
+ },
575
+ {
576
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
577
+ "event_id": "6afa3fc0-7360-11e8-8cc6-500c5242948e",
578
+ "stack_name": "demo-web",
579
+ "logical_resource_id": "demo-web",
580
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
581
+ "resource_type": "AWS::CloudFormation::Stack",
582
+ "timestamp": "2018-06-19 01:30:58 UTC",
583
+ "resource_status": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
584
+ },
585
+ {
586
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
587
+ "event_id": "EcsService-UPDATE_COMPLETE-2018-06-19T01:30:55.783Z",
588
+ "stack_name": "demo-web",
589
+ "logical_resource_id": "EcsService",
590
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-3WUGSQGMX5D7",
591
+ "resource_type": "AWS::ECS::Service",
592
+ "timestamp": "2018-06-19 01:30:55 UTC",
593
+ "resource_status": "UPDATE_COMPLETE",
594
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
595
+ },
596
+ {
597
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
598
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-19T01:28:54.696Z",
599
+ "stack_name": "demo-web",
600
+ "logical_resource_id": "EcsService",
601
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-3WUGSQGMX5D7",
602
+ "resource_type": "AWS::ECS::Service",
603
+ "timestamp": "2018-06-19 01:28:54 UTC",
604
+ "resource_status": "UPDATE_IN_PROGRESS",
605
+ "resource_status_reason": "Resource creation Initiated",
606
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
607
+ },
608
+ {
609
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
610
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-19T01:28:54.020Z",
611
+ "stack_name": "demo-web",
612
+ "logical_resource_id": "EcsService",
613
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-WB5L8HVGARBJ",
614
+ "resource_type": "AWS::ECS::Service",
615
+ "timestamp": "2018-06-19 01:28:54 UTC",
616
+ "resource_status": "UPDATE_IN_PROGRESS",
617
+ "resource_status_reason": "Requested update requires the creation of a new physical resource; hence creating one.",
618
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
619
+ },
620
+ {
621
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
622
+ "event_id": "1cc446c0-7360-11e8-8a08-500c28604ce6",
623
+ "stack_name": "demo-web",
624
+ "logical_resource_id": "demo-web",
625
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
626
+ "resource_type": "AWS::CloudFormation::Stack",
627
+ "timestamp": "2018-06-19 01:28:47 UTC",
628
+ "resource_status": "UPDATE_IN_PROGRESS",
629
+ "resource_status_reason": "User Initiated"
630
+ },
631
+ {
632
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
633
+ "event_id": "d78988e0-7346-11e8-93ce-500c28659c35",
634
+ "stack_name": "demo-web",
635
+ "logical_resource_id": "demo-web",
636
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
637
+ "resource_type": "AWS::CloudFormation::Stack",
638
+ "timestamp": "2018-06-18 22:27:53 UTC",
639
+ "resource_status": "UPDATE_COMPLETE"
640
+ },
641
+ {
642
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
643
+ "event_id": "d707fcd0-7346-11e8-a61b-500c524058f2",
644
+ "stack_name": "demo-web",
645
+ "logical_resource_id": "demo-web",
646
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
647
+ "resource_type": "AWS::CloudFormation::Stack",
648
+ "timestamp": "2018-06-18 22:27:52 UTC",
649
+ "resource_status": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
650
+ },
651
+ {
652
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
653
+ "event_id": "EcsService-UPDATE_COMPLETE-2018-06-18T22:27:49.258Z",
654
+ "stack_name": "demo-web",
655
+ "logical_resource_id": "EcsService",
656
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-WB5L8HVGARBJ",
657
+ "resource_type": "AWS::ECS::Service",
658
+ "timestamp": "2018-06-18 22:27:49 UTC",
659
+ "resource_status": "UPDATE_COMPLETE",
660
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
661
+ },
662
+ {
663
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
664
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-18T22:19:44.883Z",
665
+ "stack_name": "demo-web",
666
+ "logical_resource_id": "EcsService",
667
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-WB5L8HVGARBJ",
668
+ "resource_type": "AWS::ECS::Service",
669
+ "timestamp": "2018-06-18 22:19:44 UTC",
670
+ "resource_status": "UPDATE_IN_PROGRESS",
671
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-18479b53\",\"sg-c3c16888\",\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
672
+ },
673
+ {
674
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
675
+ "event_id": "Elb-UPDATE_COMPLETE-2018-06-18T22:19:39.365Z",
676
+ "stack_name": "demo-web",
677
+ "logical_resource_id": "Elb",
678
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158",
679
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
680
+ "timestamp": "2018-06-18 22:19:39 UTC",
681
+ "resource_status": "UPDATE_COMPLETE",
682
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-f5c26bbe\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-78\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
683
+ },
684
+ {
685
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
686
+ "event_id": "Elb-UPDATE_IN_PROGRESS-2018-06-18T22:19:38.696Z",
687
+ "stack_name": "demo-web",
688
+ "logical_resource_id": "Elb",
689
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158",
690
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
691
+ "timestamp": "2018-06-18 22:19:38 UTC",
692
+ "resource_status": "UPDATE_IN_PROGRESS",
693
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-f5c26bbe\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-78\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
694
+ },
695
+ {
696
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
697
+ "event_id": "ad3772b0-7345-11e8-aefe-500c28b03efd",
698
+ "stack_name": "demo-web",
699
+ "logical_resource_id": "demo-web",
700
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
701
+ "resource_type": "AWS::CloudFormation::Stack",
702
+ "timestamp": "2018-06-18 22:19:33 UTC",
703
+ "resource_status": "UPDATE_IN_PROGRESS",
704
+ "resource_status_reason": "User Initiated"
705
+ },
706
+ {
707
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
708
+ "event_id": "76b5be40-7345-11e8-8ec2-500c28604c82",
709
+ "stack_name": "demo-web",
710
+ "logical_resource_id": "demo-web",
711
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
712
+ "resource_type": "AWS::CloudFormation::Stack",
713
+ "timestamp": "2018-06-18 22:18:01 UTC",
714
+ "resource_status": "UPDATE_COMPLETE"
715
+ },
716
+ {
717
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
718
+ "event_id": "EcsService-16413393-56c4-4ba7-a828-898f51fa4320",
719
+ "stack_name": "demo-web",
720
+ "logical_resource_id": "EcsService",
721
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-11MPMP7GAS3WL",
722
+ "resource_type": "AWS::ECS::Service",
723
+ "timestamp": "2018-06-18 22:18:01 UTC",
724
+ "resource_status": "DELETE_COMPLETE"
725
+ },
726
+ {
727
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
728
+ "event_id": "EcsService-79fe2fa0-928f-4892-b9fb-f532d210a107",
729
+ "stack_name": "demo-web",
730
+ "logical_resource_id": "EcsService",
731
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-11MPMP7GAS3WL",
732
+ "resource_type": "AWS::ECS::Service",
733
+ "timestamp": "2018-06-18 22:17:29 UTC",
734
+ "resource_status": "DELETE_IN_PROGRESS"
735
+ },
736
+ {
737
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
738
+ "event_id": "62bb2650-7345-11e8-bc61-500c286014fd",
739
+ "stack_name": "demo-web",
740
+ "logical_resource_id": "demo-web",
741
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
742
+ "resource_type": "AWS::CloudFormation::Stack",
743
+ "timestamp": "2018-06-18 22:17:28 UTC",
744
+ "resource_status": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
745
+ },
746
+ {
747
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
748
+ "event_id": "EcsService-UPDATE_COMPLETE-2018-06-18T22:17:25.710Z",
749
+ "stack_name": "demo-web",
750
+ "logical_resource_id": "EcsService",
751
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-WB5L8HVGARBJ",
752
+ "resource_type": "AWS::ECS::Service",
753
+ "timestamp": "2018-06-18 22:17:25 UTC",
754
+ "resource_status": "UPDATE_COMPLETE",
755
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
756
+ },
757
+ {
758
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
759
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-18T22:16:24.749Z",
760
+ "stack_name": "demo-web",
761
+ "logical_resource_id": "EcsService",
762
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-WB5L8HVGARBJ",
763
+ "resource_type": "AWS::ECS::Service",
764
+ "timestamp": "2018-06-18 22:16:24 UTC",
765
+ "resource_status": "UPDATE_IN_PROGRESS",
766
+ "resource_status_reason": "Resource creation Initiated",
767
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
768
+ },
769
+ {
770
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
771
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-18T22:16:24.284Z",
772
+ "stack_name": "demo-web",
773
+ "logical_resource_id": "EcsService",
774
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-11MPMP7GAS3WL",
775
+ "resource_type": "AWS::ECS::Service",
776
+ "timestamp": "2018-06-18 22:16:24 UTC",
777
+ "resource_status": "UPDATE_IN_PROGRESS",
778
+ "resource_status_reason": "Requested update requires the creation of a new physical resource; hence creating one.",
779
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
780
+ },
781
+ {
782
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
783
+ "event_id": "Listener-CREATE_COMPLETE-2018-06-18T22:16:23.226Z",
784
+ "stack_name": "demo-web",
785
+ "logical_resource_id": "Listener",
786
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158/8a3e327ae285dedb",
787
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
788
+ "timestamp": "2018-06-18 22:16:23 UTC",
789
+ "resource_status": "CREATE_COMPLETE",
790
+ "resource_properties": "{\"LoadBalancerArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158\",\"DefaultActions\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"Type\":\"forward\"}],\"Port\":\"80\",\"Protocol\":\"HTTP\"}"
791
+ },
792
+ {
793
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
794
+ "event_id": "Listener-CREATE_IN_PROGRESS-2018-06-18T22:16:22.509Z",
795
+ "stack_name": "demo-web",
796
+ "logical_resource_id": "Listener",
797
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:listener/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158/8a3e327ae285dedb",
798
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
799
+ "timestamp": "2018-06-18 22:16:22 UTC",
800
+ "resource_status": "CREATE_IN_PROGRESS",
801
+ "resource_status_reason": "Resource creation Initiated",
802
+ "resource_properties": "{\"LoadBalancerArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158\",\"DefaultActions\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"Type\":\"forward\"}],\"Port\":\"80\",\"Protocol\":\"HTTP\"}"
803
+ },
804
+ {
805
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
806
+ "event_id": "Listener-CREATE_IN_PROGRESS-2018-06-18T22:16:22.031Z",
807
+ "stack_name": "demo-web",
808
+ "logical_resource_id": "Listener",
809
+ "physical_resource_id": "",
810
+ "resource_type": "AWS::ElasticLoadBalancingV2::Listener",
811
+ "timestamp": "2018-06-18 22:16:22 UTC",
812
+ "resource_status": "CREATE_IN_PROGRESS",
813
+ "resource_properties": "{\"LoadBalancerArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158\",\"DefaultActions\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209\",\"Type\":\"forward\"}],\"Port\":\"80\",\"Protocol\":\"HTTP\"}"
814
+ },
815
+ {
816
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
817
+ "event_id": "TargetGroup-CREATE_COMPLETE-2018-06-18T22:16:19.929Z",
818
+ "stack_name": "demo-web",
819
+ "logical_resource_id": "TargetGroup",
820
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209",
821
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
822
+ "timestamp": "2018-06-18 22:16:19 UTC",
823
+ "resource_status": "CREATE_COMPLETE",
824
+ "resource_properties": "{\"HealthCheckIntervalSeconds\":\"60\",\"VpcId\":\"vpc-d79753ae\",\"HealthCheckPath\":\"/\",\"Port\":\"80\",\"TargetType\":\"ip\",\"UnhealthyThresholdCount\":\"10\",\"Protocol\":\"HTTP\"}"
825
+ },
826
+ {
827
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
828
+ "event_id": "TargetGroup-CREATE_IN_PROGRESS-2018-06-18T22:16:19.241Z",
829
+ "stack_name": "demo-web",
830
+ "logical_resource_id": "TargetGroup",
831
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/hi-we-Targe-1J483H7T57EOA/c8dd41f65138d209",
832
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
833
+ "timestamp": "2018-06-18 22:16:19 UTC",
834
+ "resource_status": "CREATE_IN_PROGRESS",
835
+ "resource_status_reason": "Resource creation Initiated",
836
+ "resource_properties": "{\"HealthCheckIntervalSeconds\":\"60\",\"VpcId\":\"vpc-d79753ae\",\"HealthCheckPath\":\"/\",\"Port\":\"80\",\"TargetType\":\"ip\",\"UnhealthyThresholdCount\":\"10\",\"Protocol\":\"HTTP\"}"
837
+ },
838
+ {
839
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
840
+ "event_id": "TargetGroup-CREATE_IN_PROGRESS-2018-06-18T22:16:18.730Z",
841
+ "stack_name": "demo-web",
842
+ "logical_resource_id": "TargetGroup",
843
+ "physical_resource_id": "",
844
+ "resource_type": "AWS::ElasticLoadBalancingV2::TargetGroup",
845
+ "timestamp": "2018-06-18 22:16:18 UTC",
846
+ "resource_status": "CREATE_IN_PROGRESS",
847
+ "resource_properties": "{\"HealthCheckIntervalSeconds\":\"60\",\"VpcId\":\"vpc-d79753ae\",\"HealthCheckPath\":\"/\",\"Port\":\"80\",\"TargetType\":\"ip\",\"UnhealthyThresholdCount\":\"10\",\"Protocol\":\"HTTP\"}"
848
+ },
849
+ {
850
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
851
+ "event_id": "Elb-CREATE_COMPLETE-2018-06-18T22:16:16.484Z",
852
+ "stack_name": "demo-web",
853
+ "logical_resource_id": "Elb",
854
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158",
855
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
856
+ "timestamp": "2018-06-18 22:16:16 UTC",
857
+ "resource_status": "CREATE_COMPLETE",
858
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-f5c26bbe\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-55\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
859
+ },
860
+ {
861
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
862
+ "event_id": "EcsSecurityGroupRule-CREATE_COMPLETE-2018-06-18T22:14:15.538Z",
863
+ "stack_name": "demo-web",
864
+ "logical_resource_id": "EcsSecurityGroupRule",
865
+ "physical_resource_id": "EcsSecurityGroupRule",
866
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
867
+ "timestamp": "2018-06-18 22:14:15 UTC",
868
+ "resource_status": "CREATE_COMPLETE",
869
+ "resource_properties": "{\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\",\"SourceSecurityGroupId\":\"sg-f5c26bbe\",\"GroupId\":\"sg-dc379997\"}"
870
+ },
871
+ {
872
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
873
+ "event_id": "EcsSecurityGroupRule-CREATE_IN_PROGRESS-2018-06-18T22:14:14.500Z",
874
+ "stack_name": "demo-web",
875
+ "logical_resource_id": "EcsSecurityGroupRule",
876
+ "physical_resource_id": "EcsSecurityGroupRule",
877
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
878
+ "timestamp": "2018-06-18 22:14:14 UTC",
879
+ "resource_status": "CREATE_IN_PROGRESS",
880
+ "resource_status_reason": "Resource creation Initiated",
881
+ "resource_properties": "{\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\",\"SourceSecurityGroupId\":\"sg-f5c26bbe\",\"GroupId\":\"sg-dc379997\"}"
882
+ },
883
+ {
884
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
885
+ "event_id": "Elb-CREATE_IN_PROGRESS-2018-06-18T22:14:14.354Z",
886
+ "stack_name": "demo-web",
887
+ "logical_resource_id": "Elb",
888
+ "physical_resource_id": "arn:aws:elasticloadbalancing:us-east-1:111111111111:loadbalancer/app/demo-web-Elb-14V4X6KBAVEPP/24302e751e5ac158",
889
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
890
+ "timestamp": "2018-06-18 22:14:14 UTC",
891
+ "resource_status": "CREATE_IN_PROGRESS",
892
+ "resource_status_reason": "Resource creation Initiated",
893
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-f5c26bbe\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-55\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
894
+ },
895
+ {
896
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
897
+ "event_id": "EcsSecurityGroupRule-CREATE_IN_PROGRESS-2018-06-18T22:14:13.797Z",
898
+ "stack_name": "demo-web",
899
+ "logical_resource_id": "EcsSecurityGroupRule",
900
+ "physical_resource_id": "",
901
+ "resource_type": "AWS::EC2::SecurityGroupIngress",
902
+ "timestamp": "2018-06-18 22:14:13 UTC",
903
+ "resource_status": "CREATE_IN_PROGRESS",
904
+ "resource_properties": "{\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\",\"SourceSecurityGroupId\":\"sg-f5c26bbe\",\"GroupId\":\"sg-dc379997\"}"
905
+ },
906
+ {
907
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
908
+ "event_id": "Elb-CREATE_IN_PROGRESS-2018-06-18T22:14:13.478Z",
909
+ "stack_name": "demo-web",
910
+ "logical_resource_id": "Elb",
911
+ "physical_resource_id": "",
912
+ "resource_type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
913
+ "timestamp": "2018-06-18 22:14:13 UTC",
914
+ "resource_status": "CREATE_IN_PROGRESS",
915
+ "resource_properties": "{\"SecurityGroups\":[\"sg-32a30579\",\"sg-f5c26bbe\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"Scheme\":\"internet-facing\",\"Tags\":[{\"Value\":\"demo-web-55\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
916
+ },
917
+ {
918
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
919
+ "event_id": "ElbSecurityGroup-CREATE_COMPLETE-2018-06-18T22:14:11.250Z",
920
+ "stack_name": "demo-web",
921
+ "logical_resource_id": "ElbSecurityGroup",
922
+ "physical_resource_id": "sg-f5c26bbe",
923
+ "resource_type": "AWS::EC2::SecurityGroup",
924
+ "timestamp": "2018-06-18 22:14:11 UTC",
925
+ "resource_status": "CREATE_COMPLETE",
926
+ "resource_properties": "{\"GroupDescription\":\"Allow http to client host\",\"VpcId\":\"vpc-d79753ae\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}],\"SecurityGroupEgress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\"}],\"Tags\":[{\"Value\":\"demo-web-elb\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
927
+ },
928
+ {
929
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
930
+ "event_id": "ElbSecurityGroup-CREATE_IN_PROGRESS-2018-06-18T22:14:08.801Z",
931
+ "stack_name": "demo-web",
932
+ "logical_resource_id": "ElbSecurityGroup",
933
+ "physical_resource_id": "sg-f5c26bbe",
934
+ "resource_type": "AWS::EC2::SecurityGroup",
935
+ "timestamp": "2018-06-18 22:14:08 UTC",
936
+ "resource_status": "CREATE_IN_PROGRESS",
937
+ "resource_status_reason": "Resource creation Initiated",
938
+ "resource_properties": "{\"GroupDescription\":\"Allow http to client host\",\"VpcId\":\"vpc-d79753ae\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}],\"SecurityGroupEgress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\"}],\"Tags\":[{\"Value\":\"demo-web-elb\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
939
+ },
940
+ {
941
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
942
+ "event_id": "ElbSecurityGroup-CREATE_IN_PROGRESS-2018-06-18T22:14:08.020Z",
943
+ "stack_name": "demo-web",
944
+ "logical_resource_id": "ElbSecurityGroup",
945
+ "physical_resource_id": "",
946
+ "resource_type": "AWS::EC2::SecurityGroup",
947
+ "timestamp": "2018-06-18 22:14:08 UTC",
948
+ "resource_status": "CREATE_IN_PROGRESS",
949
+ "resource_properties": "{\"GroupDescription\":\"Allow http to client host\",\"VpcId\":\"vpc-d79753ae\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}],\"SecurityGroupEgress\":[{\"CidrIp\":\"0.0.0.0/0\",\"FromPort\":\"0\",\"ToPort\":\"65535\",\"IpProtocol\":\"tcp\"}],\"Tags\":[{\"Value\":\"demo-web-elb\",\"Key\":\"Name\"},{\"Value\":\"demo-web\",\"Key\":\"ufo\"}]}"
950
+ },
951
+ {
952
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
953
+ "event_id": "e8841220-7344-11e8-a5aa-50fae98974fd",
954
+ "stack_name": "demo-web",
955
+ "logical_resource_id": "demo-web",
956
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
957
+ "resource_type": "AWS::CloudFormation::Stack",
958
+ "timestamp": "2018-06-18 22:14:03 UTC",
959
+ "resource_status": "UPDATE_IN_PROGRESS",
960
+ "resource_status_reason": "User Initiated"
961
+ },
962
+ {
963
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
964
+ "event_id": "bb9b7290-7343-11e8-9fbc-500c28b23699",
965
+ "stack_name": "demo-web",
966
+ "logical_resource_id": "demo-web",
967
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
968
+ "resource_type": "AWS::CloudFormation::Stack",
969
+ "timestamp": "2018-06-18 22:05:38 UTC",
970
+ "resource_status": "UPDATE_COMPLETE"
971
+ },
972
+ {
973
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
974
+ "event_id": "EcsService-0e2e37db-5c33-4cf9-af7c-9d0151de2d68",
975
+ "stack_name": "demo-web",
976
+ "logical_resource_id": "EcsService",
977
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1RGUXOEJCH6RH",
978
+ "resource_type": "AWS::ECS::Service",
979
+ "timestamp": "2018-06-18 22:05:37 UTC",
980
+ "resource_status": "DELETE_COMPLETE"
981
+ },
982
+ {
983
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
984
+ "event_id": "EcsService-501fd5b6-8366-4d83-92eb-7108ce8224f3",
985
+ "stack_name": "demo-web",
986
+ "logical_resource_id": "EcsService",
987
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1RGUXOEJCH6RH",
988
+ "resource_type": "AWS::ECS::Service",
989
+ "timestamp": "2018-06-18 22:05:06 UTC",
990
+ "resource_status": "DELETE_IN_PROGRESS"
991
+ },
992
+ {
993
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
994
+ "event_id": "a7630e50-7343-11e8-bc49-500c28903236",
995
+ "stack_name": "demo-web",
996
+ "logical_resource_id": "demo-web",
997
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
998
+ "resource_type": "AWS::CloudFormation::Stack",
999
+ "timestamp": "2018-06-18 22:05:04 UTC",
1000
+ "resource_status": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS"
1001
+ },
1002
+ {
1003
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1004
+ "event_id": "EcsService-UPDATE_COMPLETE-2018-06-18T22:05:00.211Z",
1005
+ "stack_name": "demo-web",
1006
+ "logical_resource_id": "EcsService",
1007
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-11MPMP7GAS3WL",
1008
+ "resource_type": "AWS::ECS::Service",
1009
+ "timestamp": "2018-06-18 22:05:00 UTC",
1010
+ "resource_status": "UPDATE_COMPLETE",
1011
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/my-elb/0158af4eb596cfd2\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
1012
+ },
1013
+ {
1014
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1015
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-18T22:02:59.026Z",
1016
+ "stack_name": "demo-web",
1017
+ "logical_resource_id": "EcsService",
1018
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-11MPMP7GAS3WL",
1019
+ "resource_type": "AWS::ECS::Service",
1020
+ "timestamp": "2018-06-18 22:02:59 UTC",
1021
+ "resource_status": "UPDATE_IN_PROGRESS",
1022
+ "resource_status_reason": "Resource creation Initiated",
1023
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/my-elb/0158af4eb596cfd2\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
1024
+ },
1025
+ {
1026
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1027
+ "event_id": "EcsService-UPDATE_IN_PROGRESS-2018-06-18T22:02:58.432Z",
1028
+ "stack_name": "demo-web",
1029
+ "logical_resource_id": "EcsService",
1030
+ "physical_resource_id": "arn:aws:ecs:us-east-1:111111111111:service/demo-web-EcsService-1RGUXOEJCH6RH",
1031
+ "resource_type": "AWS::ECS::Service",
1032
+ "timestamp": "2018-06-18 22:02:58 UTC",
1033
+ "resource_status": "UPDATE_IN_PROGRESS",
1034
+ "resource_status_reason": "Requested update requires the creation of a new physical resource; hence creating one.",
1035
+ "resource_properties": "{\"TaskDefinition\":\"arn:aws:ecs:us-east-1:111111111111:task-definition/demo-web:191\",\"Cluster\":\"development\",\"LoadBalancers\":[{\"TargetGroupArn\":\"arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/my-elb/0158af4eb596cfd2\",\"ContainerName\":\"web\",\"ContainerPort\":\"4567\"}],\"NetworkConfiguration\":{\"AwsvpcConfiguration\":{\"SecurityGroups\":[\"sg-dc379997\"],\"Subnets\":[\"subnet-29e75925\",\"subnet-3fb1875a\",\"subnet-4ac50f66\",\"subnet-622eee38\",\"subnet-83cf49cb\",\"subnet-f45d02c8\"],\"AssignPublicIp\":\"ENABLED\"}},\"DesiredCount\":\"1\",\"LaunchType\":\"FARGATE\"}"
1036
+ },
1037
+ {
1038
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1039
+ "event_id": "586e5930-7343-11e8-afba-50d501eb4c17",
1040
+ "stack_name": "demo-web",
1041
+ "logical_resource_id": "demo-web",
1042
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1043
+ "resource_type": "AWS::CloudFormation::Stack",
1044
+ "timestamp": "2018-06-18 22:02:51 UTC",
1045
+ "resource_status": "UPDATE_IN_PROGRESS",
1046
+ "resource_status_reason": "User Initiated"
1047
+ },
1048
+ {
1049
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1050
+ "event_id": "41b7d590-7343-11e8-b84a-5044763dbb7b",
1051
+ "stack_name": "demo-web",
1052
+ "logical_resource_id": "demo-web",
1053
+ "physical_resource_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1054
+ "resource_type": "AWS::CloudFormation::Stack",
1055
+ "timestamp": "2018-06-18 22:02:13 UTC",
1056
+ "resource_status": "UPDATE_COMPLETE"
1057
+ },
1058
+ {
1059
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1060
+ "event_id": "ElbSecurityGroup-ef82a7f7-c221-401d-86b6-c5d521df68a1",
1061
+ "stack_name": "demo-web",
1062
+ "logical_resource_id": "ElbSecurityGroup",
1063
+ "physical_resource_id": "sg-5310be18",
1064
+ "resource_type": "AWS::EC2::SecurityGroup",
1065
+ "timestamp": "2018-06-18 22:02:13 UTC",
1066
+ "resource_status": "DELETE_COMPLETE"
1067
+ },
1068
+ {
1069
+ "stack_id": "arn:aws:cloudformation:us-east-1:111111111111:stack/demo-web/2813d320-733c-11e8-8746-503f23fb55fe",
1070
+ "event_id": "ElbSecurityGroup-16feab17-9bc6-4755-8c6b-1855140fd0b0",
1071
+ "stack_name": "demo-web",
1072
+ "logical_resource_id": "ElbSecurityGroup",
1073
+ "physical_resource_id": "sg-5310be18",
1074
+ "resource_type": "AWS::EC2::SecurityGroup",
1075
+ "timestamp": "2018-06-18 22:01:37 UTC",
1076
+ "resource_status": "DELETE_IN_PROGRESS"
1077
+ }
1078
+ ],
1079
+ "next_token": "l+T1eeFIE01sHtDEjTgRi3YqGpWoo8Xcd8/bdB+D4mUTq6pSt2rRUGj+b406+o6XcH8GTcekaz9QRHzjfqqLnssgJOHm6JkQ0L/j66RSgA4luIHEYJDtQje3zfPHG6kfxukN3yC03BtKrKXW7CJGsKJ9Ar1ofwBfoopVi7tjH9SCimSHavcRKbovDH9tT5eOhg0YTbh2aeHb0OqQ1fjAF27yhp4UNjY/VHr8/w50cxZ9lWtYfB+D7Bh4aNbLxan2RKo1XqhzF5jXQFZ/8rWtaFNCSTQPlMiqFbQna9navxjNGjKGZGfRXEvl/mwpWobQlrYoD53EwwuN76/Op0H5HMNWFRSDCBozCqnf+VUVw/hKMV76pyPoD9Kuu2Ec2Rge65octIPmDyYD+An0FUH5x/YaX0sUyoFuNdxUNZXWDb2vaUm++/d9HP0di3nECUiwUB7ofrWRlcAo4xJHf3Lm5MGsTVBGIZCuxQQMiROZyX46a9FgjaOvEQ60WZP/5f3/88ImOcK/pEPp6a8KWRx14ur2Cjhseagw1v5gP/2yxd88xWqKZdUOlKp3I1XdTVB4oMAzLgZuhUnp5btKtSrMyMI3wpTLE+N94ylI5U0degan+yqnq4Jkx/YGAgkiRs/6SvbyhA5BU5tmM+c1SVS9FI0zaY6UE1Z+jl8EhPfNwohO52KJLSvIkqqyBme0AeSlFam/60U6mYh0uhzonAaO9QhFQU9xLwvuQ1GFv2GZPzipVsHLvIHMW28EdTbcYZNp|7su6Swe1kyx+zWOE+p7Q2g==|1|820d7989c4bb44f73eef80ac3f4c59f1a0b768a4fafa61d43fe9af3db87f13d4"
1080
+ }