amazon-web-services - 通过awscli和boto3, secret 管理器在EC2中的运行速度极慢

标签 amazon-web-services amazon-ec2 boto3 aws-cli aws-secrets-manager

我正在用pycharm编写Flask API。当我在本地运行代码时,使用boto3请求从Secrets Manager获取 secret 的时间不到一秒钟。但是,当我将代码放在EC2上时,大约需要3分钟(在t2.micro和m5.large中都尝试过)。

起初我以为可能是Python问题,所以我在EC2中通过awscli使用以下命令运行它:

aws secretsmanager get-secret-value --secret-id secretname

阈值花了大约3分钟。为什么会这样?从理论上讲,这在EC2中难道不比在本地计算机中快吗?

编辑:仅当EC2位于不同于默认VPC的VPC内时,才会发生这种情况。

最佳答案

在我们的本地计算机上解决同一问题近两个月后,我们终于在今天取得了一些进步。

原来,问题与IPv6有关。

如果您使用的是IPv6,则密码管理器域将解析为IPv6地址。由于某些原因,cli无法使用IPv6建立安全连接。超时后,cli退回到IPv4,然后成功。

要验证您是否要解析到IPv6地址,只需ping secretsmanager.us-east-1.amazonaws.com。不必担心ping响应,您只需要查看域解析为的IP地址即可。

要解决此问题,您现在有3个选项:

  • 找出您的网络问题。这可能是您的计算机或路由器上的东西。如果在AWS VPC中,请检查您的路由表和安全组。确保您允许出站IPv6流量(::/0)。
  • 减少cli连接超时,以使IPv6调用更快地失败。这将使IPv4回退更快地发生。您可能希望提供更好的超时值,但是通常的想法是添加如下内容:--cli-connect-timeout 1
  • 禁用IPv6。您可以完全禁用计算机/路由器上的IPv6,也可以调整计算机以使其首选IPv4作为此特定地址(请参阅:https://superuser.com/questions/436574/ipv4-vs-ipv6-priority-in-windows-7)。

  • 最终,选项1是真正的解决方案,但由于它是如此广泛,所以其他选项可能会更容易。

    希望这可以帮助其他人在达到目标时保持理智。

    关于amazon-web-services - 通过awscli和boto3, secret 管理器在EC2中的运行速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50203916/

    相关文章:

    amazon-web-services - 将文件上传并压缩到s3

    amazon-web-services - AWS中有没有相当于docker configs的服务?

    amazon-ec2 - 使用 Saltstack 标记 EC2 实例

    python - 如何将变量正确传递到这个 boto3 batch_get_item 函数中?

    python-3.x - 高效查找 S3 存储桶上的所有 .zip 文件

    amazon-web-services - AWS CloudFormation : Writing a Lambda function to verify domain ownership for ACM Certificates

    amazon-web-services - 网络接口(interface)。并且不能在同一请求 Cloud-Formation 上指定实例级子网 ID

    amazon-web-services - SSH 进入通过 KOPS 创建的 kubernetes 节点

    python - 将 PostgreSQL 加速到 BigQuery

    python - PutItem AWS DynamoDB 的无效类型错误