繁体   English   中英

如果不存在,则使用 Cloudformation 创建 DynamoDB 全局表

[英]Create the DynamoDB global Table if doesn't exist using Cloudformation

我在下面分享 DynamoDB cft。 我想添加一个条件,以便在添加另一个表时不会影响现有表。 下面的模板用于创建 2 个全局表,名称为 sample1 和 sample12,在参数部分配置:

AWSTemplateFormatVersion: "2010-09-09"
Description: 'AWS CloudFormation Template for DynamoDB tables For sample Service'
Parameters:
  sample1:
    Type: String
    Description: Select existing dynamodb table name from Parameter Store
    Default: sample1
  sample12:
    Type: String
    Description: Select existing dynamodb table name from Parameter Store
    Default: sample12
Resources: 
  sample1: 
    Type: AWS::DynamoDB::GlobalTable
    Properties:
      BillingMode: PAY_PER_REQUEST      
      AttributeDefinitions: 
        - 
          AttributeName: "msgId"
          AttributeType: "S" 
      KeySchema: 
        - 
          AttributeName: "msgId"
          KeyType: "HASH"
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      SSESpecification:
        SSEEnabled: true
        SSEType: "KMS"    
      Replicas:
      - Region: us-east-1        
      TableName: !Ref sample1
    
  sample12: 
    Type: AWS::DynamoDB::GlobalTable
    Properties: 
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions: 
        - 
          AttributeName: "msgId"
          AttributeType: "S"
        - 
          AttributeName: "flightNbr"
          AttributeType: "S"
        - 
          AttributeName: "recordUpdateTS"
          AttributeType: "S"
        - 
          AttributeName: "msgTypeCd"
          AttributeType: "S"
        - 
          AttributeName: "recordCreationEpochTime"
          AttributeType: "S"         
      KeySchema: 
        - 
          AttributeName: "msgId"
          KeyType: "HASH"
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      SSESpecification:
        SSEEnabled: true
        SSEType: "KMS"    
      Replicas:
      - Region: us-east-1        
      TableName: !Ref sample12
      GlobalSecondaryIndexes: 
        - 
          IndexName: "FLIGHTNBR_UPDATETS_INDEX"
          KeySchema: 
             - 
              AttributeName: "flightNbr"
              KeyType: "HASH"
             - 
              AttributeName: "recordUpdateTS"
              KeyType: "RANGE"  
          Projection: 
            ProjectionType: "ALL"   
        - 
          IndexName: "MSGTYPE_CREATETS_INDEX"
          KeySchema: 
             - 
              AttributeName: "msgTypeCd"
              KeyType: "HASH"
             - 
              AttributeName: "recordCreationEpochTime"
              KeyType: "RANGE"  
          Projection: 
            ProjectionType: "ALL"

如何添加条件或任何其他方法来检查表是否存在?

唯一的方法是通过lambda function形式的自定义资源 function 将使用 AWS SDK 执行条件检查并根据这些检查的结果创建 aws 资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM