今週から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
질문됨 4년 전258회 조회
1개 답변
0

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

showkko
답변함 4년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인