所以我创建上使用无服务器框架亚马逊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处理分期
相反,我出现以下名称的域
混帐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处理分期
所以我在做什么错在这里?
我不知道如何使无服务器使用您所选择的域名。
然而,有可能引用域中使用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