DynamoDB表的AWS Beanstalk .ebextensions配置

时间:2016-12-20 13:50:13

标签: java amazon-web-services amazon-dynamodb elastic-beanstalk ebextensions

我们正在使用DynamoDB开发Java Spring Boot应用程序。我正在尝试使用.ebextensions在DynamoDB中创建几个表。到目前为止,我设法使用eb cli中包含的.ebextensions文件夹部署生成的jar文件。在其中我有一个database.config文件,其中包含以下内容:

Resources:
 Book:
   Type: AWS::DynamoDB::Table
   Properties:
     TableName: Book
     KeySchema:
       HashKeyElement: {AttributeName: id, AttributeType: S}
     ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}

 Subject:
   Type: AWS::DynamoDB::Table
   Properties:
     TableName: Subject
     KeySchema:
       HashKeyElement: {AttributeName: id, AttributeType: S}
     ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}

 User:
   Type: AWS::DynamoDB::Table
   Properties:
     TableName: User
     KeySchema:
       HashKeyElement: {AttributeName: id, AttributeType: S}
     ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}

由于某种原因,只创建列表中的最后一个表(User)。知道为什么没有创建其他两个?如果我只在脚本中保留其中一个,则按预期创建一个。

有没有人更好地在新部署上创建和更新DynamoDB表? .ebextensions配置文件很有用,但我们必须确保它们在每次发布之前都包含正确的信息。

谢谢, 克里斯蒂安。

1 个答案:

答案 0 :(得分:0)

AWS技术支持的答案:

  

我了解在使用CLI工具进行部署时,使用Elastic Bean Stalk的ebextension功能创建DynamoDB表时遇到问题。为了理解为什么会发生这种情况,了解Elastic Bean Stalk使用CloudFormation来适当的资源和设置非常重要。我注意到表[User,Book,Subject]最初是从早期的CloudFormation堆栈创建的,在这种情况下是早期的Beanstalk堆栈。由于表已在较早的堆栈中创建,因此较新的创建失败并尝试回滚。在这个回滚过程中,它从早期编队中删除了资源,因为失败并且表共享相同的名称。此错误已报告给我们的内部团队。展望未来,我了解您正在测试和迁移到AWS。我建议重建与此相关的Beanstalk堆栈[1]并再次启动部署,而不共享DynamoDB表的资源名称。