Skip to content

feat: added changes to enable tracing in lambdas. #3554

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 39 commits into from
Nov 8, 2023
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
6eabc8a
feat: added changes to enable tracing in lambdas.
Oct 20, 2023
9060e15
docs: auto update terraform docs
github-actions[bot] Oct 20, 2023
864e5ba
Merge branch 'main' into nav/enable-tracing
Oct 20, 2023
dad0312
fix: missed this file.
Oct 20, 2023
91abc18
Merge branch 'nav/enable-tracing' of github.com:philips-labs/terrafor…
Oct 20, 2023
85ae608
fix: multi runners.
Oct 21, 2023
77a0aa6
docs: auto update terraform docs
github-actions[bot] Oct 21, 2023
afdd086
fix: multi runner.
Oct 21, 2023
8138f8c
Merge branch 'nav/enable-tracing' of github.com:philips-labs/terrafor…
Oct 21, 2023
dcd9611
fix: default.
Oct 21, 2023
751443d
docs: auto update terraform docs
github-actions[bot] Oct 21, 2023
a08798d
fix: more changes.
Oct 25, 2023
926e345
docs: auto update terraform docs
github-actions[bot] Oct 25, 2023
856f7ef
fix: added tracing for github apis.
Oct 28, 2023
e4f62f2
Merge branch 'nav/enable-tracing' of github.com:philips-labs/terrafor…
Oct 28, 2023
9a306b1
docs: auto update terraform docs
github-actions[bot] Oct 28, 2023
0c8a9b1
fix: more changes.
Oct 30, 2023
696cc6d
fix: start script.
Oct 30, 2023
a5caa41
fix: added tracing config section.
Oct 31, 2023
1fb8f9e
Merge branch 'main' into nav/enable-tracing
Oct 31, 2023
ab0a1c8
docs: auto update terraform docs
github-actions[bot] Oct 31, 2023
0aab19e
fix: comments.
Oct 31, 2023
115eb42
Merge branch 'nav/enable-tracing' of github.com:philips-labs/terrafor…
Oct 31, 2023
190ff01
docs: auto update terraform docs
github-actions[bot] Oct 31, 2023
b23df30
fix: ami housekeeper.
Oct 31, 2023
3fa0e8e
docs: auto update terraform docs
github-actions[bot] Oct 31, 2023
b1e59e9
fix: ssm housekeeper.
Oct 31, 2023
93f6adb
Merge branch 'nav/enable-tracing' of github.com:philips-labs/terrafor…
Oct 31, 2023
c88e508
fix: tests.
Oct 31, 2023
fe3342d
comments.
Oct 31, 2023
930ed0d
fix: added comment.
Nov 2, 2023
f165fd0
Merge branch 'main' into nav/enable-tracing
npalm Nov 3, 2023
1677f9a
fix: comments.
Nov 6, 2023
916b2c8
Merge branch 'nav/enable-tracing' of github.com:philips-labs/terrafor…
Nov 6, 2023
a6d6df9
fix: comments.
Nov 6, 2023
d7a5319
docs: auto update terraform docs
github-actions[bot] Nov 6, 2023
ed7f05b
fix: comments.
Nov 7, 2023
e9ffa1a
Merge branch 'main' into nav/enable-tracing
npalm Nov 8, 2023
1ed4561
Merge branch 'main' into nav/enable-tracing
Nov 8, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,7 @@ We welcome any improvement to the standard module to make the default as secure
| <a name="input_lambda_s3_bucket"></a> [lambda\_s3\_bucket](#input\_lambda\_s3\_bucket) | S3 bucket from which to specify lambda functions. This is an alternative to providing local files directly. | `string` | `null` | no |
| <a name="input_lambda_security_group_ids"></a> [lambda\_security\_group\_ids](#input\_lambda\_security\_group\_ids) | List of security group IDs associated with the Lambda function. | `list(string)` | `[]` | no |
| <a name="input_lambda_subnet_ids"></a> [lambda\_subnet\_ids](#input\_lambda\_subnet\_ids) | List of subnets in which the action runners will be launched, the subnets needs to be subnets in the `vpc_id`. | `list(string)` | `[]` | no |
| <a name="input_lambda_tracing_config"></a> [lambda\_tracing\_config](#input\_lambda\_tracing\_config) | Configuration for lambda tracing. | <pre>object({<br> capture_http_requests = optional(bool, false)<br> capture_error = optional(bool, false)<br> })</pre> | `null` | no |
| <a name="input_lambda_tracing_mode"></a> [lambda\_tracing\_mode](#input\_lambda\_tracing\_mode) | Enable X-Ray tracing for the lambda functions. | `string` | `null` | no |
| <a name="input_log_level"></a> [log\_level](#input\_log\_level) | Logging level for lambda logging. Valid values are 'silly', 'trace', 'debug', 'info', 'warn', 'error', 'fatal'. | `string` | `"info"` | no |
| <a name="input_log_type"></a> [log\_type](#input\_log\_type) | Logging format for lambda logging. Valid values are 'json', 'pretty', 'hidden'. | `string` | `null` | no |
Expand Down
1 change: 1 addition & 0 deletions lambdas/functions/control-plane/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"dependencies": {
"@aws-sdk/client-ec2": "^3.350.0",
"@aws-sdk/types": "^3.347.0",
"@middy/core": "^3.6.2",
"@octokit/auth-app": "6.0.1",
"@octokit/rest": "20.0.2",
"@octokit/types": "^12.0.0",
Expand Down
3 changes: 2 additions & 1 deletion lambdas/functions/control-plane/src/aws/runners.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
TerminateInstancesCommand,
} from '@aws-sdk/client-ec2';
import { createChildLogger } from '@terraform-aws-github-runner/aws-powertools-util';
import { getTracedAWSV3Client } from '@terraform-aws-github-runner/aws-powertools-util';
import { getParameter } from '@terraform-aws-github-runner/aws-ssm-util';
import moment from 'moment';

Expand Down Expand Up @@ -55,7 +56,7 @@ function constructFilters(filters?: Runners.ListRunnerFilters): Ec2Filter[][] {
}

async function getRunners(ec2Filters: Ec2Filter[]): Promise<Runners.RunnerList[]> {
const ec2 = new EC2Client({ region: process.env.AWS_REGION });
const ec2 = getTracedAWSV3Client<EC2Client>(new EC2Client({ region: process.env.AWS_REGION }));
const runners: Runners.RunnerList[] = [];
let nextToken;
let hasNext = true;
Expand Down
5 changes: 5 additions & 0 deletions lambdas/functions/control-plane/src/lambda.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import middy from '@middy/core';
import { logger, setContext } from '@terraform-aws-github-runner/aws-powertools-util';
import { captureLambdaHandler, tracer } from '@terraform-aws-github-runner/aws-powertools-util';
import { Context, SQSEvent } from 'aws-lambda';
import 'source-map-support/register';

Expand All @@ -7,6 +9,9 @@ import ScaleError from './scale-runners/ScaleError';
import { scaleDown } from './scale-runners/scale-down';
import { scaleUp } from './scale-runners/scale-up';

export const handlerScaleUp = middy(scaleUpHandler).use(captureLambdaHandler(tracer));
export const handlerScaleDown = middy(scaleDownHandler).use(captureLambdaHandler(tracer));
export const handlerPool = middy(adjustPool).use(captureLambdaHandler(tracer));
export async function scaleUpHandler(event: SQSEvent, context: Context): Promise<void> {
setContext(context, 'lambda.ts');
logger.logEventIfEnabled(event);
Expand Down
1 change: 1 addition & 0 deletions lambdas/functions/gh-agent-syncer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"@aws-sdk/client-s3": "^3.350.0",
"@aws-sdk/lib-storage": "^3.350.0",
"@aws-sdk/types": "^3.347.0",
"@middy/core": "^3.6.2",
"@terraform-aws-github-runner/aws-powertools-util": "*",
"axios": "^1.3.5"
}
Expand Down
3 changes: 3 additions & 0 deletions lambdas/functions/gh-agent-syncer/src/lambda.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import middy from '@middy/core';
import { logger, setContext } from '@terraform-aws-github-runner/aws-powertools-util';
import { captureLambdaHandler, tracer } from '@terraform-aws-github-runner/aws-powertools-util';
import { Context } from 'aws-lambda';

import { sync } from './syncer/syncer';

export const lambdaHandler = middy(handler).use(captureLambdaHandler(tracer));
// eslint-disable-next-line
export async function handler(event: any, context: Context): Promise<void> {
setContext(context, 'lambda.ts');
Expand Down
3 changes: 2 additions & 1 deletion lambdas/functions/gh-agent-syncer/src/syncer/syncer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { GetObjectTaggingCommand, S3Client, Tag } from '@aws-sdk/client-s3';
import { Upload } from '@aws-sdk/lib-storage';
import { Octokit } from '@octokit/rest';
import { createChildLogger } from '@terraform-aws-github-runner/aws-powertools-util';
import { getTracedAWSV3Client } from '@terraform-aws-github-runner/aws-powertools-util';
import axios from 'axios';
import { Stream } from 'stream';

Expand Down Expand Up @@ -84,7 +85,7 @@ async function uploadToS3(
}

export async function sync(): Promise<void> {
const s3 = new S3Client({});
const s3 = getTracedAWSV3Client<S3Client>(new S3Client({}));

const runnerOs = process.env.GITHUB_RUNNER_OS || 'linux';
const runnerArch = process.env.GITHUB_RUNNER_ARCHITECTURE || 'x64';
Expand Down
1 change: 1 addition & 0 deletions lambdas/functions/webhook/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
},
"dependencies": {
"@aws-sdk/client-sqs": "^3.315.0",
"@middy/core": "^3.6.2",
"@octokit/rest": "^20.0.1",
"@octokit/types": "^12.0.0",
"@octokit/webhooks": "^12.0.3",
Expand Down
3 changes: 3 additions & 0 deletions lambdas/functions/webhook/src/lambda.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import middy from '@middy/core';
import { logger, setContext } from '@terraform-aws-github-runner/aws-powertools-util';
import { captureLambdaHandler, tracer } from '@terraform-aws-github-runner/aws-powertools-util';
import { APIGatewayEvent, Context } from 'aws-lambda';

import { handle } from './webhook/handler';
Expand All @@ -7,6 +9,7 @@ export interface Response {
statusCode: number;
body?: string;
}
export const handlerWebhook = middy(githubWebhook).use(captureLambdaHandler(tracer));
export async function githubWebhook(event: APIGatewayEvent, context: Context): Promise<Response> {
setContext(context, 'lambda.ts');
logger.logEventIfEnabled(event);
Expand Down
3 changes: 2 additions & 1 deletion lambdas/functions/webhook/src/sqs/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { SQS, SendMessageCommandInput } from '@aws-sdk/client-sqs';
import { WorkflowJobEvent } from '@octokit/webhooks-types';
import { createChildLogger } from '@terraform-aws-github-runner/aws-powertools-util';
import { getTracedAWSV3Client } from '@terraform-aws-github-runner/aws-powertools-util';

const logger = createChildLogger('sqs');

Expand Down Expand Up @@ -30,7 +31,7 @@ export interface GithubWorkflowEvent {
}

export const sendActionRequest = async (message: ActionRequestMessage): Promise<void> => {
const sqs = new SQS({ region: process.env.AWS_REGION });
const sqs = getTracedAWSV3Client<SQS>(new SQS({ region: process.env.AWS_REGION }));

const sqsMessage: SendMessageCommandInput = {
QueueUrl: message.queueId,
Expand Down
1 change: 1 addition & 0 deletions lambdas/libs/aws-powertools-util/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
},
"dependencies": {
"@aws-lambda-powertools/logger": "^1.8.0",
"@aws-lambda-powertools/tracer": "^1.14.0",
"aws-lambda": "^1.0.7"
}
}
1 change: 1 addition & 0 deletions lambdas/libs/aws-powertools-util/src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from './logger';
export * from './tracer';
10 changes: 10 additions & 0 deletions lambdas/libs/aws-powertools-util/src/tracer/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Tracer, captureLambdaHandler } from '@aws-lambda-powertools/tracer';

const tracer = new Tracer({
serviceName: process.env.SERVICE_NAME || 'runners',
});

function getTracedAWSV3Client<T>(client: T): T {
return tracer.captureAWSClient(client);
}
export { tracer, captureLambdaHandler, getTracedAWSV3Client };
3 changes: 3 additions & 0 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ module "webhook" {
lambda_zip = var.webhook_lambda_zip
lambda_timeout = var.webhook_lambda_timeout
lambda_tracing_mode = var.lambda_tracing_mode
lambda_tracing_config = var.lambda_tracing_config
logging_retention_in_days = var.logging_retention_in_days
logging_kms_key_id = var.logging_kms_key_id

Expand Down Expand Up @@ -239,6 +240,7 @@ module "runners" {
lambda_subnet_ids = var.lambda_subnet_ids
lambda_security_group_ids = var.lambda_security_group_ids
lambda_tracing_mode = var.lambda_tracing_mode
lambda_tracing_config = var.lambda_tracing_config
logging_retention_in_days = var.logging_retention_in_days
logging_kms_key_id = var.logging_kms_key_id
enable_cloudwatch_agent = var.enable_cloudwatch_agent
Expand Down Expand Up @@ -302,6 +304,7 @@ module "runner_binaries" {
lambda_zip = var.runner_binaries_syncer_lambda_zip
lambda_timeout = var.runner_binaries_syncer_lambda_timeout
lambda_tracing_mode = var.lambda_tracing_mode
lambda_tracing_config = var.lambda_tracing_config
logging_retention_in_days = var.logging_retention_in_days
logging_kms_key_id = var.logging_kms_key_id

Expand Down
1 change: 1 addition & 0 deletions modules/multi-runner/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ module "multi-runner" {
| <a name="input_lambda_s3_bucket"></a> [lambda\_s3\_bucket](#input\_lambda\_s3\_bucket) | S3 bucket from which to specify lambda functions. This is an alternative to providing local files directly. | `string` | `null` | no |
| <a name="input_lambda_security_group_ids"></a> [lambda\_security\_group\_ids](#input\_lambda\_security\_group\_ids) | List of security group IDs associated with the Lambda function. | `list(string)` | `[]` | no |
| <a name="input_lambda_subnet_ids"></a> [lambda\_subnet\_ids](#input\_lambda\_subnet\_ids) | List of subnets in which the action runners will be launched, the subnets needs to be subnets in the `vpc_id`. | `list(string)` | `[]` | no |
| <a name="input_lambda_tracing_config"></a> [lambda\_tracing\_config](#input\_lambda\_tracing\_config) | Configuration for lambda tracing. | <pre>object({<br> capture_http_requests = optional(bool, false)<br> capture_error = optional(bool, false)<br> })</pre> | `null` | no |
| <a name="input_lambda_tracing_mode"></a> [lambda\_tracing\_mode](#input\_lambda\_tracing\_mode) | Enable X-Ray tracing for the lambda functions. | `string` | `null` | no |
| <a name="input_log_level"></a> [log\_level](#input\_log\_level) | Logging level for lambda logging. Valid values are 'silly', 'trace', 'debug', 'info', 'warn', 'error', 'fatal'. | `string` | `"info"` | no |
| <a name="input_log_type"></a> [log\_type](#input\_log\_type) | Logging format for lambda logging. Valid values are 'json', 'pretty', 'hidden'. | `string` | `null` | no |
Expand Down
1 change: 1 addition & 0 deletions modules/multi-runner/runner-binaries.tf
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ module "runner_binaries" {
lambda_zip = var.runner_binaries_syncer_lambda_zip
lambda_timeout = var.runner_binaries_syncer_lambda_timeout
lambda_tracing_mode = var.lambda_tracing_mode
lambda_tracing_config = var.lambda_tracing_config
logging_retention_in_days = var.logging_retention_in_days
logging_kms_key_id = var.logging_kms_key_id
enable_event_rule_binaries_syncer = var.enable_event_rule_binaries_syncer
Expand Down
1 change: 1 addition & 0 deletions modules/multi-runner/runners.tf
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ module "runners" {
lambda_subnet_ids = var.lambda_subnet_ids
lambda_security_group_ids = var.lambda_security_group_ids
lambda_tracing_mode = var.lambda_tracing_mode
lambda_tracing_config = var.lambda_tracing_config
logging_retention_in_days = var.logging_retention_in_days
logging_kms_key_id = var.logging_kms_key_id
enable_cloudwatch_agent = each.value.runner_config.enable_cloudwatch_agent
Expand Down
9 changes: 9 additions & 0 deletions modules/multi-runner/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -556,3 +556,12 @@ variable "lambda_tracing_mode" {
type = string
default = null
}

variable "lambda_tracing_config" {
description = "Configuration for lambda tracing."
type = object({
capture_http_requests = optional(bool, false)
capture_error = optional(bool, false)
})
default = null
}
1 change: 1 addition & 0 deletions modules/multi-runner/webhook.tf
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ module "webhook" {
lambda_zip = var.webhook_lambda_zip
lambda_timeout = var.webhook_lambda_timeout
lambda_tracing_mode = var.lambda_tracing_mode
lambda_tracing_config = var.lambda_tracing_config
logging_retention_in_days = var.logging_retention_in_days
logging_kms_key_id = var.logging_kms_key_id

Expand Down
1 change: 1 addition & 0 deletions modules/runner-binaries-syncer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ No modules.
| <a name="input_lambda_security_group_ids"></a> [lambda\_security\_group\_ids](#input\_lambda\_security\_group\_ids) | List of security group IDs associated with the Lambda function. | `list(string)` | `[]` | no |
| <a name="input_lambda_subnet_ids"></a> [lambda\_subnet\_ids](#input\_lambda\_subnet\_ids) | List of subnets in which the action runners will be launched, the subnets needs to be subnets in the `vpc_id`. | `list(string)` | `[]` | no |
| <a name="input_lambda_timeout"></a> [lambda\_timeout](#input\_lambda\_timeout) | Time out of the lambda in seconds. | `number` | `300` | no |
| <a name="input_lambda_tracing_config"></a> [lambda\_tracing\_config](#input\_lambda\_tracing\_config) | Configuration for lambda tracing. | <pre>object({<br> capture_http_requests = optional(bool, false)<br> capture_error = optional(bool, false)<br> })</pre> | `null` | no |
| <a name="input_lambda_tracing_mode"></a> [lambda\_tracing\_mode](#input\_lambda\_tracing\_mode) | Enable X-Ray tracing for the lambda functions. | `string` | `null` | no |
| <a name="input_lambda_zip"></a> [lambda\_zip](#input\_lambda\_zip) | File location of the lambda zip file. | `string` | `null` | no |
| <a name="input_log_level"></a> [log\_level](#input\_log\_level) | Logging level for lambda logging. Valid values are 'silly', 'trace', 'debug', 'info', 'warn', 'error', 'fatal'. | `string` | `"info"` | no |
Expand Down
21 changes: 12 additions & 9 deletions modules/runner-binaries-syncer/runner-binaries-syncer.tf
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,18 @@ resource "aws_lambda_function" "syncer" {

environment {
variables = {
ENVIRONMENT = var.prefix
GITHUB_RUNNER_ARCHITECTURE = var.runner_architecture
GITHUB_RUNNER_OS = local.gh_binary_os_label[var.runner_os]
LOG_LEVEL = var.log_level
POWERTOOLS_LOGGER_LOG_EVENT = var.log_level == "debug" ? "true" : "false"
S3_BUCKET_NAME = aws_s3_bucket.action_dist.id
S3_OBJECT_KEY = local.action_runner_distribution_object_key
S3_SSE_ALGORITHM = try(var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm, null)
S3_SSE_KMS_KEY_ID = try(var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.kms_master_key_id, null)
ENVIRONMENT = var.prefix
GITHUB_RUNNER_ARCHITECTURE = var.runner_architecture
GITHUB_RUNNER_OS = local.gh_binary_os_label[var.runner_os]
LOG_LEVEL = var.log_level
POWERTOOLS_LOGGER_LOG_EVENT = var.log_level == "debug" ? "true" : "false"
POWERTOOLS_TRACE_ENABLED = var.lambda_tracing_mode == "Active" ? true : false
POWERTOOLS_TRACER_CAPTURE_HTTPS_REQUESTS = var.lambda_tracing_config.capture_http_requests
POWERTOOLS_TRACER_CAPTURE_ERROR = var.lambda_tracing_config.capture_error
S3_BUCKET_NAME = aws_s3_bucket.action_dist.id
S3_OBJECT_KEY = local.action_runner_distribution_object_key
S3_SSE_ALGORITHM = try(var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.sse_algorithm, null)
S3_SSE_KMS_KEY_ID = try(var.server_side_encryption_configuration.rule.apply_server_side_encryption_by_default.kms_master_key_id, null)
}
}

Expand Down
9 changes: 9 additions & 0 deletions modules/runner-binaries-syncer/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -253,3 +253,12 @@ variable "lambda_tracing_mode" {
type = string
default = null
}

variable "lambda_tracing_config" {
description = "Configuration for lambda tracing."
type = object({
capture_http_requests = optional(bool, false)
capture_error = optional(bool, false)
})
default = null
}
3 changes: 2 additions & 1 deletion modules/runners/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ yarn run dist
| Name | Type |
|------|------|
| [aws_cloudwatch_event_rule.scale_down](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |
| [aws_cloudwatch_event_target.scale_down](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |
| [aws_cloudwatch_log_group.gh_runners](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource |
| [aws_cloudwatch_log_group.scale_down](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource |
| [aws_cloudwatch_log_group.scale_up](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource |
Expand All @@ -100,6 +99,7 @@ yarn run dist
| [aws_iam_role_policy_attachment.managed_policies](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
| [aws_iam_role_policy_attachment.scale_down_vpc_execution_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
| [aws_iam_role_policy_attachment.scale_up_vpc_execution_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
| [aws_iam_role_policy_attachment.xray_tracing](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
| [aws_lambda_event_source_mapping.scale_up](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_event_source_mapping) | resource |
| [aws_lambda_function.scale_down](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function) | resource |
| [aws_lambda_function.scale_up](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function) | resource |
Expand Down Expand Up @@ -166,6 +166,7 @@ yarn run dist
| <a name="input_lambda_subnet_ids"></a> [lambda\_subnet\_ids](#input\_lambda\_subnet\_ids) | List of subnets in which the lambda will be launched, the subnets needs to be subnets in the `vpc_id`. | `list(string)` | `[]` | no |
| <a name="input_lambda_timeout_scale_down"></a> [lambda\_timeout\_scale\_down](#input\_lambda\_timeout\_scale\_down) | Time out for the scale down lambda in seconds. | `number` | `60` | no |
| <a name="input_lambda_timeout_scale_up"></a> [lambda\_timeout\_scale\_up](#input\_lambda\_timeout\_scale\_up) | Time out for the scale up lambda in seconds. | `number` | `60` | no |
| <a name="input_lambda_tracing_config"></a> [lambda\_tracing\_config](#input\_lambda\_tracing\_config) | Configuration for lambda tracing. | <pre>object({<br> capture_http_requests = optional(bool, false)<br> capture_error = optional(bool, false)<br> })</pre> | `null` | no |
| <a name="input_lambda_tracing_mode"></a> [lambda\_tracing\_mode](#input\_lambda\_tracing\_mode) | Enable X-Ray tracing for the lambda functions. | `string` | `null` | no |
| <a name="input_lambda_zip"></a> [lambda\_zip](#input\_lambda\_zip) | File location of the lambda zip file. | `string` | `null` | no |
| <a name="input_log_level"></a> [log\_level](#input\_log\_level) | Logging level for lambda logging. Valid values are 'silly', 'trace', 'debug', 'info', 'warn', 'error', 'fatal'. | `string` | `"info"` | no |
Expand Down
5 changes: 5 additions & 0 deletions modules/runners/policies-runner.tf
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ resource "aws_iam_role_policy" "dist_bucket" {
)
}

resource "aws_iam_role_policy_attachment" "xray_tracing" {
role = aws_iam_role.runner.name
policy_arn = "arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess"
}

resource "aws_iam_role_policy" "describe_tags" {
name = "runner-describe-tags"
role = aws_iam_role.runner.name
Expand Down
16 changes: 16 additions & 0 deletions modules/runners/policies/instance-xray-policy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowXRay",
"Effect": "Allow",
"Action": [
"xray:BatchGetTraces",
"xray:GetTraceSummaries",
"xray:PutTelemetryRecords",
"xray:PutTraceSegments"
],
"Resource": ["*"]
}
]
}
Loading