CloudFormationインポートをSAMで試す

結論:Serverless Application ModelでのCloudFormation インポート機能の利用は
現時点(2019/11/24)では明確なアナウンスはありません。

新機能 – CloudFormation スタックへの既存リソースのインポートが発表されました!

当方、CloudFormationを好んで利用するプログラマー やっさん でございます。
CloudFormationを使い始めた当初から不便だと感じていた点が、

「既存のリソースをCloudFormation スタックで管理することはできない。
 管理したい場合は、既存リソースを削除してCloudFormationを用いて
 再作成する。」

という仕様でした。

この仕様がついに解消され、
既存リソースをスタックに含めることができるようになりました!

今までは、既存のリソースをCloudFormation スタック管理したい場合、
CloudFormerを使ってCloudFormationテンプレートを出力し、
出力されたテンプレート内容に基づいてCloudFormationスタックを
構築する必要がありましたが、これにより不要になりますね!

さっそく SAM で利用してみたいと思います(フラグです…)!

S3バケットを既存のSAMスタックにインポートしてみる

今回は以下のようなシンプルなServerless Application Modelの
CloudFormationテンプレートファイルに、ビルドアーティファクトを保存する
S3バケットをインポートしてみます。

1
2
3
4
5
6
7
8
9
10
11
12
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31

Resources:
SandboxFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: sam-sandbox
CodeUri: src/handlers
Handler: sandbox
Runtime: go1.x
# AutoPublishAlias: live

早速、既存のテンプレートに追記してみます

以下のように追記します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31

Resources:
SandboxFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: sam-sandbox
CodeUri: src/handlers
Handler: sandbox
Runtime: go1.x
# AutoPublishAlias: live

SamSandboxPackages:
Type: AWS::S3::Bucket
DeletionPolicy: Retain
Properties:
BucketName: sam-sandbox-package

マネージメントコンソールからインポートする

既存のスタックから
「スタックアクション」 -> 「スタックへのリソースのインポート」を実行します

変更済みのテンプレートファイルをアップロードして適用してみます。

想定外の結果が …

お、おや … これは想定外ですね …

エラーが出力されました。
Serverless Application Modelは
CloudFormationの拡張フォーマットだからでしょうか。
アウトプットされたフォーマットや、変換後のフォーマットを指定した場合も同様のエラーが出力されます。

拡張フォーマットではない、標準のCloudFormationテンプレートなら
インポートが可能です。

参考:
標準のCloudFormationテンプレートならインポート可能です。

ドキュメントを読み漁ってみる

CloudFormation インポート機能のドキュメントを探し、
イントゥ・ジ・アンノウンしたところ、英語ドキュメントは
たくさん見つかりました。

…CLIを利用してインポートできることも分かりましたが、
Transformによる拡張フォーマットに対応している旨の記載が見つかりません。

これは・・・残念な結果となりましたが、
Serverless Application Modelについては
正式な対応アナウンスを見守りたいと思います。

以上です!(T_T)

このエントリーをはてなブックマークに追加