我正在尝试从CloudFormation中创建的堆栈中导出DynamoDb StreamArn,然后使用serverless.yml中的!ImportValue引用导出 .
但我收到此错误消息:
unknown tag !<!ImportValue> in "/codebuild/output/src/serverless.yml"
cloudformation和serverless.yml定义如下 . 任何帮助赞赏 .
StackA.yml
AWSTemplateFormatVersion: 2010-09-09
Description: Resources for the registration site
Resources:
ClientTable:
Type: AWS::DynamoDB::Table
DeletionPolicy: Retain
Properties:
TableName: client
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 2
WriteCapacityUnits: 2
StreamSpecification:
StreamViewType: NEW_AND_OLD_IMAGES
Outputs:
ClientTableStreamArn:
Description: The ARN for My ClientTable Stream
Value: !GetAtt ClientTable.StreamArn
Export:
Name: my-client-table-stream-arn
serverless.yml
service: my-service
frameworkVersion: ">=1.1.0 <2.0.0"
provider:
name: aws
runtime: nodejs6.10
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:DescribeStream
- dynamodb:GetRecords
- dynamodb:GetShardIterator
- dynamodb:ListStreams
- dynamodb:GetItem
- dynamodb:PutItem
Resource: arn:aws:dynamodb:*:*:table/client
functions:
foo:
handler: foo.main
events:
- stream:
type: dynamodb
arn: !ImportValue my-client-table-stream-arn
batchSize: 1
2 回答
使用
${cf:stackName.outputKey}
解决您似乎正在使用
!ImportValue
简写为CloudFormation YAML . 我的理解是,当CloudFormation解析YAML时,!ImportValue
实际上是别名Fn::ImportValue
. 根据无服务器功能文档,它们似乎应该支持Fn::ImportValue
形式的导入 .根据Fn::ImportValue的文档,您应该能够像您一样引用您的导出
希望有助于解决您的问题 .