generate_presigned_post 中的 Boto3 InvalidAccessKeyId

2024-04-30

我正在使用 Python 的 Chalice 库创建 AWS Lambda 和 API。我的 AWS 凭证是使用 github 工作流程 aws-actions 注入的,它能够chalice deploy。端点正在运行,并且正在完美部署到 AWS。

问题是:

我使用 Boto3 使用其功能创建预签名上传表单generate_presigned_post位于此处的文档:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html

但是当我使用该函数的响应并用它生成一个 html 时,在提交要上传的文件后,它返回我

<Error>
<Code>InvalidAccessKeyId</Code>
<Message>
The AWS Access Key Id you provided does not exist in our records.
</Message>

我检查了所有内容,似乎它使用了错误的 AWS_ACCESS_KEY,但如果它完美地部署到 AWS,我认为这不是问题(至少目前如此)。我使用 boto3 客户端,它似乎会自动找到 aws 凭证,但它似乎没有找到我的(或发生的任何情况)并提供错误的 AWS_ACCESS_KEY。

import boto3

S3_CLIENT = boto3.client('s3')
BUCKET = 'bucket_name'

response = S3_CLIENT.generate_presigned_post(
            BUCKET,
            Key="{$filename}",
            Fields=None,
            Conditions=None,
            ExpiresIn=3600
        )

它返回正确的响应,但与表单集成并使用时,表单返回错误。


由于 lambda 和临时键的性质,这实际上比看起来要复杂一些。我只想说您应该遵循以下步骤:

  1. 创建一个 IAM 角色,该角色有权为相关存储桶生成预签名 URL。

  2. 获取 lambda 基本执行角色并添加该角色的权限以代入步骤 1 中的角色。

  3. 在您的 boto3 代码中,添加一个步骤以在生成签名 URL 之前承担步骤 1 中的角色。像这样的事情:

    import boto3
    
    sts_client = boto3.client('sts')
    
    assumed_role_object = sts_client.assume_role(
        RoleArn='arn_of_role_to_assume'
    )
    
    credentials = assumed_role_object['Credentials']
    
    s3_client = boto3.client(
        's3',
        aws_access_key_id=credentials['AccessKeyId'],
        aws_secret_access_key=credentials['SecretAccessKey'],
        aws_session_token=credentials['SessionToken'],
    )
    
    s3_client.generate_presigned_url......
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

generate_presigned_post 中的 Boto3 InvalidAccessKeyId 的相关文章

  • Laravel S3 检索视频以流式传输

    我通过 Laravel 应用程序将视频存储到 Amazon S3 效果很好 但我无法 流式传输 它们 这是例如 URL https website com video 342 qt api token a5a18c9f f5f6 5d66
  • 如何在 Ubuntu 16.04 上的 Python 3 / Matplotlib 2 中安装底图?

    I tried pip3 install basemap but Basemap https sourceforge net projects matplotlib files matplotlib toolkits 好像不在 PyPI 上
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • Python 3 os.urandom

    在哪里可以找到完整的教程或文档os urandom 我需要获得一个随机 int 来从 80 个字符的字符串中选择一个字符 如果你只需要一个随机整数 你可以使用random randint a b 来自随机模块 http docs pytho
  • Sublime Text 插件开发中的全局 Python 包

    一 总结 我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包 而不是 Sublime Text 目录的 Python 包 Sublime Text使用自己的Python环境 而不是
  • 推送到 ECR 存储库的图像达到最大数量后会发生什么

    根据Amazon ECR 服务限制 http docs aws amazon com AmazonECR latest userguide service limits html 每个存储库的最大图像数量为 1 000 超过此限制后 最旧的
  • 连接mysql和python.3

    我是 django 的新手 使用 django 1 5 和 python 3 3 有没有办法在 python 3 3 上安装 mysqlDB 或 有其他方法可以连接它们吗 PyMySQL https github com petehunt
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • Python Tkinter,显示实时数据

    我想在 GUI 中显示实时数据tkinter 我得到的数据包含list两个整数的 current voltage 我每秒都在获取新数据 我成功创建了一个 GUI 现在我想知道如何在 GUI 中显示数据Label小部件 python tkin
  • 发布到 AWS...Visual Studio 2017 中缺失

    我正在尝试将 lambda 函数发布到 AWS 但我的 VS 解决方案资源管理器的项目右键单击菜单在 Visual Studio 2017 中没有 发布到 AWS 选项 这是一天前出现的 如何或可以将 发布到 AWS 添加到 Visual
  • 记录 pyarrow 在 S3 上创建的 parquet 文件名

    我们使用 pyarrow 将数据附加到存储在 S3 已分区 中的现有 Parquet 数据集 它每小时在 AWS lambda 上运行几次 一个最小的例子是 import pyarrow as pa import pyarrow parqu
  • Python 去掉字节 b' '

    import save string with open image jpg rb as f byte f read 1 while byte b byte f read 1 print byte 我得到的字节如下 b x00 我该如何摆脱
  • 拖动数据获取信号发射两次 python gtk3

    我希望源也是目的地 我实现了下面的信号 但拖动数据获取信号触发了两次 第二次 数据变量 在 on drag data get 中 被自动选择的 ListStore 项填充 class DragSource Gtk TreeView def
  • Rails 4.1 AWS Beanstalk 找不到秘密密钥库

    我正在尝试在 AWS Beanstalk 上上传我的 Rails 项目 我已经运行 eb init eb start 并将数据库设置配置为指向 RDS 在我使用 git aws push 推送并等待 AWS 服务器启动后 提供的链接显示 5
  • 根据日期列过滤并创建列

    我有一个样本数据如下 date Deadline 2018 08 01 2018 08 11 2018 09 18 2018 12 08 2018 12 18 我想用代码中描述的条件填写截止日期列 如 1 DL 2 DL 3 DL 等 基于
  • 如何恢复丢失的aws服务器实例的私钥?

    我丢失了 AWS 实例的私钥 我在控制台面板中搜索了该选项 恐怕你可能不走运 当您启动实例时 您应该指定密钥的名称 您计划用于连接到实例的对 如果你不指定 启动实例时现有密钥对的名称 您 将无法连接到实例 当您连接到 例如 您必须指定与密钥
  • 返回在 REST 控制器中包装 S3Object.getObjectContent() 的 ResponseEntity 是否安全?

    我正在开发一个 Spring Boot 应用程序 它应该允许用户通过指定的应用程序 REST 接口间接从 Amazon S3 下载文件 为此 我有一个 REST Controller 它向用户返回一个 InputStreamResource
  • 从由空格分隔的单个输入整数列表创建二维数组

    我正在解决一些问题geeksforgeeks我遇到了一个特定的问题 其中在测试用例中提供了输入 如下所示 2 2 denotes row column of the matrix 1 0 0 0 all the elements of th
  • 加入语音频道(discord.py)

    当我尝试让我的机器人加入我的语音频道时 出现以下错误 await client join voice channel voice channel 产生错误的行 Traceback most recent call last File usr
  • Django 多个外键,相同的相关名称

    我想创建一个模型 1 其中具有相同其他模型 2 的多个外键 我希望这些外键具有相同的related name因为每个外键将指向 model 2 的不同实例 因为我需要所有外键的一个反向关系 也许一个例子会更明确 class Parent M

随机推荐