我试图找出如何创建可以从S3获取json文件并将其导入DynamoDB表的AWS数据管道。我能够创建一些实现此目的的Java代码,但我想通过数据管道来实现。我可以看到有从DynamoDB导出到S3并导入备份的模板,但我很难弄清楚如何导入普通的json文件。
答案 0 :(得分:1)
在文档中,您将找到从DynamoDb导入和导出数据的示例(http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-importexport-ddb.html)
以下是文档中描述的内容:
创建管道
在
打开AWS Data Pipeline控制台您看到的第一个屏幕取决于您是否创建了一个 当前地区的管道。
如果您尚未在此区域中创建管道,则会显示控制台 介绍性的屏幕。选择立即开始。
如果您已在此区域中创建了管道,则为控制台 显示一个列出该区域管道的页面。选择 创建新管道。
在“名称”中,输入管道的名称。
(可选)在“说明”中,输入管道的说明。
对于Source,选择使用模板构建,然后选择 以下模板:从S3导入DynamoDB备份数据。
在“参数”下,将“输入S3”文件夹设置为 s3:// elasticmapreduce / samples / Store / ProductCatalog,这是一个示例 数据源,并将DynamoDB表名设置为表的名称。
在“计划”下,选择管道激活。
在管道配置下,保持启用日志记录。选择文件夹 在S3位置下的日志图标,选择您的一个桶或 文件夹,然后选择选择。
如果您愿意,可以改为禁用日志记录。
在“安全/访问”下,将IAM角色设置为“默认”。
单击“在Architect中编辑”。
接下来,配置AWS Data的Amazon SNS通知操作 管道根据活动的结果执行。
配置成功和失败操作
在右侧窗格中,单击“活动”。
从“添加可选字段”中,选择“成功”。
从新添加的On Success中,选择Create new:Action。
从添加可选字段,选择失败。
从新添加的On Fail中,选择Create new:Action。
在右侧窗格中,单击“其他”。
对于DefaultAction1,请执行以下操作:
将名称更改为SuccessSnsAlarm。
从类型中,选择SnsAlarm。
在Topic Arn中,输入您创建的主题的ARN。
输入主题和消息。
对于DefaultAction2,请执行以下操作:
将名称更改为FailureSnsAlarm。
从类型中,选择SnsAlarm。
在Topic Arn中,输入您创建的主题的ARN。
输入主题和消息。
public github网站提供了一些使用DynamoDB(https://github.com/awslabs/data-pipeline-samples)的示例。这是一个管道定义的例子:
{
"objects": [
{
"occurrences": "1",
"period": "1 Day",
"name": "RunOnce",
"id": "DefaultSchedule",
"type": "Schedule",
"startAt": "FIRST_ACTIVATION_DATE_TIME",
"maxActiveInstances" : "1"
},
{
"failureAndRerunMode": "CASCADE",
"schedule": {
"ref": "DefaultSchedule"
},
"resourceRole": "DataPipelineDefaultResourceRole",
"role": "DataPipelineDefaultRole",
"pipelineLogUri": "s3://",
"scheduleType": "cron",
"name": "Default",
"id": "Default"
},
{
"maximumRetries": "2",
"name": "TableBackupActivity",
"step": "s3://dynamodb-emr-us-east-1/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar,org.apache.hadoop.dynamodb.tools.DynamoDbExport,#{myOutputS3Loc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')},#{myDDBTableName},#{myDDBReadThroughputRatio}",
"id": "TableBackupActivity",
"runsOn": {
"ref": "EmrClusterForBackup"
},
"type": "EmrActivity"
},
{
"bootstrapAction": "s3://elasticmapreduce/bootstrap-actions/configure-hadoop, --yarn-key-value, yarn.nodemanager.resource.memory-mb=12800,--yarn-key-value,yarn.scheduler.minimum-allocation-mb=256,--mapred-key-value,mapreduce.map.memory.mb=500,--mapred-key-value,mapreduce.map.java.opts=-Xmx400M,--mapred-key-value,mapreduce.job.reduce.slowstart.completedmaps=1,--mapred-key-value,mapreduce.map.speculative=false",
"name": "EmrClusterForBackup",
"amiVersion": "3.8.0",
"id": "EmrClusterForBackup",
"type": "EmrCluster",
"masterInstanceType": "m1.medium",
"coreInstanceType": "#{myInstanceType}",
"coreInstanceCount": "#{myInstanceCount}",
"terminateAfter" : "12 hours"
}
],
"parameters": [
{
"description": "OutputS3folder",
"id": "myOutputS3Loc",
"type": "AWS::S3::ObjectKey"
},
{
"default": "0.2",
"watermark": "Valuebetween0.1-1.0",
"description": "DynamoDB Read Throughput Ratio",
"id": "myDDBReadThroughputRatio",
"type": "Double"
},
{
"description": "DynamoDB Table Name",
"id": "myDDBTableName",
"type": "String"
},
{
"description": "Instance Type",
"id": "myInstanceType",
"watermark" : "Use m1.medium if Read Capacity Units for the job <= 900. Else use m3.xlarge",
"type": "String",
"default": "m3.xlarge"
},
{
"description": "Instance Count",
"watermark" : "(Read Capacity Units / 300) for m1.medium if RCU <= 900. Else (RCU / 1500) for m3.xlarge",
"id": "myInstanceCount",
"type": "Integer",
"default": "1"
},
{
"description" : "Burst IOPs",
"watermark" : "Add IOPS to the DDB table by this percent for the duration of the export job",
"id" : "myBurstIOPS",
"type" : "Double",
"default" : "0.0"
}
]
}