-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjustfile
More file actions
68 lines (55 loc) · 2.58 KB
/
justfile
File metadata and controls
68 lines (55 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
default:
@just --list
appname := "testapp"
aws_acc := "123456789"
aws_region := "eu-west-2"
lambda_timeout := "10"
trust_policy := "trust-policy.json"
role_name := "lambda-execute"
# build create repo role push create
create: create-repo create-role build-image push-image create-lambda
# build push update
up: build-image push-image update-lambda
# Cleanup: combines all delete actions
cleanup: delete-lambda delete-role delete-repo
# Trigger your lambda
invoke:
aws lambda invoke --function-name {{appname}} output.txt
# Create IAM role with trust policy
create-role:
aws iam create-role --role-name {{role_name}} --assume-role-policy-document file://{{trust_policy}}
aws iam attach-role-policy --role-name {{role_name}} --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
# Delete IAM role
delete-role:
aws iam detach-role-policy --role-name {{role_name}} --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole || true
aws iam delete-role --role-name {{role_name}} || true
# Building application to an image locally
build-image:
docker build . -t {{appname}}:latest
docker tag docker.io/library/{{appname}}:latest {{appname}}:latest || 1
# Create ECR repo to host images built
create-repo:
aws ecr describe-repositories --repository-names {{appname}} --region {{aws_region}} || aws ecr create-repository --repository-name {{appname}} --region {{aws_region}}
# Delete ECR repository
delete-repo:
aws ecr delete-repository --repository-name {{appname}} --force || true
# Pushing local image to ECR
push-image:
aws ecr get-login-password --region {{aws_region}} | docker login --username AWS --password-stdin {{aws_acc}}.dkr.ecr.{{aws_region}}.amazonaws.com
docker tag {{appname}}:latest {{aws_acc}}.dkr.ecr.{{aws_region}}.amazonaws.com/{{appname}}
docker push {{aws_acc}}.dkr.ecr.{{aws_region}}.amazonaws.com/{{appname}}:latest
# Update lambda with the latest image in ECR
update-lambda:
aws lambda update-function-code --function-name {{appname}} \
--region {{aws_region}} \
--image-uri {{aws_acc}}.dkr.ecr.{{aws_region}}.amazonaws.com/{{appname}}:latest
# Delete Lambda function
delete-lambda:
aws lambda delete-function --function-name {{appname}} || true
# Create lambda using the image in ECR
create-lambda:
aws lambda create-function --function-name {{appname}} \
--package-type Image \
--code ImageUri={{aws_acc}}.dkr.ecr.{{aws_region}}.amazonaws.com/{{appname}}:latest \
--role arn:aws:iam::{{aws_acc}}:role/{{role_name}} \
--timeout {{lambda_timeout}}