markdown Lambda包部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Lambda包部署相关的知识,希望对你有一定的参考价值。

## 想定パラメータ

- s3バケット名 : パッケージング化したzipを格納
- destinationフォルダ : パッケージ前のソース。ライブラリ込
- src

## 提供言語

- python2.7
- python3
- node6
- node8

とりあえずこんなもん

## コマンド引数

- deploy
- build
- init
- run
- destroy
- clean

## Sample

```Makefile
# Makefile for cchan dmp
#
# Dependencies
# 	- pip install awscli
# 	- aws configure
#
# Useage
# make target<target name(recommend.py -> recommend)>

VERSION := $(shell date +%Y%m%d%H%M%S)
PKG_NAME = ambda-$(VERSION)
PWD = $(shell pwd)
BUCKET_NAME = bucketname
S3_BUCKET = s3://$(BUCKET_NAME)
# BIN_BUCKET= $(S3_BUCKET)/bin/
# LIB_BUCKET= $(S3_BUCKET)/lib/
SRC_BUCKET= src/
DEST_BUCKET= $(S3_BUCKET)/$(SRC_BUCKET)
SRC_DIR = $(PWD)/src/main/python
BIN_DIR = $(PWD)/bin
RESOURCE_DIR = $(PWD)/src/main/resources
DEST_DIR = $(PWD)/dest/
PKG_DIR = $(PWD)/pkg/$(PKG_NAME)
ROLE_NAME = arn:aws:iam::xxxxx:role/lambda_execute
# LIB_DIR = $(PWD)/lib
# DEST_DIR = $(PWD)/dest

ifdef target
TARGET = $(target)
else
TARGET = line_scraping
endif

ifdef funcname
FANC_NAME = $(funcname)
else
FANC_NAME = sample
endif

ifdef argfile
LAMBDA_ARGS = $(argfile)
else
LAMBDA_ARGS = $(RESOURCE_DIR)/test_args.json
endif

all: clean build deploy

build:
	@echo "######### Build python package #########"
	mkdir -p $(PKG_DIR)
	pip install -r requirements_lambda.txt -t $(PKG_DIR)
	cp -R $(SRC_DIR)/* $(PKG_DIR)
	cp -R $(BIN_DIR) $(PKG_DIR)
	# cp -R $(RESOURCE_DIR)/* $(PKG_NAME)
	cd $(PKG_DIR) && zip -ry $(DEST_DIR)$(PKG_NAME).zip . -x .gitkeep .DS_Store *.py[co] *.swp *.swo

deploy:
	@echo "######### Deploy to lambda package #########"
	aws s3 cp $(DEST_DIR)$(PKG_NAME).zip $(DEST_BUCKET)
	aws lambda update-function-code --function-name $(FANC_NAME) --s3-bucket $(BUCKET_NAME) --s3-key $(SRC_BUCKET)$(PKG_NAME).zip --publish

new: clean build
	@echo "######### Create lambda function #########"
	aws s3 cp $(DEST_DIR)$(PKG_NAME).zip $(DEST_BUCKET)
	aws lambda create-function --function-name $(FANC_NAME) --runtime python3.6 --role $(ROLE_NAME) --handler $(TARGET).lambda_handler --code S3Bucket=$(BUCKET_NAME),S3Key=$(SRC_BUCKET)$(PKG_NAME).zip

clean:
	@echo "######### Clean project #########"
	find . -name "*.py[co]" | xargs rm -rf
	cd $(DEST_DIR) && ls | egrep -v ".gitkeep|\.|\.\." | xargs rm -rf
	cd $(PWD)/pkg && ls | egrep -v ".gitkeep|\.|\.\." | xargs rm -rf

run:
	@echo "######### Run project #########"
	aws lambda invoke-async --function-name $(FANC_NAME) --invoke-args $(LAMBDA_ARGS)
```

これベースにできそう

以上是关于markdown Lambda包部署的主要内容,如果未能解决你的问题,请参考以下文章

使用boto3下载Lambda函数的部署包

如何增加 AWS lambda 部署包的最大大小 (RequestEntityTooLargeException)?

通过 Cloudformation、CodeBuild 和 CodePipeline 将 python 包部署到 AWS Lambda

markdown 设置和部署nuget包

Django REST framwork_01_部署

markdown [Java 8 lambda] #java