電気ひつじ牧場

技術メモ

Request is missing Authentication Token: OperationErrorになる

StepFunctionをlambda(Go 1.x)からキックするようなコードを書いてる時に、StartExecutionを呼び出すと次のようなエラーが出た。

operation error SFN: StartExecution, https response error StatusCode: 400, RequestID: xxxx-xxxx-xxx-xxxx, api error MissingAuthenticationTokenException: Request is missing Authentication Token: OperationError

lamdbaのロールを変更してみても解決せず、ggってもそれらしいのが出てこないのでなんだこれってなってた。

原因

clientをこのように定義していた。

client := sfn.New(sfn.Options{
    Region: "ap-northeast-1",
})

正しくはこう。

cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("ap-northeast-1"))
if err != nil {
    log.Fatalf("unable to load SDK config, %v", err)
}
client := sfn.NewFromConfig(cfg)

sfn.Newは返されるクライアントのカスタマイズ性がより高く、一方で環境からクレデンシャルを取ってくれないようだ。 ちゃんとドキュメントは読もうな!