无服务器框架 Dynamo DB 表资源定义(带排序键)

2024-01-19

目前,我的 serverless.yml 中有一些这样的代码。

resources:
  Resources:
    uploadBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:service}-${self:custom.stage}-uploads
    visitsTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: ${self:custom.visitsTable}
        AttributeDefinitions:
          - AttributeName: userId
            AttributeType: S
          - AttributeName: visitId
            AttributeType: S
          - AttributeName: comments
            AttributeType: S
          - AttributeName: attachments
            AttributeType: S
          - AttributeName: ph
            AttributeType: N
          - AttributeName: ch
            AttributeType: N
        KeySchema:
          - AttributeName: userId
            KeyType: HASH
          - AttributeName: visitId
            KeyType: HASH
        ProvisionedThroughput:
            ReadCapacityUnits: 5
            WriteCapacityUnits: 5

我的目标是创建一个包含主键 userId、排序键 VisitId 并包含评论、附件、ph 和 ch 字段的表。当我尝试sls deploy我收到以下错误。

无服务器错误 --------------------------------------

发生错误:visitsTable - 属性AttributeDefinitions 与表和二级索引的KeySchema 不一致。

我在这里做错了什么?

编辑:我尝试过的另一次尝试

resources:
  Resources:
    uploadBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:service}-${self:custom.stage}-uploads
    visitsTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: ${self:custom.visitsTable}
        AttributeDefinitions:
          - AttributeName: userId
            AttributeType: S
          - AttributeName: visitId
            AttributeType: S
        KeySchema:
          - AttributeName: userId
            KeyType: HASH
          - AttributeName: visitId
            KeyType: RANGE
        ProvisionedThroughput:
            ReadCapacityUnits: 5
            WriteCapacityUnits: 5

AWS DynamoDb 是一个 NO-SQL 类型数据库,无需在表创建过程中定义所有键。 AWS 文档还清楚地表明,在属性定义中,您必须指定密钥架构和索引。

描述表和索引的键架构的属性数组。

请按如下方式编辑您的代码

resources:
  Resources:
    uploadBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:service}-${self:custom.stage}-uploads
    visitsTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: ${self:custom.visitsTable}
        AttributeDefinitions:
          - AttributeName: userId
            AttributeType: S
          - AttributeName: visitId
            AttributeType: S
        KeySchema:
          - AttributeName: userId
            KeyType: HASH
          - AttributeName: visitId
            KeyType: RANGE
        ProvisionedThroughput:
            ReadCapacityUnits: 5
            WriteCapacityUnits: 5

了解更多创建表 http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html#DDB-CreateTable-request-AttributeDefinitions

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无服务器框架 Dynamo DB 表资源定义(带排序键) 的相关文章

  • 从表单发布触发 AWS Lambda

    我创建了一个小型 AWS Lambda 它使用 SES 发送电子邮件 我正在寻找将联系我们表单从静态网站连接到此 lambda 是否可以将联系我们表单直接发布到 lambda 的 url 我没有使用服务器端框架 并且真的想避免它 我有什么选
  • 将多个平台部署到 Elastic Beanstalk (PHP/Python)

    是否可以将多个平台部署到AWS 我有一个 PHP 应用程序 我还想运行一个小的 python 脚本 我看到 PHP 平台默认安装 Python 但是使用eb deployAWS 没有接听requirements txt并安装依赖项 我已经尝
  • 在 Amazon EMR 上使用 java 中的 hbase 时遇到问题

    因此 我尝试使用作为 MapReduce 步骤启动的自定义 jar 来查询 Amazon ec2 上的 hbase 集群 我的 jar 在地图函数内 我这样调用 Hbase public void map Text key BytesWri
  • DynamoDB 中条件写入的日期时间比较

    我目前正在使用 DynamoDB 如果该记录的日期早于新记录日期字段 我想使用条件写入来更新该记录 有没有办法比较条件写入的 DateTime 类型 或者目前仅适用于整数 字符串和流 Thanks 既然你提到你正在使用ISO 8601 ht
  • AWS Cognito - 如何确定用户是否使用电子邮件或电话号码注册

    我们已经按照描述实施了自定义身份验证触发器here https docs aws amazon com cognito latest developerguide user pool lambda challenge html 我们设置了用
  • 如何在docker的keycloak中添加SSL

    我在将 SSL 证书添加到在 docker 上运行的 Keycloak 时遇到问题 我通过负载均衡器从 AWS EC2 获得了 SSL 证书 但不知道如何将其添加到 docker 上的 Keycloak 中 我正在通过谷歌搜索 但尚未找到任
  • 更新 DynamoDB 中的多条记录

    如何在单个查询中更新 DynamoDB 中的多条记录 我有一个 csv 文件作为基于 csv 文件的输入 我必须更新数据库中的多条记录 只有一个属性 有可用的 API 吗 或者这可以使用批处理 Spring batch 来完成 Dynamo
  • 如何更改 Amazon Redshift 中的默认时区?

    默认情况下将时间戳列设置为 SYSDATE 将其存储为UTC 是否可以更改时区 以便 SYSDATE 将日期和时间存储到不同的时区 到目前为止 我已经检查了SET http docs aws amazon com redshift late
  • Beanstalk 部署忽略 .ebextensions 中的 nginx 配置文件

    我在单实例 Elastic Beanstalk 环境中托管 Java Web 应用程序 并添加了几个 ebextension 文件 这些文件在每次部署时成功为我创建配置文件 然而 我无法找到一种方法让 Beanstalk 在 etc ngi
  • 在 Amazon Redshift COPY 命令中转义分隔符

    我正在将数据从 Amazon S3 提取到 Amazon Redshift 中的表中 该表包含多个列 其中某些列数据可能包含特殊字符 复制命令有一个选项称为Delimiter我们可以在将数据拉入表时指定分隔符 问题有2个方面 当我导出时 u
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • AWS SQS Batch SendMessageBatchRequest 非常慢

    我的应用程序使用 SendMessageBatchRequest 将每个请求发布 10 条消息到 AWS SQS 每条消息的大小小于250字节 该应用程序预计每天发布约一百万条记录 但要实现这一目标 消息发布的速度非常慢 AmazonSQS
  • 如何在 dynamodb 上获得十亿个对象的不同计数?

    获取我的 dynamodb 中存储的不同对象数量的最有效方法是什么 例如我的对象有 10 个属性 我想根据 3 个属性获得不同的计数 如果您需要计数器 最好使用 AtomicCounters http docs aws amazon com
  • 从 Amazon S3 存储桶下载文件的脚本

    尝试编写脚本以从 Amazon S3 存储桶下载文件 cURL 网站上的示例遇到问题 下面的脚本产生 我们计算的请求签名与您的签名不匹配 假如 检查您的密钥和签名方法 感谢任何帮助 bin sh file filename php buck
  • 使用无服务器访问 SSM 变量

    我想用无服务器变量中的 SSM 参数 https serverless com blog serverless v1 22 0 按照文档 我运行了以下命令 aws ssm put parameter name foo value bar t
  • 通过 boto3 承担 IAM 用户角色时访问被拒绝

    Issue 我有一个 IAM 用户和一个 IAM 角色 我正在尝试将 IAM 用户配置为有权使用 STS 承担 IAM 角色 我不确定为什么收到 访问被拒绝 错误 Details IAM 角色 arn aws iam 123456789 r
  • Spring JMS监听器即使在异常时也会确认

    我正在使用 JMS 向 SQS 队列发送 接收消息 但是即使在使用 client acknowledge 时出现异常 我也无法重新传递消息 如何实现这一目标 我尝试了一个简单的测试 JmsListener destination test
  • 如何自动启动我的 ec2 实例、运行命令然后将其关闭?

    我想每周对 redshift postgres 数据库中的数据运行一次机器学习模型 我使用以下命令将 R 脚本设置为休息 apiplumbr然后我将其设置为一项任务来管理pm2 我有它 所以任务会在ec2实例启动然后继续运行 要让 R 脚本
  • AWS Cloudfront 作为具有自定义域的 Heroku 站点的 CDN

    最近 我从 AWS Route 53 brianpatrickhummel com 购买了一个域来托管个人投资组合 该投资组合网站已启动并正在运行 使用 S3 存储桶和 Cloudfront 作为 CDN 在作品集网站上 访问者可以预览我构
  • AWS RDS MySql - 如何在设置“公开可用”后允许访问

    刚刚使用默认设置和用户 密码创建了新的 AWS RDS MySql 实例 我也将其设置为publicly available并在此过程中创建新的 VPC 目前无法从我的笔记本电脑连接到此 RDS mysql h endpoint u myu

随机推荐