【问题标题】:CredentialsError: Missing credentials in config. While using S3 SDK in EC2CredentialsError:配置中缺少凭据。在 EC2 中使用 S3 SDK 时
【发布时间】:2019-02-24 22:51:57
【问题描述】:

我的应用程序架构有一个弹性负载均衡器和自动扩展组,在 Auto Scaling 组中,我创建了启动配置,以使用 UserData 实例化 EC2 实例,以便在每个实例上运行 nodejs 服务器。 AWS_ACCESS_IDAWS_SECRET_ACCESS_KEY 已使用用户数据添加到 EC2 环境变量中。因此,在我的服务器端(节点)代码中,我没有提供这些凭据。 使用 S3 SDK 时出现错误。 错误提示:“CredentialsError: Missing credentials in config”。


但是,如果我使用相同的用户数据来创建没有任何负载均衡器和 Auto Scaling 组的单个 EC2 实例,它可以正常工作。

而且,如果我在 EC2 实例上手动停止节点服务器(当我有负载均衡器和自动扩展组时)并再次运行它,它就会开始正常工作。

以下是我拥有的 EC2 启动配置的用户数据。

我在 EC2 上使用 Amazon-Linux。

#!/bin/bash
set -e -x
echo AWS_ACCESS_KEY_ID=********** >> /etc/environment
echo AWS_SECRET_ACCESS_KEY=****************************** >> /etc/environment
curl --silent --location https://rpm.nodesource.com/setup_9.x | bash -
sudo yum install -y git nodejs
git clone https://github.com/Vaaceph/BackEndCloud.git && cd BackEndCloud
sudo npm install
DEBUG=express:* node server.js

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 amazon-ec2 aws-sdk


    【解决方案1】:

    EC2 的最佳实践是按照以下方式分配实例配置文件:https://docs.aws.amazon.com/autoscaling/ec2/userguide/us-iam-role.html

    这样做的好处是 EC2 使用的凭证是短暂的、自动轮换的,并且不需要对用户访问密钥/秘密密钥进行持续管理。

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 2019-08-27
      • 2020-10-04
      • 2020-11-28
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      相关资源
      最近更新 更多