今週からCloudFormationのRest APIが"Signature expired:"と言い出しました

0

こちらでは初めまして、showkkoと申します。

先週はうまくいっていたCloudFormationへのAPIリクエストが、今週に入ってうまくいかなくなりました。
返答は「SignatureDoesNotMatch」なのですが、その内容が

Signature expired: 20200110T064809Z is now earlier than <5分前> (<今> - 5 min.)

で、この「20200110T064809Z」は何故か固定なんです。

SignatureはVersion 2で作っており、Python 3で書くと以下のような感じです。

timestr=urllib.parse.quote_plus(datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ"))
sig_data="POST\ncloudformation.ap-northeast-1.amazonaws.com\n/\nAWSAccessKeyId="accessid"&Action=DescribeStackResources&SignatureMethod=HmacSHA256&SignatureVersion=2&StackName="stackname"&Timestamp="timestr"&Version=2010-05-15"

sig_seed=hmac.new(secretkey.encode("utf-8"),sig_data.encode("utf-8"),hashlib.sha256)

signature=urllib.parse.quote_plus(base64.b64encode(sig_seed.digest()).decode("utf-8"))

上記のようにグリニッジ標準時を取得して生成しており、少なくとも毎回「20200110T064809Z」という固定の日時で蹴られることはない筈なんですが…。
(変換前の文字列を出力して確認していますので、時間がおかしいことはない筈です。)

同様のコードでEC2ではうまくいきます。また、CloudFormationでも先週はうまくいっていました。
どなたか原因は想像つきますでしょうか?

showkko
gefragt vor 4 Jahren258 Aufrufe
1 Antwort
0

生でAPIを呼ぶのをやめ、SDKを使うことで回避しました。

showkko
beantwortet vor 4 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen