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"]},
|
|
}
|
|
},
|
|
}
|