|
1 |
| -resource "aws_iam_policy" "datadog-logshipping" { |
2 |
| - name = "${local.stack_prefix}datadog-logshipping-integration" |
3 |
| - path = "/" |
4 |
| - description = "This IAM policy allows for logshipping aws logs. See https://docs.datadoghq.com/integrations/amazon_web_services/?tab=allpermissions#manually-setup-triggers" |
5 |
| - |
6 |
| - policy = <<EOF |
7 |
| -{ |
8 |
| - "Version": "2012-10-17", |
9 |
| - "Statement": [ |
10 |
| - { |
11 |
| - "Action": [ |
12 |
| - "cloudfront:GetDistributionConfig", |
13 |
| - "cloudfront:ListDistributions", |
14 |
| - "elasticloadbalancing:DescribeLoadBalancers", |
15 |
| - "elasticloadbalancing:DescribeLoadBalancerAttributes", |
16 |
| - "lambda:AddPermission", |
17 |
| - "lambda:GetPolicy", |
18 |
| - "lambda:RemovePermission", |
19 |
| - "redshift:DescribeClusters", |
20 |
| - "redshift:DescribeLoggingStatus", |
21 |
| - "s3:GetBucketLogging", |
22 |
| - "s3:GetBucketLocation", |
23 |
| - "s3:GetBucketNotification", |
24 |
| - "s3:ListAllMyBuckets", |
25 |
| - "s3:PutBucketNotification", |
26 |
| - "s3:GetObject", |
27 |
| - "logs:PutSubscriptionFilter", |
28 |
| - "logs:DeleteSubscriptionFilter", |
29 |
| - "logs:DescribeSubscriptionFilters" |
30 |
| - ], |
31 |
| - "Resource": "*", |
32 |
| - "Effect": "Allow" |
33 |
| - } |
34 |
| - ] |
35 |
| -} |
36 |
| -EOF |
37 |
| -} |
38 |
| - |
39 |
| -# Create a lambda function that will export CT logs to DD |
40 |
| -resource "aws_iam_role" "dd-log-lambda" { |
41 |
| - name = "${local.stack_prefix}dd_log_lambda" |
42 |
| - |
43 |
| - assume_role_policy = <<EOF |
44 |
| -{ |
45 |
| - "Version": "2012-10-17", |
46 |
| - "Statement": [ |
47 |
| - { |
48 |
| - "Action": "sts:AssumeRole", |
49 |
| - "Principal": { |
50 |
| - "Service": "lambda.amazonaws.com" |
51 |
| - }, |
52 |
| - "Effect": "Allow", |
53 |
| - "Sid": "" |
54 |
| - } |
55 |
| - ] |
56 |
| -} |
57 |
| -EOF |
58 |
| - |
59 |
| - tags = local.default_tags |
60 |
| -} |
61 |
| - |
62 |
| -resource "aws_iam_role_policy_attachment" "datadog-logshipping-lambda-attach" { |
63 |
| - role = aws_iam_role.dd-log-lambda.name |
64 |
| - policy_arn = aws_iam_policy.datadog-logshipping.arn |
65 |
| -} |
66 |
| - |
67 |
| -resource "aws_iam_role_policy_attachment" "datadog-logshipping-lambda-attach2" { |
68 |
| - role = aws_iam_role.dd-log-lambda.name |
69 |
| - policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" |
70 |
| -} |
71 |
| - |
72 |
| -resource "aws_iam_role_policy_attachment" "datadog-logshipping-lambda-attach3" { |
73 |
| - role = aws_iam_role.dd-log-lambda.name |
74 |
| - policy_arn = "arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess" |
75 |
| -} |
76 |
| - |
77 |
| -resource "aws_lambda_function" "dd-log" { |
78 |
| - filename = "${path.module}/files/aws-dd-forwarder-3.5.0.zip" |
79 |
| - function_name = "${local.stack_prefix}DatadogLambdaFunction" |
80 |
| - role = aws_iam_role.dd-log-lambda.arn |
81 |
| - handler = "lambda_function.lambda_handler" |
82 |
| - description = "This lambda function will export logs to our orgs Datadog events" |
83 |
| - |
84 |
| - source_code_hash = filebase64sha256("${path.module}/files/aws-dd-forwarder-3.5.0.zip") |
85 |
| - |
86 |
| - runtime = "python3.7" |
87 |
| - memory_size = "1024" |
88 |
| - timeout = "120" |
89 |
| - |
90 |
| - # This brings in requirements for the lambda to run (imports modules) |
91 |
| - # This allows the dd_log_lambda.zip to be very small https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html |
92 |
| - # This specific layer is: https://github.com/DataDog/datadog-lambda-layer-python |
93 |
| - layers = [ |
94 |
| - "arn:aws:lambda:${var.aws_region}:464622532012:layer:Datadog-Python27:11", |
95 |
| - "arn:aws:lambda:${var.aws_region}:464622532012:layer:Datadog-Trace-Forwarder-Python37:5" |
96 |
| - ] |
97 |
| - |
98 |
| - environment { |
99 |
| - variables = { |
100 |
| - DD_API_KEY = var.datadog_api_key |
101 |
| - DD_ENHANCED_METRICS = "false" |
102 |
| - DD_TAGS = "namespace:${var.namespace},env:${var.env}" |
103 |
| - EXCLUDE_AT_MATCH = var.log_exclude_at_match |
104 |
| - } |
| 1 | +resource "aws_cloudformation_stack" "datadog-forwarder" { |
| 2 | + name = "datadog-forwarder" |
| 3 | + capabilities = ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"] |
| 4 | + parameters = { |
| 5 | + DdApiKey = var.datadog_api_key |
| 6 | + DdTags = "namespace:${var.namespace},env:${var.env}" |
| 7 | + ExcludeAtMatch = var.log_exclude_at_match |
| 8 | + FunctionName = "datadog-forwarder" |
105 | 9 | }
|
| 10 | + template_url = "https://datadog-cloudformation-template.s3.amazonaws.com/aws/forwarder/latest.yaml" |
106 | 11 | }
|
0 commit comments