使用
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 密钥?
我在本地开发时没有使用AWS资源,因此根本不需要提供AWS密钥凭证。
如果你想解决这个问题,你可以设置虚假值。
const SQS = new AWS.SQS({
region: 'us-east-1',
accessKeyId: 'na',
secretAccessKey: 'na',
});
AWS SDK 和 CLI 以定义良好的顺序从多个位置读取凭证。
例如,您可以创建一个本地凭证文件,SQS 将自动使用其中的凭证,而无需对原始生产代码进行任何更改。
% cat ~/.aws/credentials
[default]
aws_access_key_id=AAA
aws_secret_access_key=BBB
如果您有多个环境,您可以在此文件中按名称指定它们。 SDK 和 CLI 通常会读取 $AWS_PROFILE 环境变量并使用您的凭证中指定的配置文件(如果缺少环境变量,则使用 [默认])。