通过自定义资源 Cloud Formation Template 创建 DynamoDB
Create DynamoDB through custom resources Cloud Formation Template
我正在尝试使用以下云形成模板脚本在 AWS DynamoDB 中创建一个 GlobalTable。但是我不确定我是否拥有所有需要的东西。
我的自定义资源部分如下所示。
"CreateGlobalTable":{
"Type":"Custom::CreateGlobalTable",
"Properties":{
"ServiceToken":{
"Fn::GetAtt":[
"SolutionHelper",
"Arn"
]
},
"GlobalTableName": "myglobaltable",
"ReplicationGroup": [
{
"RegionName": "eu-west-1"
}
]
}
},
生成堆栈后,我在日志中看到了相同的条目,但是没有创建全局 table。它是否需要一个实际创建全局 table 的支持 lamda 函数?或者 AWS API 按照上面定义的方式自动处理它。非常感谢任何指导。
事实上,您实际上需要一个 Lambda 函数来执行 GlobalTable 的实际 creation/update/deletion。
以下是关于如何进行的基本指导:
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代码,我认为它超出了Whosebug答案的范围,我将向您推荐这篇贯穿整个过程的文章:https://serverlesscode.com/post/python-custom-resource-cloudformation/。
我正在尝试使用以下云形成模板脚本在 AWS DynamoDB 中创建一个 GlobalTable。但是我不确定我是否拥有所有需要的东西。 我的自定义资源部分如下所示。
"CreateGlobalTable":{
"Type":"Custom::CreateGlobalTable",
"Properties":{
"ServiceToken":{
"Fn::GetAtt":[
"SolutionHelper",
"Arn"
]
},
"GlobalTableName": "myglobaltable",
"ReplicationGroup": [
{
"RegionName": "eu-west-1"
}
]
}
},
生成堆栈后,我在日志中看到了相同的条目,但是没有创建全局 table。它是否需要一个实际创建全局 table 的支持 lamda 函数?或者 AWS API 按照上面定义的方式自动处理它。非常感谢任何指导。
事实上,您实际上需要一个 Lambda 函数来执行 GlobalTable 的实际 creation/update/deletion。
以下是关于如何进行的基本指导:
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代码,我认为它超出了Whosebug答案的范围,我将向您推荐这篇贯穿整个过程的文章:https://serverlesscode.com/post/python-custom-resource-cloudformation/。