Skip to content
This repository was archived by the owner on Mar 19, 2024. It is now read-only.

Commit 1ad5f2e

Browse files
author
CodingNagger
committed
Return to s3 sync for lambda/layer upload
1 parent 86a8605 commit 1ad5f2e

File tree

1 file changed

+27
-21
lines changed

1 file changed

+27
-21
lines changed

Makefile

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@ LAMBDA_HANDLER?=$(SWIFT_EXECUTABLE).helloWorld
3434
LAMBDA_ZIP=lambda.zip
3535
SHARED_LIBS_FOLDER=swift-shared-libs
3636
LAYER_ZIP=swift-lambda-runtime-$(LAYER_VERSION).zip
37-
LAMBDA_BUILD_PATH=./.build
37+
ROOT_BUILD_PATH=./.build
38+
LAYER_BUILD_PATH=$(ROOT_BUILD_PATH)/layer
39+
LAMBDA_BUILD_PATH=$(ROOT_BUILD_PATH)/lambda
40+
TMP_BUILD_PATH=$(ROOT_BUILD_PATH)/tmp
3841
IAM_ROLE_NAME=lambda_sprinter_basic_execution
3942
DATETIME=$(shell date +'%y%m%d-%H%M%S')
40-
AWS_LAYER_BUCKET=aws-lambda-swift-sprinter-layers
4143

4244
# use this for local development
4345
MOUNT_ROOT=$(shell pwd)/..
@@ -112,13 +114,18 @@ test_package:
112114
swift test
113115

114116
create_build_directory:
115-
if [ ! -d "$(LAMBDA_BUILD_PATH)" ]; then mkdir $(LAMBDA_BUILD_PATH); fi
117+
if [ ! -d "$(LAMBDA_BUILD_PATH)" ]; then mkdir -p $(LAMBDA_BUILD_PATH); fi
118+
if [ ! -d "$(LAYER_BUILD_PATH)" ]; then mkdir -p $(LAYER_BUILD_PATH); fi
119+
if [ ! -d "$(TMP_BUILD_PATH)" ]; then mkdir -p $(TMP_BUILD_PATH); fi
116120

117121
package_lambda: clean_lambda create_build_directory build_lambda
118122
zip -r -j $(LAMBDA_BUILD_PATH)/$(LAMBDA_ZIP) $(SWIFT_PROJECT_PATH)/.build/$(SWIFT_CONFIGURATION)/$(SWIFT_EXECUTABLE)
119123

124+
clean_all: clean_layer clean_lambda
125+
rm -r $(ROOT_BUILD_PATH)
126+
120127
clean_layer:
121-
rm $(LAMBDA_BUILD_PATH)/$(LAYER_ZIP) || true
128+
rm $(LAYER_BUILD_PATH)/$(LAYER_ZIP) || true
122129
rm -r $(SHARED_LIBS_FOLDER) || true
123130

124131
package_layer: create_build_directory clean_layer
@@ -136,38 +143,38 @@ package_layer: create_build_directory clean_layer
136143
--workdir "/src" \
137144
$(SWIFT_DOCKER_IMAGE) \
138145
cp -t $(SHARED_LIBS_FOLDER)/lib $(SHARED_LIBRARIES)
139-
zip -r $(LAMBDA_BUILD_PATH)/$(LAYER_ZIP) bootstrap $(SHARED_LIBS_FOLDER)
146+
zip -r $(LAYER_BUILD_PATH)/$(LAYER_ZIP) bootstrap $(SHARED_LIBS_FOLDER)
140147

141-
upload_build_to_s3: create_lambda_s3_key create_s3_buckets_if_not_existing
142-
aws s3 cp --acl public-read "$(LAMBDA_BUILD_PATH)/$(LAMBDA_ZIP)" s3://$(AWS_BUCKET)/$(LAMBDA_S3_UPLOAD_PATH)/$(LAMBDA_ZIP) --profile $(AWS_PROFILE)
148+
upload_build_to_s3: create_lambda_s3_key create_s3_bucket_if_not_existing
149+
aws s3 sync --acl public-read "$(LAMBDA_BUILD_PATH)" s3://$(AWS_BUCKET)/$(LAMBDA_S3_UPLOAD_PATH) --profile $(AWS_PROFILE)
143150

144151
create_layer_s3_key:
145-
$(eval LAYER_S3_UPLOAD_PATH := $(SWIFT_LAMBDA_LIBRARY)/$(DATETIME))
152+
$(eval LAYER_S3_UPLOAD_PATH := layers/$(SWIFT_LAMBDA_LIBRARY))
146153

147-
upload_lambda_layer_with_s3: create_s3_buckets_if_not_existing create_layer_s3_key
148-
aws s3 cp --acl public-read "$(LAMBDA_BUILD_PATH)/$(LAYER_ZIP)" s3://$(AWS_LAYER_BUCKET)/$(LAYER_S3_UPLOAD_PATH)/$(LAYER_ZIP) --profile $(AWS_PROFILE)
149-
aws lambda publish-layer-version --layer-name $(SWIFT_LAMBDA_LIBRARY) --description "AWS Custom Runtime Swift Shared Libraries with NIO" --content "S3Bucket=$(AWS_LAYER_BUCKET),S3Key=$(LAYER_S3_UPLOAD_PATH)/$(LAYER_ZIP)" --output text --query LayerVersionArn --profile $(AWS_PROFILE) > $(LAMBDA_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
150-
cat $(LAMBDA_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
154+
upload_lambda_layer_with_s3: create_s3_bucket_if_not_existing create_layer_s3_key
155+
aws s3 sync --acl public-read "$(LAYER_BUILD_PATH)" s3://$(AWS_BUCKET)/$(LAYER_S3_UPLOAD_PATH) --profile $(AWS_PROFILE)
156+
aws lambda publish-layer-version --layer-name $(SWIFT_LAMBDA_LIBRARY) --description "AWS Custom Runtime Swift Shared Libraries with NIO" --content "S3Bucket=$(AWS_BUCKET),S3Key=$(LAYER_S3_UPLOAD_PATH)/$(LAYER_ZIP)" --output text --query LayerVersionArn --profile $(AWS_PROFILE) > $(TMP_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
157+
cat $(TMP_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
151158

152159
upload_lambda_layer:
153-
aws lambda publish-layer-version --layer-name $(SWIFT_LAMBDA_LIBRARY) --description "AWS Custom Runtime Swift Shared Libraries with NIO" --zip-file fileb://$(LAMBDA_BUILD_PATH)/$(LAYER_ZIP) --output text --query LayerVersionArn --profile $(AWS_PROFILE) > $(LAMBDA_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
154-
cat $(LAMBDA_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
160+
aws lambda publish-layer-version --layer-name $(SWIFT_LAMBDA_LIBRARY) --description "AWS Custom Runtime Swift Shared Libraries with NIO" --zip-file fileb://$(LAYER_BUILD_PATH)/$(LAYER_ZIP) --output text --query LayerVersionArn --profile $(AWS_PROFILE) > $(TMP_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
161+
cat $(TMP_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt
155162

156163
create_role:
157164
aws iam create-role --role-name $(IAM_ROLE_NAME) --description "Allows Lambda functions to call AWS services on your behalf." --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["sts:AssumeRole"],"Principal":{"Service":["lambda.amazonaws.com"]}}]}' --profile $(AWS_PROFILE) || true
158165
aws iam attach-role-policy --role-name $(IAM_ROLE_NAME) --policy-arn "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" --profile $(AWS_PROFILE) || true
159166
$(eval IAM_ROLE_ARN := $(shell aws iam list-roles --query "Roles[? RoleName == '$(IAM_ROLE_NAME)'].Arn" --output text --profile $(AWS_PROFILE)))
160167

161168
create_lambda: create_role package_lambda
162-
$(eval LAMBDA_LAYER_ARN := $(shell cat $(LAMBDA_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt))
169+
$(eval LAMBDA_LAYER_ARN := $(shell cat $(TMP_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt))
163170
$(info "$(LAMBDA_LAYER_ARN)")
164171
aws lambda create-function --function-name $(LAMBDA_FUNCTION_NAME) --runtime provided --handler $(LAMBDA_HANDLER) --role "$(IAM_ROLE_ARN)" --zip-file fileb://$(LAMBDA_BUILD_PATH)/$(LAMBDA_ZIP) --layers $(LAMBDA_LAYER_ARN) --profile $(AWS_PROFILE)
165172

166173
create_lambda_s3_key:
167-
$(eval LAMBDA_S3_UPLOAD_PATH := $(LAMBDA_FUNCTION_NAME)/$(DATETIME))
174+
$(eval LAMBDA_S3_UPLOAD_PATH := lambdas/$(LAMBDA_FUNCTION_NAME)/$(DATETIME))
168175

169176
create_lambda_with_s3: create_role package_lambda upload_build_to_s3
170-
$(eval LAMBDA_LAYER_ARN := $(shell cat $(LAMBDA_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt))
177+
$(eval LAMBDA_LAYER_ARN := $(shell cat $(TMP_BUILD_PATH)/$(SWIFT_LAMBDA_LIBRARY)-arn.txt))
171178
$(info "$(LAMBDA_LAYER_ARN)")
172179
aws lambda create-function --function-name $(LAMBDA_FUNCTION_NAME) --runtime provided --handler $(LAMBDA_HANDLER) --role "$(IAM_ROLE_ARN)" --code "S3Bucket=$(AWS_BUCKET),S3Key=$(LAMBDA_S3_UPLOAD_PATH)/$(LAMBDA_ZIP)" --layers $(LAMBDA_LAYER_ARN) --profile $(AWS_PROFILE)
173180

@@ -178,15 +185,14 @@ update_lambda_with_s3: package_lambda upload_build_to_s3
178185
aws lambda update-function-code --function-name $(LAMBDA_FUNCTION_NAME) --s3-bucket $(AWS_BUCKET) --s3-key "$(LAMBDA_S3_UPLOAD_PATH)/$(LAMBDA_ZIP)" --profile $(AWS_PROFILE)
179186

180187
invoke_lambda:
181-
aws lambda invoke --function-name $(LAMBDA_FUNCTION_NAME) --profile $(AWS_PROFILE) --payload "fileb://$(SWIFT_PROJECT_PATH)/event.json" $(LAMBDA_BUILD_PATH)/outfile && echo "\nResult:" && cat $(LAMBDA_BUILD_PATH)/outfile && echo "\n"
188+
aws lambda invoke --function-name $(LAMBDA_FUNCTION_NAME) --profile $(AWS_PROFILE) --payload "fileb://$(SWIFT_PROJECT_PATH)/event.json" $(TMP_BUILD_PATH)/outfile && echo "\nResult:" && cat $(TMP_BUILD_PATH)/outfile && echo "\n"
182189

183-
create_s3_buckets_if_not_existing:
190+
create_s3_bucket_if_not_existing:
184191
aws s3 ls "s3://$(AWS_BUCKET)" || aws s3 mb "s3://$(AWS_BUCKET)"
185-
aws s3 ls "s3://$(AWS_LAYER_BUCKET)" || aws s3 mb "s3://$(AWS_LAYER_BUCKET)"
186192

187193
#quick commands - no clean
188194
quick_build_lambda: build_lambda create_build_directory
189195
zip -r -j $(LAMBDA_BUILD_PATH)/$(LAMBDA_ZIP) $(SWIFT_PROJECT_PATH)/.build/$(SWIFT_CONFIGURATION)/$(SWIFT_EXECUTABLE)
190196

191197
quick_deploy_lambda: quick_build_lambda create_build_directory
192-
aws lambda update-function-code --function-name $(LAMBDA_FUNCTION_NAME) --zip-file fileb://$(LAMBDA_BUILD_PATH)/lambda.zip --profile $(AWS_PROFILE)
198+
aws lambda update-function-code --function-name $(LAMBDA_FUNCTION_NAME) --zip-file fileb://$(LAMBDA_BUILD_PATH)/lambda.zip --profile $(AWS_PROFILE)

0 commit comments

Comments
 (0)