diff --git a/README.md b/README.md index 4c389b9..0d32505 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ toolchain/scripts/run-tests.sh ## [Optional] Upgrade AWS CDK CLI version If you are planning to upgrade dependencies, first push the upgraded AWS CDK CLI version. See [This CDK CLI is not compatible with the CDK library used by your application](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html#this-cdk-cli-is-not-compatible-with-the-cdk-library-used-by-your-application) for more details. -The application uses Node Package Manager (npm) and `package.json` configuration file to install AWS CDK CLI locally. To find the latest AWS CDK CLI version: `npm view aws-cdk-lib version`. +The application uses Node Package Manager (npm) and `package.json` configuration file to install AWS CDK CLI locally. To find the latest AWS CDK CLI version: `npm view aws-cdk version`. ```bash vi package.json # Update the "aws-cdk-lib" package version diff --git a/cdk.context.json b/cdk.context.json new file mode 100644 index 0000000..f4bc90c --- /dev/null +++ b/cdk.context.json @@ -0,0 +1,5 @@ +{ + "acknowledged-issue-numbers": [ + 32775 + ] +} diff --git a/package-lock.json b/package-lock.json index 8f5bf44..52bcc78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,20 +5,20 @@ "packages": { "": { "devDependencies": { - "aws-cdk": "2.178.2" + "aws-cdk": "2.1000.2" } }, "node_modules/aws-cdk": { - "version": "2.178.2", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.178.2.tgz", - "integrity": "sha512-ojMCMnBGinvDUD6+BOOlUOB9pjsYXoQdFVbf4bvi3dy3nwn557r0j6qDUcJMeikzPJ6YWzfAdL0fYxBZg4xcOg==", + "version": "2.1000.2", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1000.2.tgz", + "integrity": "sha512-QsXqJhGWjHNqP7etgE3sHOTiDBXItmSKdFKgsm1qPMBabCMyFfmWZnEeUxfZ4sMaIoxvLpr3sqoWSNeLuUk4sg==", "dev": true, "license": "Apache-2.0", "bin": { "cdk": "bin/cdk" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 16.0.0" }, "optionalDependencies": { "fsevents": "2.3.2" @@ -41,9 +41,9 @@ }, "dependencies": { "aws-cdk": { - "version": "2.178.2", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.178.2.tgz", - "integrity": "sha512-ojMCMnBGinvDUD6+BOOlUOB9pjsYXoQdFVbf4bvi3dy3nwn557r0j6qDUcJMeikzPJ6YWzfAdL0fYxBZg4xcOg==", + "version": "2.1000.2", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1000.2.tgz", + "integrity": "sha512-QsXqJhGWjHNqP7etgE3sHOTiDBXItmSKdFKgsm1qPMBabCMyFfmWZnEeUxfZ4sMaIoxvLpr3sqoWSNeLuUk4sg==", "dev": true, "requires": { "fsevents": "2.3.2" diff --git a/package.json b/package.json index ef7ed67..364c968 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { "devDependencies": { - "aws-cdk": "2.178.2" + "aws-cdk": "2.1000.2" } } diff --git a/requirements-dev.txt b/requirements-dev.txt index ec37ab0..35b380a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -10,7 +10,7 @@ astroid==3.3.8 # via pylint authlib==1.4.1 # via safety -bandit==1.8.2 +bandit==1.8.3 # via -r requirements-dev.in black==25.1.0 # via -r requirements-dev.in @@ -39,7 +39,7 @@ dparse==0.6.4 # safety-schemas filelock==3.16.1 # via safety -flake8==7.1.1 +flake8==7.1.2 # via -r requirements-dev.in idna==3.10 # via requests diff --git a/requirements.txt b/requirements.txt index ba98be3..b1281ce 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,17 +8,15 @@ attrs==24.3.0 # via # cattrs # jsii -aws-cdk-lib==2.178.2 +aws-cdk-lib==2.179.0 # via # -r requirements.in # aws-cdk.aws-lambda-python-alpha -aws-cdk.asset-awscli-v1==2.2.223 - # via aws-cdk-lib -aws-cdk.asset-kubectl-v20==2.1.4 +aws-cdk.asset-awscli-v1==2.2.224 # via aws-cdk-lib aws-cdk.asset-node-proxy-agent-v6==2.1.0 # via aws-cdk-lib -aws-cdk.aws-lambda-python-alpha==2.178.2a0 +aws-cdk.aws-lambda-python-alpha==2.179.0a0 # via -r requirements.in aws-cdk.cloud-assembly-schema==39.2.20 # via aws-cdk-lib @@ -35,7 +33,6 @@ jsii==1.106.0 # via # aws-cdk-lib # aws-cdk.asset-awscli-v1 - # aws-cdk.asset-kubectl-v20 # aws-cdk.asset-node-proxy-agent-v6 # aws-cdk.aws-lambda-python-alpha # aws-cdk.cloud-assembly-schema @@ -44,7 +41,6 @@ publication==0.0.3 # via # aws-cdk-lib # aws-cdk.asset-awscli-v1 - # aws-cdk.asset-kubectl-v20 # aws-cdk.asset-node-proxy-agent-v6 # aws-cdk.aws-lambda-python-alpha # aws-cdk.cloud-assembly-schema @@ -58,7 +54,6 @@ typeguard==2.13.3 # via # aws-cdk-lib # aws-cdk.asset-awscli-v1 - # aws-cdk.asset-kubectl-v20 # aws-cdk.asset-node-proxy-agent-v6 # aws-cdk.aws-lambda-python-alpha # aws-cdk.cloud-assembly-schema diff --git a/service/api/app/main.py b/service/api/app/main.py index d0a7f53..96001c2 100644 --- a/service/api/app/main.py +++ b/service/api/app/main.py @@ -1,5 +1,6 @@ from typing import Any, Optional +from aws_lambda_powertools import Tracer from aws_lambda_powertools.event_handler import api_gateway from aws_lambda_powertools.utilities.typing.lambda_context import LambdaContext @@ -8,8 +9,10 @@ app = api_gateway.ApiGatewayResolver( proxy_type=api_gateway.ProxyEventType.APIGatewayProxyEventV2 ) +tracer = Tracer() +@tracer.capture_lambda_handler def lambda_handler(event: dict[str, Any], context: LambdaContext) -> dict[str, Any]: return app.resolve(event, context) diff --git a/service/api/app/requirements.in b/service/api/app/requirements.in index b888f04..8bb1fe2 100644 --- a/service/api/app/requirements.in +++ b/service/api/app/requirements.in @@ -1,3 +1,3 @@ -aws-lambda-powertools +aws-lambda-powertools[tracer] boto3 boto3-stubs diff --git a/service/api/app/requirements.txt b/service/api/app/requirements.txt index 1d69822..8a2b0e3 100644 --- a/service/api/app/requirements.txt +++ b/service/api/app/requirements.txt @@ -4,17 +4,20 @@ # # pip-compile service/api/app/requirements.in # -aws-lambda-powertools==3.6.0 +aws-lambda-powertools[tracer]==3.6.0 # via -r service/api/app/requirements.in -boto3==1.36.21 +aws-xray-sdk==2.14.0 + # via aws-lambda-powertools +boto3==1.36.23 # via -r service/api/app/requirements.in -boto3-stubs==1.36.21 +boto3-stubs==1.36.23 # via -r service/api/app/requirements.in -botocore==1.36.21 +botocore==1.36.23 # via + # aws-xray-sdk # boto3 # s3transfer -botocore-stubs==1.36.21 +botocore-stubs==1.36.23 # via boto3-stubs jmespath==1.0.1 # via @@ -37,3 +40,5 @@ typing-extensions==4.12.2 # boto3-stubs urllib3==2.3.0 # via botocore +wrapt==1.17.2 + # via aws-xray-sdk diff --git a/service/api/compute.py b/service/api/compute.py index 90a7eb9..0733393 100644 --- a/service/api/compute.py +++ b/service/api/compute.py @@ -1,6 +1,7 @@ import pathlib from typing import cast +import aws_cdk.aws_iam as iam import aws_cdk.aws_lambda as lambda_ import aws_cdk.aws_lambda_python_alpha as lambda_python_alpha from constructs import Construct @@ -30,4 +31,10 @@ def __init__( runtime=lambda_.Runtime( f"python{constants.PYTHON_VERSION}", family=lambda_.RuntimeFamily.PYTHON ), + tracing=lambda_.Tracing.ACTIVE, + ) + # PythonFunction creates the IAM role automatically. + lambda_function_role = cast(iam.Role, self.lambda_function.role) + lambda_function_role.add_managed_policy( + iam.ManagedPolicy.from_aws_managed_policy_name("AWSXRayDaemonWriteAccess") )