Closed27
TerraformでAWSリソースを作成するときに調べたこと
IAM JSONポリシー要素
バージョンについて以下記述が必要。
"Version": "2012-10-17"
経緯
日付かと思って調べた。JSONのバージョンらしい。
terraform apply時に「The role defined for the function cannot be assumed by Lambda.」エラー
エラー内容
Error: updating Lambda Function (Lambda関数名) configuration: operation error Lambda: UpdateFunctionConfiguration, https response error StatusCode: 400, RequestID: XXXXXXX, InvalidParameterValueException: The role defined for the function cannot be assumed by Lambda.
原因
IAMロール名を変更後、Lambda関数を定義しているtfファイルに反映していなかったため。
解決方法
IAMロールを変更後の名前で定義し直し、再度terraform apply実施。エラーが解消されることを確認。
参考
git pull実行時にinvalid pathエラー
エラー内容
error: invalid path 'ファイルパス'
Merge with strategy ort failed.
環境
- 作業PC:Windows 11
原因
WindowsとMac(or Linux)のファイルシステム(文字コード?)の違い。
恐らく、リモートリポジトリにある「invalid path」エラーが出力されるファイルは、
Mac OS(or Linux)で作成されたと思われる。
解決方法
以下コマンド実施。
$ git config --global core.protectNTFS false
参考
git fetchしてもリモート追跡ブランチが作成されない
原因
最初のクローン時に --depth=1
を指定してクローンしており、shallowクローンとなっているため。
解決方法
以下コマンド実施。
$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
参考
terraform plan/aply時に複数のリソースを指定する
方法
$ terraform plan -target={type.local-name01,type.local-name-02……}
$ terraform apply -target={type.local-name01,type.local-name02……}
参考
新規ブランチを作成してチェックアウトする
方法
$ git checkout -b ブランチ名
参考
「aws_wafv2_regex_pattern_set」は何のために使う?
まとめ
- AWS WAFで使用する正規表現をグループ化できる
- 特定のパス、IPアドレスに制限を掛けたいときに使用
参考
AWS WAFのマネージドルール一覧
参考
terraform plan時に「Provider configuration not present」エラー
エラー内容
│ Error: Provider configuration not present
│
│ To work with module.XXX.aws_wafv2_web_acl.XXXX its original provider
│ configuration at
│ module.XXX.provider["registry.terraform.io/hashicorp/aws"].virginia is
│ required, but it has been removed. This occurs when a provider
│ configuration is removed while objects created by that provider still exist
│ in the state. Re-add the provider configuration to destroy
│ module.XXX.aws_wafv2_web_acl.XXXX, after which you can remove the
│ provider configuration again.
原因
- main.tfのproviderではなく、module毎のproviderの記載を読み込んでいたため
- module毎のproviderの記載はコメントアウトされていた
解決方法
- module毎のproviderの記載のコメントアウトを外して、再度apply実行。正常に実行されることを確認。
経緯
- AWS WAFをterraformで作成したい。cloudfrontの前にWAFを置くには、「米国東部 (バージニア北部) リージョン」で作成する必要がある
- AWS WAFのresourceにproviderを記載し、
terraform plan
を実施したところ、上記エラーが発生 - 以下URLを参考に
.terraform/providers
フォルダ配下を削除し、terraform init
→terraform plan
を実施したがエラーに変化無し
参考
API Gatewayのロギングを有効化する
経緯
- API Gateway経由のLamabda実行がエラーになるため、詳細を調査したかったため
参考
TerraformでAWS WAF作成時に「WAFInvalidParameterException: Error reason: You have a duplicate priority. Priorities must be unique., field: RULE, parameter: X」エラー
エラー内容
Error: updating WAFv2 WebACL (XXXXXXXX): WAFInvalidParameterException: Error reason: You have a duplicate priority. Priorities must be unique., field: RULE, parameter: X
原因
- エラー内容の通り、WebACLの優先度(priority)が重複している
解決方法
- priorityが重複しないように修正する
before
rule {
name = "Example0Roule"
priority = 1
action {
allow {}
}
statement {
・・・
}
}
rule {
name = "Example1Roule"
priority = 1
action {
allow {}
}
statement {
・・・
}
}
after
rule {
name = "Example0Roule"
priority = 0
action {
allow {}
}
statement {
・・・
}
}
rule {
name = "Example1Roule"
priority = 1
action {
allow {}
}
statement {
・・・
}
}
「git stash」した内容を削除する
方法
以下コマンドを実施
$ git stash drop stash@{X}
参考
API Gateway経由でLambdaを作成すると「Execution failed due to configuration error: Invalid permissions on Lambda function」エラーになる
原因
調査中
解決方法
調査中
参考
ACM証明書作成時に参考にしたドキュメント
参考
- 「aws_acm_certificate_validation」の記述内容が古いため、最新ドキュメントを合わせて参照する
- 「aws_acm_certificate_validation」の新しい記述内容について
- Certificate Transparency(証明書の透明性)について
- 設定されていないとブラウザで「保護されていない通信」と表示されてしまう。
- DNS検証で作成されるCNAMEレコードはAWSから払い出される文字列らしい
- すごく長いランダム文字列になったので焦ったがそういうものらしい
VSCodeの拡張機能
- Terraformの拡張機能があるのでインストールする
- 色分けされて見やすい
参考
作業ブランチに最新のmasterを反映させる
参考
他のメンバーがプッシュしたブランチをローカルに持っていきたい
参考
CloudFrontにACM SSL証明書を紐づけた後terraform applyすると「cloudfront_default_certificate」がリプレースされる
原因
cloudfront_default_certificateがtrueになっているため。
CloudFrontのデフォルトの証明書を使用しようとしてしまう。
解決方法
cloudfront_default_certificateをfalseにする。
resource "aws_cloudfront_distribution" "frontend" {
(中略)
viewer_certificate {
cloudfront_default_certificate = false
(中略)
}
(中略)
}
参考
Route 53 Resolver DNS Firewall作成時に参考にしたドキュメント
参考
git fetch時に「error: cannot lock ref」エラー
参考
CloudFrontについて参考にしたドキュメント
参考
- 作成したOACはセキュリティ > オリジンアクセスから確認できる
このスクラップは2023/05/09にクローズされました