前提・実現したいこと
現在、LambdaからGoでGoogle AnalyticsのPV数取得をSDKを使用して実装しようとしています。
発生している問題・エラーメッセージ
Google Analytics APIからPV数を取得するところの処理でtimeoutになってしまいPV数が取得できない状態になっています。
下記のエラーは、Goで実装したものをzipにしてlambdaから実行した際に出ているエラーです。
Lambdaに載せず、Ginでサーバーを動かして、PV数を取得して表示しるメソッドを実装してエンドポイントを叩くとちゃんとPV数の取得がされてできているので、Lambdaの方でなぜできないのかの理由がわからず困っております
failed to get reports. error: [Post https://analyticsreporting.googleapis.com/v4/reports:batchGet?alt=json: oauth2: cannot fetch token: Post https://accounts.google.com/o/oauth2/token: dial tcp ********* i/o timeout]
該当のソースコード
エラーが起きている箇所のコードです。
go
1f, err := Assets.Open("/ga-key.json") 2if err != nil { 3 log.Fatalf("failed to opne json file. error: [%v]", err) 4} 5by := new(bytes.Buffer) 6io.Copy(by, f) 7buf := by.Bytes() 8cnf, err := google.JWTConfigFromJSON(buf, ga.AnalyticsReadonlyScope) 9if err != nil { 10 log.Fatalf("failed to create config from json. error: [%v]", err) 11} 12req := &ga.GetReportsRequest{ 13 ReportRequests: []*ga.ReportRequest{ 14 {}, 15 } 16res, err := svc.Reports.BatchGet(req).Do() 17if err != nil { 18 log.Fatalf("failed to get reports. error: [%v]", err) 19}
シンプルにエンドポイントを作成し、実装している箇所です。こっちではエラーが起きません。
go
1data, err := ioutil.ReadFile("ga-key.json") 2if err != nil { 3 return nil, errors.Wrap(err, "failed to read a json file") 4} 5 6conf, err := google.JWTConfigFromJSON(data, ga.AnalyticsReadonlyScope) 7if err != nil { 8 return nil, errors.Wrap(err, "failed to decode JSON") 9} 10netClient := conf.Client(oauth2.NoContext) 11svc, err := ga.New(netClient) 12if err != nil { 13 return nil, errors.Wrap(err, "failed to create Google Analytics Reporting Service") 14} 15 16req := &ga.GetReportsRequest{ 17 ReportRequests: []*ga.ReportRequest{ 18 {}, 19 } 20
どなたかお教えいただけるとありがたいです。よろしくお願い致します。
あなたの回答
tips
プレビュー