/aws-lambda-s3-sample

This sample was made with reference to the aws document. It can create thumbnail image when image files putted on S3 bucket.

Primary LanguagePython

aws-lambda-s3-sample

This sample was made with reference to the aws document. It can create thumbnail image when image files putted on S3 bucket.

to reference here if you want to know how to aws setting.

this samples setting

IAM role: 
  lambda-s3-role
S3 bucket:
  lambda-s3-sample20190101
  lambda-s3-sample20190101resized

Install

1. Copy site-packages from docker container

pillow package for macOS unable to use in lambda. so it has to use docker container.

# build docker image
docker build -t aws-lambda-s3-sample .

# create docker container and copy packages
docker create --name foo aws-lambda-s3-sample
docker cp foo:/usr/local/lib/python3.7/site-packages site-packages
docker rm foo

# remove docker image
docker rmi aws-lambda-s3-sample

2. Create zip file to deploy

cd ./site-packages
zip -r9 ../CreateThumbnail.zip .
cd -
zip -g CreateThumbnail.zip CreateThumbnail.py

3. run aws command

create lambda function

If time out error occured use s3 upload (refs)

aws --debug lambda create-function \
--function-name CreateThumbnail \
--zip-file fileb://CreateThumbnail.zip \
--handler CreateThumbnail.handler \
--runtime python3.7 \
--role arn:aws:iam::<account-id>:role/lambda-s3-role \
--timeout 30 \
--memory-size 128

invoke (test)

aws lambda invoke --function-name CreateThumbnail --invocation-type Event --payload file://inputfile.json outputfile.txt

add permission

aws lambda add-permission \
--function-name CreateThumbnail \
--principal s3.amazonaws.com \
--statement-id lambda-s3-sample-statement20190101 \
--action "lambda:InvokeFunction" \
--source-arn arn:aws:s3:::lambda-s3-sample20190101 \
--source-account <account-id>

is here.(12 digit account id) https://console.aws.amazon.com/support/home?#

memo

update function

aws lambda update-function-code --function-name CreateThumbnail --zip-file fileb://CreateThumbnail.zip

remove permission

aws lambda remove-permission \
--function-name CreateThumbnail \
--statement-id lambda-s3-sample-statement20190101

get policy

aws lambda get-policy --function-name CreateThumbnail

Image upload to s3 bucket and confirm thumbnail created.

$ aws s3 cp image.jpg s3://lambda-s3-sample20190101
upload: ./image.jpg to s3://lambda-s3-sample20190101/image.jpg

$ aws s3 ls s3://lambda-s3-sample20190101
2019-01-02 14:36:26    1444202 image.jpg

$ aws s3 ls s3://lambda-s3-sample20190101resized
2019-01-02 14:36:37     259610 image.jpg

delete image

aws s3 rm s3://lambda-s3-sample20190101/image.jpg
aws s3 rm s3://lambda-s3-sample20190101resized/image.jpg