php - 需要一个带有 php 的 DynamoDB 的完整示例

标签 php amazon-web-services amazon-dynamodb database nosql

我想在 php 中编写服务,其中 -

1) DynamoDB 将有包含两列 key 和 val 的表 t

2) 我将检查表 t 中是否存在某些键。

3) 如果存在读取数据..如果不存在则在表t中插入新的键值

我正在检查一些链接 http://docs.aws.amazon.com/AWSSDKforPHP/latest/index.html#m=AmazonDynamoDB/put_item http://docs.aws.amazon.com/aws-sdk-php/guide/latest/quick-start.html

跟随哪个?

也有人可以给我简单的例子和​​准确的语法。

提前致谢。

最佳答案

完整的演练位于 HERE .它为您提供了凭据设置过程的分步概述,并在 PHP SDK for AWS 上附带了一个易于使用的插件。

AWS 设置 - AWS 不会为您逐步设置凭据设置,所以我会。
  • 1. 前往 AWS 并获取您的 PUBLIC_KEYPRIVATE_KEY

    • AWS 确实有这方面的教程 HEREHERE
  • 2.打开终端

  • 3. 如果您尚未创建凭据,请在终端的新页面中输入:

    nano ~/.aws/credentials
    
    • nano 功能页面将打开。您将在顶部看到 GNU nano 2.0.6...
  • 4.nano 页面中,输入:

    [default]
    aws_access_key_id = public_key_ABCDEFGHIJKLMNOPQRSTUVWXYZ
    aws_secret_access_key = private_key_s0m3_CR42Y_l3tt3rS_i5y0ur53cr3tK3y
    
  • 5. 键入后,按 CONTROL + X(是的...Control,不是 Command)。

  • 6. 点击 Y 然后 ENTER
  • 7.获取 [AWS_SDK_PHP][4]
  • 8.转到您的 Elastic Beanstalk
  • 9. 当您完成应用创建后,您会看到带有绿色勾号的概览屏幕。看向一边并点击配置
  • 10.Software Configuration -> Document root: 输入:/
  • 11.Property Name -> AWS_ACCESS_KEY_ID 下输入:[your_access_key]
  • 12. AWS_ACCESS_KEY_ID 下是 AWS_SECRET_KEY,输入:[your_secret_key]
  • 13. 当您的 PHP 项目准备就绪时。将所有文件放在一个文件夹中。将文件夹命名为[whatever],然后压缩[whatever] 中的文件。不要压缩整个文件夹。只压缩文件夹中的文件。如果其中一个文件包含您的 index.phpindex.html,您的项目将显示在 EBS 默认 URL 上。
  • 14.您的项目应命名为Archive.zip (Mac)。转到 EBS,上传 zip,然后就可以了!全部通过 AWS 设置完成!
AWS 设置
  • 1.AWS_SDK_PHP在一个空文件夹中
  • 2. 在使用 SDK 的文件顶部(index.php 或其他),输入:

    require 'aws/aws-autoloader.php';
    date_default_timezone_set('America/New_York');
    
    use Aws\DynamoDb\DynamoDbClient;
    
    $client = new DynamoDbClient([
        'profile' => 'default',
        'region'  => 'us-east-1',
        'version' => 'latest'
    ]);
    


  • 数据类型
    • S = 字符串
    • N = 数
    • B = 二进制


  • 基本方法

    • 描述表格

      $result = $client->describeTable(array(
          'TableName' => '[Table_Name]'
      ));
      
      echo $result;
      
    • 放置元素

      $response = $client->putItem(array(
          'TableName' => '[Table_Name]', 
          'Item' => array(
              '[Hash_Name]'   => array('S' => '[Hash_Value]'),
              '[Range_Name]'  => array('S' => '[Range_Value]')
          )
      ));
      
      //Echoing the response is only good to check if it was successful. Status: 200 = Success
      echo $response;
      
    • 获取项目

      $response = $client->getItem(array(
          'TableName' => '[Table_Name]',
          'Key' => array(
              '[Hash_Name]'  => array('S' => '[Hash_Value]'),
              '[Range_Name]' => array('S' => '[Range_Value]')
          )
      ));
      
      echo $response;
      
    • 删除项目

      $response = $client->deleteItem(array(
          'TableName' => '[Table_Name]',
          'Key' => array(
              '[Hash_Name]'  => array('S' => '[Hash_Value]'),
              '[Range_Name]' => array('S' => '[Range_Value]')
          )
      ));
      //Echoing the response is only good to check if it was successful. Status: 200 = Success
      echo $response;
      
    • 查询项

      $response = $client->query(array(
          'TableName' => '[Table_Name]',
          'KeyConditionExpression' => '[Hash_Name] = :v_hash and [Range_Name] = :v_range',
          'ExpressionAttributeValues' =>  array (
              ':v_hash'  => array('S' => '[Hash_Value]'),
              ':v_range' => array('S' => '[Range_Value]')
          )
      ));
      
      echo $response;
      

希望这对您有所帮助。

关于php - 需要一个带有 php 的 DynamoDB 的完整示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25806267/

相关文章:

javascript - 传递 js 变量以形成操作 url

php - 获取 Akeneo 中的类别列表

php - 从链接 Wordpress 中删除站点 url

amazon-web-services - 如何将文件上传到 lambda 函数或 API 网关?

amazon-dynamodb - DynamoDB 表编程创建

python - 构建在 DynamoDB 之上的 RESTful API?

java - 在 AWS 中连接到 DAX 时出错

php - Zend Framework 2 - Doctrine 2 - 如何使用固定装置

linux - 如何找出我在 Amazon EC2 上的存储空间已满的原因?

javascript - DynamoDB 中使用 BETWEEN 比较运算符的 ScanFilter