前提
TerraformがAWSを始め、複数のクラウドをまとめてIaaCな管理できるすごいやつ、という認識程度
今回は API Gatewayと Lambdaを作成して紐付けるとこまでやった。
その際にハマったことの覚書としてここに残しておきます
ハマったこと一覧
MalformedPolicyDocument: JSON strings must not have leading spaces
状況:IAMのassume_role_policyをベタ書きしてapplyすると怒られる
原因:assume_role_policyをインデントして整形すると怒られる。
対策:見た目はイケてないが、インデントなしでやろう
Error Creating IAM Role {role_name} InvalidClientTokenId: The security token included in the request is invalid
状況:IAMを作成すると怒られる。
原因:AWSのMFAを有効にした状態で、 ~/.aws/config に mfa_serial パラメータを追加せずに実行すると怒られる。(aws-vaultを利用していた)
対策:~/.aws/config に mfa_serialを追加しよう
terraformにおけるsource と data の違い
- data はすでにクラウド上にあるリソースを参照する手段。Readonlyなので、そのリソースを消したりできない
- source は書き換えもできる。
他のプロジェクトなどと共有するもの→ data
このプロジェクト固有のもの→ source