forked from pulumi/examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LambdaStack.cs
64 lines (57 loc) · 1.83 KB
/
LambdaStack.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright 2016-2020, Pulumi Corporation. All rights reserved.
using Pulumi;
using Pulumi.Aws.Iam;
using Pulumi.Aws.Lambda;
class LambdaStack : Stack
{
public LambdaStack()
{
var lambda = new Function("basicLambda", new FunctionArgs
{
Runtime = "dotnetcore3.1",
Code = new FileArchive("../DotnetLambda/src/DotnetLambda/bin/Debug/netcoreapp3.1/publish"),
Handler = "DotnetLambda::DotnetLambda.Function::FunctionHandler",
Role = CreateLambdaRole().Arn
});
this.Lambda = lambda.Arn;
}
[Output] public Output<string> Lambda { get; set; }
private static Role CreateLambdaRole()
{
var lambdaRole = new Role("lambdaRole", new RoleArgs
{
AssumeRolePolicy =
@"{
""Version"": ""2012-10-17"",
""Statement"": [
{
""Action"": ""sts:AssumeRole"",
""Principal"": {
""Service"": ""lambda.amazonaws.com""
},
""Effect"": ""Allow"",
""Sid"": """"
}
]
}"
});
var logPolicy = new RolePolicy("lambdaLogPolicy", new RolePolicyArgs
{
Role = lambdaRole.Id,
Policy =
@"{
""Version"": ""2012-10-17"",
""Statement"": [{
""Effect"": ""Allow"",
""Action"": [
""logs:CreateLogGroup"",
""logs:CreateLogStream"",
""logs:PutLogEvents""
],
""Resource"": ""arn:aws:logs:*:*:*""
}]
}"
});
return lambdaRole;
}
}