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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

954閲覧

【Golang、aws-sdk-go】 Iam署名付きリクエストがpostとputのみうまくいかない

smilax

総合スコア23

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/10/21 05:37

編集2020/10/21 07:43

goで認証済みリクエストのみAPIGAtewayにアクセスできるようにしたいです。
GETうまくいったのですが、PUTとPOSTがいまいちやりかたがわからなかったので質問させていただきます。
うまく行っていない原因は

_, err = g.signed.Sign(request, nil, "execute-api", "us-west-2", time.Now())

のnilにあると思います。このリクエストではbodyは不要なのですが、nliの部分にはどう書いたらいいでしょうか。また、bytes.NewBuffer(reqJSON)のようなbyte[]を渡した時はどう書けばいいのでしょうか

golang

1func (g *GuestRepository) CreateGuest(ctx context.Context) (string, error) { 2 const APPLICATION_JSON = "application/json" 3 4 // APIを呼び出す。 5 // res, err := http.Post(g.url, APPLICATION_JSON, nil) 6 // if err != nil { 7 // log.Println("failed to create guest: ", err) 8 // return "", err 9 // } 10 // fmt.Println(res.Body) 11 // APIを呼び出す。 12 request, err := http.NewRequest("POST", g.url, nil) 13 if err != nil { 14 log.Println("failed to create request :", err) 15 return "", err 16 } 17 _, err = g.signed.Sign(request, nil, "execute-api", "us-west-2", time.Now()) 18 if err != nil { 19 log.Println("failed to request:", err) 20 return "", err 21 } 22 client := &http.Client{} 23 res, err := client.Do(request) 24 if err != nil { 25 log.Println("failed to update request:", err) 26 return "", err 27 } 28}

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

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

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

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

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

guest

回答1

0

ベストアンサー

ads-sdk-goに関する質問であると仮定します。(ということがわかるように質問にaws-sdk-goに関する質問であると追記をお願いします。)
また、うまくいかないとのことであればそのエラーメッセージを追記してください。

https://github.com/aws/aws-sdk-go/blob/master/aws/signer/v4/v4_test.go#L196-L211
この辺りが参考になると思います。

お察しの通りnilのところにはリクエストボディに関するio.ReadSeekerが必要です。
上記参考コードでは「strings.NewReader("{}")」を渡していますね。

投稿2020/10/21 07:04

編集2020/10/21 07:05
nobonobo

総合スコア3367

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問