我是不是需要 .ebextensions 才能使用 DynamoDB 或 SNS 等 AWS 资源?

Posted

技术标签:

【中文标题】我是不是需要 .ebextensions 才能使用 DynamoDB 或 SNS 等 AWS 资源?【英文标题】:Do i need .ebextensions to use AWS resources like DynamoDB or SNS?我是否需要 .ebextensions 才能使用 DynamoDB 或 SNS 等 AWS 资源? 【发布时间】:2019-03-16 20:33:22 【问题描述】:

我正在使用 AWS Elastic Beanstalk 构建 Python Web 应用程序,我想知道是否有必要创建一个 .ebextensions/xyz.config 文件来使用 DynamoDB、SNS、等等

这是一个使用 boto3 的示例代码,我能够从我的网络应用程序连接并将数据放入表中,而无需定义任何配置文件...

db = boto3.resource('dynamodb', region_name='us-east-1')
table = db.Table('StudentInfo')

感谢您的意见

【问题讨论】:

【参考方案1】:

您不需要 .ebextensions 来创建与 Beanstalk 一起使用的 DynamoDB。但是,您可以,如here 所述。此示例使用 CloudFormation 模板语法来指定 DynamoDB 资源。如果不在 .ebextensions 文件中,您将通过 AWS 开发工具包/Dynamo DB 控制台创建 DynamoDB,并使终端节点可用于您的 Django 应用程序。

您可以specify an SNS topic 让 Beanstalk 用于将事件发布到或在上面的 DynamoDB 示例中创建一个作为 CFN 资源。这两种方法之间的区别在于,在前者中,Beanstalk 环境拥有 SNS 主题,而在后者中,它是底层 CloudFormation 堆栈。如果您想将 SNS 主题用于发布环境健康事件以外的其他事情,您将使用后一种方法。例如,要将 SNS 主题与 DynamoDB 集成,您必须使用后一种方法(即,将其指定为 ebextensions 文件中的资源,而不是作为选项设置)。

【讨论】:

【参考方案2】:

您需要改用 IAM 角色。阅读更多here。

我假设您没有更改在创建期间分配给 Elastic Beanstalk (EB) 实例的默认角色。 default instance profile role 允许 EB 使用创建各种组件所需的其他 AWS 服务。

在您了解有关 IAM、创建角色和分配权限的更多信息之前,您可以将 AWS 托管权限附加到此角色以测试您的应用程序(只需搜索 Dynamo 和 SNS)。

【讨论】:

以上是关于我是不是需要 .ebextensions 才能使用 DynamoDB 或 SNS 等 AWS 资源?的主要内容,如果未能解决你的问题,请参考以下文章

AWS codeBuild 不运行 .ebextension 配置

.ebextensions 或 requirements.txt 是不是首先在 Elastic Beanstalk 中运行

检查哪些 ebextensions 已运行

使用 Gradle 将 .ebextensions 添加到 Spring Boot Jar 的干净方式

在 aws 中使用 ebextensions

使用 .ebextensions 创建 WaitConditionHandle