AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1005664
Accepted
Friedrich 'Fred' Clausen
Friedrich 'Fred' Clausen
Asked: 2020-03-06 01:29:25 +0800 CST2020-03-06 01:29:25 +0800 CST 2020-03-06 01:29:25 +0800 CST

刷新 AWS 临时凭证

  • 772

我们对 AWS 使用身份验证流程,您可以通过该流程进行身份验证、执行 MFA 步骤,然后获得有效期为一小时的凭证。通常这些然后放入~/.aws/credentials。但是,在执行长时间运行的 awscli 操作(例如通过 复制大文件)时aws s3 cp ...,凭据会过期并且命令不会成功完成。

我们已尝试重新运行命令以重新进行身份验证并因此重新填充,~/.aws/credentials但是正在进行的命令不会“看到”这一点,并且在原始凭据到期时仍然会失败。

这个应该怎么处理?

amazon-web-services aws-cli
  • 1 1 个回答
  • 4342 Views

1 个回答

  • Voted
  1. Best Answer
    MLu
    2020-03-06T01:59:02+08:002020-03-06T01:59:02+08:00

    你有几个选择...


    更长的会话持续时间

    您可以将最长会话持续时间设置为最长12 小时- 这对于您的长时间运行的任务可能已经足够了。

    凭证有效性

    不确定您是如何获取临时凭证的,您可能必须将会话持续时间设置为 12 小时,并且某些工具请求令牌的默认有效期为 1 小时。

    另请查看可能有助于您的工作流程的get-credentials脚本。也许,我不知道你现在到底在做什么,但是写临时信用~/.aws/credentials通常不是最好的做法。


    先复制到EC2

    如果您无法增加最大持续时间设置,您可以通过以下方式解决限制:

    1. 首先将数据复制到 EC2 实例,例如使用rsync.

    2. 然后从 EC2 上传到 S3,利用自动更新的实例EC2 Instance Role。此外,从 EC2 复制到 S3可能会更快。


    在本地使用 EC2 凭证

    您还可以“窃取” EC2 角色凭证并在本地使用它。看看这个get-instance-credentials脚本。

    [ec2-user@ip-... ~] ./get-instance-credentials
    export AWS_ACCESS_KEY_ID="ASIA5G7...R3KG5"
    export AWS_SECRET_ACCESS_KEY="bzkNi/9YV...FDzzd0"
    export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEKf....PUtXw=="
    

    这些信用通常可以持续 6 小时。

    现在将这些行复制并粘贴到您的本地非 EC2 机器上。

    user@server ~ $ export AWS_ACCESS_KEY_ID="ASIA5G7...R3KG5"
    user@server ~ $ export AWS_SECRET_ACCESS_KEY="bzkNi/9YV...FDzzd0"
    user@server ~ $ export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEKf....PUtXw=="
    

    并验证凭据是否有效:

    user@server ~ $ aws sts get-caller-identity
    {
        "UserId": "AROAIA...DNG:i-abcde123456",
        "Account": "987654321098",
        "Arn": "arn:aws:sts::987654321098:assumed-role/EC2-Role/i-abcde123456"
    }
    

    如您所见,您的本地非 EC2 服务器现在具有与您从中检索凭证的 EC2 实例相同的权限。


    使用awsCLI多部分上传文件

    您可以将大文件拆分为较小的块(参见split手册页)并使用aws s3apimultipart-upload 子命令。见和。aws s3api create-multipart-upload_ 如果您的凭据中途过期,您可以刷新每个部分之间的凭据并重试失败的部分。complete-multipart-uploadpart-upload


    创建自定义脚本

    您可以使用出色的boto3Python AWS 开发工具包库来构建您自己的文件上传器。编写一个小的多部分上传器应该非常简单,它将在每次到期时请求新凭据,包括请求 MFA。


    如您所见,您有很多选择。

    希望有帮助:)

    • 8

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve