当前位置: 首页 > 知识库问答 >
问题:

使用具有临时凭据的boto3

姚凯歌
2023-03-14

我想使用boto3上传一个文件到AWS S3。但我只能临时访问S3,这是由一个不在我控制之下的Web服务提供的。我获得了以下凭据信息:

    {
        "key": <string>,
        "x-amz-algorithm": <string>,
        "x-amz-credential": <string>,
        "x-amz-date": <string>,
        "policy": <string>,
        "x-amz-signature": <string>
    }

据我所知,例如,这些信息可以用于POST请求。但我无法找到如何将此信息与boto3命令结合使用

s3 = boto3.client('s3')

通常需要aws_访问密钥id和aws_机密访问密钥。这篇文章建议,这应该是可能的:

您应该通过AWS安全令牌服务(STS)生成临时凭证,而不是签署URL(通常在通过web浏览器进行呼叫时使用)

[...]

然后,您的Python应用程序在调用boto时将使用这些凭据

但是我无法找到,如何向博托客户提供临时凭据。

共有1个答案

荣轶
2023-03-14

看起来您已经获得了一个AmazonS3预签名URL。这是一种授予对特定AmazonS3命令的临时访问权的方法,该命令具有授权请求的哈希签名。

虽然使用访问密钥和秘密密钥生成请求,但不能从请求中提取秘密密钥。相反,它被用来创建签名。)因此,您不能使用boto3使用提供的信息发出请求。这完全是故意的。

使用安全令牌服务生成临时凭据与生成预先签名的URL不同。STS将提供boto3可以使用的凭据。然而,在向您提供访问信息时,他们并没有这样做。

 类似资料:
  • 我必须在nifi进程中使用aws临时凭证AccessKey、SecretKey和令牌来访问S3对象。AccessKey、SecretKey和Token将由Api调用提供。如何在nifi ListS3对象等中使用这些临时凭证? 我发现的选项之一是使用AWSCre的alsProviderControlllerService,因为这可以根据API调用更新控制器服务的值吗? 在这个场景中我还可以使用其他选

  • 我需要给我的客户提供临时访问密钥来连接到物联网服务(发布、接收等)。)。为了提供这种访问,我创建了一个Lambda函数,该函数调用来创建临时STS密钥。那些钥匙正在被创建,看起来很好。 我在具有以下内联策略的角色中使用带有Lambda的assumeRole: 注意:我已经添加了ec2权限来尝试辅助(简化)测试。 此角色具有开放的信任关系: 但是,在我的客户端代码(浏览器)中,我无法连接到IoT,并

  • 因此,我正在使用spring boot应用程序,我希望从该应用程序访问AWS资源,我知道如何通过I am凭据和STS凭据访问AWS资源,我正在寻找一个通过spring boot应用程序使用以下临时AWS凭据的示例或方法。 AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY AWS_SESSION_TOKEN AWS_SESSION_ID 注意:我尝试过通过BasicSessi

  • 为了接收STS临时凭据,我使用以下代码: 调用返回生成的临时凭据。有了这些凭据,我就可以成功地使用java aws sdk AmazonDynamoDBClient(非Spark方法)从DynamoDB获取数据。 用Spark有可能吗?spark是否允许使用以下内容:?

  • 我需要在我的android应用程序中实现搜索功能,该应用程序使用工具栏、SlidingTableOut和保存片段的ViewPager。在每个片段中都有一个带有项目列表的RecyclerView。 recycle view数据是在单独的类(DataAccess.java)中静态定义的,只需调用(不传递新数据)即可更新这些列表并刷新recycle view 有什么简单的方法可以在不改变数据的情况下,在

  • 问题内容: 我希望使用Amazon的Elasticsearch服务器在Django数据库中搜索长文本字段。但是,我也不想向那些没有登录并且不想通过模糊性或某些IP限制策略依赖安全性的用户公开此搜索(除非它可以与现有的heroku应用完美配合,部署Django应用的位置)。 Haystack似乎在这方面还有很长的路要走,但是似乎没有一种简单的方法来配置它以使用Amazon的IAM凭据来访问Elast