embulk-input-dynamodb 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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