因此,我正在使用Serverless Framework在Amazon上创建一个服务器较少的应用程序。对于我们的堆栈,我们创建了许多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.推送-处理-分期
相反,我得到了一个具有以下名称的域
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.推送-处理-分期
那我在这里做错什么了?
发布于 2019-02-06 16:57:12
我不知道如何使无服务器使用您选择的域名。
但是,可以引用使用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: LogSimpleDBTablehttps://stackoverflow.com/questions/48047990
复制相似问题