{"id":22075775,"url":"https://github.com/vallic/dynamodb_client","last_synced_at":"2026-02-06T22:02:20.141Z","repository":{"id":72471162,"uuid":"325104880","full_name":"Vallic/dynamodb_client","owner":"Vallic","description":"Drupal wrapper for DynamoDB","archived":false,"fork":false,"pushed_at":"2024-10-17T14:50:07.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"1.0.x","last_synced_at":"2025-07-24T15:04:48.146Z","etag":null,"topics":["drupal-8","drupal-9","drupal-module","dynamodb","dynamodb-client","keyvalue","keyvaluestore"],"latest_commit_sha":null,"homepage":"https://www.drupal.org/project/dynamodb_client","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vallic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-28T19:59:37.000Z","updated_at":"2024-10-17T14:49:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"ae4aa2b1-2b68-4592-b465-a767608a78da","html_url":"https://github.com/Vallic/dynamodb_client","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Vallic/dynamodb_client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vallic%2Fdynamodb_client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vallic%2Fdynamodb_client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vallic%2Fdynamodb_client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vallic%2Fdynamodb_client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vallic","download_url":"https://codeload.github.com/Vallic/dynamodb_client/tar.gz/refs/heads/1.0.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vallic%2Fdynamodb_client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29178545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T20:14:21.878Z","status":"ssl_error","status_checked_at":"2026-02-06T20:14:21.443Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drupal-8","drupal-9","drupal-module","dynamodb","dynamodb-client","keyvalue","keyvaluestore"],"created_at":"2024-11-30T22:11:11.820Z","updated_at":"2026-02-06T22:02:20.114Z","avatar_url":"https://github.com/Vallic.png","language":"PHP","readme":"DynamoDB\n-----\nThe Drupal DynamoDB module provides integration with AWS DynamoDB services.\nCurrent integration provides a basic database wrapper for use with DynamoDB.\n\n# Features\n* DynamoDB table CRUD operations: create, delete, update and list tables\n* DynamoDB write, read, update and query data.\n* Option to use multiple DynamoDB instances.\n* Granular settings per each DynamoDB instance / table.\n* Database service which follows core connection layer\n* Ability to query default instance, or any other.\n* Simplicity in use as any other database implementation.\n\n# Available methods\n### Data query / write.\n* query\n* scan\n* getItem\n* putItem\n* updateItem\n* deleteItem\n* batchWriteItem\n* batchGetItem\n\n### Table actions.\n* createTable\n* updateTable\n* deleteTable\n* listTables\n\n# Settings\nSimilar to the core database settings array with DynamoDB integration we\ncan define DynamoDB connection details\n\n```\n$settings['dynamodb_client'] = [\n  'default' =\u003e [\n    'endpoint'   =\u003e 'http://dynamodb:8000',\n    'region'   =\u003e 'us-west-1',\n    'version'  =\u003e 'latest',\n    'aws_access_key' =\u003e 'dummy',\n    'aws_secret_key' =\u003e 'dummy',\n    'aws_billing' =\u003e [\n      \"BillingMode\" =\u003e \"PAY_PER_REQUEST\",\n    ],\n    'consistent_read' =\u003e FALSE,\n    'table_settings' =\u003e [\n      'key_value' =\u003e [\n        'consistent_read' =\u003e TRUE,\n      ]\n    ]\n  ]\n];\n```\n\n* Note that `aws_billing` and `consistent_read` can be defined per instances\n  but as well per each table separately under the key `table_settings`.\n  In above example we set that consistent_read is FALSE,\n  but for `key_value` table is set to TRUE.\n\n* `aws_billing` values are required, you can set your billing mode to\n`PAY_PER_REQUEST` or `PROVISIONED`.  If you set to `PROVISIONED` then you need\n  to define capacity, as example below\n  ```\n    'aws_billing' =\u003e [\n      'ProvisionedThroughput' =\u003e [\n        'ReadCapacityUnits' =\u003e 10,\n        'WriteCapacityUnits' =\u003e 5,\n      ],\n      \"BillingMode\" =\u003e \"PROVISIONED\",\n    ],\n  ```\n\nNote that read consistency (`consistent_read` option inside settings)\ncan effect your billing and as well results which you could get back\nfrom DynamoDb. See more details below.\n\n**Read more about:**\n* [Billing parameters](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BillingModeSummary.html)\n* [Read consistency](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html)\n\n**Important**\nWhilst needs of different projects could be different, for that reason billing\nand read consistency can be defined through settings per an\ninstance or per each table. As well, read consistency can be set inside each\nquery which you perform if you choose to add `ConsistencyRead =\u003e TRUE`\ninside your query.\n\n# Examples of usage\n\n### Initialize connection - default instance\n```\n# Drupal core MySQL.\nDrupal::database();\n\n# DynamoDB - access to DynamoDB through Drupal wrapper.\nDynamoDb::database();\n\n# DynamoDB - access directly to DynamoDB, without Drupal wrapper.\nDynamoDb::rawDatabase();\n```\n\n### Initialize connection - different instance\n```\n# Drupal core MySQL.\nDrupal::database('mysql_replica');\n\n# DynamoDB\nDynamoDb::database('my_second_instances');\n```\n\n### Fetch data from key_value table\n```\n\n# DynamoDB - uses arrays as parameters for query to be executed.\n\n  $params = [\n    'TableName' =\u003e $this-\u003etable,\n    'Key' =\u003e [\n      'collection' =\u003e [\n        'S' =\u003e $this-\u003ecollection,\n      ],\n      'name' =\u003e [\n        'S' =\u003e $key,\n      ],\n    ],\n    'ProjectionExpression' =\u003e '#val',\n    'ExpressionAttributeNames' =\u003e [\n      '#val' =\u003e 'value',\n    ],\n  ];\n\n  $result = $this-\u003edynamodb-\u003egetItem($params);\n```\n\n* you can see more examples in dynamodb_keyvalue submodule\n\n## KeyValue\n* drop-in replacement for the core KeyValueStore which uses MySQL\n  as default storage\n* support for key_value and key_value_expire storages\n* enable the submodule\n\nIMPORTANT: key_value is essential for Drupal site to be working properly.\nFirst enable the submodule, and during that process,\nmigration would be performed of entries from MySQL tables to new\nDynamoDB tables. After the submodule is enabled,\nadd parameters change in your services.yml file.\n```\nparameters:\nfactory.keyvalue.expirable:\nkeyvalue_expirable_default: keyvalue.expirable.dynamodb\nfactory.keyvalue:\ndefault: keyvalue.dynamodb\n```\n\n## Session\nTBD - implement DynamoDB sessions.\n\n## DynamoDB documentation\n* https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html\n* https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvallic%2Fdynamodb_client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvallic%2Fdynamodb_client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvallic%2Fdynamodb_client/lists"}