Amazon web services 依赖于另一个资源的存在的无服务器/云信息资源
我正在尝试使用无服务器框架部署一个Kinesis Firehose,它输出到一个ElasticSearch域 由于Firehose需要ES域在创建之前已经存在,因此我遇到以下错误: 出现错误:MyFirehoseStream-域 arn:aws:es:us-east-1:1234567890:domain/my elastic搜索仍在进行中 正在创建 有没有办法让Firehose创建等待ES域创建完成Amazon web services 依赖于另一个资源的存在的无服务器/云信息资源,amazon-web-services,amazon-cloudformation,serverless-framework,Amazon Web Services,Amazon Cloudformation,Serverless Framework,我正在尝试使用无服务器框架部署一个Kinesis Firehose,它输出到一个ElasticSearch域 由于Firehose需要ES域在创建之前已经存在,因此我遇到以下错误: 出现错误:MyFirehoseStream-域 arn:aws:es:us-east-1:1234567890:domain/my elastic搜索仍在进行中 正在创建 有没有办法让Firehose创建等待ES域创建完成 为了以防万一,下面是我的serverless.yml文件的相关部分: 仅供参考,我正在使用无
为了以防万一,下面是我的
serverless.yml
文件的相关部分:
仅供参考,我正在使用无服务器伪参数
插件来使用{AWS::Region}
和{AWS::AccountId}
更新:
我现在已经解决了这个问题,因此,如果细节对任何人都有帮助:
我将DomainARN
属性更改为{“Fn::GetAtt”:[“MyElasticSearch”,“DomainARN”]}
我最初动态生成ARN的原因是,对于
“Fn::GetAtt”
,我最初尝试使用ARN
,而不是DomainArn
,但没有成功。不过巧合的是,DomainArn
在最新版本中已被弃用,因此如果您使用的是最新版本,Arn
实际上是正确的。云信息资源支持DependsOn
属性
资源:
资源:
MyFirehoseStream:
类型:“AWS::KinesisFirehose::DeliveryStream”
DependsOn:MyElasticSearch
云信息资源支持
DependsOn
属性
资源:
资源:
MyFirehoseStream:
类型:“AWS::KinesisFirehose::DeliveryStream”
DependsOn:MyElasticSearch
谢谢,这似乎是正确的,但我想指出的是,在我的情况下,我实际上不需要
DependsOn
。在您链接到的文档中,它解释了“隐式依赖”,这最终对我有用。我只需要引用其他资源的ARN。谢谢,这似乎是正确的,但我想指出,在我的例子中,我实际上不需要DependsOn
。在您链接到的文档中,它解释了“隐式依赖”,这最终对我有用。我只需要参考其他资源的ARN。请将您的答案作为实际答案而不是问题编辑;堆栈溢出明确支持自答问题。请将您的答案作为实际答案而不是问题编辑发布;堆栈溢出明确支持自我回答问题。
resources:
Resources:
MyFirehoseStream:
Type: "AWS::KinesisFirehose::DeliveryStream"
Properties:
DeliveryStreamName: "MyFirehoseStream"
DeliveryStreamType: "DirectPut"
ElasticsearchDestinationConfiguration:
BufferingHints:
IntervalInSeconds: 300
SizeInMBs: 5
DomainARN: "arn:aws:es:#{AWS::Region}:#{AWS::AccountId}:domain/my-elastic-search"
IndexName: "myindex"
IndexRotationPeriod: "NoRotation"
RetryOptions:
DurationInSeconds: 300
RoleARN: { "Fn::GetAtt": ["FirehoseBackupBucketRole", "Arn" ] }
S3BackupMode: "FailedDocumentsOnly"
S3Configuration:
BucketARN: { "Fn::GetAtt": ["FirehoseBackupBucket", "Arn" ] }
BufferingHints:
IntervalInSeconds: 300
SizeInMBs: 5
CompressionFormat: "GZIP"
RoleARN: { "Fn::GetAtt": ["FirehoseBackupBucketRole", "Arn" ] }
TypeName: "mytype"
MyElasticSearch:
Type: "AWS::Elasticsearch::Domain"
Properties:
AccessPolicies: ${file(./iam_policies/elastic-search.json)}
DomainName: "my-elastic-search"
ElasticsearchVersion: 6.2
ElasticsearchClusterConfig:
InstanceCount: "1"
InstanceType: "t2.small.elasticsearch"
EBSOptions:
EBSEnabled: true
Iops: 0
VolumeSize: 10
VolumeType: "gp2"