如何在 AWS SES JS SDK V3 中硬编码凭据

4
AWS 强制我升级到 SDK V3,现在我在设置凭据方面遇到了很大的困难。它们以前是硬编码的,例如:
AWS.config.update({
  apiVersion: "2010-12-01",
  accessKeyId: "MYKEY",
  secretAccessKey: "MYOTHERKEY",
  region: "us-east-1",
});

但是现在,AWS包已经被模块化的@aws-sdk/client-ses取代了。
如何在这个SDK的新版本中像以前一样硬编码我的凭据?
至今我所拥有的:
import {
  SESClient,
  CloneReceiptRuleSetCommand,
} from "@aws-sdk/client-ses";

const client = new SESClient({
  accessKeyId: "MYKEY",
  secretAccessKey: "MYOTHERKEY",
  region: "us-east-1",
});

const command = new CloneReceiptRuleSetCommand(params);

client.send(command)

但是它返回了一个错误:"CredentialsProviderError:无法从任何提供程序加载凭据"

P.S.:我知道硬编码凭据的缺点,但这对于特定应用程序来说不是问题。这是一个后端Node.js服务,只有我需要访问它。


你有阅读过 API 文档 吗?看起来你仍然可以在实例化客户端时传递凭据。但是为什么不直接设置默认的环境变量呢? - jonrsharpe
@jonrsharpe,也许我错了,但据我所知,环境变量会附加到我的计算机上,而我不想要这样。我希望如果我换了电脑,凭证可以附加在GitHub存储库中的某个文件中,这样我就可以在另一台电脑上正常工作。 - Pedro Rabbi
1个回答

4
密钥和秘钥需要在配置对象的credentials属性中。另外,在执行CloneReceiptRuleSetCommand命令时,您需要提供OriginalRuleSetNameRuleSetName。因此,应该像这样:
import {
  SESClient,
  CloneReceiptRuleSetCommand,
} from "@aws-sdk/client-ses";

const client = new SESClient({
  credentials: {
    accessKeyId: "MYKEY",
    secretAccessKey: "MYOTHERKEY"
  },
  region: "us-east-1",
});

const params = {
  OriginalRuleSetName: 'RULESET_TO_CLONE', 
  RuleSetName: 'TARGET_RULESET'
}

const command = new CloneReceiptRuleSetCommand(params);

client.send(command)

参考资料:


尝试过那样做,但是出现了以下错误:SESServiceException [ValidationError]:检测到2个验证错误:'originalRuleSetName'处的值为null未能满足约束条件:成员不能为空;'ruleSetName'处的值为null未能满足约束条件:成员不能为空。 - Pedro Rabbi
@PedroRabbi 你的 params 对象长什么样?能否将其添加到问题中? - Prerak Sola
1
我的params对象是一个包含发送者、主题、正文等信息的电子邮件对象。我应该使用这些参数调用SendEmailCommand,而不是像我在阅读AWS文档时调用CloneReceiptRuleSetCommand。现在它正常工作了,你的问题让我看到了错误。谢谢兄弟! - Pedro Rabbi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接