gpt4 book ai didi

amazon-web-services - 如何为每个 ElasticBeanstalk 环境添加唯一的 DynamoDB 表名称前缀

转载 作者:行者123 更新时间:2023-12-03 07:18:19 25 4
gpt4 key购买 nike

使用 DynamoDB 的标准模式是通过在表名称前添加任何特定于环境的字符串作为前缀来分隔每个环境使用的数据。

我认为使用 ElasticBeanstalk 和 .ebextensions 中的 CloudFormation 配置可以很容易地做到这一点。然而 - 至少对于我的平台(在 64 位 Amazon Linux 上运行的 Java 8)来说 - 情况似乎并非如此。

我的简单实现是为每个环境添加一个环境属性 (DB_PREFIX),然后在 .ebextensions 中调整我的表创建配置,如下所示:

Resources:
UserTable:
Type: AWS::DynamoDB::Table
Properties:
TableName:
Fn::Join:
- '_'
- - ${env:DB_PREFIX}
- 'User'
KeySchema:
HashKeyElement: {AttributeName: id, AttributeType: S}
ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}

这不起作用,可能是因为,至少对于我的平台,环境属性不能用作操作系统环境变量(请参阅 https://stackoverflow.com/a/36567121/96553 )。

我还考虑过根据环境名称有条件地设置 AWS 环境属性(这不是一个很好的解决方案,因为它扩展性不佳),这可能是可以接受的。

是否有人已经拥有解决此类问题的模式?

最佳答案

只需不要设置名称即可。 CloudFormation 将为您选择一个包含堆栈名称的唯一名称。另一种选择是自己使用 ${AWS::StackName}

Resources:
UserTable:
Type: AWS::DynamoDB::Table
Properties:
TableName:
Fn::Sub: ${AWS::StackName}_User
KeySchema:
HashKeyElement: {AttributeName: id, AttributeType: S}
ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}

关于amazon-web-services - 如何为每个 ElasticBeanstalk 环境添加唯一的 DynamoDB 表名称前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49273477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com