embulk-input-dynamodb 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/master.yml +34 -0
  3. data/.github/workflows/test.yml +30 -0
  4. data/.scalafmt.conf +5 -0
  5. data/CHANGELOG.md +49 -0
  6. data/README.md +204 -54
  7. data/build.gradle +53 -44
  8. data/example/config-deprecated.yml +20 -0
  9. data/example/config-query-as-json.yml +18 -0
  10. data/example/config-query.yml +22 -0
  11. data/example/config-scan.yml +18 -0
  12. data/example/prepare_dynamodb_table.sh +67 -0
  13. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  14. data/gradle/wrapper/gradle-wrapper.properties +1 -2
  15. data/gradlew +67 -48
  16. data/gradlew.bat +20 -10
  17. data/{test/run_dynamodb_local.sh → run_dynamodb_local.sh} +2 -1
  18. data/settings.gradle +1 -0
  19. data/src/main/scala/org/embulk/input/dynamodb/DeprecatedDynamodbInputPlugin.scala +73 -0
  20. data/src/main/scala/org/embulk/input/dynamodb/DynamodbInputPlugin.scala +76 -25
  21. data/src/main/scala/org/embulk/input/dynamodb/PluginTask.scala +132 -32
  22. data/src/main/scala/org/embulk/input/dynamodb/aws/Aws.scala +44 -0
  23. data/src/main/scala/org/embulk/input/dynamodb/aws/AwsClientConfiguration.scala +37 -0
  24. data/src/main/scala/org/embulk/input/dynamodb/aws/AwsCredentials.scala +240 -0
  25. data/src/main/scala/org/embulk/input/dynamodb/aws/AwsDynamodbConfiguration.scala +35 -0
  26. data/src/main/scala/org/embulk/input/dynamodb/aws/AwsEndpointConfiguration.scala +79 -0
  27. data/src/main/scala/org/embulk/input/dynamodb/aws/HttpProxy.scala +61 -0
  28. data/src/main/scala/org/embulk/input/dynamodb/deprecated/AttributeValueHelper.scala +72 -0
  29. data/src/main/scala/org/embulk/input/dynamodb/{Filter.scala → deprecated/Filter.scala} +3 -3
  30. data/src/main/scala/org/embulk/input/dynamodb/{FilterConfig.scala → deprecated/FilterConfig.scala} +13 -13
  31. data/src/main/scala/org/embulk/input/dynamodb/{ope → deprecated/ope}/AbstractOperation.scala +36 -18
  32. data/src/main/scala/org/embulk/input/dynamodb/{ope → deprecated/ope}/QueryOperation.scala +21 -13
  33. data/src/main/scala/org/embulk/input/dynamodb/{ope → deprecated/ope}/ScanOperation.scala +20 -13
  34. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbAttributeValue.scala +154 -0
  35. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbAttributeValueEmbulkTypeTransformable.scala +245 -0
  36. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbAttributeValueType.scala +33 -0
  37. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemColumnVisitor.scala +50 -0
  38. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemConsumer.scala +40 -0
  39. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemIterator.scala +19 -0
  40. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemReader.scala +64 -0
  41. data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemSchema.scala +135 -0
  42. data/src/main/scala/org/embulk/input/dynamodb/operation/AbstractDynamodbOperation.scala +169 -0
  43. data/src/main/scala/org/embulk/input/dynamodb/operation/DynamodbOperationProxy.scala +59 -0
  44. data/src/main/scala/org/embulk/input/dynamodb/operation/DynamodbQueryOperation.scala +72 -0
  45. data/src/main/scala/org/embulk/input/dynamodb/operation/DynamodbScanOperation.scala +93 -0
  46. data/src/main/scala/org/embulk/input/dynamodb/operation/EmbulkDynamodbOperation.scala +15 -0
  47. data/src/main/scala/org/embulk/input/dynamodb/package.scala +4 -9
  48. data/src/test/scala/org/embulk/input/dynamodb/AttributeValueHelperTest.scala +245 -101
  49. data/src/test/scala/org/embulk/input/dynamodb/AwsCredentialsTest.scala +150 -97
  50. data/src/test/scala/org/embulk/input/dynamodb/DynamodbQueryOperationTest.scala +188 -0
  51. data/src/test/scala/org/embulk/input/dynamodb/DynamodbScanOperationTest.scala +181 -0
  52. data/src/test/scala/org/embulk/input/dynamodb/testutil/EmbulkTestBase.scala +85 -0
  53. metadata +73 -49
  54. data/circle.yml +0 -16
  55. data/config/checkstyle/checkstyle.xml +0 -128
  56. data/config/checkstyle/default.xml +0 -108
  57. data/src/main/scala/org/embulk/input/dynamodb/AttributeValueHelper.scala +0 -41
  58. data/src/main/scala/org/embulk/input/dynamodb/AwsCredentials.scala +0 -63
  59. data/src/main/scala/org/embulk/input/dynamodb/DynamoDBClient.scala +0 -23
  60. data/src/test/resources/yaml/authMethodBasic.yml +0 -21
  61. data/src/test/resources/yaml/authMethodBasic_Error.yml +0 -19
  62. data/src/test/resources/yaml/authMethodEnv.yml +0 -19
  63. data/src/test/resources/yaml/authMethodProfile.yml +0 -20
  64. data/src/test/resources/yaml/dynamodb-local-query.yml +0 -25
  65. data/src/test/resources/yaml/dynamodb-local-scan.yml +0 -23
  66. data/src/test/resources/yaml/notSetAuthMethod.yml +0 -20
  67. data/src/test/scala/org/embulk/input/dynamodb/ope/QueryOperationTest.scala +0 -83
  68. data/src/test/scala/org/embulk/input/dynamodb/ope/ScanOperationTest.scala +0 -83
  69. data/test/create_table.sh +0 -16
  70. data/test/put_items.sh +0 -25
data/circle.yml DELETED
@@ -1,16 +0,0 @@
1
- machine:
2
- services:
3
- - docker
4
-
5
- general:
6
- artifacts:
7
- - "~/embulk-input-dynamodb/build/reports/tests"
8
-
9
- test:
10
- pre:
11
- - sh ./test/run_dynamodb_local.sh; sleep 2
12
- - sh ./test/create_table.sh
13
- - sh ./test/put_items.sh
14
- post:
15
- - mkdir -p $CIRCLE_TEST_REPORTS/junit/
16
- - find . -type f -regex ".*/test-results/*/.*xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \;
@@ -1,128 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE module PUBLIC
3
- "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4
- "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5
- <module name="Checker">
6
- <!-- https://github.com/facebook/presto/blob/master/src/checkstyle/checks.xml -->
7
- <module name="FileTabCharacter"/>
8
- <module name="NewlineAtEndOfFile">
9
- <property name="lineSeparator" value="lf"/>
10
- </module>
11
- <module name="RegexpMultiline">
12
- <property name="format" value="\r"/>
13
- <property name="message" value="Line contains carriage return"/>
14
- </module>
15
- <module name="RegexpMultiline">
16
- <property name="format" value=" \n"/>
17
- <property name="message" value="Line has trailing whitespace"/>
18
- </module>
19
- <module name="RegexpMultiline">
20
- <property name="format" value="\{\n\n"/>
21
- <property name="message" value="Blank line after opening brace"/>
22
- </module>
23
- <module name="RegexpMultiline">
24
- <property name="format" value="\n\n\s*\}"/>
25
- <property name="message" value="Blank line before closing brace"/>
26
- </module>
27
- <module name="RegexpMultiline">
28
- <property name="format" value="\n\n\n"/>
29
- <property name="message" value="Multiple consecutive blank lines"/>
30
- </module>
31
- <module name="RegexpMultiline">
32
- <property name="format" value="\n\n\Z"/>
33
- <property name="message" value="Blank line before end of file"/>
34
- </module>
35
- <module name="RegexpMultiline">
36
- <property name="format" value="Preconditions\.checkNotNull"/>
37
- <property name="message" value="Use of checkNotNull"/>
38
- </module>
39
-
40
- <module name="TreeWalker">
41
- <module name="EmptyBlock">
42
- <property name="option" value="text"/>
43
- <property name="tokens" value="
44
- LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF,
45
- LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT"/>
46
- </module>
47
- <module name="EmptyStatement"/>
48
- <module name="EmptyForInitializerPad"/>
49
- <module name="EmptyForIteratorPad">
50
- <property name="option" value="space"/>
51
- </module>
52
- <module name="MethodParamPad">
53
- <property name="allowLineBreaks" value="true"/>
54
- <property name="option" value="nospace"/>
55
- </module>
56
- <module name="ParenPad"/>
57
- <module name="TypecastParenPad"/>
58
- <module name="NeedBraces"/>
59
- <module name="LeftCurly">
60
- <property name="option" value="nl"/>
61
- <property name="tokens" value="CLASS_DEF, CTOR_DEF, INTERFACE_DEF, METHOD_DEF"/>
62
- </module>
63
- <module name="LeftCurly">
64
- <property name="option" value="eol"/>
65
- <property name="tokens" value="
66
- LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR,
67
- LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE"/>
68
- </module>
69
- <module name="RightCurly">
70
- <property name="option" value="alone"/>
71
- </module>
72
- <module name="GenericWhitespace"/>
73
- <module name="WhitespaceAfter"/>
74
- <module name="NoWhitespaceBefore"/>
75
-
76
- <module name="UpperEll"/>
77
- <module name="DefaultComesLast"/>
78
- <module name="ArrayTypeStyle"/>
79
- <module name="MultipleVariableDeclarations"/>
80
- <module name="ModifierOrder"/>
81
- <module name="OneStatementPerLine"/>
82
- <module name="StringLiteralEquality"/>
83
- <module name="MutableException"/>
84
- <module name="EqualsHashCode"/>
85
- <module name="InnerAssignment"/>
86
- <module name="InterfaceIsType"/>
87
- <module name="HideUtilityClassConstructor"/>
88
-
89
- <module name="MemberName"/>
90
- <module name="LocalVariableName"/>
91
- <module name="LocalFinalVariableName"/>
92
- <module name="TypeName"/>
93
- <module name="PackageName"/>
94
- <module name="ParameterName"/>
95
- <module name="StaticVariableName"/>
96
- <module name="ClassTypeParameterName">
97
- <property name="format" value="^[A-Z][0-9]?$"/>
98
- </module>
99
- <module name="MethodTypeParameterName">
100
- <property name="format" value="^[A-Z][0-9]?$"/>
101
- </module>
102
-
103
- <module name="AvoidStarImport"/>
104
- <module name="RedundantImport"/>
105
- <module name="UnusedImports"/>
106
- <module name="ImportOrder">
107
- <property name="groups" value="*,javax,java"/>
108
- <property name="separated" value="true"/>
109
- <property name="option" value="bottom"/>
110
- <property name="sortStaticImportsAlphabetically" value="true"/>
111
- </module>
112
-
113
- <module name="WhitespaceAround">
114
- <property name="allowEmptyConstructors" value="true"/>
115
- <property name="allowEmptyMethods" value="true"/>
116
- <property name="ignoreEnhancedForColon" value="false"/>
117
- <property name="tokens" value="
118
- ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN,
119
- BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LE,
120
- LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
121
- LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
122
- LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE,
123
- LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL,
124
- PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN,
125
- STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
126
- </module>
127
- </module>
128
- </module>
@@ -1,108 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE module PUBLIC
3
- "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4
- "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5
- <!--
6
- This is a subset of ./checkstyle.xml which allows some loose styles
7
- -->
8
- <module name="Checker">
9
- <module name="FileTabCharacter"/>
10
- <module name="NewlineAtEndOfFile">
11
- <property name="lineSeparator" value="lf"/>
12
- </module>
13
- <module name="RegexpMultiline">
14
- <property name="format" value="\r"/>
15
- <property name="message" value="Line contains carriage return"/>
16
- </module>
17
- <module name="RegexpMultiline">
18
- <property name="format" value=" \n"/>
19
- <property name="message" value="Line has trailing whitespace"/>
20
- </module>
21
- <module name="RegexpMultiline">
22
- <property name="format" value="\n\n\n"/>
23
- <property name="message" value="Multiple consecutive blank lines"/>
24
- </module>
25
- <module name="RegexpMultiline">
26
- <property name="format" value="\n\n\Z"/>
27
- <property name="message" value="Blank line before end of file"/>
28
- </module>
29
-
30
- <module name="TreeWalker">
31
- <module name="EmptyBlock">
32
- <property name="option" value="text"/>
33
- <property name="tokens" value="
34
- LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF,
35
- LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT"/>
36
- </module>
37
- <module name="EmptyStatement"/>
38
- <module name="EmptyForInitializerPad"/>
39
- <module name="EmptyForIteratorPad">
40
- <property name="option" value="space"/>
41
- </module>
42
- <module name="MethodParamPad">
43
- <property name="allowLineBreaks" value="true"/>
44
- <property name="option" value="nospace"/>
45
- </module>
46
- <module name="ParenPad"/>
47
- <module name="TypecastParenPad"/>
48
- <module name="NeedBraces"/>
49
- <module name="LeftCurly">
50
- <property name="option" value="nl"/>
51
- <property name="tokens" value="CLASS_DEF, CTOR_DEF, INTERFACE_DEF, METHOD_DEF"/>
52
- </module>
53
- <module name="LeftCurly">
54
- <property name="option" value="eol"/>
55
- <property name="tokens" value="
56
- LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR,
57
- LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE"/>
58
- </module>
59
- <module name="RightCurly">
60
- <property name="option" value="alone"/>
61
- </module>
62
- <module name="GenericWhitespace"/>
63
- <module name="WhitespaceAfter"/>
64
- <module name="NoWhitespaceBefore"/>
65
-
66
- <module name="UpperEll"/>
67
- <module name="DefaultComesLast"/>
68
- <module name="ArrayTypeStyle"/>
69
- <module name="MultipleVariableDeclarations"/>
70
- <module name="ModifierOrder"/>
71
- <module name="OneStatementPerLine"/>
72
- <module name="StringLiteralEquality"/>
73
- <module name="MutableException"/>
74
- <module name="EqualsHashCode"/>
75
- <module name="InnerAssignment"/>
76
- <module name="InterfaceIsType"/>
77
- <module name="HideUtilityClassConstructor"/>
78
-
79
- <module name="MemberName"/>
80
- <module name="LocalVariableName"/>
81
- <module name="LocalFinalVariableName"/>
82
- <module name="TypeName"/>
83
- <module name="PackageName"/>
84
- <module name="ParameterName"/>
85
- <module name="StaticVariableName"/>
86
- <module name="ClassTypeParameterName">
87
- <property name="format" value="^[A-Z][0-9]?$"/>
88
- </module>
89
- <module name="MethodTypeParameterName">
90
- <property name="format" value="^[A-Z][0-9]?$"/>
91
- </module>
92
-
93
- <module name="WhitespaceAround">
94
- <property name="allowEmptyConstructors" value="true"/>
95
- <property name="allowEmptyMethods" value="true"/>
96
- <property name="ignoreEnhancedForColon" value="false"/>
97
- <property name="tokens" value="
98
- ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN,
99
- BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LE,
100
- LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
101
- LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
102
- LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE,
103
- LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL,
104
- PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN,
105
- STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
106
- </module>
107
- </module>
108
- </module>
@@ -1,41 +0,0 @@
1
- package org.embulk.input.dynamodb
2
-
3
- import com.amazonaws.services.dynamodbv2.model.AttributeValue
4
- import org.msgpack.value.{Value, ValueFactory}
5
-
6
- import scala.util.Try
7
-
8
- object AttributeValueHelper {
9
-
10
- // referring aws-scala
11
- def decodeToValue(value: AttributeValue): Value = {
12
- import scala.collection.JavaConverters._
13
-
14
- // FIXME: Need Encode?
15
- lazy val _bin = Option(value.getB).map(v => ValueFactory.newBinary(v.array))
16
- lazy val _bool = Option(value.getBOOL).map(v => ValueFactory.newBoolean(v))
17
- lazy val _num = Option(value.getN).map(v =>
18
- Try(v.toLong).map(ValueFactory.newInteger).getOrElse(ValueFactory.newFloat(v.toDouble)))
19
- lazy val _str = Option(value.getS).map(v => ValueFactory.newString(v))
20
- lazy val _nil = Option(value.getNULL).map(v => ValueFactory.newNil)
21
-
22
- lazy val _list = Option(value.getL).map(l =>
23
- ValueFactory.newArray(l.asScala.map(v => decodeToValue(v)).asJava))
24
- lazy val _ss = Option(value.getSS).map(l =>
25
- ValueFactory.newArray(l.asScala.map(v => ValueFactory.newString(v)).asJava))
26
- lazy val _ns = Option(value.getNS).map(l =>
27
- ValueFactory.newArray(l.asScala.map(v =>
28
- Try(v.toLong).map(ValueFactory.newInteger).getOrElse(ValueFactory.newFloat(v.toDouble))).asJava))
29
- // FIXME: Need Encode?
30
- lazy val _bs = Option(value.getBS).map(l =>
31
- ValueFactory.newArray(l.asScala.map(v => ValueFactory.newBinary(v.array)).asJava))
32
- lazy val _map = Option(value.getM).map(m =>
33
- ValueFactory.newMap(m.asScala.map(v => ValueFactory.newString(v._1) -> decodeToValue(v._2)).asJava))
34
-
35
- _bin.orElse(_bool).orElse(_num).orElse(_str).orElse(_nil)
36
- .orElse(_list).orElse(_ss).orElse(_ns).orElse(_bs).orElse(_map) match {
37
- case None => ValueFactory.newNil
38
- case Some(j) => j
39
- }
40
- }
41
- }
@@ -1,63 +0,0 @@
1
- package org.embulk.input.dynamodb
2
-
3
- import com.amazonaws.auth._
4
- import com.amazonaws.auth.profile.ProfileCredentialsProvider
5
- import com.google.common.base.Optional
6
- import org.embulk.config.ConfigException
7
-
8
- object AwsCredentials {
9
- def getCredentialsProvider(task: PluginTask): AWSCredentialsProvider = {
10
- if (!task.getAuthMethod.isPresent) {
11
- // backward compatibility
12
- if (task.getAccessKey.isPresent && task.getSecretKey.isPresent) {
13
- new AWSCredentialsProvider {
14
- override def refresh(): Unit = {}
15
-
16
- override def getCredentials: AWSCredentials = {
17
- new BasicAWSCredentials(
18
- task.getAccessKey.get(),
19
- task.getSecretKey.get())
20
- }
21
- }
22
- } else {
23
- new ProfileCredentialsProvider()
24
- }
25
- } else {
26
- val cred = task.getAuthMethod.get() match {
27
- case "basic" =>
28
- val accessKey = require(task.getAccessKey, "'access_key'")
29
- val secretKey = require(task.getSecretKey, "'secret_key'")
30
-
31
- new BasicAWSCredentials(accessKey, secretKey)
32
-
33
- case "env" =>
34
- new EnvironmentVariableCredentialsProvider().getCredentials
35
-
36
- case "instance" =>
37
- new InstanceProfileCredentialsProvider().getCredentials
38
-
39
- case "profile" =>
40
- val profileName = task.getProfileName.or("default")
41
-
42
- try {
43
- new ProfileCredentialsProvider(profileName).getCredentials
44
- } catch {
45
- case e: IllegalArgumentException =>
46
- throw new ConfigException(s"No AWS profile named $profileName")
47
- }
48
-
49
- case "properties" =>
50
- new SystemPropertiesCredentialsProvider().getCredentials
51
-
52
- case _ =>
53
- throw new ConfigException(s"Unknown 'auth_method' ${task.getAuthMethod.get()}")
54
- }
55
-
56
- new AWSCredentialsProvider {
57
- override def refresh(): Unit = {}
58
-
59
- override def getCredentials: AWSCredentials = { cred }
60
- }
61
- }
62
- }
63
- }
@@ -1,23 +0,0 @@
1
- package org.embulk.input.dynamodb
2
-
3
- import com.amazonaws.ClientConfiguration
4
- import com.amazonaws.regions.Regions
5
- import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient
6
- import org.embulk.config.ConfigException
7
-
8
- object DynamoDBClient {
9
- def create(task: PluginTask): AmazonDynamoDBClient = {
10
- val client = new AmazonDynamoDBClient(
11
- AwsCredentials.getCredentialsProvider(task),
12
- new ClientConfiguration()
13
- .withMaxConnections(50)) // SDK Default Value
14
-
15
- if (task.getEndPoint.isPresent) {
16
- client.withEndpoint(task.getEndPoint.get())
17
- } else if (task.getRegion.isPresent) {
18
- client.withRegion(Regions.fromName(task.getRegion.get()))
19
- } else {
20
- throw new ConfigException("At least one of EndPoint or Region must be set")
21
- }
22
- }
23
- }
@@ -1,21 +0,0 @@
1
- in:
2
- type: dynamodb
3
- region: ENV_VAR
4
- operation: scan
5
- table: ENV_VAR
6
- auth_method: basic
7
- access_key: ENV_VAR
8
- secret_key: ENV_VAR
9
- columns:
10
- - {name: pri-key, type: string}
11
- - {name: sort-key, type: long}
12
- - {name: value, type: string}
13
-
14
- out:
15
- type: file
16
- path_prefix: result
17
- file_ext: tsv
18
- formatter:
19
- type: csv
20
- delimiter: "\t"
21
- header_line: false
@@ -1,19 +0,0 @@
1
- in:
2
- type: dynamodb
3
- region: ENV_VAR
4
- operation: scan
5
- table: ENV_VAR
6
- auth_method: basic
7
- columns:
8
- - {name: pri-key, type: string}
9
- - {name: sort-key, type: long}
10
- - {name: value, type: string}
11
-
12
- out:
13
- type: file
14
- path_prefix: result
15
- file_ext: tsv
16
- formatter:
17
- type: csv
18
- delimiter: "\t"
19
- header_line: false
@@ -1,19 +0,0 @@
1
- in:
2
- type: dynamodb
3
- region: ENV_VAR
4
- operation: scan
5
- table: ENV_VAR
6
- auth_method: env
7
- columns:
8
- - {name: pri-key, type: string}
9
- - {name: sort-key, type: long}
10
- - {name: value, type: string}
11
-
12
- out:
13
- type: file
14
- path_prefix: result
15
- file_ext: tsv
16
- formatter:
17
- type: csv
18
- delimiter: "\t"
19
- header_line: false