避免在节点上使用 localstack 设置 AWS 凭证进行本地开发

问题描述 投票:0回答:2

使用

aws-sdk
作为节点,我正在初始化 sqs

sqs = new AWS.SQS({
  region: 'us-east-1',
});

在生产环境中,这非常有效,因为运行它的角色具有与 SQS 连接所需的权限。但是,在本地运行是一个问题,因为这些 prod 权限不适用于我的本地开发环境。

我可以通过添加它们来解决这个问题

sqs = new AWS.SQS({
  region: 'us-east-1',
  accessKeyId: MY_AWS_ACCESS_KEY_ID,
  secretAccessKey: MY_AWS_SECRET_ACCESS_KEY,
});

但是对于本地开发,我不会向 AWS 发出任何请求,因为我使用的是 localstack 队列。

如何初始化

AWS.SQS
,以便它继续在产品中运行,而无需指定用于本地开发的 AWS 密钥?

amazon-web-services amazon-sqs aws-sdk-nodejs localstack
2个回答
2
投票

我在本地开发时没有使用AWS资源,因此根本不需要提供AWS密钥凭证。

如果你想解决这个问题,你可以设置虚假值。

const SQS = new AWS.SQS({
    region: 'us-east-1',
    accessKeyId: 'na',
    secretAccessKey: 'na',
});

1
投票

AWS SDK 和 CLI 以定义良好的顺序从多个位置读取凭证。

例如,您可以创建一个本地凭证文件,SQS 将自动使用其中的凭证,而无需对原始生产代码进行任何更改。

% cat ~/.aws/credentials 
[default]
aws_access_key_id=AAA
aws_secret_access_key=BBB

如果您有多个环境,您可以在此文件中按名称指定它们。 SDK 和 CLI 通常会读取 $AWS_PROFILE 环境变量并使用您的凭证中指定的配置文件(如果缺少环境变量,则使用 [默认])。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.