ある日、AWS Cloudwatch Logからデータを取得し、特別な方法で処理し、グラフに美しく表示したいという思いがありました。 Google Spreadsheetはデータの視覚化に優れており、以前は同様のタスクでRubyを使用してデータをロードしていました。 ただし、同じrubyスクリプトをどこかでホストし、定期的に実行する必要があります。1つのAPI(AWS)からデータを要求し、別のAPI(Spreadsheet)に配置するだけです。 Spreadsheet自体がデータをリクエストできればいいのですが、Google Scriptを使用してデータをリクエストできることがわかりました。 実際にGoogleドックがいくつできるかは驚くべきことです。
Google Scriptを使用すると、JavaScriptを使用してカスタム関数やカスタムマクロを作成できるだけでなく、外部APIにもアクセスできます。
AWSにはJavaScript SDKがあるため、問題はないと思っていましたが、そこにはありませんでした。 GSプロジェクトにインポートされているこのSDKは、「ウィンドウ」オブジェクトを見つけることができず、機能しないことが判明しました。
APIドックを読んで、リクエストの署名計算を自分で実装する必要がありました。 文字列を接着してハッシュを計算するだけで、技術的に複雑なものはありません。 したがって、詳細には触れませんが、誰かが同様のタスクに遭遇した場合に備えて、単に私の決定を提示します。
githubに投稿されたコード
その動作を確認するには、次のことができます。
- 文書のコピーを作成します
- 「ツール」->「スクリプトエディタ」を開きます
- 「ファイル」->「プロジェクトのプロパティ」->「スクリプトのプロパティ」に「access_key_id」と「secret_access_key」の行を追加し、APIキーの値を指定します
- 次に、「Code.gs」ファイルを開き、「dataFromCloudWatch」関数を実行します
- 結果は[表示]-> [進捗レポート]に表示されます。 これは簡単にするためです。 実際のタスクでは、答えは簡単に解析され、値をスプレッドシートの対応するセルに貼り付けます。
コードはGetMetricStatisticsリクエストを使用しますが、必要に応じて、他のメソッドをリクエストできます。署名アルゴリズムは変更されません。
更新:「リソース」->「現在のプロジェクトのトリガー」からこの機能の定期的な起動を設定できることを完全に忘れました。