Skip to content

Commit 2e4680e

Browse files
committed
fix(ci): fix lambda-adapter permissions, local layer injection, and add deno setup
1 parent 11234b2 commit 2e4680e

1 file changed

Lines changed: 40 additions & 13 deletions

File tree

.github/workflows/examples.yaml

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ jobs:
113113

114114
- name: Build local adapter image
115115
run: |
116-
printf 'FROM scratch\nCOPY lambda-adapter /lambda-adapter\n' | \
116+
chmod +x /tmp/layer-x86_64/lambda-adapter
117+
printf 'FROM scratch\nCOPY --chmod=755 lambda-adapter /lambda-adapter\n' | \
117118
docker build -t public.ecr.aws/awsguru/aws-lambda-adapter:1.0.0-rc1 -f- /tmp/layer-x86_64
118119
119120
- name: Build
@@ -188,27 +189,53 @@ jobs:
188189
use-installer: true
189190
token: ${{ secrets.GITHUB_TOKEN }}
190191

192+
- uses: denoland/setup-deno@v2
193+
if: matrix.example == 'deno-zip'
194+
with:
195+
deno-version: v2.x
196+
191197
- uses: actions/download-artifact@v4
192198
with:
193199
name: layer-x86_64
194200
path: /tmp/layer-x86_64
195201

196-
- name: Prepare local layer
202+
- name: Build
203+
working-directory: examples/${{ matrix.example }}
204+
run: sam build
205+
206+
- name: Inject local layer into build output
207+
working-directory: examples/${{ matrix.example }}
197208
run: |
198-
LAYER_DIR="/tmp/local-layers/LambdaAdapterLayerX86"
209+
# Prepare local layer directory with correct structure
210+
LAYER_DIR=".aws-sam/build/LocalAdapterLayer"
199211
mkdir -p "$LAYER_DIR/extensions"
200212
cp /tmp/layer-x86_64/bootstrap "$LAYER_DIR/"
201213
cp /tmp/layer-x86_64/lambda-adapter "$LAYER_DIR/extensions/"
202-
chmod +x "$LAYER_DIR/extensions/lambda-adapter" "$LAYER_DIR/bootstrap"
203-
204-
- name: Patch template to use local layer
205-
working-directory: examples/${{ matrix.example }}
206-
run: |
207-
sed -i 's|!Sub arn:aws:lambda:${AWS::Region}:753240598075:layer:LambdaAdapterLayerX86:[0-9]*|/tmp/local-layers/LambdaAdapterLayerX86|' template.yaml
208-
209-
- name: Build
210-
working-directory: examples/${{ matrix.example }}
211-
run: sam build
214+
chmod +x "$LAYER_DIR/bootstrap" "$LAYER_DIR/extensions/lambda-adapter"
215+
# Add local layer resource and replace remote layer ARN refs
216+
python3 -c "
217+
import yaml
218+
with open('.aws-sam/build/template.yaml') as f:
219+
t = yaml.safe_load(f)
220+
t['Resources']['LocalAdapterLayer'] = {
221+
'Type': 'AWS::Lambda::LayerVersion',
222+
'Properties': {
223+
'Content': 'LocalAdapterLayer',
224+
'LayerName': 'local-adapter'
225+
}
226+
}
227+
for r in t.get('Resources', {}).values():
228+
layers = r.get('Properties', {}).get('Layers', [])
229+
for i, l in enumerate(layers):
230+
if isinstance(l, dict):
231+
v = l.get('Fn::Sub', '')
232+
else:
233+
v = l
234+
if 'LambdaAdapterLayerX86' in str(v):
235+
layers[i] = {'Ref': 'LocalAdapterLayer'}
236+
with open('.aws-sam/build/template.yaml', 'w') as f:
237+
yaml.dump(t, f)
238+
"
212239
213240
- name: Start local API and verify
214241
working-directory: examples/${{ matrix.example }}

0 commit comments

Comments
 (0)