こんにちは。エンジニアのEadaedaです。
皆さんのチームではGithub Actionsでaws-actions/configure-aws-credentials
を使っていますか?GitHub ActionsでAWS SDKやAWS CLIを使うために必要なクレデンシャルなどを設定してくれるactionで、我々のチームでは最近かなり利用するようになりました。
使うためにはIAM IDプロバイダが必要で、そのリソース管理をTerraformで行っているというパターンは多いと思います。例えば以下のようなtfファイルを書きますよね。
resource "aws_iam_openid_connect_provider" "github_actions_oidc" { url = "https://token.actions.githubusercontent.com" thumbprint_list = [ "ここにthumbprint" ] client_id_list = [ "sts.amazonaws.com" ] }
ここで困るのがコード中に書いたここにthumbprint
の部分です。サムプリントは計算方法がAWSより案内されているので、そのとおり計算し結果をコピペするだけです。
とはいえ、ルート証明書が変更されるたびにサムプリントの値を計算・コピペ・terraform apply
するというのは少々めんどくさいし、計算・コピペは人間がやる作業なので間違いが起こりやすいです。そこでTerraformのtls_certificate
データリソースを使って、サムプリントの計算もTerraformにさせましょう。
certificates
の0番目はルート証明書を指すことを利用して下記のように記述できます。
data "tls_certificate" "github_actions_oidc_provider" { url = "https://token.actions.githubusercontent.com/.well-known/openid-configuration" } resource "aws_iam_openid_connect_provider" "github_actions_oidc" { url = "https://token.actions.githubusercontent.com" thumbprint_list = [ data.tls_certificate.github_actions_oidc_provider.certificates[0].sha1_fingerprint ] client_id_list = [ "sts.amazonaws.com" ] }
更新時に人間がやることはterraform plan
で新しいサムプリントと確認することと、差分が大丈夫であればterraform apply
するだけとなりました。
以上です。