├── .github
└── workflows
│ └── build.yaml
├── .gitignore
├── .npmrc
├── package.json
├── readme.md
├── scripts
├── publish-layers.js
├── supported-regions.js
└── update-readme.js
├── src
├── bootstrap
└── runtime.ts
└── test
└── dedupe-test.js
/.github/workflows/build.yaml:
--------------------------------------------------------------------------------
1 | name: Deno Runtime Lambda Layer
2 |
3 | on:
4 | push:
5 | paths-ignore:
6 | - '**/readme.md' # ignore changes to readme so this action can update the readme!
7 |
8 | env:
9 | version: "1.36.2"
10 |
11 | jobs:
12 | build:
13 | runs-on: ubuntu-latest
14 | container: docker://public.ecr.aws/lambda/provided
15 | steps:
16 | - name: Install necessary packages
17 | run: yum install gzip tar unzip zip -y
18 |
19 | - name: Check out repo
20 | uses: actions/checkout@v3
21 |
22 | - name: Download Deno
23 | run: curl -fsSL https://deno.land/x/install/install.sh | sh -s v${{ env.version }}
24 |
25 | - name: Verify the build
26 | run: /github/home/.deno/bin/deno --version
27 |
28 | - name: Build the Lambda Layer
29 | run: |
30 | mkdir -p src/bin
31 | cp /github/home/.deno/bin/deno src/bin/deno
32 | cd src
33 | zip -r ../deno-${{ env.version }}-x86.zip .
34 |
35 | - name: Persist layer artifact
36 | uses: actions/upload-artifact@v3
37 | with:
38 | name: layer
39 | path: deno-${{ env.version }}-x86.zip
40 |
41 | publish:
42 | needs: build
43 | runs-on: ubuntu-latest
44 | steps:
45 | - name: Check out repo
46 | uses: actions/checkout@v3
47 |
48 | # these secrets are set up at the org level
49 | - name: Configure AWS credentials
50 | uses: aws-actions/configure-aws-credentials@v1
51 | with:
52 | aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
53 | aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
54 | aws-region: us-west-2
55 |
56 | # uses node for interacting w the aws-sdk and github apis
57 | - name: Setup Node
58 | uses: actions/setup-node@v3
59 | with:
60 | node-version: '18'
61 |
62 | - name: Get layer artifact
63 | uses: actions/download-artifact@v3
64 | with:
65 | name: layer
66 |
67 | # this is just backups for debugging purposes
68 | - name: Upload to S3
69 | run: |
70 | aws s3 cp deno-${{ env.version }}-x86.zip s3://begin-deno-runtime/deno-${{ env.version }}-x86.zip
71 |
72 | # iterates through regions adding layers to each
73 | - name: Publish layer to all AWS regions
74 | run: |
75 | npm install
76 | node scripts/publish-layers.js
77 |
78 | # update the repo readme with deno version -> arn list organized by region
79 | - name: Update readme.md
80 | run: |
81 | GITHUB_TOKEN=${{ github.token }} node scripts/update-readme.js
82 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | deno*
2 | node_modules
3 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | package-lock=false
2 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "test": "tape test/*-test.js | tap-spec"
4 | },
5 | "dependencies": {
6 | "aws-sdk": "2.1364.0",
7 | "semver": "^7.5.4",
8 | "tap-spec": "^5.0.0",
9 | "tape": "^5.6.6",
10 | "tiny-json-http": "^7.5.1"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # DenoRuntime Lambda Layer
2 |
3 | > this readme was generated by scripts/update-readme.js
4 |
5 | ## us-east-1
6 | - 1.36.2-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:42
7 | - 1.35.0-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:41
8 | - 1.30.0-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:40
9 | - 1.28.0-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:39
10 | - 1.24.3-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:38
11 | - 1.22.0-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:37
12 | - 1.21.0-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:36
13 | - 1.20.6-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:35
14 | - 1.20.3-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:34
15 | - 1.20.2-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:33
16 | - 1.19.3-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:32
17 | - 1.19.2-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:31
18 | - 1.19.1-x86 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:30
19 | - 1.3.0 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:19
20 | - 1.1.0 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:17
21 | - 1.0.5 arn:aws:lambda:us-east-1:455488262213:layer:DenoRuntime:16
22 |
23 | ## us-east-2
24 | - 1.36.2-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:33
25 | - 1.35.0-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:32
26 | - 1.30.0-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:31
27 | - 1.28.0-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:30
28 | - 1.24.3-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:29
29 | - 1.22.0-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:28
30 | - 1.21.0-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:27
31 | - 1.20.6-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:26
32 | - 1.20.3-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:25
33 | - 1.20.2-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:24
34 | - 1.19.3-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:23
35 | - 1.19.2-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:22
36 | - 1.19.1-x86 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:21
37 | - 1.3.0 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:10
38 | - 1.1.0 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:8
39 | - 1.0.5 arn:aws:lambda:us-east-2:455488262213:layer:DenoRuntime:7
40 |
41 | ## us-west-1
42 | - 1.36.2-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:33
43 | - 1.35.0-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:32
44 | - 1.30.0-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:31
45 | - 1.28.0-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:30
46 | - 1.24.3-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:29
47 | - 1.22.0-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:28
48 | - 1.21.0-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:27
49 | - 1.20.6-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:26
50 | - 1.20.3-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:25
51 | - 1.20.2-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:24
52 | - 1.19.3-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:23
53 | - 1.19.2-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:22
54 | - 1.19.1-x86 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:21
55 | - 1.3.0 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:11
56 | - 1.1.0 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:9
57 | - 1.0.5 arn:aws:lambda:us-west-1:455488262213:layer:DenoRuntime:8
58 |
59 | ## us-west-2
60 | - 1.36.2-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:36
61 | - 1.35.0-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:35
62 | - 1.30.0-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:34
63 | - 1.28.0-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:33
64 | - 1.24.3-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:32
65 | - 1.22.0-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:31
66 | - 1.21.0-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:30
67 | - 1.20.6-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:29
68 | - 1.20.3-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:28
69 | - 1.20.2-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:27
70 | - 1.19.3-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:26
71 | - 1.19.2-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:25
72 | - 1.19.1-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:24
73 | - 1.18.0-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:14
74 | - 1.19.0-x86 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:13
75 | - 1.3.0 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:10
76 | - 1.1.0 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:8
77 | - 1.0.5 arn:aws:lambda:us-west-2:455488262213:layer:DenoRuntime:7
78 |
79 | ## ca-central-1
80 | - 1.36.2-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:79
81 | - 1.35.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:78
82 | - 1.30.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:77
83 | - 1.28.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:76
84 | - 1.24.3-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:75
85 | - 1.22.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:74
86 | - 1.21.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:73
87 | - 1.20.6-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:72
88 | - 1.20.3-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:71
89 | - 1.20.2-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:70
90 | - 1.19.3-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:69
91 | - 1.19.2-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:68
92 | - 1.19.1-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:67
93 | - 1.18.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:55
94 | - 1.19.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:49
95 | - 1.15.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:47
96 | - 1.16.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:45
97 | - 1.17.0-x86 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:43
98 | - 1.1.0 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:35
99 | - 1.0.5 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:34
100 | - 1.0.4-rc2 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:33
101 | - 1.0.4-rc1 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:32
102 | - 1.0.4 arn:aws:lambda:ca-central-1:455488262213:layer:DenoRuntime:31
103 |
104 | ## ap-south-1
105 | - 1.36.2-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:16
106 | - 1.35.0-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:15
107 | - 1.30.0-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:14
108 | - 1.28.0-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:13
109 | - 1.24.3-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:12
110 | - 1.22.0-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:11
111 | - 1.21.0-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:10
112 | - 1.20.6-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:9
113 | - 1.20.3-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:8
114 | - 1.20.2-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:7
115 | - 1.19.3-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:6
116 | - 1.19.2-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:5
117 | - 1.19.1-x86 arn:aws:lambda:ap-south-1:455488262213:layer:DenoRuntime:4
118 |
119 | ## ap-northeast-3
120 | - 1.36.2-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:15
121 | - 1.35.0-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:14
122 | - 1.30.0-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:13
123 | - 1.28.0-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:12
124 | - 1.24.3-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:11
125 | - 1.22.0-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:10
126 | - 1.21.0-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:9
127 | - 1.20.6-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:8
128 | - 1.20.3-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:7
129 | - 1.20.2-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:6
130 | - 1.19.3-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:5
131 | - 1.19.2-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:4
132 | - 1.19.1-x86 arn:aws:lambda:ap-northeast-3:455488262213:layer:DenoRuntime:3
133 |
134 | ## ap-northeast-2
135 | - 1.36.2-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:15
136 | - 1.35.0-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:14
137 | - 1.30.0-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:13
138 | - 1.28.0-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:12
139 | - 1.24.3-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:11
140 | - 1.22.0-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:10
141 | - 1.21.0-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:9
142 | - 1.20.6-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:8
143 | - 1.20.3-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:7
144 | - 1.20.2-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:6
145 | - 1.19.3-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:5
146 | - 1.19.2-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:4
147 | - 1.19.1-x86 arn:aws:lambda:ap-northeast-2:455488262213:layer:DenoRuntime:3
148 |
149 | ## ap-southeast-1
150 | - 1.36.2-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:16
151 | - 1.35.0-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:15
152 | - 1.30.0-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:14
153 | - 1.28.0-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:13
154 | - 1.24.3-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:12
155 | - 1.22.0-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:11
156 | - 1.21.0-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:10
157 | - 1.20.6-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:9
158 | - 1.20.3-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:8
159 | - 1.20.2-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:7
160 | - 1.19.3-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:6
161 | - 1.19.2-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:5
162 | - 1.19.1-x86 arn:aws:lambda:ap-southeast-1:455488262213:layer:DenoRuntime:4
163 |
164 | ## ap-southeast-2
165 | - 1.36.2-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:16
166 | - 1.35.0-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:15
167 | - 1.30.0-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:14
168 | - 1.28.0-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:13
169 | - 1.24.3-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:12
170 | - 1.22.0-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:11
171 | - 1.21.0-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:10
172 | - 1.20.6-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:9
173 | - 1.20.3-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:8
174 | - 1.20.2-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:7
175 | - 1.19.3-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:6
176 | - 1.19.2-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:5
177 | - 1.19.1-x86 arn:aws:lambda:ap-southeast-2:455488262213:layer:DenoRuntime:4
178 |
179 | ## ap-northeast-1
180 | - 1.36.2-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:16
181 | - 1.35.0-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:15
182 | - 1.30.0-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:14
183 | - 1.28.0-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:13
184 | - 1.24.3-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:12
185 | - 1.22.0-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:11
186 | - 1.21.0-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:10
187 | - 1.20.6-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:9
188 | - 1.20.3-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:8
189 | - 1.20.2-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:7
190 | - 1.19.3-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:6
191 | - 1.19.2-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:5
192 | - 1.19.1-x86 arn:aws:lambda:ap-northeast-1:455488262213:layer:DenoRuntime:4
193 |
194 | ## eu-central-1
195 | - 1.36.2-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:16
196 | - 1.35.0-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:15
197 | - 1.30.0-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:14
198 | - 1.28.0-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:13
199 | - 1.24.3-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:12
200 | - 1.22.0-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:11
201 | - 1.21.0-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:10
202 | - 1.20.6-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:9
203 | - 1.20.3-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:8
204 | - 1.20.2-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:7
205 | - 1.19.3-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:6
206 | - 1.19.2-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:5
207 | - 1.19.1-x86 arn:aws:lambda:eu-central-1:455488262213:layer:DenoRuntime:4
208 |
209 | ## eu-west-1
210 | - 1.36.2-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:16
211 | - 1.35.0-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:15
212 | - 1.30.0-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:14
213 | - 1.28.0-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:13
214 | - 1.24.3-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:12
215 | - 1.22.0-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:11
216 | - 1.21.0-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:10
217 | - 1.20.6-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:9
218 | - 1.20.3-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:8
219 | - 1.20.2-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:7
220 | - 1.19.3-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:6
221 | - 1.19.2-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:5
222 | - 1.19.1-x86 arn:aws:lambda:eu-west-1:455488262213:layer:DenoRuntime:4
223 |
224 | ## eu-west-2
225 | - 1.36.2-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:16
226 | - 1.35.0-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:15
227 | - 1.30.0-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:14
228 | - 1.28.0-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:13
229 | - 1.24.3-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:12
230 | - 1.22.0-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:11
231 | - 1.21.0-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:10
232 | - 1.20.6-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:9
233 | - 1.20.3-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:8
234 | - 1.20.2-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:7
235 | - 1.19.3-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:6
236 | - 1.19.2-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:5
237 | - 1.19.1-x86 arn:aws:lambda:eu-west-2:455488262213:layer:DenoRuntime:4
238 |
239 | ## eu-north-1
240 | - 1.36.2-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:15
241 | - 1.35.0-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:14
242 | - 1.30.0-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:13
243 | - 1.28.0-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:12
244 | - 1.24.3-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:11
245 | - 1.22.0-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:10
246 | - 1.21.0-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:9
247 | - 1.20.6-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:8
248 | - 1.20.3-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:7
249 | - 1.20.2-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:6
250 | - 1.19.3-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:5
251 | - 1.19.2-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:4
252 | - 1.19.1-x86 arn:aws:lambda:eu-north-1:455488262213:layer:DenoRuntime:3
253 |
254 | ## eu-west-3
255 | - 1.36.2-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:15
256 | - 1.35.0-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:14
257 | - 1.30.0-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:13
258 | - 1.28.0-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:12
259 | - 1.24.3-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:11
260 | - 1.22.0-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:10
261 | - 1.21.0-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:9
262 | - 1.20.6-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:8
263 | - 1.20.3-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:7
264 | - 1.20.2-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:6
265 | - 1.19.3-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:5
266 | - 1.19.2-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:4
267 | - 1.19.1-x86 arn:aws:lambda:eu-west-3:455488262213:layer:DenoRuntime:3
268 |
269 | ## sa-east-1
270 | - 1.36.2-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:15
271 | - 1.35.0-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:14
272 | - 1.30.0-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:13
273 | - 1.28.0-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:12
274 | - 1.24.3-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:11
275 | - 1.22.0-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:10
276 | - 1.21.0-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:9
277 | - 1.20.6-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:8
278 | - 1.20.3-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:7
279 | - 1.20.2-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:6
280 | - 1.19.3-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:5
281 | - 1.19.2-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:4
282 | - 1.19.1-x86 arn:aws:lambda:sa-east-1:455488262213:layer:DenoRuntime:3
283 |
284 |
--------------------------------------------------------------------------------
/scripts/publish-layers.js:
--------------------------------------------------------------------------------
1 | let aws = require('aws-sdk')
2 | let fs = require('fs')
3 | let path = require('path')
4 | let regions = require('./supported-regions')
5 | let pathToFile = path.join(__dirname, '..', `deno-${process.env.version}-x86.zip`)
6 | let layer = fs.readFileSync(pathToFile)
7 |
8 | ;(async function () {
9 | for (let region of regions) {
10 | let result = await publish(region)
11 | console.log(result)
12 | }
13 | })();
14 |
15 | /** helper to publish layer code and blow open the permissions so anyone can use it */
16 | async function publish (region) {
17 | console.log('publish to layer to', region)
18 | try {
19 | let lambda = new aws.Lambda({ region })
20 |
21 | // publish the zip
22 | let { Version } = await lambda.publishLayerVersion({
23 | LayerName: `DenoRuntime`,
24 | Description: `${ process.env.version }-x86`,
25 | Content: { ZipFile: layer },
26 | LicenseInfo: 'Apache-2.0'
27 | // CompatibleArchitectures: ['x86_64'], this is not yet supported in all regions!
28 | }).promise()
29 |
30 | return lambda.addLayerVersionPermission({
31 | Action: 'lambda:GetLayerVersion',
32 | LayerName: `DenoRuntime`,
33 | Principal: '*',
34 | StatementId: `allow-${ Date.now() }`,
35 | VersionNumber: Version,
36 | }).promise()
37 | }
38 | catch (e) {
39 | return e
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/scripts/supported-regions.js:
--------------------------------------------------------------------------------
1 | module.exports = [
2 | 'us-east-1',
3 | 'us-east-2',
4 | 'us-west-1',
5 | 'us-west-2',
6 | 'ca-central-1',
7 | 'ap-south-1',
8 | 'ap-northeast-3',
9 | 'ap-northeast-2',
10 | 'ap-southeast-1',
11 | 'ap-southeast-2',
12 | 'ap-northeast-1',
13 | 'eu-central-1',
14 | 'eu-west-1',
15 | 'eu-west-2',
16 | 'eu-north-1',
17 | 'eu-west-3',
18 | 'sa-east-1',
19 | ]
20 |
--------------------------------------------------------------------------------
/scripts/update-readme.js:
--------------------------------------------------------------------------------
1 | let aws = require('aws-sdk')
2 | let semver = require('semver')
3 | let tiny = require('tiny-json-http')
4 | let regions = require('./supported-regions')
5 |
6 | // run if directly invoked
7 | if (require.main === module) {
8 | ;(async function() {
9 | let md = '# DenoRuntime Lambda Layer\n\n'
10 | md += `> this readme was generated by scripts/update-readme.js\n\n`
11 | for (let region of regions) {
12 | let values = await getAllVersions(region)
13 | if (values.length) {
14 | md += `## ${ region }\n`
15 | for (let layer of values) {
16 | md += `- ${layer.version} `
17 | md += `${layer.arn}
\n`
18 | }
19 | md += `\n`
20 | }
21 | }
22 | await write(md)
23 | })();
24 | }
25 |
26 | // export helpers for testing
27 | module.exports = {
28 | dedupe, write, getAllVersions
29 | }
30 |
31 | /** get all the DenoRuntime layer versions for given region */
32 | async function getAllVersions(region) {
33 | let results = []
34 | let lambda = new aws.Lambda({ region })
35 | let params = {LayerName: 'DenoRuntime'}
36 | async function getPage(params) {
37 | // get the raw versions result
38 | let result = await lambda.listLayerVersions(params).promise()
39 | // helper to format to {arn, version}
40 | let fmt = v=> ({arn: v.LayerVersionArn, version: v.Description})
41 | // helper to filter to good versions
42 | let ok = v=> semver.valid(v.version)
43 | // map/filter results
44 | results = results.concat(result.LayerVersions.map(fmt).filter(ok))
45 | if (result.NextMarker) {
46 | params.Marker = result.NextMarker
47 | await getPage(params)
48 | }
49 | }
50 | // kick off read
51 | await getPage(params)
52 | // clean up duplicates in results
53 | return dedupe(results)
54 | }
55 |
56 | /** helper to write the readme using the github api */
57 | async function write(md) {
58 |
59 | let headers = {
60 | authorization: `token ${ process.env.GITHUB_TOKEN }`,
61 | accept: 'application/vnd.github.v3+json'
62 | }
63 |
64 | // get the sha of the readme
65 | let { body } = await tiny.get({
66 | url: `https://api.github.com/repos/beginner-corp/begin-deno-runtime/readme`,
67 | headers,
68 | })
69 |
70 | // write the readme
71 | return tiny.put({
72 | url: `https://api.github.com/repos/beginner-corp/begin-deno-runtime/contents/readme.md`,
73 | headers,
74 | data: {
75 | sha: body.sha,
76 | message: `update readme`,
77 | content: Buffer.from(md).toString('base64')
78 | }
79 | })
80 | }
81 |
82 | /** helper to dedupe results */
83 | function dedupe(values) {
84 | let obj = values.slice(0).reduce(function fold (a, v) {
85 | let region = v.arn.split(':')[3]
86 | let denoVersion = v.version
87 | let layerVersion = v.arn.split(':').pop()
88 | if (!a[denoVersion])
89 | a[denoVersion] = v.arn
90 | return a
91 | }, {})
92 | let result = []
93 | for (let version of Object.keys(obj))
94 | result.push({ arn: obj[version], version: version })
95 | return result
96 | }
97 |
--------------------------------------------------------------------------------
/src/bootstrap:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -euo pipefail
3 | DENO_DIR=/tmp/deno_dir deno run -A --unstable /opt/runtime.ts
4 |
--------------------------------------------------------------------------------
/src/runtime.ts:
--------------------------------------------------------------------------------
1 | // coldstart here
2 | let env = Deno.env.toObject();
3 | let api = env.AWS_LAMBDA_RUNTIME_API;
4 | let name = env._HANDLER.split(".")[0];
5 | let method = env._HANDLER.split(".")[1];
6 | let invoke = `http://${api}/2018-06-01/runtime/invocation`;
7 | let error = `http://${api}/2018-06-01/runtime/init/error`;
8 |
9 | // look for index.{js,ts,tsx} and fallback to mod.{js,ts,tsx}
10 | let paths = [
11 | `${env.LAMBDA_TASK_ROOT}/index.js`,
12 | `${env.LAMBDA_TASK_ROOT}/mod.js`,
13 | `${env.LAMBDA_TASK_ROOT}/index.ts`,
14 | `${env.LAMBDA_TASK_ROOT}/mod.ts`,
15 | `${env.LAMBDA_TASK_ROOT}/index.tsx`,
16 | `${env.LAMBDA_TASK_ROOT}/mod.tsx`,
17 | ];
18 |
19 | // get the handler entry file
20 | let found = false;
21 | let handler;
22 |
23 | for (let path of paths) {
24 | found = await exists(path);
25 | if (found) {
26 | let mod = await import(path);
27 | handler = mod[method];
28 | if (typeof handler != "function") {
29 | found = false;
30 | } else {
31 | break;
32 | }
33 | }
34 | }
35 |
36 | // if entry file is missing or invalid bail hard with a meaningful error
37 | if (found === false) {
38 | await post(error, {
39 | errorType: "HandlerNotFound",
40 | errorMessage:
41 | `expected one of mod.js, mod.ts, mod.tsx, index.js, index.ts, or index.tsx to export a function named "${method}"`,
42 | });
43 | Deno.exit(1);
44 | }
45 |
46 | // all good! start the event loop
47 | while (true) {
48 | let { event, context } = await next(`${invoke}/next`);
49 | try {
50 | // invoke the handler
51 | const payload = await handler(event, context);
52 | await post(`${invoke}/${context.awsRequestId}/response`, payload);
53 | } catch (err) {
54 | // ensure errors bubble
55 | await post(`${invoke}/${context.awsRequestId}/error`, {
56 | errorType: err.name,
57 | errorMessage: err.message,
58 | stackTrace: err.stack,
59 | });
60 | }
61 | }
62 |
63 | /** helper to get next invocation */
64 | async function next(url: string) {
65 | let env = Deno.env.toObject();
66 | let req = await fetch(url);
67 | let reqID = req.headers.get("Lambda-Runtime-Aws-Request-Id");
68 | let arn = req.headers.get("lambda-runtime-invoked-function-arn");
69 | let event = await req.json();
70 | let context = {
71 | awsRequestId: reqID,
72 | invokedFunctionArn: arn,
73 | logGroupName: env.AWS_LAMBDA_LOG_GROUP_NAME,
74 | logStreamName: env.AWS_LAMBDA_LOG_STREAM_NAME,
75 | functionName: env.AWS_LAMBDA_FUNCTION_NAME,
76 | functionVersion: env.AWS_LAMBDA_FUNCTION_VERSION,
77 | memoryLimitInMB: env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE,
78 | };
79 | return { event, context };
80 | }
81 |
82 | /** helper to post message to lambda */
83 | async function post(url: string, payload: object) {
84 | let result = await fetch(url, {
85 | method: "POST",
86 | body: JSON.stringify(payload),
87 | });
88 | await result.blob();
89 | }
90 |
91 | /** helper to check for the entry file */
92 | async function exists(filename: string): Promise {
93 | try {
94 | await Deno.stat(filename);
95 | return true;
96 | } catch (error) {
97 | if (error instanceof Deno.errors.NotFound) {
98 | return false;
99 | } else {
100 | throw error;
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/test/dedupe-test.js:
--------------------------------------------------------------------------------
1 | let test = require('tape')
2 | let { dedupe } = require('../scripts/update-readme')
3 |
4 | test('dedupes', t=> {
5 | t.plan(1)
6 | let raw = [
7 | {version: '1.19.1-x86', arn: 'arn:aws:lambda:us-east-1:555:layer:DenoRuntime:29'},
8 | {version: '1.19.1-x86', arn: 'arn:aws:lambda:us-east-1:555:layer:DenoRuntime:27'},
9 | {version: '1.19.1-x86', arn: 'arn:aws:lambda:us-east-1:555:layer:DenoRuntime:26'},
10 | {version: '1.0.0-x86', arn: 'arn:aws:lambda:us-east-1:555:layer:DenoRuntime:0'},
11 | ]
12 | let desired = [
13 | {version: '1.19.1-x86', arn: 'arn:aws:lambda:us-east-1:555:layer:DenoRuntime:29'},
14 | {version: '1.0.0-x86', arn: 'arn:aws:lambda:us-east-1:555:layer:DenoRuntime:0'}
15 | ]
16 | let result = dedupe(raw)
17 | t.deepEqual(result, desired)
18 | })
19 |
--------------------------------------------------------------------------------