質問編集履歴

1

実際のコードを記載していなかったため、加筆いたしました。

2020/07/31 11:58

投稿

Shinjuku1904
Shinjuku1904

スコア16

test CHANGED
@@ -1 +1 @@
1
- Pythonを使って、ファイルの中身を成形したい
1
+ 【内容加筆】Pythonを使って、ファイルの中身を成形したい
test CHANGED
@@ -1,8 +1,10 @@
1
- Pythonで、sshで接続した先にある、テキストファイルを読み込んで、中身を書き換えたいと考えております。
1
+ Pythonで、sshで接続した先にある、テキストファイルを読み込んで、中身を書き換え、「JSON形式の文字列にしたいと考えております。
2
2
 
3
- ---------------------------------------------------------------------------------------
4
3
 
4
+
5
+ ※コードはAWSのlambdaに取り込んで動作させたいと考えております。
6
+
5
- ※sshで接続した先にあるファイルを読み込んで表示するだけまではできています。
7
+ ※sshで接続した先にあるファイルを読み込んで表示することはできています。
6
8
 
7
9
 
8
10
 
@@ -30,29 +32,103 @@
30
32
 
31
33
 
32
34
 
33
- という形に成形したいと考えております。
35
+ という形に成形したいす。
34
36
 
35
37
 
36
38
 
37
- "検討していたコード"
39
+ エラーとしては以下の通りです。
38
40
 
39
- stdin, stdout, stderr = client.exec_command('cat home/etc/test.txt')
41
+ Syntax error in module 'lambda_function': invalid syntax
40
42
 
41
43
 
42
44
 
45
+ 実際のコードは以下の通りになります。
46
+
47
+ ``````python
48
+
49
+ import paramiko
50
+
51
+ import boto3
52
+
43
- lines = stdout.read()
53
+ import datetime
54
+
55
+ import os
44
56
 
45
57
 
46
58
 
59
+ print('Loading testdata lambda function')
60
+
61
+ today = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))).strftime('%Y%m%d')
62
+
63
+ #now = datetime.datetime.now()
64
+
47
- file_contents = '{"数字1":' + lines[2] + ', "数字2": ' + lines[4] + ', "数字3": ' + lines[5]}'
65
+ yesterday = (datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))) - datetime.timedelta(days=1)).strftime('%Y%m%d')
48
66
 
49
67
 
50
68
 
51
- のような形かなと思ったのですが、エラーしております。
69
+ def lambda_handler(event, context):
52
70
 
53
- どのように修正すればよろしいでしょうか。
54
71
 
72
+
73
+ #接続先情報の設定
74
+
75
+ client = paramiko.SSHClient()
76
+
77
+ client.set_missing_host_key_policy(paramiko.WarningPolicy())
78
+
79
+ user = os.environ['ID']
80
+
81
+ passwd = os.environ['PASS']
82
+
83
+ ip = os.environ['IP']
84
+
85
+ client.connect(ip,port=22,username=user,password=passwd)
86
+
87
+
88
+
55
- または、別の形でも構いません。
89
+ #接続先サーバー実行コマンド
90
+
91
+ stdin, stdout, stderr = client.exec_command('cat /home/tmp/test.txt')
92
+
93
+
94
+
95
+ # アップロードファイルの内容格納
96
+
97
+ lines = stdout.read()
98
+
99
+ file_contents = '{"数字1": ' + lines[2] + ', "数字2": ' + lines[4] + ', "数字3": ' + lines[5]}'
100
+
101
+ print(file_contents)
102
+
103
+ file_contents = file_contents.replace('\n','')
104
+
105
+ print(file_contents)
106
+
107
+ client.close()
108
+
109
+ bucket = os.environ['BUCKET']
110
+
111
+
112
+
113
+ #取得ファイルの保存
114
+
115
+ key = 'Testdata/' + 'json/' + today + '/' +'testdata_' + yesterday + '.json'
116
+
117
+ print(key)
118
+
119
+ s3 = boto3.resource('s3')
120
+
121
+ obj = s3.Object(bucket,key)
122
+
123
+ obj.put(Body=file_contents)
124
+
125
+ return
126
+
127
+ ```
128
+
129
+
130
+
131
+
56
132
 
57
133
 
58
134