in cdk/cdk-domainless-mode/cdk/cdk_stack.py [0:0]
def create_task_definition(self, task_definition_template_name):
role = iam.Role(self, "CredentialsFetcher-ECSTaskExecutionRolegMSA", role_name="CredentialsFetcher-ECSTaskExecutionRolegMSA",
assumed_by=iam.ServicePrincipal("ecs-tasks.amazonaws.com"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("SecretsManagerReadWrite"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonS3FullAccess"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AWSDirectoryServiceFullAccess"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonSSMFullAccess"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonECS_FullAccess"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonEC2ContainerRegistryFullAccess"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonElasticContainerRegistryPublicFullAccess"))
# Create the policy statement
ssm_messages_policy_statement = iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=["ssmmessages:CreateControlChannel"],
resources=["*"]
)
# Create the policy statement
ssm_messages_policy_statement = iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=["ssmmessages:CreateDataChannel"],
resources=["*"]
)
# Create the policy statement
ssm_messages_policy_statement = iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=["ssmmessages:OpenControlChannel"],
resources=["*"]
)
# Create the policy statement
ssm_messages_policy_statement = iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=["ssmmessages:OpenDataChannel"],
resources=["*"]
)
role.add_to_principal_policy(ssm_messages_policy_statement)
# Create task definition
task_definition = ecs.TaskDefinition(self, task_definition_template_name,
compatibility=ecs.Compatibility.EC2_AND_FARGATE,
cpu="1024",
memory_mib="2048",
task_role=role,
execution_role=role
)
container_definition = task_definition.add_container(
"MyContainer",
image=ecs.ContainerImage.from_registry("nginx:latest"),
memory_reservation_mib=128,
start_timeout=duration.seconds(120),
stop_timeout=duration.seconds(60)
)
# Add credspecs using boto
task_definition.node.add_dependency(role)
task_definition.node.add_dependency(self.vpc)
task_definition.node.add_dependency(self.security_group)
task_definition.node.add_dependency(self.cfn_microsoft_AD)
return task_definition