| 
									
										
										
										
											2021-11-03 20:00:42 -01:00
										 |  |  | # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-custom-resources-lambda-lookup-amiids.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def get_template(lambda_code): | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |         "AWSTemplateFormatVersion": "2010-09-09", | 
					
						
							|  |  |  |         "Description": "Sample template using Custom Resource", | 
					
						
							|  |  |  |         "Resources": { | 
					
						
							|  |  |  |             "CustomInfo": { | 
					
						
							|  |  |  |                 "Type": "Custom::Info", | 
					
						
							|  |  |  |                 "Properties": { | 
					
						
							|  |  |  |                     "ServiceToken": {"Fn::GetAtt": ["InfoFunction", "Arn"]}, | 
					
						
							|  |  |  |                     "Region": {"Ref": "AWS::Region"}, | 
					
						
							|  |  |  |                     "MyProperty": "stuff", | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |             "InfoFunction": { | 
					
						
							|  |  |  |                 "Type": "AWS::Lambda::Function", | 
					
						
							|  |  |  |                 "Properties": { | 
					
						
							|  |  |  |                     "Code": { | 
					
						
							|  |  |  |                         "ZipFile": {"Fn::Join": ["\n", lambda_code.splitlines()]}, | 
					
						
							|  |  |  |                     }, | 
					
						
							|  |  |  |                     "Handler": "index.lambda_handler", | 
					
						
							|  |  |  |                     "Role": {"Fn::GetAtt": ["LambdaExecutionRole", "Arn"]}, | 
					
						
							|  |  |  |                     "Runtime": "python3.8", | 
					
						
							|  |  |  |                     "Timeout": "30", | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |             "LambdaExecutionRole": { | 
					
						
							|  |  |  |                 "Type": "AWS::IAM::Role", | 
					
						
							|  |  |  |                 "Properties": { | 
					
						
							|  |  |  |                     "AssumeRolePolicyDocument": { | 
					
						
							|  |  |  |                         "Version": "2012-10-17", | 
					
						
							|  |  |  |                         "Statement": [ | 
					
						
							|  |  |  |                             { | 
					
						
							|  |  |  |                                 "Effect": "Allow", | 
					
						
							|  |  |  |                                 "Principal": {"Service": ["lambda.amazonaws.com"]}, | 
					
						
							|  |  |  |                                 "Action": ["sts:AssumeRole"], | 
					
						
							|  |  |  |                             } | 
					
						
							|  |  |  |                         ], | 
					
						
							|  |  |  |                     }, | 
					
						
							|  |  |  |                     "Path": "/", | 
					
						
							|  |  |  |                     "Policies": [ | 
					
						
							|  |  |  |                         { | 
					
						
							|  |  |  |                             "PolicyName": "root", | 
					
						
							|  |  |  |                             "PolicyDocument": { | 
					
						
							|  |  |  |                                 "Version": "2012-10-17", | 
					
						
							|  |  |  |                                 "Statement": [ | 
					
						
							|  |  |  |                                     { | 
					
						
							|  |  |  |                                         "Effect": "Allow", | 
					
						
							|  |  |  |                                         "Action": [ | 
					
						
							|  |  |  |                                             "logs:CreateLogGroup", | 
					
						
							|  |  |  |                                             "logs:CreateLogStream", | 
					
						
							|  |  |  |                                             "logs:PutLogEvents", | 
					
						
							|  |  |  |                                         ], | 
					
						
							|  |  |  |                                         "Resource": "arn:aws:logs:*:*:*", | 
					
						
							|  |  |  |                                     } | 
					
						
							|  |  |  |                                 ], | 
					
						
							|  |  |  |                             }, | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     ], | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         "Outputs": { | 
					
						
							|  |  |  |             "infokey": { | 
					
						
							|  |  |  |                 "Description": "A very important value", | 
					
						
							|  |  |  |                 "Value": {"Fn::GetAtt": ["CustomInfo", "info_value"]}, | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-03-06 15:00:20 -01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def get_template_for_unknown_lambda(): | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |         "AWSTemplateFormatVersion": "2010-09-09", | 
					
						
							|  |  |  |         "Description": "Sample template using Custom Resource pointing to unknown Function", | 
					
						
							|  |  |  |         "Resources": { | 
					
						
							|  |  |  |             "CustomInfo": { | 
					
						
							|  |  |  |                 "Type": "Custom::Info", | 
					
						
							|  |  |  |                 "Properties": {"ServiceToken": {"Fn::GetAtt": ["InfoFunction", "Arn"]}}, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     } |