From 23a51f19e7b0c6c0897266baa2951ca76e1852c9 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 08:26:16 +0000 Subject: [PATCH 01/30] Add Python Build --- .github/workflows/build.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 999deb4f..c7bb5662 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,8 +25,8 @@ jobs: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - # Runs a single command using the runners shell - - name: Parse info.json and run TS tests + # Validate TypeScript Patterns + - name: Build/Test TypeScript Patterns run: | readarray -t arr < <(jq -r '.[] | keys | .[]' info.json); for i in "${arr[@]}" @@ -37,3 +37,18 @@ jobs: npm run test; cd ../../; done + + # Validate Python Patterns + - name: Build/Synth Python Patterns + run: | + readarray -t arr < <(jq -r '.[] | keys | .[]' info.json); + for i in "${arr[@]}" + do + cd $i/python; + python3 -m venv .env + source .env/bin/activate + pip3 install -r requirements.txt + npx cdk synth + deactivate + cd ../../; + done From d3b56541b5cd54176b02657cd76ad228b480b3e4 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 08:47:20 +0000 Subject: [PATCH 02/30] check for requirements.txt --- .github/workflows/build.yml | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c7bb5662..08486d1d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,6 +24,23 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 + + # Validate Python Patterns + - name: Build/Synth Python Patterns + run: | + readarray -t arr < <(jq -r '.[] | keys | .[]' info.json); + for i in "${arr[@]}" + do + cd $i/python; + if test -f "requirements.txt"; then + python3 -m venv .env + source .env/bin/activate + pip3 install -r requirements.txt + npx cdk synth + deactivate + fi + cd ../../; + done # Validate TypeScript Patterns - name: Build/Test TypeScript Patterns @@ -38,17 +55,4 @@ jobs: cd ../../; done - # Validate Python Patterns - - name: Build/Synth Python Patterns - run: | - readarray -t arr < <(jq -r '.[] | keys | .[]' info.json); - for i in "${arr[@]}" - do - cd $i/python; - python3 -m venv .env - source .env/bin/activate - pip3 install -r requirements.txt - npx cdk synth - deactivate - cd ../../; - done + From 8f968e885a2e062c55df6867b078730818df6c3a Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 08:59:26 +0000 Subject: [PATCH 03/30] config was pointing to python folder instead of the_basic_mq --- the-basic-mq/python/setup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/the-basic-mq/python/setup.py b/the-basic-mq/python/setup.py index 0938375a..ca6483a4 100644 --- a/the-basic-mq/python/setup.py +++ b/the-basic-mq/python/setup.py @@ -6,7 +6,7 @@ setuptools.setup( - name="python", + name="basicmq", version="0.0.1", description="An empty CDK Python app", @@ -15,8 +15,8 @@ author="author", - package_dir={"": "python"}, - packages=setuptools.find_packages(where="python"), + package_dir={"": "the_basic_mq"}, + packages=setuptools.find_packages(where="the_basic_mq"), install_requires=[ "aws-cdk.core==1.51.0", From 43d074fa8d2d67e0c92dc55695c51278738a7882 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 09:12:19 +0000 Subject: [PATCH 04/30] Add in missing dependencies --- the-basic-mq/python/setup.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/the-basic-mq/python/setup.py b/the-basic-mq/python/setup.py index ca6483a4..1b7885a6 100644 --- a/the-basic-mq/python/setup.py +++ b/the-basic-mq/python/setup.py @@ -20,6 +20,15 @@ install_requires=[ "aws-cdk.core==1.51.0", + "aws-cdk.aws-route53==1.51.0", + "aws-cdk.aws-route53-targets==1.51.0", + "aws-cdk.aws-certificatemanager==1.51.0", + "aws-cdk.aws-ec2==1.51.0", + "aws-cdk.aws-ssm==1.51.0", + "aws-cdk.aws-amazonmq==1.51.0", + "aws-cdk.aws-elasticloadbalancingv2==1.51.0", + "aws-cdk.aws-elasticloadbalancingv2-targets==1.51.0", + "aws-cdk.custom-resources==1.51.0" ], python_requires=">=3.6", From 33d5e5764a0f527e1c053e2541cf04aed48da2f9 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 09:41:12 +0000 Subject: [PATCH 05/30] Support multiple python stacks --- .github/workflows/build.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 08486d1d..6362a317 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,15 +28,19 @@ jobs: # Validate Python Patterns - name: Build/Synth Python Patterns run: | - readarray -t arr < <(jq -r '.[] | keys | .[]' info.json); - for i in "${arr[@]}" + readarray -t patterns < <(jq -r '.[] | keys | .[]' info.json); + for pattern in "${patterns[@]}" do - cd $i/python; + cd $pattern/python; if test -f "requirements.txt"; then python3 -m venv .env source .env/bin/activate pip3 install -r requirements.txt - npx cdk synth + readarray -t stacks < <(cdk ls) + for stack in "${stacks[@]}" + do + npx cdk synth $stack + done deactivate fi cd ../../; From 0720f02bf2e18115b300c1ba55f1e0e51e17b70d Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 09:46:08 +0000 Subject: [PATCH 06/30] Update build.yml --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6362a317..68ceeaee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,7 +39,8 @@ jobs: readarray -t stacks < <(cdk ls) for stack in "${stacks[@]}" do - npx cdk synth $stack + echo "npx cdk synth $stack" + npx cdk synth $stack done deactivate fi From 4886b77747d2b1419b6e6c770b8ff41b88bb8508 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 09:57:34 +0000 Subject: [PATCH 07/30] Update build.yml --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 68ceeaee..7180f5fd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,14 +33,14 @@ jobs: do cd $pattern/python; if test -f "requirements.txt"; then - python3 -m venv .env - source .env/bin/activate - pip3 install -r requirements.txt - readarray -t stacks < <(cdk ls) + python3 -m venv .env; + source .env/bin/activate; + pip3 install -r requirements.txt; + readarray -t stacks < <(cdk ls); for stack in "${stacks[@]}" do - echo "npx cdk synth $stack" - npx cdk synth $stack + echo "npx cdk synth $stack"; + npx cdk synth "$stack"; done deactivate fi From 32e7f4c67444bcc0f34ecba50f4e3b7d36283d51 Mon Sep 17 00:00:00 2001 From: Matt Coulter Date: Sun, 22 Nov 2020 10:04:54 +0000 Subject: [PATCH 08/30] update author --- build-python.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 build-python.sh diff --git a/build-python.sh b/build-python.sh new file mode 100755 index 00000000..6551d236 --- /dev/null +++ b/build-python.sh @@ -0,0 +1,18 @@ +readarray -t patterns < <(jq -r '.[] | keys | .[]' info.json); +for pattern in "${patterns[@]}" +do + cd $pattern/python; + if test -f "requirements.txt"; then + python3 -m venv .env; + source .env/bin/activate; + pip3 install -r requirements.txt; + readarray -t stacks < <(cdk ls); + for stack in "${stacks[@]}" + do + echo "npx cdk synth $stack"; + npx cdk synth "$stack"; + done + deactivate + fi + cd ../../; +done \ No newline at end of file From 71a40105b3f27bb24396029858699a7da97da30d Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:07:04 +0000 Subject: [PATCH 09/30] Update build.yml --- .github/workflows/build.yml | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7180f5fd..f16874fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,25 +27,7 @@ jobs: # Validate Python Patterns - name: Build/Synth Python Patterns - run: | - readarray -t patterns < <(jq -r '.[] | keys | .[]' info.json); - for pattern in "${patterns[@]}" - do - cd $pattern/python; - if test -f "requirements.txt"; then - python3 -m venv .env; - source .env/bin/activate; - pip3 install -r requirements.txt; - readarray -t stacks < <(cdk ls); - for stack in "${stacks[@]}" - do - echo "npx cdk synth $stack"; - npx cdk synth "$stack"; - done - deactivate - fi - cd ../../; - done + run: ./build-python.sh # Validate TypeScript Patterns - name: Build/Test TypeScript Patterns From ddaaa5dedffdcf48fff6bd7a3e56112351e47bcc Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:09:58 +0000 Subject: [PATCH 10/30] Update build-python.sh --- build-python.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-python.sh b/build-python.sh index 6551d236..4afa48dc 100755 --- a/build-python.sh +++ b/build-python.sh @@ -6,7 +6,7 @@ do python3 -m venv .env; source .env/bin/activate; pip3 install -r requirements.txt; - readarray -t stacks < <(cdk ls); + readarray -t stacks < <(npx cdk ls); for stack in "${stacks[@]}" do echo "npx cdk synth $stack"; @@ -15,4 +15,4 @@ do deactivate fi cd ../../; -done \ No newline at end of file +done From b0071cfc94cc3bd3e9a8960b6c057e35d0237450 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:18:32 +0000 Subject: [PATCH 11/30] Update build-python.sh --- build-python.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-python.sh b/build-python.sh index 4afa48dc..061d1631 100755 --- a/build-python.sh +++ b/build-python.sh @@ -6,7 +6,7 @@ do python3 -m venv .env; source .env/bin/activate; pip3 install -r requirements.txt; - readarray -t stacks < <(npx cdk ls); + readarray -t stacks < <(npx -q cdk ls); for stack in "${stacks[@]}" do echo "npx cdk synth $stack"; From 7515cd61ca9f319c6f693edd3ce0d0b1b3539974 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:36:37 +0000 Subject: [PATCH 12/30] Update package.json --- the-alexa-skill/python/lambda_fns/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/the-alexa-skill/python/lambda_fns/package.json b/the-alexa-skill/python/lambda_fns/package.json index 47c9f1c0..39e5dcd4 100644 --- a/the-alexa-skill/python/lambda_fns/package.json +++ b/the-alexa-skill/python/lambda_fns/package.json @@ -2,6 +2,7 @@ "name": "alexa", "version": "1.0.0", "description": "lambda for Alexa backend", + "repository": "https://github.com/cdk-patterns/serverless.git", "main": "lambda.ts", "scripts": { "build": "tsc lambda.ts", From 3fd3d50c8d4336ca3b911275da12f12581513e65 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:37:24 +0000 Subject: [PATCH 13/30] Update the_alexa_skill_stack.py --- .../python/the_alexa_skill/the_alexa_skill_stack.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/the-alexa-skill/python/the_alexa_skill/the_alexa_skill_stack.py b/the-alexa-skill/python/the_alexa_skill/the_alexa_skill_stack.py index bc29a1b4..68078e58 100644 --- a/the-alexa-skill/python/the_alexa_skill/the_alexa_skill_stack.py +++ b/the-alexa-skill/python/the_alexa_skill/the_alexa_skill_stack.py @@ -48,8 +48,8 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # install node dependencies for lambdas lambda_folder = os.path.dirname(os.path.realpath(__file__)) + "/../lambda_fns" - subprocess.check_call("npm i".split(), cwd=lambda_folder) - subprocess.check_call("npm run build".split(), cwd=lambda_folder) + subprocess.check_call("npm i".split(), cwd=lambda_folder, stdout=subprocess.DEVNULL) + subprocess.check_call("npm run build".split(), cwd=lambda_folder, stdout=subprocess.DEVNULL) alexa_lambda = _lambda.Function(self, "AlexaLambdaHandler", runtime=_lambda.Runtime.NODEJS_12_X, From e436232c42bffbdef1c144f7571a990bc5d60d32 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:47:09 +0000 Subject: [PATCH 14/30] Make tsc more specific --- the-lambda-circuit-breaker/python/lambda_fns/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/the-lambda-circuit-breaker/python/lambda_fns/package.json b/the-lambda-circuit-breaker/python/lambda_fns/package.json index 74673139..aa0e87b5 100644 --- a/the-lambda-circuit-breaker/python/lambda_fns/package.json +++ b/the-lambda-circuit-breaker/python/lambda_fns/package.json @@ -4,7 +4,7 @@ "description": "this is an unreliable lambda with a circuit breaker", "main": "unreliable.js", "scripts": { - "build": "tsc", + "build": "tsc unreliable.ts", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "nideveloper", From 7d67bc37536bd20494f86c5ea2e92b51b8d9a085 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:48:23 +0000 Subject: [PATCH 15/30] hide lambda stdout compile logs --- .../the_lambda_circuit_breaker_stack.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py b/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py index eb9febd0..4264cc0f 100644 --- a/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py +++ b/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py @@ -21,8 +21,8 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # install node dependencies for lambdas lambda_folder = os.path.dirname(os.path.realpath(__file__)) + "/../lambda_fns" - subprocess.check_call("npm i".split(), cwd=lambda_folder) - subprocess.check_call("npm run build".split(), cwd=lambda_folder) + subprocess.check_call("npm i".split(), cwd=lambda_folder, stdout=subprocess.DEVNULL) + subprocess.check_call("npm run build".split(), cwd=lambda_folder, stdout=subprocess.DEVNULL) # defines an AWS Lambda resource with unreliable code unreliable_lambda = _lambda.Function(self, "UnreliableLambdaHandler", From 940599a6bda8d61c04c340270180f20424307c27 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 10:49:50 +0000 Subject: [PATCH 16/30] add respository to lambda fn --- the-lambda-circuit-breaker/python/lambda_fns/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/the-lambda-circuit-breaker/python/lambda_fns/package.json b/the-lambda-circuit-breaker/python/lambda_fns/package.json index aa0e87b5..c7cdb870 100644 --- a/the-lambda-circuit-breaker/python/lambda_fns/package.json +++ b/the-lambda-circuit-breaker/python/lambda_fns/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "this is an unreliable lambda with a circuit breaker", "main": "unreliable.js", + "repository": "https://github.com/cdk-patterns/serverless.git", "scripts": { "build": "tsc unreliable.ts", "test": "echo \"Error: no test specified\" && exit 1" From 1b2e66aaca124350e0b3325a7c30a90075def612 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 11:01:20 +0000 Subject: [PATCH 17/30] Update app.py --- the-rds-proxy/python/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/the-rds-proxy/python/app.py b/the-rds-proxy/python/app.py index bcfb7fc6..8ef16f62 100644 --- a/the-rds-proxy/python/app.py +++ b/the-rds-proxy/python/app.py @@ -5,7 +5,7 @@ from the_rds_proxy.the_rds_proxy_stack import TheRdsProxyStack # install node dependencies for lambdas -subprocess.check_call("npm i".split(), cwd="lambda_fns/rds") +subprocess.check_call("npm i".split(), cwd="lambda_fns/rds", stdout=subprocess.DEVNULL) app = core.App() TheRdsProxyStack(app, "the-rds-proxy", env=core.Environment(region="us-east-1")) From d6c05f5d089dd6c648c0cb71e5356af3f61c9876 Mon Sep 17 00:00:00 2001 From: Matt Coulter <1432881+nideveloper@users.noreply.github.com> Date: Sun, 22 Nov 2020 11:03:04 +0000 Subject: [PATCH 18/30] Update app.py --- the-xray-tracer/python/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/the-xray-tracer/python/app.py b/the-xray-tracer/python/app.py index abcf61dc..cae893ea 100644 --- a/the-xray-tracer/python/app.py +++ b/the-xray-tracer/python/app.py @@ -9,7 +9,7 @@ from the_xray_tracer.the_sqs_flow_stack import TheSqsFlowStack # install node dependencies for lambdas -subprocess.check_call("npm i".split(), cwd="lambda_fns") +subprocess.check_call("npm i".split(), cwd="lambda_fns", stdout=subprocess.DEVNULL) app = core.App() xray_tracer = TheXrayTracerStack(app, "the-xray-tracer") From dfa52f63fda07df734d7e04b04128e83b8e2865c Mon Sep 17 00:00:00 2001 From: Matt Coulter Date: Sun, 22 Nov 2020 11:25:40 +0000 Subject: [PATCH 19/30] move ts build to external file --- .github/workflows/build.yml | 11 +---------- build-typescript.sh | 9 +++++++++ 2 files changed, 10 insertions(+), 10 deletions(-) create mode 100755 build-typescript.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f16874fe..09504ce9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,15 +31,6 @@ jobs: # Validate TypeScript Patterns - name: Build/Test TypeScript Patterns - run: | - readarray -t arr < <(jq -r '.[] | keys | .[]' info.json); - for i in "${arr[@]}" - do - cd $i/typescript; - npm i; - npm run build; - npm run test; - cd ../../; - done + run: ./build-typescript.sh diff --git a/build-typescript.sh b/build-typescript.sh new file mode 100755 index 00000000..340005aa --- /dev/null +++ b/build-typescript.sh @@ -0,0 +1,9 @@ +readarray -t arr < <(jq -r '.[] | keys | .[]' info.json); +for i in "${arr[@]}" +do + cd $i/typescript; + npm i; + npm run build; + npm run test; + cd ../../; +done \ No newline at end of file From 216c1fe44ed0448198be167eb85cb99a89dce636 Mon Sep 17 00:00:00 2001 From: Matt Coulter <59790145+cdk-patterns@users.noreply.github.com> Date: Sun, 22 Nov 2020 13:56:48 +0000 Subject: [PATCH 20/30] testing moving dependencies from setup.py to requirements.txt --- polly/python/requirements.txt | 4 ++++ polly/python/setup.py | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/polly/python/requirements.txt b/polly/python/requirements.txt index d6e1198b..39eccda0 100644 --- a/polly/python/requirements.txt +++ b/polly/python/requirements.txt @@ -1 +1,5 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-apigatewayv2==1.60.0 +aws-cdk.aws-iam==1.60.0 \ No newline at end of file diff --git a/polly/python/setup.py b/polly/python/setup.py index ca86c88c..ad6dcaf0 100644 --- a/polly/python/setup.py +++ b/polly/python/setup.py @@ -19,10 +19,6 @@ packages=setuptools.find_packages(where="polly"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-apigatewayv2==1.60.0", - "aws-cdk.aws-iam==1.60.0", ], python_requires=">=3.6", From 02714d0e5a7fccf4b3e716d8da0a50c728f1238e Mon Sep 17 00:00:00 2001 From: Matt Coulter <59790145+cdk-patterns@users.noreply.github.com> Date: Sun, 22 Nov 2020 14:12:32 +0000 Subject: [PATCH 21/30] convert all python patterns from setup.py based to requirements.txt --- the-alexa-skill/python/requirements.txt | 6 ++++++ the-alexa-skill/python/setup.py | 6 ------ the-basic-mq/python/requirements.txt | 10 ++++++++++ the-basic-mq/python/setup.py | 10 ---------- the-big-fan/python/requirements.txt | 8 ++++++++ the-big-fan/python/setup.py | 8 -------- the-cloudwatch-dashboard/python/requirements.txt | 7 +++++++ the-cloudwatch-dashboard/python/setup.py | 7 ------- the-destined-lambda/python/requirements.txt | 9 +++++++++ the-destined-lambda/python/setup.py | 9 --------- the-dynamo-streamer/python/requirements.txt | 6 ++++++ the-dynamo-streamer/python/setup.py | 6 ------ the-efs-lambda/python/requirements.txt | 5 +++++ the-efs-lambda/python/setup.py | 5 ----- the-eventbridge-atm/python/requirements.txt | 7 +++++++ the-eventbridge-atm/python/setup.py | 7 ------- .../python/requirements.txt | 7 +++++++ the-eventbridge-circuit-breaker/python/setup.py | 7 ------- the-eventbridge-etl/python/requirements.txt | 13 +++++++++++++ the-eventbridge-etl/python/setup.py | 13 ------------- the-lambda-circuit-breaker/python/requirements.txt | 4 ++++ the-lambda-circuit-breaker/python/setup.py | 4 ---- the-lambda-power-tuner/python/requirements.txt | 3 +++ the-lambda-power-tuner/python/setup.py | 3 --- the-lambda-trilogy/python/requirements.txt | 3 +++ the-lambda-trilogy/python/setup.py | 3 --- the-rds-proxy/python/requirements.txt | 7 +++++++ the-rds-proxy/python/setup.py | 7 ------- the-saga-stepfunction/python/requirements.txt | 6 ++++++ the-saga-stepfunction/python/setup.py | 6 ------ the-scalable-webhook/python/requirements.txt | 6 ++++++ the-scalable-webhook/python/setup.py | 6 ------ the-simple-graphql-service/python/requirements.txt | 6 ++++++ the-simple-graphql-service/python/setup.py | 6 ------ the-simple-webservice/python/requirements.txt | 5 +++++ the-simple-webservice/python/setup.py | 5 ----- the-state-machine/python/requirements.txt | 6 ++++++ the-state-machine/python/setup.py | 6 ------ the-waf-apigateway/python/requirements.txt | 6 ++++++ the-waf-apigateway/python/setup.py | 6 ------ the-xray-tracer/python/requirements.txt | 9 +++++++++ the-xray-tracer/python/setup.py | 9 --------- 42 files changed, 139 insertions(+), 139 deletions(-) diff --git a/the-alexa-skill/python/requirements.txt b/the-alexa-skill/python/requirements.txt index d6e1198b..d3db3828 100644 --- a/the-alexa-skill/python/requirements.txt +++ b/the-alexa-skill/python/requirements.txt @@ -1 +1,7 @@ -e . +aws-cdk.core==1.50.0 +aws-cdk.aws-lambda==1.50.0 +aws-cdk.aws-dynamodb==1.50.0 +aws-cdk.alexa-ask==1.50.0 +aws-cdk.aws-s3-assets==1.50.0 +aws-cdk.aws-iam==1.50.0 diff --git a/the-alexa-skill/python/setup.py b/the-alexa-skill/python/setup.py index dd4650f3..619dff94 100644 --- a/the-alexa-skill/python/setup.py +++ b/the-alexa-skill/python/setup.py @@ -19,12 +19,6 @@ packages=setuptools.find_packages(where="the_alexa_skill"), install_requires=[ - "aws-cdk.core==1.50.0", - "aws-cdk.aws-lambda==1.50.0", - "aws-cdk.aws-dynamodb==1.50.0", - "aws-cdk.alexa-ask==1.50.0", - "aws-cdk.aws-s3-assets==1.50.0", - "aws-cdk.aws-iam==1.50.0", ], python_requires=">=3.6", diff --git a/the-basic-mq/python/requirements.txt b/the-basic-mq/python/requirements.txt index d6e1198b..94f936b1 100644 --- a/the-basic-mq/python/requirements.txt +++ b/the-basic-mq/python/requirements.txt @@ -1 +1,11 @@ -e . +aws-cdk.core==1.51.0 +aws-cdk.aws-route53==1.51.0 +aws-cdk.aws-route53-targets==1.51.0 +aws-cdk.aws-certificatemanager==1.51.0 +aws-cdk.aws-ec2==1.51.0 +aws-cdk.aws-ssm==1.51.0 +aws-cdk.aws-amazonmq==1.51.0 +aws-cdk.aws-elasticloadbalancingv2==1.51.0 +aws-cdk.aws-elasticloadbalancingv2-targets==1.51.0 +aws-cdk.custom-resources==1.51.0 \ No newline at end of file diff --git a/the-basic-mq/python/setup.py b/the-basic-mq/python/setup.py index 1b7885a6..0099bf0c 100644 --- a/the-basic-mq/python/setup.py +++ b/the-basic-mq/python/setup.py @@ -19,16 +19,6 @@ packages=setuptools.find_packages(where="the_basic_mq"), install_requires=[ - "aws-cdk.core==1.51.0", - "aws-cdk.aws-route53==1.51.0", - "aws-cdk.aws-route53-targets==1.51.0", - "aws-cdk.aws-certificatemanager==1.51.0", - "aws-cdk.aws-ec2==1.51.0", - "aws-cdk.aws-ssm==1.51.0", - "aws-cdk.aws-amazonmq==1.51.0", - "aws-cdk.aws-elasticloadbalancingv2==1.51.0", - "aws-cdk.aws-elasticloadbalancingv2-targets==1.51.0", - "aws-cdk.custom-resources==1.51.0" ], python_requires=">=3.6", diff --git a/the-big-fan/python/requirements.txt b/the-big-fan/python/requirements.txt index d6e1198b..7f57469a 100644 --- a/the-big-fan/python/requirements.txt +++ b/the-big-fan/python/requirements.txt @@ -1 +1,9 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws_apigateway==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-lambda-event-sources==1.60.0 +aws-cdk.aws-iam==1.60.0 +aws-cdk.aws-sns==1.60.0 +aws-cdk.aws-sns-subscriptions==1.60.0 +aws-cdk.aws-sqs==1.60.0 \ No newline at end of file diff --git a/the-big-fan/python/setup.py b/the-big-fan/python/setup.py index e44aea03..97fcce88 100644 --- a/the-big-fan/python/setup.py +++ b/the-big-fan/python/setup.py @@ -19,14 +19,6 @@ packages=setuptools.find_packages(where="the_big_fan"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-lambda-event-sources==1.60.0", - "aws-cdk.aws-iam==1.60.0", - "aws-cdk.aws-sns==1.60.0", - "aws-cdk.aws-sns-subscriptions==1.60.0", - "aws-cdk.aws-sqs==1.60.0", ], python_requires=">=3.6", diff --git a/the-cloudwatch-dashboard/python/requirements.txt b/the-cloudwatch-dashboard/python/requirements.txt index d6e1198b..ede9b4e4 100644 --- a/the-cloudwatch-dashboard/python/requirements.txt +++ b/the-cloudwatch-dashboard/python/requirements.txt @@ -1 +1,8 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws_apigatewayv2==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +aws-cdk.aws-sns==1.60.0 +aws-cdk.aws-cloudwatch==1.60.0 +aws-cdk.aws-cloudwatch-actions==1.60.0 \ No newline at end of file diff --git a/the-cloudwatch-dashboard/python/setup.py b/the-cloudwatch-dashboard/python/setup.py index 4ca2a573..f454c203 100644 --- a/the-cloudwatch-dashboard/python/setup.py +++ b/the-cloudwatch-dashboard/python/setup.py @@ -19,13 +19,6 @@ packages=setuptools.find_packages(where="the_cloudwatch_dashboard"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws_apigatewayv2==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "aws-cdk.aws-sns==1.60.0", - "aws-cdk.aws-cloudwatch==1.60.0", - "aws-cdk.aws-cloudwatch-actions==1.60.0", ], python_requires=">=3.6", diff --git a/the-destined-lambda/python/requirements.txt b/the-destined-lambda/python/requirements.txt index d6e1198b..ae9ead85 100644 --- a/the-destined-lambda/python/requirements.txt +++ b/the-destined-lambda/python/requirements.txt @@ -1 +1,10 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-iam==1.60.0 +aws-cdk.aws-events==1.60.0 +aws-cdk.aws-events-targets==1.60.0 +aws-cdk.aws-sns==1.60.0 +aws-cdk.aws-sns-subscriptions==1.60.0 +aws-cdk.aws-lambda-destinations==1.60.0 +aws-cdk.aws_apigateway==1.60.0 \ No newline at end of file diff --git a/the-destined-lambda/python/setup.py b/the-destined-lambda/python/setup.py index 3af2c6a1..161f434a 100644 --- a/the-destined-lambda/python/setup.py +++ b/the-destined-lambda/python/setup.py @@ -19,15 +19,6 @@ packages=setuptools.find_packages(where="the_destined_lambda"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-iam==1.60.0", - "aws-cdk.aws-events==1.60.0", - "aws-cdk.aws-events-targets==1.60.0", - "aws-cdk.aws-sns==1.60.0", - "aws-cdk.aws-sns-subscriptions==1.60.0", - "aws-cdk.aws-lambda-destinations==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", ], python_requires=">=3.6", diff --git a/the-dynamo-streamer/python/requirements.txt b/the-dynamo-streamer/python/requirements.txt index d6e1198b..24c1a03b 100644 --- a/the-dynamo-streamer/python/requirements.txt +++ b/the-dynamo-streamer/python/requirements.txt @@ -1 +1,7 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +aws-cdk.aws_apigateway==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-lambda-event-sources==1.60.0 +aws-cdk.aws-iam==1.60.0 \ No newline at end of file diff --git a/the-dynamo-streamer/python/setup.py b/the-dynamo-streamer/python/setup.py index d255e870..a612c899 100644 --- a/the-dynamo-streamer/python/setup.py +++ b/the-dynamo-streamer/python/setup.py @@ -19,12 +19,6 @@ packages=setuptools.find_packages(where="the_dynamo_streamer"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-lambda-event-sources==1.60.0", - "aws-cdk.aws-iam==1.60.0" ], python_requires=">=3.6", diff --git a/the-efs-lambda/python/requirements.txt b/the-efs-lambda/python/requirements.txt index d6e1198b..fe039ba1 100644 --- a/the-efs-lambda/python/requirements.txt +++ b/the-efs-lambda/python/requirements.txt @@ -1 +1,6 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-apigatewayv2==1.60.0 +aws-cdk.aws-ec2==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-efs==1.60.0 \ No newline at end of file diff --git a/the-efs-lambda/python/setup.py b/the-efs-lambda/python/setup.py index 215a32f5..5ea668d2 100644 --- a/the-efs-lambda/python/setup.py +++ b/the-efs-lambda/python/setup.py @@ -19,11 +19,6 @@ packages=setuptools.find_packages(where="the_efs_lambda"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-apigatewayv2==1.60.0", - "aws-cdk.aws-ec2==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-efs==1.60.0", ], python_requires=">=3.6", diff --git a/the-eventbridge-atm/python/requirements.txt b/the-eventbridge-atm/python/requirements.txt index d6e1198b..2fbb4b26 100644 --- a/the-eventbridge-atm/python/requirements.txt +++ b/the-eventbridge-atm/python/requirements.txt @@ -1 +1,8 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-iam==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-lambda-event-sources==1.60.0 +aws-cdk.aws-events-targets==1.60.0 +aws-cdk.aws-events==1.60.0 +aws-cdk.aws_apigateway==1.60.0 \ No newline at end of file diff --git a/the-eventbridge-atm/python/setup.py b/the-eventbridge-atm/python/setup.py index 0d8c6661..5bab964a 100644 --- a/the-eventbridge-atm/python/setup.py +++ b/the-eventbridge-atm/python/setup.py @@ -19,13 +19,6 @@ packages=setuptools.find_packages(where="the_eventbridge_atm"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-iam==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-lambda-event-sources==1.60.0", - "aws-cdk.aws-events-targets==1.60.0", - "aws-cdk.aws-events==1.60.0", - "aws-cdk.aws_apigateway==1.60.0" ], python_requires=">=3.6", diff --git a/the-eventbridge-circuit-breaker/python/requirements.txt b/the-eventbridge-circuit-breaker/python/requirements.txt index d6e1198b..d20c9ecf 100644 --- a/the-eventbridge-circuit-breaker/python/requirements.txt +++ b/the-eventbridge-circuit-breaker/python/requirements.txt @@ -1 +1,8 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-iam==1.60.0 +aws-cdk.aws_apigateway==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +aws-cdk.aws-events-targets==1.60.0 +aws-cdk.aws-events==1.60.0 \ No newline at end of file diff --git a/the-eventbridge-circuit-breaker/python/setup.py b/the-eventbridge-circuit-breaker/python/setup.py index 697a0471..60bd45bc 100644 --- a/the-eventbridge-circuit-breaker/python/setup.py +++ b/the-eventbridge-circuit-breaker/python/setup.py @@ -19,13 +19,6 @@ packages=setuptools.find_packages(where="the_eventbridge_circuit_breaker"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-iam==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "aws-cdk.aws-events-targets==1.60.0", - "aws-cdk.aws-events==1.60.0", ], python_requires=">=3.6", diff --git a/the-eventbridge-etl/python/requirements.txt b/the-eventbridge-etl/python/requirements.txt index d6e1198b..6579cabc 100644 --- a/the-eventbridge-etl/python/requirements.txt +++ b/the-eventbridge-etl/python/requirements.txt @@ -1 +1,14 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-lambda-event-sources==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +aws-cdk.aws-s3==1.60.0 +aws-cdk.aws-sqs==1.60.0 +aws-cdk.aws-s3-notifications==1.60.0 +aws-cdk.aws-iam==1.60.0 +aws-cdk.aws-ec2==1.60.0 +aws-cdk.aws-ecs==1.60.0 +aws-cdk.aws-logs==1.60.0 +aws-cdk.aws-events==1.60.0 +aws-cdk.aws-events-targets==1.60.0 \ No newline at end of file diff --git a/the-eventbridge-etl/python/setup.py b/the-eventbridge-etl/python/setup.py index 3307dae7..aa52cb96 100644 --- a/the-eventbridge-etl/python/setup.py +++ b/the-eventbridge-etl/python/setup.py @@ -19,19 +19,6 @@ packages=setuptools.find_packages(where="the_eventbridge_etl"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-lambda-event-sources==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "aws-cdk.aws-s3==1.60.0", - "aws-cdk.aws-sqs==1.60.0", - "aws-cdk.aws-s3-notifications==1.60.0", - "aws-cdk.aws-iam==1.60.0", - "aws-cdk.aws-ec2==1.60.0", - "aws-cdk.aws-ecs==1.60.0", - "aws-cdk.aws-logs==1.60.0", - "aws-cdk.aws-events==1.60.0", - "aws-cdk.aws-events-targets==1.60.0" ], python_requires=">=3.6", diff --git a/the-lambda-circuit-breaker/python/requirements.txt b/the-lambda-circuit-breaker/python/requirements.txt index d6e1198b..21fabaae 100644 --- a/the-lambda-circuit-breaker/python/requirements.txt +++ b/the-lambda-circuit-breaker/python/requirements.txt @@ -1 +1,5 @@ -e . +aws-cdk.core==1.67.0 +aws-cdk.aws_apigatewayv2==1.67.0 +aws-cdk.aws-lambda==1.67.0 +aws-cdk.aws-dynamodb==1.67.0 \ No newline at end of file diff --git a/the-lambda-circuit-breaker/python/setup.py b/the-lambda-circuit-breaker/python/setup.py index 3596ee94..8ee2d152 100644 --- a/the-lambda-circuit-breaker/python/setup.py +++ b/the-lambda-circuit-breaker/python/setup.py @@ -19,10 +19,6 @@ packages=setuptools.find_packages(where="the_lambda_circuit_breaker"), install_requires=[ - "aws-cdk.core==1.67.0", - "aws-cdk.aws_apigatewayv2==1.67.0", - "aws-cdk.aws-lambda==1.67.0", - "aws-cdk.aws-dynamodb==1.67.0", ], python_requires=">=3.6", diff --git a/the-lambda-power-tuner/python/requirements.txt b/the-lambda-power-tuner/python/requirements.txt index d6e1198b..d3691336 100644 --- a/the-lambda-power-tuner/python/requirements.txt +++ b/the-lambda-power-tuner/python/requirements.txt @@ -1 +1,4 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-sam==1.60.0 +aws-cdk.aws-lambda==1.60.0 \ No newline at end of file diff --git a/the-lambda-power-tuner/python/setup.py b/the-lambda-power-tuner/python/setup.py index c6727e3b..e26a7233 100644 --- a/the-lambda-power-tuner/python/setup.py +++ b/the-lambda-power-tuner/python/setup.py @@ -19,9 +19,6 @@ packages=setuptools.find_packages(where="the_lambda_power_tuner"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-sam==1.60.0", - "aws-cdk.aws-lambda==1.60.0", ], python_requires=">=3.6", diff --git a/the-lambda-trilogy/python/requirements.txt b/the-lambda-trilogy/python/requirements.txt index d6e1198b..c17a93e9 100644 --- a/the-lambda-trilogy/python/requirements.txt +++ b/the-lambda-trilogy/python/requirements.txt @@ -1 +1,4 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-apigateway==1.60.0 \ No newline at end of file diff --git a/the-lambda-trilogy/python/setup.py b/the-lambda-trilogy/python/setup.py index b927205e..ee6e2496 100644 --- a/the-lambda-trilogy/python/setup.py +++ b/the-lambda-trilogy/python/setup.py @@ -19,9 +19,6 @@ packages=setuptools.find_packages(where="the_lambda_trilogy"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-apigateway==1.60.0" ], python_requires=">=3.6", diff --git a/the-rds-proxy/python/requirements.txt b/the-rds-proxy/python/requirements.txt index d6e1198b..37883cf1 100644 --- a/the-rds-proxy/python/requirements.txt +++ b/the-rds-proxy/python/requirements.txt @@ -1 +1,8 @@ -e . +aws-cdk.core==1.56.0 +aws-cdk.aws-ec2==1.56.0 +aws-cdk.aws-rds==1.56.0 +aws-cdk.aws-secretsmanager==1.56.0 +aws-cdk.aws-ssm==1.56.0 +aws-cdk.aws-lambda==1.56.0 +aws-cdk.aws-apigatewayv2==1.56.0 \ No newline at end of file diff --git a/the-rds-proxy/python/setup.py b/the-rds-proxy/python/setup.py index 7980103c..94caf58d 100644 --- a/the-rds-proxy/python/setup.py +++ b/the-rds-proxy/python/setup.py @@ -19,13 +19,6 @@ packages=setuptools.find_packages(where="the_rds_proxy"), install_requires=[ - "aws-cdk.core==1.56.0", - "aws-cdk.aws-ec2==1.56.0", - "aws-cdk.aws-rds==1.56.0", - "aws-cdk.aws-secretsmanager==1.56.0", - "aws-cdk.aws-ssm==1.56.0", - "aws-cdk.aws-lambda==1.56.0", - "aws-cdk.aws-apigatewayv2==1.56.0", ], python_requires=">=3.6", diff --git a/the-saga-stepfunction/python/requirements.txt b/the-saga-stepfunction/python/requirements.txt index d6e1198b..573453d3 100644 --- a/the-saga-stepfunction/python/requirements.txt +++ b/the-saga-stepfunction/python/requirements.txt @@ -1 +1,7 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws_apigateway==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +aws-cdk.aws-stepfunctions==1.60.0 +aws-cdk.aws-stepfunctions-tasks==1.60.0 \ No newline at end of file diff --git a/the-saga-stepfunction/python/setup.py b/the-saga-stepfunction/python/setup.py index 8d56a7a5..9956cca3 100644 --- a/the-saga-stepfunction/python/setup.py +++ b/the-saga-stepfunction/python/setup.py @@ -19,12 +19,6 @@ packages=setuptools.find_packages(where="the_saga_stepfunction"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "aws-cdk.aws-stepfunctions==1.60.0", - "aws-cdk.aws-stepfunctions-tasks==1.60.0", ], python_requires=">=3.6", diff --git a/the-scalable-webhook/python/requirements.txt b/the-scalable-webhook/python/requirements.txt index d6e1198b..2f87340d 100644 --- a/the-scalable-webhook/python/requirements.txt +++ b/the-scalable-webhook/python/requirements.txt @@ -1 +1,7 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws_apigateway==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +aws-cdk.aws-sqs==1.60.0 +aws-cdk.aws-lambda-event-sources==1.60.0 \ No newline at end of file diff --git a/the-scalable-webhook/python/setup.py b/the-scalable-webhook/python/setup.py index 6bdb6287..95886cba 100644 --- a/the-scalable-webhook/python/setup.py +++ b/the-scalable-webhook/python/setup.py @@ -19,12 +19,6 @@ packages=setuptools.find_packages(where="the_scalable_webhook"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "aws-cdk.aws-sqs==1.60.0", - "aws-cdk.aws-lambda-event-sources==1.60.0" ], python_requires=">=3.6", diff --git a/the-simple-graphql-service/python/requirements.txt b/the-simple-graphql-service/python/requirements.txt index d6e1198b..95c4d63f 100644 --- a/the-simple-graphql-service/python/requirements.txt +++ b/the-simple-graphql-service/python/requirements.txt @@ -1 +1,7 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws_appsync==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-cognito==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +path==13.1.0 \ No newline at end of file diff --git a/the-simple-graphql-service/python/setup.py b/the-simple-graphql-service/python/setup.py index 3c53197d..2ed242d7 100644 --- a/the-simple-graphql-service/python/setup.py +++ b/the-simple-graphql-service/python/setup.py @@ -19,12 +19,6 @@ packages=setuptools.find_packages(where="the_simple_graphql_service"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws_appsync==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-cognito==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "path==13.1.0" ], python_requires=">=3.6", diff --git a/the-simple-webservice/python/requirements.txt b/the-simple-webservice/python/requirements.txt index d6e1198b..985ec1e7 100644 --- a/the-simple-webservice/python/requirements.txt +++ b/the-simple-webservice/python/requirements.txt @@ -1 +1,6 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws_apigatewayv2==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +path==13.1.0 \ No newline at end of file diff --git a/the-simple-webservice/python/setup.py b/the-simple-webservice/python/setup.py index ecd85d9c..ab97b497 100644 --- a/the-simple-webservice/python/setup.py +++ b/the-simple-webservice/python/setup.py @@ -19,11 +19,6 @@ packages=setuptools.find_packages(where="the_simple_webservice"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws_apigatewayv2==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "path==13.1.0" ], python_requires=">=3.6", diff --git a/the-state-machine/python/requirements.txt b/the-state-machine/python/requirements.txt index d6e1198b..cd9ec6d1 100644 --- a/the-state-machine/python/requirements.txt +++ b/the-state-machine/python/requirements.txt @@ -1 +1,7 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws-stepfunctions==1.60.0 +aws-cdk.aws-stepfunctions-tasks==1.60.0 +aws-cdk.aws-sqs==1.60.0 +aws-cdk.aws_apigateway==1.60.0 \ No newline at end of file diff --git a/the-state-machine/python/setup.py b/the-state-machine/python/setup.py index ff89dee8..b153f9c8 100644 --- a/the-state-machine/python/setup.py +++ b/the-state-machine/python/setup.py @@ -19,12 +19,6 @@ packages=setuptools.find_packages(where="the_state_machine"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws-stepfunctions==1.60.0", - "aws-cdk.aws-stepfunctions-tasks==1.60.0", - "aws-cdk.aws-sqs==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", ], python_requires=">=3.6", diff --git a/the-waf-apigateway/python/requirements.txt b/the-waf-apigateway/python/requirements.txt index d6e1198b..20253959 100644 --- a/the-waf-apigateway/python/requirements.txt +++ b/the-waf-apigateway/python/requirements.txt @@ -1 +1,7 @@ -e . +aws-cdk.core==1.72.0 +aws-cdk.aws_apigateway==1.72.0 +aws-cdk.aws_iam==1.72.0 +aws-cdk.aws_lambda==1.72.0 +aws-cdk.aws_cloudformation==1.72.0 +aws-cdk.aws_wafv2==1.72.0 \ No newline at end of file diff --git a/the-waf-apigateway/python/setup.py b/the-waf-apigateway/python/setup.py index 8dd2f4c5..a9029182 100644 --- a/the-waf-apigateway/python/setup.py +++ b/the-waf-apigateway/python/setup.py @@ -19,12 +19,6 @@ packages=setuptools.find_packages(where="the_waf_apigateway"), install_requires=[ - "aws-cdk.core==1.72.0", - "aws-cdk.aws_apigateway==1.72.0", - "aws-cdk.aws_iam==1.72.0", - "aws-cdk.aws_lambda==1.72.0", - "aws-cdk.aws_cloudformation==1.72.0", - "aws-cdk.aws_wafv2==1.72.0", ], python_requires=">=3.6", diff --git a/the-xray-tracer/python/requirements.txt b/the-xray-tracer/python/requirements.txt index d6e1198b..3f2d2952 100644 --- a/the-xray-tracer/python/requirements.txt +++ b/the-xray-tracer/python/requirements.txt @@ -1 +1,10 @@ -e . +aws-cdk.core==1.60.0 +aws-cdk.aws-iam==1.60.0 +aws-cdk.aws-lambda==1.60.0 +aws-cdk.aws_apigateway==1.60.0 +aws-cdk.aws-sns==1.60.0 +aws-cdk.aws-sns-subscriptions==1.60.0 +aws-cdk.aws-dynamodb==1.60.0 +aws-cdk.aws-sqs==1.60.0 +aws-cdk.aws-lambda-event-sources==1.60.0 \ No newline at end of file diff --git a/the-xray-tracer/python/setup.py b/the-xray-tracer/python/setup.py index 8c0e2dc8..b0cd5fe6 100644 --- a/the-xray-tracer/python/setup.py +++ b/the-xray-tracer/python/setup.py @@ -19,15 +19,6 @@ packages=setuptools.find_packages(where="the_xray_tracer"), install_requires=[ - "aws-cdk.core==1.60.0", - "aws-cdk.aws-iam==1.60.0", - "aws-cdk.aws-lambda==1.60.0", - "aws-cdk.aws_apigateway==1.60.0", - "aws-cdk.aws-sns==1.60.0", - "aws-cdk.aws-sns-subscriptions==1.60.0", - "aws-cdk.aws-dynamodb==1.60.0", - "aws-cdk.aws-sqs==1.60.0", - "aws-cdk.aws-lambda-event-sources==1.60.0" ], python_requires=">=3.6", From f2587320e6bcd15c0dc8789af36f8bda58fa9188 Mon Sep 17 00:00:00 2001 From: Matt Coulter <59790145+cdk-patterns@users.noreply.github.com> Date: Sun, 22 Nov 2020 19:36:44 +0000 Subject: [PATCH 22/30] add script to update python --- update-python.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 update-python.sh diff --git a/update-python.sh b/update-python.sh new file mode 100755 index 00000000..a3710605 --- /dev/null +++ b/update-python.sh @@ -0,0 +1,27 @@ +readarray -t patterns < <(jq -r '.[] | keys | .[]' info.json); + +pythonPackage=aws-cdk.core; +version=$(curl -Ls https://pypi.org/pypi/$pythonPackage/json | jq -r .info.version) +echo "latest version is $version" + +for pattern in "${patterns[@]}" +do + cd $pattern/python; + if test -f "requirements.txt"; then + echo "updating $pattern" + #initialize empty array for new requirements + updatedReqs=() + readarray -t requirements <<<"$(| requirements.txt + fi + cd ../../; +done \ No newline at end of file From 9ec475d8f20aa2acf393c9bc3ee36625ac82015d Mon Sep 17 00:00:00 2001 From: Matt Coulter <59790145+cdk-patterns@users.noreply.github.com> Date: Sun, 22 Nov 2020 20:06:09 +0000 Subject: [PATCH 23/30] update cdk version and add http integrations into polly --- build-python.sh | 3 +++ polly/python/polly/polly_stack.py | 3 ++- polly/python/requirements.txt | 9 ++++--- the-alexa-skill/python/lambda_fns/lambda.js | 4 +-- the-alexa-skill/python/requirements.txt | 12 ++++----- the-basic-mq/python/requirements.txt | 20 +++++++------- the-big-fan/python/requirements.txt | 16 ++++++------ .../python/requirements.txt | 14 +++++----- the-destined-lambda/python/requirements.txt | 18 ++++++------- the-dynamo-streamer/python/requirements.txt | 12 ++++----- the-efs-lambda/python/requirements.txt | 10 +++---- the-eventbridge-atm/python/requirements.txt | 14 +++++----- .../python/requirements.txt | 14 +++++----- the-eventbridge-etl/python/requirements.txt | 26 +++++++++---------- .../python/requirements.txt | 8 +++--- .../python/requirements.txt | 6 ++--- the-lambda-trilogy/python/requirements.txt | 6 ++--- the-rds-proxy/python/requirements.txt | 14 +++++----- the-saga-stepfunction/python/requirements.txt | 12 ++++----- the-scalable-webhook/python/requirements.txt | 12 ++++----- .../python/requirements.txt | 12 ++++----- the-simple-webservice/python/requirements.txt | 10 +++---- the-state-machine/python/requirements.txt | 12 ++++----- the-waf-apigateway/python/requirements.txt | 12 ++++----- the-xray-tracer/python/requirements.txt | 18 ++++++------- 25 files changed, 151 insertions(+), 146 deletions(-) diff --git a/build-python.sh b/build-python.sh index 061d1631..95591cc3 100755 --- a/build-python.sh +++ b/build-python.sh @@ -7,6 +7,9 @@ do source .env/bin/activate; pip3 install -r requirements.txt; readarray -t stacks < <(npx -q cdk ls); + if [[ "${#stacks[@]}" == 0 ]]; then + exit 1 + fi for stack in "${stacks[@]}" do echo "npx cdk synth $stack"; diff --git a/polly/python/polly/polly_stack.py b/polly/python/polly/polly_stack.py index 76df2885..d3e3e858 100644 --- a/polly/python/polly/polly_stack.py +++ b/polly/python/polly/polly_stack.py @@ -1,6 +1,7 @@ from aws_cdk import ( aws_lambda as _lambda, aws_apigatewayv2 as api_gw, + aws_apigatewayv2_integrations as integrations, aws_iam as iam, core ) @@ -27,6 +28,6 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # defines an API Gateway Http API resource backed by our "efs_lambda" function. api = api_gw.HttpApi(self, 'Polly', - default_integration=api_gw.LambdaProxyIntegration(handler=polly_lambda)) + default_integration=integrations.LambdaProxyIntegration(handler=polly_lambda)) core.CfnOutput(self, 'HTTP API Url', value=api.url) diff --git a/polly/python/requirements.txt b/polly/python/requirements.txt index 39eccda0..205735be 100644 --- a/polly/python/requirements.txt +++ b/polly/python/requirements.txt @@ -1,5 +1,6 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-apigatewayv2==1.60.0 -aws-cdk.aws-iam==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-apigatewayv2==1.74.0 +aws-cdk.aws-apigatewayv2-integrations==1.74.0 +aws-cdk.aws-iam==1.74.0 diff --git a/the-alexa-skill/python/lambda_fns/lambda.js b/the-alexa-skill/python/lambda_fns/lambda.js index 9f9696d3..18f8d579 100644 --- a/the-alexa-skill/python/lambda_fns/lambda.js +++ b/the-alexa-skill/python/lambda_fns/lambda.js @@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { }; exports.__esModule = true; var ask_sdk_core_1 = require("ask-sdk-core"); -var patterns = ['The Destined Lambda', 'The Dynamo Streamer', 'The Big Fan', 'The Cloudwatch Dashboard', 'The S3 Angular Website', 'This pattern that you\'re testing right now: The Alexa Skill']; +var patterns = ['The Destined Lambda', 'The S3 React Website', 'The State Machine', 'The Dynamo Streamer', 'The Lambda Trilogy', 'The Big Fan', 'The Eventbridge Circuit Breaker', 'The Scalable Webhook', 'The Cloudwatch Dashboard', 'The Saga Stepfunction', 'The S3 Angular Website', 'this pattern that you\'re testing right now: The Alexa Skill']; var ddbAdapter = require('ask-sdk-dynamodb-persistence-adapter'); var USERS_TABLE = process.env.USERS_TABLE || ''; function getPattern(min, max) { @@ -90,7 +90,7 @@ var PatternListIntentHandler = { return [4 /*yield*/, attributesManager.savePersistentAttributes()]; case 1: _a.sent(); - speechText = 'I have many patterns for you to see! For example, there is ' + patterns[getPattern(0, 1)] + ', ' + patterns[getPattern(2, 3)] + ' or ' + patterns[getPattern(4, 5)] + '!'; + speechText = 'I have many patterns for you to see! For example, there is ' + patterns[getPattern(0, 3)] + ', ' + patterns[getPattern(4, 7)] + ' or ' + patterns[getPattern(8, 11)] + '!'; return [2 /*return*/, handlerInput.responseBuilder .speak(speechText) .withSimpleCard('Hello World', speechText) diff --git a/the-alexa-skill/python/requirements.txt b/the-alexa-skill/python/requirements.txt index d3db3828..a3a4d8cd 100644 --- a/the-alexa-skill/python/requirements.txt +++ b/the-alexa-skill/python/requirements.txt @@ -1,7 +1,7 @@ -e . -aws-cdk.core==1.50.0 -aws-cdk.aws-lambda==1.50.0 -aws-cdk.aws-dynamodb==1.50.0 -aws-cdk.alexa-ask==1.50.0 -aws-cdk.aws-s3-assets==1.50.0 -aws-cdk.aws-iam==1.50.0 +aws-cdk.core==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.alexa-ask==1.74.0 +aws-cdk.aws-s3-assets==1.74.0 +aws-cdk.aws-iam==1.74.0 diff --git a/the-basic-mq/python/requirements.txt b/the-basic-mq/python/requirements.txt index 94f936b1..19bbb5c7 100644 --- a/the-basic-mq/python/requirements.txt +++ b/the-basic-mq/python/requirements.txt @@ -1,11 +1,11 @@ -e . -aws-cdk.core==1.51.0 -aws-cdk.aws-route53==1.51.0 -aws-cdk.aws-route53-targets==1.51.0 -aws-cdk.aws-certificatemanager==1.51.0 -aws-cdk.aws-ec2==1.51.0 -aws-cdk.aws-ssm==1.51.0 -aws-cdk.aws-amazonmq==1.51.0 -aws-cdk.aws-elasticloadbalancingv2==1.51.0 -aws-cdk.aws-elasticloadbalancingv2-targets==1.51.0 -aws-cdk.custom-resources==1.51.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-route53==1.74.0 +aws-cdk.aws-route53-targets==1.74.0 +aws-cdk.aws-certificatemanager==1.74.0 +aws-cdk.aws-ec2==1.74.0 +aws-cdk.aws-ssm==1.74.0 +aws-cdk.aws-amazonmq==1.74.0 +aws-cdk.aws-elasticloadbalancingv2==1.74.0 +aws-cdk.aws-elasticloadbalancingv2-targets==1.74.0 +aws-cdk.custom-resources==1.74.0 diff --git a/the-big-fan/python/requirements.txt b/the-big-fan/python/requirements.txt index 7f57469a..61fa015c 100644 --- a/the-big-fan/python/requirements.txt +++ b/the-big-fan/python/requirements.txt @@ -1,9 +1,9 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws_apigateway==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-lambda-event-sources==1.60.0 -aws-cdk.aws-iam==1.60.0 -aws-cdk.aws-sns==1.60.0 -aws-cdk.aws-sns-subscriptions==1.60.0 -aws-cdk.aws-sqs==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_apigateway==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-lambda-event-sources==1.74.0 +aws-cdk.aws-iam==1.74.0 +aws-cdk.aws-sns==1.74.0 +aws-cdk.aws-sns-subscriptions==1.74.0 +aws-cdk.aws-sqs==1.74.0 diff --git a/the-cloudwatch-dashboard/python/requirements.txt b/the-cloudwatch-dashboard/python/requirements.txt index ede9b4e4..04d541f0 100644 --- a/the-cloudwatch-dashboard/python/requirements.txt +++ b/the-cloudwatch-dashboard/python/requirements.txt @@ -1,8 +1,8 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws_apigatewayv2==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -aws-cdk.aws-sns==1.60.0 -aws-cdk.aws-cloudwatch==1.60.0 -aws-cdk.aws-cloudwatch-actions==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_apigatewayv2==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.aws-sns==1.74.0 +aws-cdk.aws-cloudwatch==1.74.0 +aws-cdk.aws-cloudwatch-actions==1.74.0 diff --git a/the-destined-lambda/python/requirements.txt b/the-destined-lambda/python/requirements.txt index ae9ead85..daa32744 100644 --- a/the-destined-lambda/python/requirements.txt +++ b/the-destined-lambda/python/requirements.txt @@ -1,10 +1,10 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-iam==1.60.0 -aws-cdk.aws-events==1.60.0 -aws-cdk.aws-events-targets==1.60.0 -aws-cdk.aws-sns==1.60.0 -aws-cdk.aws-sns-subscriptions==1.60.0 -aws-cdk.aws-lambda-destinations==1.60.0 -aws-cdk.aws_apigateway==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-iam==1.74.0 +aws-cdk.aws-events==1.74.0 +aws-cdk.aws-events-targets==1.74.0 +aws-cdk.aws-sns==1.74.0 +aws-cdk.aws-sns-subscriptions==1.74.0 +aws-cdk.aws-lambda-destinations==1.74.0 +aws-cdk.aws_apigateway==1.74.0 diff --git a/the-dynamo-streamer/python/requirements.txt b/the-dynamo-streamer/python/requirements.txt index 24c1a03b..bf7130ef 100644 --- a/the-dynamo-streamer/python/requirements.txt +++ b/the-dynamo-streamer/python/requirements.txt @@ -1,7 +1,7 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -aws-cdk.aws_apigateway==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-lambda-event-sources==1.60.0 -aws-cdk.aws-iam==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.aws_apigateway==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-lambda-event-sources==1.74.0 +aws-cdk.aws-iam==1.74.0 diff --git a/the-efs-lambda/python/requirements.txt b/the-efs-lambda/python/requirements.txt index fe039ba1..e6ec7573 100644 --- a/the-efs-lambda/python/requirements.txt +++ b/the-efs-lambda/python/requirements.txt @@ -1,6 +1,6 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-apigatewayv2==1.60.0 -aws-cdk.aws-ec2==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-efs==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-apigatewayv2==1.74.0 +aws-cdk.aws-ec2==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-efs==1.74.0 diff --git a/the-eventbridge-atm/python/requirements.txt b/the-eventbridge-atm/python/requirements.txt index 2fbb4b26..e6c2ecf9 100644 --- a/the-eventbridge-atm/python/requirements.txt +++ b/the-eventbridge-atm/python/requirements.txt @@ -1,8 +1,8 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-iam==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-lambda-event-sources==1.60.0 -aws-cdk.aws-events-targets==1.60.0 -aws-cdk.aws-events==1.60.0 -aws-cdk.aws_apigateway==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-iam==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-lambda-event-sources==1.74.0 +aws-cdk.aws-events-targets==1.74.0 +aws-cdk.aws-events==1.74.0 +aws-cdk.aws_apigateway==1.74.0 diff --git a/the-eventbridge-circuit-breaker/python/requirements.txt b/the-eventbridge-circuit-breaker/python/requirements.txt index d20c9ecf..debf38f2 100644 --- a/the-eventbridge-circuit-breaker/python/requirements.txt +++ b/the-eventbridge-circuit-breaker/python/requirements.txt @@ -1,8 +1,8 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-iam==1.60.0 -aws-cdk.aws_apigateway==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -aws-cdk.aws-events-targets==1.60.0 -aws-cdk.aws-events==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-iam==1.74.0 +aws-cdk.aws_apigateway==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.aws-events-targets==1.74.0 +aws-cdk.aws-events==1.74.0 diff --git a/the-eventbridge-etl/python/requirements.txt b/the-eventbridge-etl/python/requirements.txt index 6579cabc..1c38de82 100644 --- a/the-eventbridge-etl/python/requirements.txt +++ b/the-eventbridge-etl/python/requirements.txt @@ -1,14 +1,14 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-lambda-event-sources==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -aws-cdk.aws-s3==1.60.0 -aws-cdk.aws-sqs==1.60.0 -aws-cdk.aws-s3-notifications==1.60.0 -aws-cdk.aws-iam==1.60.0 -aws-cdk.aws-ec2==1.60.0 -aws-cdk.aws-ecs==1.60.0 -aws-cdk.aws-logs==1.60.0 -aws-cdk.aws-events==1.60.0 -aws-cdk.aws-events-targets==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-lambda-event-sources==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.aws-s3==1.74.0 +aws-cdk.aws-sqs==1.74.0 +aws-cdk.aws-s3-notifications==1.74.0 +aws-cdk.aws-iam==1.74.0 +aws-cdk.aws-ec2==1.74.0 +aws-cdk.aws-ecs==1.74.0 +aws-cdk.aws-logs==1.74.0 +aws-cdk.aws-events==1.74.0 +aws-cdk.aws-events-targets==1.74.0 diff --git a/the-lambda-circuit-breaker/python/requirements.txt b/the-lambda-circuit-breaker/python/requirements.txt index 21fabaae..958eb040 100644 --- a/the-lambda-circuit-breaker/python/requirements.txt +++ b/the-lambda-circuit-breaker/python/requirements.txt @@ -1,5 +1,5 @@ -e . -aws-cdk.core==1.67.0 -aws-cdk.aws_apigatewayv2==1.67.0 -aws-cdk.aws-lambda==1.67.0 -aws-cdk.aws-dynamodb==1.67.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_apigatewayv2==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 diff --git a/the-lambda-power-tuner/python/requirements.txt b/the-lambda-power-tuner/python/requirements.txt index d3691336..11cf82a6 100644 --- a/the-lambda-power-tuner/python/requirements.txt +++ b/the-lambda-power-tuner/python/requirements.txt @@ -1,4 +1,4 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-sam==1.60.0 -aws-cdk.aws-lambda==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-sam==1.74.0 +aws-cdk.aws-lambda==1.74.0 diff --git a/the-lambda-trilogy/python/requirements.txt b/the-lambda-trilogy/python/requirements.txt index c17a93e9..fd7ae8ec 100644 --- a/the-lambda-trilogy/python/requirements.txt +++ b/the-lambda-trilogy/python/requirements.txt @@ -1,4 +1,4 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-apigateway==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-apigateway==1.74.0 diff --git a/the-rds-proxy/python/requirements.txt b/the-rds-proxy/python/requirements.txt index 37883cf1..9ae14b4d 100644 --- a/the-rds-proxy/python/requirements.txt +++ b/the-rds-proxy/python/requirements.txt @@ -1,8 +1,8 @@ -e . -aws-cdk.core==1.56.0 -aws-cdk.aws-ec2==1.56.0 -aws-cdk.aws-rds==1.56.0 -aws-cdk.aws-secretsmanager==1.56.0 -aws-cdk.aws-ssm==1.56.0 -aws-cdk.aws-lambda==1.56.0 -aws-cdk.aws-apigatewayv2==1.56.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-ec2==1.74.0 +aws-cdk.aws-rds==1.74.0 +aws-cdk.aws-secretsmanager==1.74.0 +aws-cdk.aws-ssm==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-apigatewayv2==1.74.0 diff --git a/the-saga-stepfunction/python/requirements.txt b/the-saga-stepfunction/python/requirements.txt index 573453d3..d25db7cc 100644 --- a/the-saga-stepfunction/python/requirements.txt +++ b/the-saga-stepfunction/python/requirements.txt @@ -1,7 +1,7 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws_apigateway==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -aws-cdk.aws-stepfunctions==1.60.0 -aws-cdk.aws-stepfunctions-tasks==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_apigateway==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.aws-stepfunctions==1.74.0 +aws-cdk.aws-stepfunctions-tasks==1.74.0 diff --git a/the-scalable-webhook/python/requirements.txt b/the-scalable-webhook/python/requirements.txt index 2f87340d..b53235f2 100644 --- a/the-scalable-webhook/python/requirements.txt +++ b/the-scalable-webhook/python/requirements.txt @@ -1,7 +1,7 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws_apigateway==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -aws-cdk.aws-sqs==1.60.0 -aws-cdk.aws-lambda-event-sources==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_apigateway==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.aws-sqs==1.74.0 +aws-cdk.aws-lambda-event-sources==1.74.0 diff --git a/the-simple-graphql-service/python/requirements.txt b/the-simple-graphql-service/python/requirements.txt index 95c4d63f..a35d9b93 100644 --- a/the-simple-graphql-service/python/requirements.txt +++ b/the-simple-graphql-service/python/requirements.txt @@ -1,7 +1,7 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws_appsync==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-cognito==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -path==13.1.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_appsync==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-cognito==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +path==13.1.0 diff --git a/the-simple-webservice/python/requirements.txt b/the-simple-webservice/python/requirements.txt index 985ec1e7..3904f649 100644 --- a/the-simple-webservice/python/requirements.txt +++ b/the-simple-webservice/python/requirements.txt @@ -1,6 +1,6 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws_apigatewayv2==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -path==13.1.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_apigatewayv2==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +path==13.1.0 diff --git a/the-state-machine/python/requirements.txt b/the-state-machine/python/requirements.txt index cd9ec6d1..94b0b4ea 100644 --- a/the-state-machine/python/requirements.txt +++ b/the-state-machine/python/requirements.txt @@ -1,7 +1,7 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws-stepfunctions==1.60.0 -aws-cdk.aws-stepfunctions-tasks==1.60.0 -aws-cdk.aws-sqs==1.60.0 -aws-cdk.aws_apigateway==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws-stepfunctions==1.74.0 +aws-cdk.aws-stepfunctions-tasks==1.74.0 +aws-cdk.aws-sqs==1.74.0 +aws-cdk.aws_apigateway==1.74.0 diff --git a/the-waf-apigateway/python/requirements.txt b/the-waf-apigateway/python/requirements.txt index 20253959..95311a26 100644 --- a/the-waf-apigateway/python/requirements.txt +++ b/the-waf-apigateway/python/requirements.txt @@ -1,7 +1,7 @@ -e . -aws-cdk.core==1.72.0 -aws-cdk.aws_apigateway==1.72.0 -aws-cdk.aws_iam==1.72.0 -aws-cdk.aws_lambda==1.72.0 -aws-cdk.aws_cloudformation==1.72.0 -aws-cdk.aws_wafv2==1.72.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws_apigateway==1.74.0 +aws-cdk.aws_iam==1.74.0 +aws-cdk.aws_lambda==1.74.0 +aws-cdk.aws_cloudformation==1.74.0 +aws-cdk.aws_wafv2==1.74.0 diff --git a/the-xray-tracer/python/requirements.txt b/the-xray-tracer/python/requirements.txt index 3f2d2952..edd81a46 100644 --- a/the-xray-tracer/python/requirements.txt +++ b/the-xray-tracer/python/requirements.txt @@ -1,10 +1,10 @@ -e . -aws-cdk.core==1.60.0 -aws-cdk.aws-iam==1.60.0 -aws-cdk.aws-lambda==1.60.0 -aws-cdk.aws_apigateway==1.60.0 -aws-cdk.aws-sns==1.60.0 -aws-cdk.aws-sns-subscriptions==1.60.0 -aws-cdk.aws-dynamodb==1.60.0 -aws-cdk.aws-sqs==1.60.0 -aws-cdk.aws-lambda-event-sources==1.60.0 \ No newline at end of file +aws-cdk.core==1.74.0 +aws-cdk.aws-iam==1.74.0 +aws-cdk.aws-lambda==1.74.0 +aws-cdk.aws_apigateway==1.74.0 +aws-cdk.aws-sns==1.74.0 +aws-cdk.aws-sns-subscriptions==1.74.0 +aws-cdk.aws-dynamodb==1.74.0 +aws-cdk.aws-sqs==1.74.0 +aws-cdk.aws-lambda-event-sources==1.74.0 From 51f8defbb83645465f13239e8838b8284304362a Mon Sep 17 00:00:00 2001 From: Matt Coulter <59790145+cdk-patterns@users.noreply.github.com> Date: Sun, 22 Nov 2020 20:11:48 +0000 Subject: [PATCH 24/30] update cw dashboard to use new integrations class for http api --- build-python.sh | 4 ++-- the-cloudwatch-dashboard/python/requirements.txt | 1 + .../the_cloudwatch_dashboard_stack.py | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build-python.sh b/build-python.sh index 95591cc3..cfbc8e9f 100755 --- a/build-python.sh +++ b/build-python.sh @@ -6,14 +6,14 @@ do python3 -m venv .env; source .env/bin/activate; pip3 install -r requirements.txt; - readarray -t stacks < <(npx -q cdk ls); + readarray -t stacks < <(npx -q cdk@1.74.0 ls); if [[ "${#stacks[@]}" == 0 ]]; then exit 1 fi for stack in "${stacks[@]}" do echo "npx cdk synth $stack"; - npx cdk synth "$stack"; + npx cdk@1.74.0 synth "$stack"; done deactivate fi diff --git a/the-cloudwatch-dashboard/python/requirements.txt b/the-cloudwatch-dashboard/python/requirements.txt index 04d541f0..e1bb0318 100644 --- a/the-cloudwatch-dashboard/python/requirements.txt +++ b/the-cloudwatch-dashboard/python/requirements.txt @@ -1,6 +1,7 @@ -e . aws-cdk.core==1.74.0 aws-cdk.aws_apigatewayv2==1.74.0 +aws-cdk.aws-apigatewayv2-integrations==1.74.0 aws-cdk.aws-lambda==1.74.0 aws-cdk.aws-dynamodb==1.74.0 aws-cdk.aws-sns==1.74.0 diff --git a/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py b/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py index 5e0272b2..14f1bd73 100644 --- a/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py +++ b/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py @@ -1,6 +1,7 @@ from aws_cdk import ( aws_lambda as _lambda, aws_apigatewayv2 as api_gw, + aws_apigatewayv2_integrations as integrations, aws_dynamodb as dynamo_db, aws_sns as sns, aws_cloudwatch as cloud_watch, @@ -43,7 +44,7 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # defines an API Gateway Http API resource backed by our "dynamoLambda" function. api = api_gw.HttpApi(self, 'HttpAPI', - default_integration=api_gw.LambdaProxyIntegration(handler=dynamo_lambda)); + default_integration=integrations.LambdaProxyIntegration(handler=dynamo_lambda)); core.CfnOutput(self, 'HTTP API Url', value=api.url); From 260647f20df87faa78d1857b00b321097d697971 Mon Sep 17 00:00:00 2001 From: Matt Coulter <59790145+cdk-patterns@users.noreply.github.com> Date: Sun, 22 Nov 2020 20:25:05 +0000 Subject: [PATCH 25/30] update cw dashboard to use new system error method and efs to new http api int --- .../the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py | 2 +- the-efs-lambda/python/requirements.txt | 1 + the-efs-lambda/python/the_efs_lambda/the_efs_lambda_stack.py | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py b/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py index 14f1bd73..aeca09ab 100644 --- a/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py +++ b/the-cloudwatch-dashboard/python/the_cloudwatch_dashboard/the_cloudwatch_dashboard_stack.py @@ -110,7 +110,7 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: label="DynamoDB Errors", using_metrics={ "m1": table.metric_user_errors(), - "m2": table.metric_system_errors(), + "m2": table.metric_system_errors_for_operations(), }, period=core.Duration.minutes(5)) diff --git a/the-efs-lambda/python/requirements.txt b/the-efs-lambda/python/requirements.txt index e6ec7573..5492b9fe 100644 --- a/the-efs-lambda/python/requirements.txt +++ b/the-efs-lambda/python/requirements.txt @@ -1,6 +1,7 @@ -e . aws-cdk.core==1.74.0 aws-cdk.aws-apigatewayv2==1.74.0 +aws-cdk.aws-apigatewayv2-integrations==1.74.0 aws-cdk.aws-ec2==1.74.0 aws-cdk.aws-lambda==1.74.0 aws-cdk.aws-efs==1.74.0 diff --git a/the-efs-lambda/python/the_efs_lambda/the_efs_lambda_stack.py b/the-efs-lambda/python/the_efs_lambda/the_efs_lambda_stack.py index d312ef1a..a30385e4 100644 --- a/the-efs-lambda/python/the_efs_lambda/the_efs_lambda_stack.py +++ b/the-efs-lambda/python/the_efs_lambda/the_efs_lambda_stack.py @@ -1,6 +1,7 @@ from aws_cdk import ( aws_lambda as _lambda, aws_apigatewayv2 as api_gw, + aws_apigatewayv2_integrations as integrations, aws_ec2 as ec2, aws_efs as efs, core @@ -34,6 +35,6 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # defines an API Gateway Http API resource backed by our "efs_lambda" function. api = api_gw.HttpApi(self, 'EFS Lambda', - default_integration=api_gw.LambdaProxyIntegration(handler=efs_lambda)); + default_integration=integrations.LambdaProxyIntegration(handler=efs_lambda)); core.CfnOutput(self, 'HTTP API Url', value=api.url); \ No newline at end of file From 433fdd540f8aec1546f4441a0291b9467af210f6 Mon Sep 17 00:00:00 2001 From: Matt Coulter <59790145+cdk-patterns@users.noreply.github.com> Date: Sun, 22 Nov 2020 20:48:30 +0000 Subject: [PATCH 26/30] update rds credentials --- .../python/lambda_fns/unreliable.js | 77 +++++++++++++++---- .../python/requirements.txt | 1 + .../the_lambda_circuit_breaker_stack.py | 3 +- the-rds-proxy/python/requirements.txt | 1 + .../the_rds_proxy/the_rds_proxy_stack.py | 8 +- the-simple-webservice/python/requirements.txt | 1 + .../the_simple_webservice_stack.py | 3 +- 7 files changed, 70 insertions(+), 24 deletions(-) diff --git a/the-lambda-circuit-breaker/python/lambda_fns/unreliable.js b/the-lambda-circuit-breaker/python/lambda_fns/unreliable.js index f2577f1d..39d06c6b 100644 --- a/the-lambda-circuit-breaker/python/lambda_fns/unreliable.js +++ b/the-lambda-circuit-breaker/python/lambda_fns/unreliable.js @@ -1,14 +1,50 @@ 'use strict'; -const CircuitBreaker = require('circuitbreaker-lambda'); -let message; -const options = { +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var CircuitBreaker = require('circuitbreaker-lambda'); +var message; +var options = { fallback: fallbackFunction, failureThreshold: 3, successThreshold: 2, timeout: 10000 }; function unreliableFunction() { - return new Promise((resolve, reject) => { + return new Promise(function (resolve, reject) { if (Math.random() < 0.6) { resolve({ data: 'Success' }); message = 'Success'; @@ -20,20 +56,27 @@ function unreliableFunction() { }); } function fallbackFunction() { - return new Promise((resolve, reject) => { + return new Promise(function (resolve, reject) { resolve({ data: 'Expensive Fallback Successful' }); message = 'Fallback'; }); } -exports.handler = async (event) => { - const circuitBreaker = new CircuitBreaker(unreliableFunction, options); - await circuitBreaker.fire(); - const response = { - statusCode: 200, - body: JSON.stringify({ - message: message - }) - }; - return response; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5yZWxpYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVucmVsaWFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFBO0FBQ1osTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUE7QUFDdkQsSUFBSSxPQUFjLENBQUE7QUFFbEIsTUFBTSxPQUFPLEdBQUc7SUFDZCxRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQixPQUFPLEVBQUUsS0FBSztDQUNmLENBQUE7QUFFRCxTQUFTLGtCQUFrQjtJQUN6QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBRTtZQUN2QixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtZQUM1QixPQUFPLEdBQUcsU0FBUyxDQUFBO1NBQ3BCO2FBQU07WUFDTCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUMxQixPQUFPLEdBQUcsUUFBUSxDQUFBO1NBQ25CO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBQ0QsU0FBUyxnQkFBZ0I7SUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxDQUFBO1FBQ2xELE9BQU8sR0FBRyxVQUFVLENBQUE7SUFDdEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsT0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLEVBQUUsS0FBUyxFQUFFLEVBQUU7SUFDcEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdEUsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDM0IsTUFBTSxRQUFRLEdBQUc7UUFDZixVQUFVLEVBQUUsR0FBRztRQUNmLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7S0FDSCxDQUFBO0lBQ0QsT0FBTyxRQUFRLENBQUE7QUFDakIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXG4ndXNlIHN0cmljdCdcbmNvbnN0IENpcmN1aXRCcmVha2VyID0gcmVxdWlyZSgnY2lyY3VpdGJyZWFrZXItbGFtYmRhJylcbmxldCBtZXNzYWdlOnN0cmluZ1xuXG5jb25zdCBvcHRpb25zID0ge1xuICBmYWxsYmFjazogZmFsbGJhY2tGdW5jdGlvbixcbiAgZmFpbHVyZVRocmVzaG9sZDogMyxcbiAgc3VjY2Vzc1RocmVzaG9sZDogMixcbiAgdGltZW91dDogMTAwMDBcbn1cblxuZnVuY3Rpb24gdW5yZWxpYWJsZUZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoTWF0aC5yYW5kb20oKSA8IDAuNikge1xuICAgICAgcmVzb2x2ZSh7IGRhdGE6ICdTdWNjZXNzJyB9KVxuICAgICAgbWVzc2FnZSA9ICdTdWNjZXNzJ1xuICAgIH0gZWxzZSB7XG4gICAgICByZWplY3QoeyBkYXRhOiAnRmFpbGVkJyB9KVxuICAgICAgbWVzc2FnZSA9ICdGYWlsZWQnXG4gICAgfVxuICB9KVxufVxuZnVuY3Rpb24gZmFsbGJhY2tGdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgcmVzb2x2ZSh7IGRhdGE6ICdFeHBlbnNpdmUgRmFsbGJhY2sgU3VjY2Vzc2Z1bCcgfSlcbiAgICBtZXNzYWdlID0gJ0ZhbGxiYWNrJ1xuICB9KVxufVxuXG5leHBvcnRzLmhhbmRsZXIgPSBhc3luYyAoZXZlbnQ6YW55KSA9PiB7XG4gIGNvbnN0IGNpcmN1aXRCcmVha2VyID0gbmV3IENpcmN1aXRCcmVha2VyKHVucmVsaWFibGVGdW5jdGlvbiwgb3B0aW9ucylcbiAgYXdhaXQgY2lyY3VpdEJyZWFrZXIuZmlyZSgpXG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgfSlcbiAgfVxuICByZXR1cm4gcmVzcG9uc2Vcbn1cbiJdfQ== \ No newline at end of file +exports.handler = function (event) { return __awaiter(void 0, void 0, void 0, function () { + var circuitBreaker, response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + circuitBreaker = new CircuitBreaker(unreliableFunction, options); + return [4 /*yield*/, circuitBreaker.fire()]; + case 1: + _a.sent(); + response = { + statusCode: 200, + body: JSON.stringify({ + message: message + }) + }; + return [2 /*return*/, response]; + } + }); +}); }; diff --git a/the-lambda-circuit-breaker/python/requirements.txt b/the-lambda-circuit-breaker/python/requirements.txt index 958eb040..679c34cf 100644 --- a/the-lambda-circuit-breaker/python/requirements.txt +++ b/the-lambda-circuit-breaker/python/requirements.txt @@ -1,5 +1,6 @@ -e . aws-cdk.core==1.74.0 aws-cdk.aws_apigatewayv2==1.74.0 +aws-cdk.aws-apigatewayv2-integrations==1.74.0 aws-cdk.aws-lambda==1.74.0 aws-cdk.aws-dynamodb==1.74.0 diff --git a/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py b/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py index 4264cc0f..92d6f004 100644 --- a/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py +++ b/the-lambda-circuit-breaker/python/the_lambda_circuit_breaker/the_lambda_circuit_breaker_stack.py @@ -1,6 +1,7 @@ from aws_cdk import ( aws_lambda as _lambda, aws_apigatewayv2 as api_gw, + aws_apigatewayv2_integrations as integrations, aws_dynamodb as dynamo_db, core ) @@ -40,6 +41,6 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # defines an API Gateway Http API resource backed by our "dynamoLambda" function. api = api_gw.HttpApi(self, 'CircuitBreakerGateway', - default_integration=api_gw.LambdaProxyIntegration(handler=unreliable_lambda)); + default_integration=integrations.LambdaProxyIntegration(handler=unreliable_lambda)); core.CfnOutput(self, 'HTTP API Url', value=api.url); diff --git a/the-rds-proxy/python/requirements.txt b/the-rds-proxy/python/requirements.txt index 9ae14b4d..e7596ccd 100644 --- a/the-rds-proxy/python/requirements.txt +++ b/the-rds-proxy/python/requirements.txt @@ -6,3 +6,4 @@ aws-cdk.aws-secretsmanager==1.74.0 aws-cdk.aws-ssm==1.74.0 aws-cdk.aws-lambda==1.74.0 aws-cdk.aws-apigatewayv2==1.74.0 +aws-cdk.aws-apigatewayv2-integrations==1.74.0 diff --git a/the-rds-proxy/python/the_rds_proxy/the_rds_proxy_stack.py b/the-rds-proxy/python/the_rds_proxy/the_rds_proxy_stack.py index 4c9f51cb..60f9be6b 100644 --- a/the-rds-proxy/python/the_rds_proxy/the_rds_proxy_stack.py +++ b/the-rds-proxy/python/the_rds_proxy/the_rds_proxy_stack.py @@ -1,6 +1,7 @@ from aws_cdk import ( aws_lambda as _lambda, aws_apigatewayv2 as api_gw, + aws_apigatewayv2_integrations as integrations, aws_ec2 as ec2, aws_rds as rds, aws_secretsmanager as secrets, @@ -44,10 +45,7 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: 'DBInstance', engine=rds.DatabaseInstanceEngine.mysql( version=rds.MysqlEngineVersion.VER_5_7_30), - master_username= - db_credentials_secret.secret_value_from_json('username').to_string(), - master_user_password= - db_credentials_secret.secret_value_from_json('password'), + credentials=rds.Credentials.from_secret(db_credentials_secret), instance_type= ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.SMALL), vpc=vpc, @@ -81,6 +79,6 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # defines an API Gateway Http API resource backed by our "dynamoLambda" function. api = api_gw.HttpApi(self, 'Endpoint', - default_integration=api_gw.LambdaProxyIntegration(handler=rds_lambda)); + default_integration=integrations.LambdaProxyIntegration(handler=rds_lambda)); core.CfnOutput(self, 'HTTP API Url', value=api.url); diff --git a/the-simple-webservice/python/requirements.txt b/the-simple-webservice/python/requirements.txt index 3904f649..1ac94d25 100644 --- a/the-simple-webservice/python/requirements.txt +++ b/the-simple-webservice/python/requirements.txt @@ -1,6 +1,7 @@ -e . aws-cdk.core==1.74.0 aws-cdk.aws_apigatewayv2==1.74.0 +aws-cdk.aws-apigatewayv2-integrations==1.74.0 aws-cdk.aws-lambda==1.74.0 aws-cdk.aws-dynamodb==1.74.0 path==13.1.0 diff --git a/the-simple-webservice/python/the_simple_webservice/the_simple_webservice_stack.py b/the-simple-webservice/python/the_simple_webservice/the_simple_webservice_stack.py index 6e37e8a5..1a1eba27 100644 --- a/the-simple-webservice/python/the_simple_webservice/the_simple_webservice_stack.py +++ b/the-simple-webservice/python/the_simple_webservice/the_simple_webservice_stack.py @@ -1,6 +1,7 @@ from aws_cdk import ( aws_lambda as _lambda, aws_apigatewayv2 as api_gw, + aws_apigatewayv2_integrations as integrations, aws_dynamodb as dynamo_db, core ) @@ -30,6 +31,6 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # defines an API Gateway Http API resource backed by our "dynamoLambda" function. - api = api_gw.HttpApi(self, 'Endpoint', default_integration=api_gw.LambdaProxyIntegration(handler=dynamo_lambda)); + api = api_gw.HttpApi(self, 'Endpoint', default_integration=integrations.LambdaProxyIntegration(handler=dynamo_lambda)); core.CfnOutput(self, 'HTTP API Url', value=api.url); \ No newline at end of file From 9437f4c8e3a36e6b3fee41d8940566dab63ca8cf Mon Sep 17 00:00:00 2001 From: EC2 Default User Date: Sun, 22 Nov 2020 21:27:22 +0000 Subject: [PATCH 27/30] update appsync --- .../the_simple_graphql_service_stack.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/the-simple-graphql-service/python/the_simple_graphql_service/the_simple_graphql_service_stack.py b/the-simple-graphql-service/python/the_simple_graphql_service/the_simple_graphql_service_stack.py index 8d899aee..9502755e 100644 --- a/the-simple-graphql-service/python/the_simple_graphql_service/the_simple_graphql_service_stack.py +++ b/the-simple-graphql-service/python/the_simple_graphql_service/the_simple_graphql_service_stack.py @@ -4,18 +4,20 @@ aws_dynamodb as dynamo_db, core ) +import os class TheSimpleGraphqlServiceStack(core.Stack): def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: super().__init__(scope, id, **kwargs) + + schema_location = os.path.dirname(os.path.realpath(__file__)) + "/../schema/schema.graphql" # Create a new AppSync GraphQL API - api = appsync.GraphQLApi(self, 'Api', + api = appsync.GraphqlApi(self, 'Api', name="demoapi", log_config=appsync.LogConfig(field_log_level=appsync.FieldLogLevel.ALL), - schema_definition=appsync.SchemaDefinition.FILE, - schema_definition_file="schema/schema.graphql" + schema=appsync.Schema.from_asset(schema_location) ) api_key = appsync.CfnApiKey(self, 'the-simple-graphql-service-api-key', @@ -108,7 +110,7 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None: # GraphQL API Endpoint core.CfnOutput(self, 'Endpoint', - value=api.graph_ql_url + value=api.graphql_url ) # API Key From 1d0c348318497df934be2d09c5f32ce25a8e26c7 Mon Sep 17 00:00:00 2001 From: EC2 Default User Date: Sun, 22 Nov 2020 22:10:39 +0000 Subject: [PATCH 28/30] make cdk version dynamic in build script --- build-python.sh | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/build-python.sh b/build-python.sh index cfbc8e9f..5b9ee5cc 100755 --- a/build-python.sh +++ b/build-python.sh @@ -1,19 +1,37 @@ +function getCDKVersion() { + version="1.60.0" + + readarray -t requirements <<<"$( Date: Sun, 22 Nov 2020 22:37:48 +0000 Subject: [PATCH 29/30] add missing images from alexa skill python --- .../python/img/lwa-security-profile.png | Bin 0 -> 123248 bytes .../python/img/postman-oauth-settings.png | Bin 0 -> 78407 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 the-alexa-skill/python/img/lwa-security-profile.png create mode 100644 the-alexa-skill/python/img/postman-oauth-settings.png diff --git a/the-alexa-skill/python/img/lwa-security-profile.png b/the-alexa-skill/python/img/lwa-security-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..014fdbc037c80dfabc0e2d7b2c011646b85f74f6 GIT binary patch literal 123248 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%0A9jI14Erh6#5E_Kg^eqb+|cW@|K0ns697xD(L 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 M%GyeWik2__A1*0;x&QzG literal 0 HcmV?d00001 diff --git a/the-alexa-skill/python/img/postman-oauth-settings.png b/the-alexa-skill/python/img/postman-oauth-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..5aaf5a9d4a950f40069100980d96886df562a0e9 GIT binary patch literal 78407 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 JqzLVJ_iy;2C*uGB literal 0 HcmV?d00001 From 0a2fcfebb21479802b8bc89ae339339a57b60018 Mon Sep 17 00:00:00 2001 From: EC2 Default User Date: Sun, 22 Nov 2020 22:39:19 +0000 Subject: [PATCH 30/30] add missing images from alexa skill python --- the-alexa-skill/python/img/arch.png | Bin 0 -> 17676 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 the-alexa-skill/python/img/arch.png diff --git a/the-alexa-skill/python/img/arch.png b/the-alexa-skill/python/img/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..979f3b2a1475df8cf541c2f1afb2b9bc730fdfae GIT binary patch literal 17676 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 TEyv