72 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | # 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"]}, | ||
|  |             } | ||
|  |         }, | ||
|  |     } |