{“ message”:“请求中包含的安全令牌无效。”}

时间:2019-07-04 12:07:07

标签: python-3.x amazon-s3 slack-api zeit-now

我正在使用无服务器Now工具来通过Slack API调用AWS。该脚本可以在本地和服务器上正常运行,但是在使用Now Platform使其工作时遇到了问题。

这是我得到的错误:

{"message":"The security token included in the request is invalid."}

关于此问题有几个问题,但是由于我看到运行cat ~/.aws/credentials的AWS凭证已正确配置,因此它们似乎无法回答我的问题。

我正在使用AWS Requests Auth

auth = AWSRequestsAuth(aws_access_key=os.environ['AWS_ACCESS_KEY_ID'],
                                   aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'],
                                   aws_host='restapiid.execute-api.us-east-1.amazonaws.com',
                                   aws_region='us-east-1',
                                   aws_service='execute-api')

headers = {"Content-Type":"application/json"}
response = requests.post('https://restapiid.execute-api.us-east-1.amazonaws.com/path', auth=auth, headers=headers, data=payload)

由于错误通常是403,我怀疑是一个Signature expired问题,但我不知道如何将Now timestamp与AWS Onetime时间戳同步。

1 个答案:

答案 0 :(得分:0)

我不好:os.environ['AWS_ACCESS_KEY_ID']os.environ['AWS_SECRET_ACCESS_KEY']在Now平台中是reserved variables。当您在Slack API或简单脚本中本地使用它们时,一切都很好,因为将使用配置文件,但现在,您需要存储并重命名它们:

now secret add ak "[your aws access key]"
now secret add sk "[your aws secret key]"
now -e AWS_AK=@ak  -e AWS_SK=@sk

因此您可以在代码中使用它们为

os.environ['AWS_AK']
os.environ['AWS_SK']