我正在使用无服务器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时间戳同步。
答案 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']