使用serverless.yaml创建SimpleDB域

时间:2018-01-01 07:46:30

标签: amazon-web-services serverless-framework amazon-simpledb serverless

所以我使用无服务器框架在Amazon AWS上创建一个服务器较少的应用程序。 对于我们的堆栈,我们创建了许多Lambda函数,DynamoDB表,API网关,现在我们也想添加一个simpleDB域。 我似乎无法在线找到有关要添加到serverless.yaml以创建SimpleDB域的代码片段的任何信息。

我编写了以下代码,该代码创建了域名,但域名不是预期的

resources:
  Resources:
    LogSimpleDBTable:
      Type: "AWS::SDB::Domain"
      Properties:
        DomainName : ${self:provider.environment.SIMPLEDB}
        Description: "SDB Domain to store data log"

变量SimpleDB定义为

SIMPLEDB: git-pushr-processing-${opt:stage, self:provider.stage}

所以当我使用命令

进行部署时
serverless deploy --stage staging --awsaccountid XXXXX

我希望SimpleDB表的名称是

  

GIT-pushr处理阶段化

相反,我得到一个域名为

的域名
  

GIT-pushr-API分期-LogSimpleDBTable-1P7CQH4SGAWGI

每次序列的最后一位(1P7CQH4SGAWGI)都不同。

我们使用完全相同的模式来命名我们的DynamoDB表,它们似乎是用正确的名称创建的

 DYNAMODB_TABLE: git-pushr-processing-${opt:stage, self:provider.stage}

resources:
  Resources:
    TodosDynamoDbTable:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Retain
      Properties:
        AttributeDefinitions:
          -
            AttributeName: id
            AttributeType: S
        KeySchema:
          -
            AttributeName: id
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
        TableName: ${self:provider.environment.DYNAMODB_TABLE}
        StreamSpecification:
          StreamViewType: NEW_AND_OLD_IMAGES

我们得到一个名为

的DynamoDB表
  

GIT-pushr处理阶段化

那我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我不知道如何使无服务器使用您选择的域名。

但是,可以引用使用Ref: LogSimpleDBTable语法生成的域

例如将域名传递给lambda(使其成为process.env.SDB_DOMAIN_NAME变量):

functions:
  queueRequests:
    handler: src/consumer.handler
    name: consumer
    environment:
      SDB_DOMAIN_NAME:
        Ref: LogSimpleDBTable

或在IAM角色声明中引用

provider:
  ...
  iamRoleStatements:
    - Effect: Allow
      Action:
        - sdb:GetAttributes
        - sdb:PutAttributes
      Resource: 
        Fn::Join:
          - ""
          - - "arn:aws:sdb:*:*:domain/"
            - Ref: LogSimpleDBTable