สร้างโดเมน SimpleDB โดยใช้ serverless.yaml

ดังนั้นฉันจึงสร้างแอปพลิเคชันแบบเซิร์ฟเวอร์น้อยลงบน Amazon AWS โดยใช้ Serverless Framework สำหรับสแต็กของเรา เราสร้างฟังก์ชัน Lambda, ตาราง DynamoDB, API Gateway จำนวนมาก และตอนนี้เราต้องการเพิ่มโดเมน 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}

ดังนั้นเวลาผม Deploy โดยใช้คำสั่ง

serverless deploy --stage staging --awsaccountid XXXXX

ฉันคาดหวังว่าชื่อของตาราง SimpleDB จะเป็น

git-pushr-การประมวลผลการแสดงละคร

ฉันกลับได้รับโดเมนที่มีชื่อต่อไปนี้แทน

git-pushr-api-staging-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-การประมวลผลการแสดงละคร

แล้วฉันทำอะไรผิดที่นี่?


person Hassan Jalil    schedule 01.01.2018    source แหล่งที่มา


คำตอบ (1)


ฉันไม่รู้วิธีทำให้ Serverless ใช้ชื่อโดเมนที่คุณเลือกได้

อย่างไรก็ตาม คุณสามารถอ้างอิงโดเมนที่สร้างโดยใช้ไวยากรณ์ Ref: LogSimpleDBTable ได้

เช่น. เพื่อส่งชื่อโดเมนไปยังแลมบ์ดา (ทำให้สามารถใช้ได้เป็นตัวแปร 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
person Troggy    schedule 06.02.2019