現在、APIを作成したいと思い、本を参考にサンプルを作成しているところです。
開発環境は、cloud9で
参考にしている本は、
「AmazonWebServicesを使ったサーバーレスアプリケーション開発ガイド(https://www.amazon.co.jp/dp/B07BF4G5C1/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)」
です。
その中で、デプロイしたAPIに対してリクエストをするコマンドが
あるのですが、エラーの内容が抽象的で何が原因か突き止められませんでした。
コードは、以下の様になっています。
curl -X POST https://(API.ID部分).execute-api.ap-southeast-1.amazonaws.com/Prod/images
エラーメッセージは、以下の様になっています。
{"message": "Internal server error"}
lambda関数のコード(これが原因の可能性もあるので)
import boto3 import uuid import json import logging import os import datetime from botocore.exceptions import ClientError logger = logging.getLogger() logger.setLevel(logging.INFO) dynamodb = boto3.resource('dynamodb',region_name = 'ap-southeast-1') table = dynamodb.Table(os.getenv('TABLE_NAME')) def generate_id(): return str(uuid.uuid4()) def get_timestamp(): now = datetime.datetime.utcnow() return int(now.timestamp()) def get_presigned_url(bucket_name, key, type): s3 = boto3.client('s3', region_name = "ap-southeast-1") url = s3.generate_presigned_url( ClientMethod = 'put_object', Params = {'Bucket' : bucket_name, 'Key' : key, 'ContentType' : type}, ExpiresIn = 3600, HttpMethod = 'PUT', ) return url def lambda_handler(event, context): body = json.loads(event['body']) ext = body['type'].split('/')[1] photo_id = generate_id() logger.info(photo_id) logger.info(ext) logger.info(body['type']) url = get_presigned_url(os.getenv('BUCKET_NAME'),photo_id + "." + ext,body['type']) item = { 'photo_id': photo_id, 'timestamp': get_timestamp(), 'status' : 'Waiting', 'type' : body['type'], 'size' : body['size'] } try: table.put_item( Item = item ) except ClientError as e: logging.info(e.response['Error']['Message']) response = { 'statusCode': '400', 'body': e.response['Error']['Message'], 'headers': { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin' : '*' }, } return response else: item['signed_url'] = url response = { 'statusCode': '200', 'body': json.dumps(item), 'headers': { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin' : '*' }, } return response
AWS自体まだまだ初心者の為、他に原因があるかもしれません。
なので、その他の可能性についてのコメントでも構いません。
どなたか解決方法が分かる方いらっしゃいましたら、
ご教授よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/19 01:52