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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

1103閲覧

Python3 出力方法がわからないのでご教授ください

ttoo

総合スコア126

Python 3.x

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

0グッド

1クリップ

投稿2019/04/03 10:49

☆python3コード
================================================
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:aws:sns:ap-northeast-1:842567375811:kotani:c19514bd-1a97-472d-ab4b-b5d3c4fc040b",
"Sns": {
"Type": "Notification",
"MessageId": "a532e5b2-ed7f-559c-8f25-b0ac9370762c",
"TopicArn": "arn:aws:sns:ap-northeast-1:842567375811:kotani",
"Subject": null,
"Message": "{"version":"0","id":"c336bdd3-16ab-2172-2b36-642781380d4e","detail-type":"AWS API Call via CloudTrail","source":"aws.ec2","account":"842567375811","time":"2019-04-03T09:23:44Z","region":"ap-northeast-1","resources":[],"detail":{"eventVersion":"1.05","userIdentity":{"type":"Root","principalId":"842567375811","arn":"arn:aws:iam::842567375811:root","accountId":"842567375811","accessKeyId":"ASIA4ILHN3PBZIWUXVM7","sessionContext":{"attributes":{"mfaAuthenticated":"false","creationDate":"2019-04-03T08:39:28Z"}},"invokedBy":"signin.amazonaws.com"},"eventTime":"2019-04-03T09:23:44Z","eventSource":"ec2.amazonaws.com","eventName":"StopInstances","awsRegion":"ap-northeast-1","sourceIPAddress":"106.140.9.176","userAgent":"signin.amazonaws.com","requestParameters":{"instancesSet":{"items":[{"instanceId":"i-0aec86a4ba480dae7"}]},"force":false},"responseElements":{"requestId":"cc17ddb4-86c0-4981-bba5-eced17a00fb8","instancesSet":{"items":[{"instanceId":"i-0aec86a4ba480dae7","currentState":{"code":64,"name":"stopping"},"previousState":{"code":16,"name":"running"}}]}},"requestID":"cc17ddb4-86c0-4981-bba5-eced17a00fb8","eventID":"c680d8d3-eea9-4340-beb1-d39465bd5d9e","eventType":"AwsApiCall"}}",
"Timestamp": "2019-04-03T09:24:31.955Z",
"SignatureVersion": "1",
"Signature": "lXbJplL4eD+59jSczImwKNA7AcJBw2E2yeami+IdpStfdvDWxtGKKjWc9cMGRdqYl58BINqa0vClztfu8mAlncqDhBZMYIC4TiO3Zi+qLYspSEYIKp0IRjWQFzejRaD1ly/yk8Ijf0d38oOTVa6cNdjVnyLzpW18goOoFDkJ+0ml6Ild4Pww52c11I9Fm39EAsMZJi6F7EOe1c/FmGtrbcOCxfVJwkDsLXzLXIDiHpYT+urGnUpFNbdJBDwHsWZjuXylhtctwx3i5iTKd/F7deswzyYAaziYsV1NDS4O0RzL818Nu8hCFvV13MhVP4xlxNcVtUnrVfIzYQWosk7cXQ==",
"SigningCertUrl": "https://sns.ap-northeast-1.amazonaws.com/SimpleNotificationService-6aad65c2f9911b05cd53efda11f913f9.pem",
"UnsubscribeUrl": "https://sns.ap-northeast-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:ap-northeast-1:842567375811:kotani:c19514bd-1a97-472d-ab4b-b5d3c4fc040b",
"MessageAttributes": {}
}
}
]
}
==============================================

上記のコードを変数名をtestとして、
message = test['Records'][0]['Sns']['Message']
print(message)

ここまでは出力したのですが、そこから先のコードがわからないので教えていただきたいです。

Records→Sns→Messageから"instanceId":"i-0aec86a4ba480dae7"のi-0aec86a4ba480dae7を出力したいのですがどのようにすれば出力できるでしょうか?

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

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

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

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

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

y_waiwai

2019/04/03 12:44

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
y_waiwai

2019/04/03 12:45

で、提示のコードではどういう動作をするんでしょうか。 エラーが出るならエラーメッセージを、そのままの形で提示してください
hayataka2049

2019/04/04 10:39 編集

とりあえずコピペしてみましたが、そもそもpython3コードとして動かないです
guest

回答1

0

ベストアンサー

message = test['Records'][0]['Sns']['Message'] はJSON形式の文字列なので、次のようにmessageをdictに変換してやります。

python

1import json 2dic = json.loads(message) 3

そうすると以下のようになるので、dic['detail']['requestParameters']['instancesSet']['items'][0]['instanceId']で取得できることがわかります。

python

1{'account': '842567375811', 2 'detail': {'awsRegion': 'ap-northeast-1', 3 'eventID': 'c680d8d3-eea9-4340-beb1-d39465bd5d9e', 4 'eventName': 'StopInstances', 5 'eventSource': 'ec2.amazonaws.com', 6 'eventTime': '2019-04-03T09:23:44Z', 7 'eventType': 'AwsApiCall', 8 'eventVersion': '1.05', 9 'requestID': 'cc17ddb4-86c0-4981-bba5-eced17a00fb8', 10 'requestParameters': {'force': False, 11 'instancesSet': {'items': [{'instanceId': 'i-0aec86a4ba480dae7'}]}}, 12 'responseElements': {'instancesSet': {'items': [{'currentState': {'code': 64, 13 'name': 'stopping'}, 14 'instanceId': 'i-0aec86a4ba480dae7', 15 'previousState': {'code': 16, 'name': 'running'}}]}, 16 'requestId': 'cc17ddb4-86c0-4981-bba5-eced17a00fb8'}, 17 'sourceIPAddress': '106.140.9.176', 18 'userAgent': 'signin.amazonaws.com', 19 'userIdentity': {'accessKeyId': 'ASIA4ILHN3PBZIWUXVM7', 20 'accountId': '842567375811', 21 'arn': 'arn:aws:iam::842567375811:root', 22 'invokedBy': 'signin.amazonaws.com', 23 'principalId': '842567375811', 24 'sessionContext': {'attributes': {'creationDate': '2019-04-03T08:39:28Z', 25 'mfaAuthenticated': 'false'}}, 26 'type': 'Root'}}, 27 'detail-type': 'AWS API Call via CloudTrail', 28 'id': 'c336bdd3-16ab-2172-2b36-642781380d4e', 29 'region': 'ap-northeast-1', 30 'resources': [], 31 'source': 'aws.ec2', 32 'time': '2019-04-03T09:23:44Z', 33 'version': '0'}

投稿2019/04/05 08:00

YasuhiroNiji

総合スコア584

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

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

ttoo

2019/04/05 10:19

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問