【问题标题】:How to set aws-sdk credentials using Elastic Beanstalk?如何使用 Elastic Beanstalk 设置 aws-sdk 凭证?
【发布时间】:2019-08-10 02:20:06
【问题描述】:

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

这在本地运行时有效,但在 Elastic Beanstalk 环境中我将/可以如何设置凭据“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
})

【问题讨论】:

    标签: amazon-web-services aws-sdk amazon-elastic-beanstalk


    【解决方案1】:

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

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

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

    您的代码应如下所示:

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

    还要检查您是否可以要求并设置控制器之外的区域;)

    【讨论】:

    • 感谢您的信息!不过我很困惑,我需要在本地指定配置文件(我有几个设置,所以我需要指定哪一个),我该如何处理? eb 中会出现错误,因为它找不到“myprofile”凭据
    • Np。关键是实例配置文件将成为配置文件的替代品。如果您需要与“myprofile”上完全相同的权限,只需将相同的策略附加到实例配置文件即可。
    猜你喜欢
    • 2016-08-18
    • 1970-01-01
    • 2020-11-24
    • 2015-08-07
    • 2017-12-09
    • 2019-06-24
    • 2021-09-16
    • 2015-01-22
    相关资源
    最近更新 更多