|
Size: 1526
Comment:
|
Size: 3164
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 58: | Line 58: |
== Create lambda function == === lambda_function.py === {{{#!highlight python import boto3 import os def lambda_handler(event, context): message = 'Hello {} {}!'.format(event['first_name'], event['last_name']) session = boto3.session.Session() s3 = session.client( service_name='s3' ) buckets=[] for bucket in s3.list_buckets()['Buckets']: buckets.append(bucket['Name']) response = s3.create_bucket(Bucket='examplebucket') body = { 'message' : message, 'buckets' : buckets, 'AWS_ACCESS_KEY_ID' : os.environ["AWS_ACCESS_KEY_ID"], 'AWS_SECRET_ACCESS_KEY' : os.environ["AWS_SECRET_ACCESS_KEY"], 'AWS_DEFAULT_REGION' : os.environ["AWS_DEFAULT_REGION"], 'AWS_ENDPOINT_URL': os.environ['AWS_ENDPOINT_URL'] } s3.put_object(Body=str(body), Bucket='examplebucket', Key='examplebucket/response.txt') return body }}} {{{#!highlight shell nano lambda_function.py zip py-my-function.zip lambda_function.py aws lambda delete-function --function-name py-my-function aws iam delete-role --role-name lambda-ex aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}' ROLE_ARN=$(aws iam list-roles | jq ".Roles[0].Arn" | sed 's/\"//g') echo $ROLE_ARN aws lambda create-function --function-name py-my-function --zip-file fileb://py-my-function.zip --handler lambda_function.lambda_handler --runtime python3.14 --role $ROLE_ARN --timeout 30 }}} |
moto
A python library that allows you to easily mock out tests based on AWS infrastructure.
Install AWS CLI
Create S3 bucket
1 export AWS_ACCESS_KEY_ID='testing'
2 export AWS_SECRET_ACCESS_KEY='testing'
3 export AWS_SECURITY_TOKEN='testing'
4 export AWS_SESSION_TOKEN='testing'
5 export AWS_DEFAULT_REGION='us-east-1'
6 export AWS_ENDPOINT_URL="http://localhost:4000"
7
8 docker run --rm -p 4000:4000 --name moto motoserver/moto:latest
compose.yaml
1 docker compose up
2 docker compose exec motoserver sh
3 # in the container
4 cat /etc/os-release
5 # NAME="Alpine Linux"
6 exit
7
8 aws s3 ls
9 aws s3api create-bucket --bucket my-bucket
10 # https://docs.aws.amazon.com/cli/latest/reference/s3api/
11 echo "test" > test.txt
12 aws s3api put-object --bucket my-bucket --key dir-1/test.txt --body test.txt
13 aws s3api get-object --bucket my-bucket --key dir-1/test.txt test2.txt
14 cat test2.txt
15 aws s3 ls
Create lambda function
lambda_function.py
1 import boto3
2 import os
3
4 def lambda_handler(event, context):
5 message = 'Hello {} {}!'.format(event['first_name'], event['last_name'])
6 session = boto3.session.Session()
7 s3 = session.client( service_name='s3' )
8
9 buckets=[]
10 for bucket in s3.list_buckets()['Buckets']:
11 buckets.append(bucket['Name'])
12
13 response = s3.create_bucket(Bucket='examplebucket')
14
15 body = {
16 'message' : message,
17 'buckets' : buckets,
18 'AWS_ACCESS_KEY_ID' : os.environ["AWS_ACCESS_KEY_ID"],
19 'AWS_SECRET_ACCESS_KEY' : os.environ["AWS_SECRET_ACCESS_KEY"],
20 'AWS_DEFAULT_REGION' : os.environ["AWS_DEFAULT_REGION"],
21 'AWS_ENDPOINT_URL': os.environ['AWS_ENDPOINT_URL']
22 }
23
24 s3.put_object(Body=str(body), Bucket='examplebucket', Key='examplebucket/response.txt')
25 return body
1 nano lambda_function.py
2 zip py-my-function.zip lambda_function.py
3 aws lambda delete-function --function-name py-my-function
4 aws iam delete-role --role-name lambda-ex
5
6 aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
7
8 ROLE_ARN=$(aws iam list-roles | jq ".Roles[0].Arn" | sed 's/\"//g')
9
10 echo $ROLE_ARN
11
12 aws lambda create-function --function-name py-my-function --zip-file fileb://py-my-function.zip --handler lambda_function.lambda_handler --runtime python3.14 --role $ROLE_ARN --timeout 30
