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

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

ただいまの
回答率

90.43%

  • AWS(Amazon Web Services)

    2248questions

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

  • Python 2.7

    1363questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • AWS Lambda

    80questions

Amazon Rekognitionを利用した画像解析システムの構築において、DynamoDB と Amazon Elastic Searchのzipファイルを利用した接続が出来ません。

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 27

前提・実現したいこと

Amazon Rekognitionを利用した画像解析システムの構築において、DynamoDB と Amazon Elastic Searchのzipファイルを利用した接続が出来ません。

発生している問題・エラーメッセージ

AWSを利用して表題の件を実現したかったのですが、Lambda関数を用いたDynamoDB と Amazon Elastic Searchのzipファイルを利用した接続が出来ません。

以下のコードをzipファイルとしてLambda関数に用いたのですがzipファイルにすることがどうしもできません。

該当のソースコード

import requests
import json
from aws_requests_auth.aws_auth import AWSRequestsAuth
import random
import string
import datetime
from urlparse import parse_qs

print('Loading function')

def lambda_handler(event, context):
auth = AWSRequestsAuth(
aws_access_key='xxxxxxxxxxxxxxxxxxxx',
aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
aws_host='elastic-search-endpoint',
aws_region='us-east-1',
aws_service='es'
)
for record in event['Records']:
dynamodb = record['dynamodb']
if "NewImage" in dynamodb.keys():
strlabel = (json.dumps(record['dynamodb']['NewImage']['label']['S']))
strconfidence = str((json.dumps(record['dynamodb']['NewImage']['confidence']['N'])))
strimage = str((json.dumps(record['dynamodb']['NewImage']['image']['S'])))
label = strlabel.replace("\"", "")
confidence = strconfidence.replace("\"", "")
image = strimage.replace("\"", "")
now = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S%z")

n = 5
random_str = ''.join([random.choice(string.ascii_letters + string.digits) for i in range(n)])
url = ("https://elastic-search-endpoint/index/number/"+random_str)
res = requests.post(url, data=json.dumps({"@timestamp": now, "label": label, "confidence": int(confidence), "image": image}), auth=auth)

試したこと

補足情報(FW/ツールのバージョンなど)

こちらのコードを参考にすればできるということなのですが、数字で指定した1-5の行がネットを調べてモジュールを作成していることはわかるのですが存在意味やこれらをエラーを出さずに実行できる方法が分かりません。
>不明点 0. mkdir /dynamodb_to_es**

  1.  cd /dynamodb_to_es
  2.  pip install requests aws_requests_auth -t .
  3.  
  4.  vi lambda_function.py**```

!/usr/bin/python
*-# -*- coding: utf-8 -*-

import requests
import json
from aws_requests_auth.aws_auth import AWSRequestsAuth
import random
import string
import datetime
from urlparse import parse_qs

print('Loading function')

def lambda_handler(event, context):
for record in event['Records']:
struser = (record['dynamodb']['NewImage']['user']['S'])
strtime = (record['dynamodb']['NewImage']['time']['S'])
strtask = (record['dynamodb']['NewImage']['task']['S'])
user = struser.replace("\"", "")
time = strtime.replace("\"", "")
task = strtask.replace("\"", "")
now = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S%z")

auth = AWSRequestsAuth(aws_access_key='xxxxxxxxxxxxxxxxxxxx',
aws_secret_access_key='xxxxxxxxxxxxxxxxxxxx',
aws_host='search-xxxxxxxxxx-1234567890.ap-northeast-1.es.amazonaws.com',
aws_region='ap-northeast-1',
aws_service='es')
n = 5
random_str = ''.join([random.choice(string.ascii_letters + string.digits) for i in range(n)])
url = ("https://search-xxxxxxxxxx-1234567890.ap-northeast-1.es.amazonaws.com/index_name/number/"+random_str)
res = requests.post(url, data=json.dumps({"@timestamp": now, "user": user, "task": task}), auth=auth)
return (res.content)

5. zip -r dynamodb_to_es.zip *

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • AWS(Amazon Web Services)

    2248questions

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

  • Python 2.7

    1363questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • AWS Lambda

    80questions