我正在研究基于API网关/ Lambda的项目。请求流程如下:
sts.assumeRole()
并成功生成accessKeyId
和secretAccessKey
accessKeyId/secretAccessKey
尝试访问S3存储桶中的项目除最后一个步骤外,该过程的每个步骤都在工作(通过控制台日志确认)。当我尝试使用生成的凭据时,收到以下错误消息:
{
"message": "The AWS Access Key Id you provided does not exist in our records.",
"code": "InvalidAccessKeyId",
"region": null,
"time": "2019-07-19T22:05:05.817Z",
"requestId": "...",
"extendedRequestId": "...",
"statusCode": 403,
"retryable": false,
"retryDelay": 68.28400384749038
}
我知道,这强烈暗示着我不了解STS的某些内容,但我一直无法弄清楚。 (例如,当授权者lambda完成运行时,AWS是否会取消分配生成的角色?)
为什么AWS会拒绝新生成的一对凭据,并报告此错误消息?
答案 0 :(得分:1)
根据the AssumeRole documentation,返回的import discord
from discord.ext import commands
client = discord.Client()
class utility(commands.Cog):
def __init__(self, client):
self.client = client
@commands.Cog.listener()
async def on_ready(self):
print("Cog utility pronto!")
@commands.command()
async def ping(self, ctx):
await ctx.send(f"Pong! {round(client.latency * 1000)}ms")
@commands.command()
async def clear(ctx, amount=5):
await ctx.channel.purge(limit=amount)
await ctx.send(f"{amount}Messaggi eliminati")
def setup(client):
client.add_cog(utility(client))
也必须使用生成的凭据包含在任何请求中。
使用临时安全凭证进行呼叫时,呼叫必须包含会话令牌,该令牌将与这些临时凭证一起返回。 AWS使用会话令牌来验证临时安全凭证。
我假设生成的凭据与用户访问密钥完全一样,并且希望仅使用这两条信息才能成功进行呼叫。