amazon-web-services - 通过自定义资源Cloud Formation Template创建DynamoDB

标签 amazon-web-services amazon-dynamodb aws-cloudformation

我正在尝试使用以下云形成模板脚本在 AWS DynamoDB 中创建 GlobalTable。但我不确定我是否拥有所需的所有东西。 我的自定义资源部分如下所示。



     "CreateGlobalTable":{  
      "Type":"Custom::CreateGlobalTable",
      "Properties":{  
        "ServiceToken":{  
          "Fn::GetAtt":[  
            "SolutionHelper",
            "Arn"
          ]
        },

         "GlobalTableName": "myglobaltable",
           "ReplicationGroup": [ 
              { 
                 "RegionName": "eu-west-1"
              }
           ]
      }
    },



生成堆栈时,我在日志中看到相同的条目,但没有创建全局表。它是否需要一个支持 lamda 函数来实际创建全局表?或者 AWS API 按照上面定义的方式自动处理它。非常感谢任何指导。

最佳答案

事实上,您实际上需要一个 Lambda 函数来执行 GlobalTable 的实际创建/更新/删除操作。

以下是有关如何进行的基本指南:

  GlobalTableCustomResourceLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      Handler: global_table_custom_resource.lambda_handler
      Role: !GetAtt CustomResourceRole.Arn
      Code: cloudformation/custom-resource/global_table_custom_resource.py
      Runtime: python3.6
      Timeout: '25'

  CustomResourceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Sid: ''
          Effect: Allow
          Principal:
            Service: lambda.amazonaws.com
          Action: sts:AssumeRole
      Path: "/"
      Policies:
      - PolicyName: GlobalTableCustomResourceLambdaPolicy
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
          - Effect: Allow
            Action:
            - dynamodb:CreateTable
            - dynamodb:UpdateTable
            - dynamodb:DeleteTable
            Resource: "*"
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

对于Python代码,我认为它超出了StackOverflow答案的范围,我将向您推荐这篇文章,它介绍了整个过程:https://serverlesscode.com/post/python-custom-resource-cloudformation/

关于amazon-web-services - 通过自定义资源Cloud Formation Template创建DynamoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49676023/

相关文章:

amazon-web-services - Cloudformation 错误 - 遇到不受支持的属性 EFSVolumeConfiguration

json - AWS CloudFormation 网络接口(interface)错误

amazon-web-services - 如何格式化通过 Kinesis Streams for DynamoDB 触发的 Lambda 函数的过滤条件?

javascript - 使用 DynamoDB 的 AWS Lambda 顺序问题

amazon-web-services - CloudFormation 拒绝以最小权限创建 AWS::KMS::Key

amazon-web-services - 是否可以使用 Elastic Beanstalk 添加多个自动扩展策略

node.js - 仅没有范围的Nodejs DynamoDB CreateTable哈希返回ValidationException

amazon-web-services - 如何将 DynamoDB 细粒度访问控制与 Cognito 用户池结合使用?

amazon-web-services - 在 Cloudformation 的 Lambda 定义的 Events 属性中创建 API 端点时,如何获取 API 端点的 URL

javascript - AWS Cognito - 将静态 S3 网站的部分内容限制为登录用户