Source code for troposphere_mate.canned.iam.awslambda
# -*- coding: utf-8 -*-
from troposphere_mate import Template, iam
from ...core.canned import MultiEnvBasicConfig, Constant
from ...core.mate import DEFAULT_LABELS_FIELD
from .const_aws_service_name import create_assume_role_policy_document, AWSServiceName
from .const_aws_managed_policy_arn import AWSManagedPolicyArn
class Metadata:
iam_role_lbd_basic_exec = "iam_role_lbd_basic_exec"
iam_role_lbd_s3_read_and_write = "iam_role_lbd_s3_read_and_write"
iam_role_lbd_s3_restricted_bucket_read_and_write = "iam_role_lbd_s3_restricted_bucket_read_and_write"
[docs]class CannedCommonLambdaFunctionIamRole(MultiEnvBasicConfig):
template = None # type: Template
iam_role_lbd_basic_exec = None # type: iam.Role
iam_role_lbd_s3_read_and_write = None # type: iam.Role
iam_role_lbd_s3_restricted_bucket_read_and_write = None # type: iam.Role
S3_RESTRICTED_BUCKETS = Constant(default="")
def create_template(self):
self.template = Template()
self.iam_role_lbd_basic_exec = iam.Role(
"IamRoleLambdaBasicExecution",
template=self.template,
Metadata={
DEFAULT_LABELS_FIELD: [Metadata.iam_role_lbd_basic_exec, ]
},
RoleName="{}-lbd-basic-exec".format(
self.ENVIRONMENT_NAME.get_value()),
AssumeRolePolicyDocument=create_assume_role_policy_document(
[AWSServiceName.aws_Lambda]),
ManagedPolicyArns=[AWSManagedPolicyArn.awsLambdaBasicExecutionRole]
)
self.iam_role_lbd_s3_read_and_write = iam.Role(
"IamRoleLambdaS3Execution",
template=self.template,
Metadata={
DEFAULT_LABELS_FIELD: [Metadata.iam_role_lbd_s3_read_and_write, ]
},
RoleName="{}-lbd-s3-exec".format(
self.ENVIRONMENT_NAME.get_value()),
AssumeRolePolicyDocument=create_assume_role_policy_document([
AWSServiceName.aws_Lambda,
]),
ManagedPolicyArns=[
AWSManagedPolicyArn.awsLambdaExecute
],
)
if self.S3_RESTRICTED_BUCKETS.get_value():
bucket_name_list = [
bucket_name.strip()
for bucket_name in self.S3_RESTRICTED_BUCKETS.get_value().split(",")
]
self.iam_role_lbd_s3_restricted_bucket_read_and_write = iam.Role(
"IamRoleLambdaS3RestrictedBucketExecution",
template=self.template,
Metadata={
DEFAULT_LABELS_FIELD: [Metadata.iam_role_lbd_s3_restricted_bucket_read_and_write, ]
},
RoleName="{}-lbd-s3-exec".format(
self.ENVIRONMENT_NAME.get_value()),
AssumeRolePolicyDocument=create_assume_role_policy_document(
[AWSServiceName.aws_Lambda]),
Policies=[
iam.Policy(
PolicyName="",
PolicyDocument={
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::{}*".format(bucket_name)
for bucket_name in bucket_name_list
]
}
]
}
)
]
)
return self.template