前提・実現したいこと
フロントエンド:React
バックエンド:Python Lambda Function
Reactで直接S3に画像をアップロードし、アップロード時にLambdaFunctionで処理をしたいと考えています。
Localでテストした後にAWSにデプロイしたいのですが、S3アップロードをトリガーにLocal Lambda Functionを動かす方法がわかりません。
Localではテストできないのでしょうか?
AWS toolkit にてLambdaアプリケーションを作成し、sam local start-api -p 8000で起動しています。
該当のソースコード
Python
1import json 2import urllib.parse 3import boto3 4 5def lambda_handler(event, context): 6 # ---for local test--- 7 s3 = boto3.client("s3") 8 9 # Get the object from the event and show its content type 10 bucket = event["Records"][0]["s3"]["bucket"]["name"] 11 key = urllib.parse.unquote_plus(event["Records"][0]["s3"]["object"]["key"], encoding="utf-8") 12 try: 13 response = s3.get_object(Bucket=bucket, Key=key) 14 print("CONTENT TYPE: " + response["ContentType"]) 15 return response["ContentType"] 16 except Exception as e: 17 print(e) 18 print( 19 "Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.".format( 20 key, bucket 21 ) 22 ) 23 raise e
yaml
1Resources: 2 MyBucket: 3 Type: AWS::S3::Bucket 4 BucketName: develop-test-bucket 5 6 CreateVideoFunction: 7 Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction 8 Properties: 9 CodeUri: lambdas/create_video/ 10 Handler: app.lambda_handler 11 Runtime: python3.8 12 Events: 13 CreateVideo: 14 Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api 15 Properties: 16 Path: /create_video 17 Method: GET 18 FileUpload: 19 Type: S3 20 Properties: 21 Bucket: !Ref MyBucket 22 Events: s3:ObjectCreated:*
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/11 08:23