Source code for troposphere_mate.canned.iam.ec2
# -*- coding: utf-8 -*-
from troposphere_mate import Template, iam, helper_fn_sub
from .const_aws_managed_policy_arn import AWSManagedPolicyArn
from .const_aws_service_name import create_assume_role_policy_document, AWSServiceName
from ..parameter import param_env_name
from ...core.canned import MultiEnvBasicConfig
[docs]class CannedCommonEc2IamRole(MultiEnvBasicConfig):
template = None # type: Template
iam_role_ec2_s3_full_access = None # type: iam.Role
iam_instance_profile_ec2_s3_full_access = None # type: iam.Role
def create_template(self):
self.template = Template()
self.param_env_name = param_env_name
self.param_env_name.Default = self.ENVIRONMENT_NAME.get_value()
self.template.add_parameter(param_env_name)
self.iam_role_ec2_s3_full_access = iam.Role(
"IamRoleEc2S3FullAccess",
template=self.template,
RoleName=helper_fn_sub(
"{}-ec2-s3-full-access", self.param_env_name
),
AssumeRolePolicyDocument=create_assume_role_policy_document([
AWSServiceName.amazon_Elastic_Compute_Cloud_Amazon_EC2
]),
ManagedPolicyArns=[
AWSManagedPolicyArn.amazonS3FullAccess
]
)
self.iam_instance_profile_ec2_s3_full_access = iam.InstanceProfile(
"IamInstanceProfileS3FullAccess",
template=self.template,
InstanceProfileName=helper_fn_sub(
"{}-ec2-s3-full-access", self.param_env_name
),
Roles=[
self.iam_role_ec2_s3_full_access.iam_role_name,
]
)
return self.template