所以不要这样做(这是我目前用来访问秘密管理器服务的(:
AWS.config.credentials = new AWS.Credentials({
accessKeyId: "string",
secretAccessKey: "string",
} )
// Create a Secrets Manager client
var secretsmanager = new AWS.SecretsManager({
region: region,
credentials: AWS.config.credentials
} )
我想做这样的事情:
AWS.config.credentials = new AWS.Credentials({
userARN/roleARN: "string",
} )
有没有办法做到这一点?
在 EC2 上运行的情况下,您通常会为具有所需 AWS 权限的 EC2 实例分配一个角色 [1]。 然后,您可以从实例元数据 [2][3] 访问所需的 AWS 凭证。
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
不能仅将角色名称用于身份验证。
但是,如果您不想对私有密钥进行硬编码/配置,则可以在计算机上配置 AWS 密钥,并在应用程序 (AWS 开发工具包( 中加载配置文件。 在这种情况下,系统会从您的计算机/服务器 AWS 配置加载访问密钥和密钥。
安装 AWS CL 后,您可以运行"aws config"命令来创建配置文件。
这可以在本地计算机或 EC2 上运行。
如@KevinSeaman所述,只需将角色附加到您的 EC2 实例即可。凭证将在 EC2 实例元数据中自动安装和轮换。
此外,如果您使用的是标准 Amazon 开发工具包,则开发工具包已经知道如何从实例元数据中获取凭证,因此您只需创建客户端并指定区域,无需添加任何凭证。事实上,如果您的进程寿命较长,最好让 SDK 获取凭据,因为元数据中的 cred 是临时的,大约 6 小时后过期。SDK 将定期刷新元数据中的凭据。