質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

API Gatewayに AWS CLI で POSTしたとき、エラーが発生して実行できない

kazuh1r010
kazuh1r010

総合スコア23

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

2回答

0評価

0クリップ

2104閲覧

投稿2018/04/17 12:56

編集2018/04/18 04:34

現在、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自体まだまだ初心者の為、他に原因があるかもしれません。
なので、その他の可能性についてのコメントでも構いません。

どなたか解決方法が分かる方いらっしゃいましたら、
ご教授よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。