Skip to content

Commit 29d1b60

Browse files
committed
updating
1 parent c25c6bf commit 29d1b60

5 files changed

Lines changed: 176 additions & 72 deletions

File tree

.github/workflows/layer.yml

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
name: Lambda Layer - Python Requirements
2+
3+
# Installed Software
4+
# https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
5+
6+
# Python Layer Paths
7+
# https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path
8+
9+
# Controls when the workflow will run
10+
on:
11+
push:
12+
branches:
13+
- main
14+
pull_request:
15+
branches:
16+
- main
17+
18+
# Allows you to run this workflow manually from the Actions tab
19+
workflow_dispatch:
20+
21+
jobs:
22+
build:
23+
name: Build Lambda Layer
24+
runs-on: ubuntu-latest
25+
steps:
26+
- uses: actions/checkout@v2
27+
28+
- name: Use Python ${{ matrix.node-version }}
29+
uses: actions/setup-python@v2
30+
with:
31+
python-version: 3.9
32+
33+
- name: Install Requirements
34+
working-directory: ./src/layer
35+
run: mkdir -p python/lib/python3.9/site-packages && pip install -r requirements.txt -t ./python/lib/python3.9/site-packages
36+
37+
- name: Create Zip of Dependencies
38+
working-directory: ./src/layer
39+
run: zip -r lambda_layer.zip ./python
40+
41+
- uses: actions/upload-artifact@v2
42+
with:
43+
name: python-requirements
44+
path: ./src/layer/lambda_layer.zip
45+
46+
deploynonprod:
47+
name: Deploy to NonProd
48+
runs-on: ubuntu-latest
49+
needs: build
50+
environment:
51+
name: NonProd
52+
outputs:
53+
layer_version: ${{ steps.build-layer.outputs.layer_version }}
54+
layer_arn: ${{ steps.build-layer.outputs.layer_arn }}
55+
steps:
56+
- uses: actions/checkout@v2
57+
- uses: actions/download-artifact@v2
58+
with:
59+
name: python-requirements
60+
61+
- uses: aws-actions/configure-aws-credentials@v1
62+
with:
63+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
64+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
65+
aws-region: ${{ secrets.AWS_REGION }}
66+
67+
- name: Upload Zip and Create Layer
68+
id: build-layer
69+
run: |
70+
date=$(date +"%d_%m_%Y")
71+
folder_path="nonprod/${date}"
72+
layer_name="python_lambda_layer_${date}"
73+
aws s3 cp ./lambda_layer.zip s3://${{ secrets.BUCKET_NAME }}/${folder_path}/lambda_layer.zip
74+
response=$(aws lambda publish-layer-version --layer-name ${layer_name} \
75+
--description "Python Development Layer" \
76+
--content S3Bucket=${{ secrets.BUCKET_NAME }},S3Key=${folder_path}/lambda_layer.zip \
77+
--compatible-runtimes "python3.8" "python3.9")
78+
79+
layer_version=$(echo $response | jq -r '.Version')
80+
echo "::set-output name=layer_version::$(echo $response | jq -r '.Version')"
81+
echo "::set-output name=layer_arn::$(echo $response | jq -r '.LayerArn')"
82+
echo "Layer Version: $layer_version"
83+
84+
# - name: Lambda Layer Permission
85+
# run: |
86+
# aws lambda add-layer-version-permission --layer-name ${layer_name} \
87+
# --version-number ${{ steps.build-layer.outputs.layer_version }} --action lambda:GetLayerVersion \
88+
# --statement-id GrantAccountAccess --principal "*"
89+
90+
deployprod:
91+
name: Deploy to Prod
92+
runs-on: ubuntu-latest
93+
needs: [build, deploynonprod]
94+
environment:
95+
name: Prod
96+
outputs:
97+
layer_version: ${{ steps.build-layer.outputs.layer_version }}
98+
layer_arn: ${{ steps.build-layer.outputs.layer_arn }}
99+
steps:
100+
- uses: actions/checkout@v2
101+
- uses: actions/download-artifact@v2
102+
with:
103+
name: python-requirements
104+
105+
- uses: aws-actions/configure-aws-credentials@v1
106+
with:
107+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
108+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
109+
aws-region: ${{ secrets.AWS_REGION }}
110+
111+
- name: Upload Zip and Create Layer
112+
id: build-layer
113+
run: |
114+
date=$(date +"%d_%m_%Y")
115+
folder_path="prod/${date}"
116+
layer_name="python_lambda_layer_${date}"
117+
aws s3 cp ./lambda_layer.zip s3://${{ secrets.BUCKET_NAME }}/${folder_path}/lambda_layer.zip
118+
response=$(aws lambda publish-layer-version --layer-name ${layer_name} \
119+
--description "Python Development Layer" \
120+
--content S3Bucket=${{ secrets.BUCKET_NAME }},S3Key=${folder_path}/lambda_layer.zip \
121+
--compatible-runtimes "python3.8" "python3.9")
122+
123+
layer_version=$(echo $response | jq -r '.Version')
124+
echo "::set-output name=layer_version::$(echo $response | jq -r '.Version')"
125+
echo "::set-output name=layer_arn::$(echo $response | jq -r '.LayerArn')"
126+
echo "Layer Version: $layer_version"
127+
128+
- name: Lambda Layer Permission
129+
run: |
130+
aws lambda add-layer-version-permission --layer-name $layer_name \
131+
--version-number ${{ steps.build-layer.outputs.layer_version }} --action lambda:GetLayerVersion \
132+
--statement-id GrantAccountAccess --principal "*"

.github/workflows/main.yml

Lines changed: 0 additions & 67 deletions
This file was deleted.

.vscode/settings.json

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"[javascript]": {
1616
"editor.formatOnSave": true,
1717
"editor.formatOnPaste": true,
18-
"editor.tabSize": 4
18+
"editor.tabSize": 2
1919
},
2020
"[json]": {
2121
"editor.formatOnSave": true,
@@ -28,6 +28,16 @@
2828
"editor.formatOnPaste": true,
2929
"editor.tabSize": 4,
3030
},
31+
"python.linting.pylintArgs": [
32+
"--max-line-length=200",
33+
"--disable={C0301}"
34+
],
35+
"python.formatting.autopep8Args": [
36+
"--max-line-length=200"
37+
],
38+
"python.linting.pycodestyleArgs": [
39+
"--max-line-length=200"
40+
],
3141
"[markdown]": {
3242
"editor.wordWrap": "on",
3343
"editor.quickSuggestions": false,
@@ -56,5 +66,35 @@
5666
"editor.formatOnSave": true,
5767
"editor.insertSpaces": true,
5868
"editor.detectIndentation": false,
59-
"yaml.format.singleQuote": true
69+
"yaml.format.singleQuote": true,
70+
"yaml.customTags": [
71+
"!And",
72+
"!And sequence",
73+
"!If",
74+
"!If sequence",
75+
"!Not",
76+
"!Not sequence",
77+
"!Equals",
78+
"!Equals sequence",
79+
"!Or",
80+
"!Or sequence",
81+
"!FindInMap",
82+
"!FindInMap sequence",
83+
"!Base64",
84+
"!Join",
85+
"!Join sequence",
86+
"!Cidr",
87+
"!Ref",
88+
"!Sub",
89+
"!Sub sequence",
90+
"!GetAtt",
91+
"!GetAZs",
92+
"!ImportValue",
93+
"!ImportValue sequence",
94+
"!Select",
95+
"!Select sequence",
96+
"!Split",
97+
"!Split sequence"
98+
],
99+
"python.linting.banditEnabled": false
60100
}

layer/requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
loguru
2+
pendulum

requirements.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)