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

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

新規登録して質問してみよう
ただいま回答率
85.46%
AWS Lambda

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

324閲覧

PythonでAPIを実行しDataFrame(Pandas)を使い結果を元に、次のAPIを実行し、結果を一覧化(csv)したい

msy47

総合スコア26

AWS Lambda

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/12/22 09:47

編集2022/12/22 23:59

前提

Lamda(python)において、vmanageへAPIを実行し、その結果をもとにデータ成形やCSV作成を考えております。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 1つ目のAPIを実行し、結果を受信する

   vmanageのAPI(/dataservice/device)

  • 2つ目に実行するAPIへ1つ目で受け取ったDeviceIDをもとに更にAPIを実行する

   vmanageのAPI(/dataservice/devie/ip/nat/translation?deviceId=)

  • 2つ目のAPIの結果を一覧にしてcsvとする

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

print(lendf)
で各デバイスのトンネル数(IP数=行数)をカウントは確認できたのですが
これらをまとめようとdfを利用しようと考えておりますが、うまくいかず

エラーメッセージ:なし

該当のソースコード

Lambda(Python)

1 2 3import json 4import boto3 5import csv 6import numpy as np 7import pandas as pd 8 9import requests 10import os 11import urllib3 12from datetime import datetime 13urllib3.disable_warnings(urlib3.exceptions.InsecureRequests.InsecureRequestWarning) 14 15def lambda_handler(event, context): 16 s3 = boto3.resource(`s3`) 17 bucket_name _ os.environ.get(`S3_BUCKET`) 18 vmange_info_df = pd.read_csv(vnamage_info) 19 20 device_info = "tmp/device_info.csv" 21 bucket.download_file(os.environ.get(`CSV_DEVICE_INFO`), device_info) 22 device_info_df = pd.read.csv(device_info) 23 24 ipsec_tunnel_df = get_request(vmanage_info_df) 25 26 def get_request(vmanage_info_df): 27 api_datalist = [] 28 for row in vmanage_info_df.itertuples(): 29 vmanage_host = row[1] 30 vmanage_port = row[2] 31 vmanage_username = row[3] 32 vmanage_password = row[4] 33 34 base_url = `https://%s:%s`%(vmanage_host, vmanage_port) 35 36 login_action = `/j_security_check` 37 38 login_data = {`j_username` : vmanage_username, `j_password` : vmanage_password} 39 40 login_url = base_url + login_action 41 42 session = requests.session() 43 44 login_response = session.post(url=login_url, data=login_data, verify=False) 45 if login_token.status_code = 200: 46 if b`<html>` in login_token.content: 47 print("Login token Failed") 48 exit(1) 49 50 session.headers[`X-XSRF-TOKEN`] = login_token.content 51 52 53 device_url = base_url + `/dataservice/device` 54 55 df = pd.json_normalize(json_data["data"]) 56 df = df[(df["device-type"] == "vedge") & (df["reachability"] == "reachable")] 57 58 59 for data in df.itertuples() 60 deviceid = data[1] 61 nat_translation_url = base_url + `/dataservice/devie/ip/nat/translation?deviceId=` + deviceid 62 nat_translation_list = sessin.get(url=nat_translation_url, verify=False) 63 if nat_translation_list.status_code == 200: 64 json_data = nat_translation_list.json = () 65 else: 66 print(nat_translation_list.status_code) 67 68 df = pd.json_normalize(json_data["data"] 69 print(df) 70 71 print(len(df)) 72

print(len(df))の結果

inside-local-addr vrf-name ・・・ application-type inside-global-addr
0 123.456.789.012 -gloal- ・・・ 0 123.456.789.012
[1 row x 17 columns]
1

試したこと

以下では実現できませんでした。

df = df[["system-ip", "host-name", "device-model"]]
df[Tunnel Count] = len(df)
c = df.pop(Tunnel Count)
df.insert(df.shape[1], c.name, c)
df.insert(9, c.name, c)

以下の出力を想定しております。

"system-ip", "host-name", "device-model", "Tunnnel Count"
123.456.678.901, ABC-host, Model-ABC, 999

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

Python3.8

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

こちらの問題は以下のQAで解決しました。
https://teratail.com/questions/mmewzxmj09f5sn

投稿2022/12/23 07:21

msy47

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問