如何使用 Elastic Beanstalk 设置 aws-sdk 凭证?

How to set aws-sdk credentials using Elastic Beanstalk?

我是 运行 Elastic Beanstalk 中的一个快速应用程序,在一条路线中,我使用 aws-sdk 向 sns 发布通知。

这在本地 运行 时有效,但在 Elastic Beanstalk 环境中 would/could 我如何设置凭据 'myprofile'?

router.post('/publish', async (req, res) => {
  var AWS = require('aws-sdk')
  AWS.config.update({region: 'us-east-2'})
  // myprofile exists locally, but how do I deal with this in the elastic beanstalk environment?
  var credentials = new AWS.SharedIniFileCredentials({profile: 'myprofile'})
  AWS.config.credentials = credentials
  //...more stuff
})

您可以使用 IAM 实例配置文件为您的 ec2 实例提供权限,这样当您的应用程序加载 SDK 时,传递的凭据将自动加载。

检查此 link https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html - 您需要的是实例配置文件。为了创建实例配置文件,请转到 IAM 控制台 > 角色,然后选择服务 EC2 作为可以承担此角色的服务。然后附加您的应用程序需要调用的策略(SNS 东西)。

在 beantalk 设置中,在安全性下,您将能够设置刚刚创建的 IAM 实例配置文件 - 因此此环境中的实例应该具有与之关联的角色。

您的代码应该如下所示:

router.post('/publish', async (req, res) => {
  var AWS = require('aws-sdk')
  AWS.config.update({region: 'us-east-2'})

  //...more stuff
}) 

同时检查您是否可以在控制器之外要求和设置区域 ;)