CloudFormationで大量のKinesis作ったら失敗した

More than 1 year has passed since last update.


はじめに

今回は、CloudFormationKinesis Stream作ろうとしたら失敗したので

対策したお話です。

作ろうとしたのは1個ではなく、7個です。

ここが重要。7個....

error-kinesis.png

どうやら、非同期的に作成できるKinesis Stream5個までのようです。

aws公式の資料はここです


CreateStream、DeleteStream、ListStreams は、1 秒間に最大 5 件のトランザクションを提供できます。


らしいです。


対策案1



  1. CloudFormationのスタックを分割する。


  2. kinesis1.template, kinesis2.templateのような感じに。


対策案2



  1. CloudFormationのスタックを分割する。`


  2. kinesis1.template, kinesis2.templateのような感じに。

  3. 上記の1, 2チェーン実行する。


チェーン実行.template

{

"AWSTemplateFormatVersion" : "2010-09-09",

"Description" : "exec-chain",

"Resources" : {
"Bucket" : {
"Type" : "AWS::S3::Bucket"
},
"BucketPolicy" : {
"Type" : "AWS::CloudFormation::Stack",
"Properties" : {
"TemplateURL" : "https://s3-us-east-1.amazonaws.com/hoge/kinesis1.template",
"Parameters" : {
"BucketName" : { "Ref" : "Bucket" }
}
}
}
},
"Outputs" : {
"kinesis1" : {
"Value" : { "Fn::GetAtt" : ["BucketPolicy", "Outputs.kinesis1"]}
}
}
}


チェーン実行はこんな感じにしたらできます。

あとは、Create Stackする間隔をあけれてあげれば良いです。

公式はこちら良い感じに待機してくれそうです。


おわりに

現状、対策1しかできていないですが、

今後、対策2も完成させて公開できればと思っております。

みなさま、運用していく中で、もっと良い方法あるよ!等ありましたら、ご教授ください。