🦅

Terraform AWS Cloud Control (AWS CC) ProviderがGA

2024/05/31に公開

Terraform AWS Cloud Control (AWS CC) ProviderがGA

と発表があった為、ひとまず概要から確認してみる事にしました。

2024年5月30日発表のブログがこちら
https://aws.amazon.com/jp/blogs/devops/quickly-adopt-new-aws-features-with-the-terraform-aws-cloud-control-provider/

Terraform AWS CC プロバイダーのリリースにより、IaC ツールとして Terraform を使用している AWS のお客様は、リリース当日に Terraform AWS CC プロバイダーで通常利用できる最新の AWS イノベーションを使用してクラウドインフラストラクチャを構築することで、市場投入までの時間を短縮できるようになりました。

awscc provider(<= New!)
https://registry.terraform.io/providers/hashicorp/awscc/latest

AWS Cloud Control API を利用した AWS リソースのライフサイクル管理。このプロバイダーは、利用可能な CloudFormation リソース定義から完全に生成され、HashiCorp AWS プロバイダー チームによって内部的に管理されています。

aws provider(既存のTerraform AWS標準プロバイダー)
https://registry.terraform.io/providers/hashicorp/aws/latest

CloudFormation Registryについて

知っておくべきこと
Cloud Control プロバイダーのリソースとデータ ソースは、CloudFormation レジストリから取得された CloudFormation スキーマに基づいて完全に生成されます。

https://aws.amazon.com/jp/blogs/devops/cloudformation-coverage/
私自身いくつか触った時の過去記事も並べます。
CloudFormationにもS3バケットの中身を空にしてから削除してくれるリソースタイプが存在します。
CloudFormationレジストリのサードパーティ拡張機能をテンプレートでアクティブにするリソースタイプをSleepの例で説明。
CloudFormation(&CDK)からCloudFlareリソースを作成する方法。

上記で扱っているのは、いわゆるサードパーティ製のパブリッシャーによるリソースタイプでしたが、↓画像のラジオボタンにあるようにAWS製のリソースタイプにはCloudFormationの「Type」で指定している馴染みのものです。


これらはサードパーティ製とは違いユーザー自身が希望して有効化を必要とせず、https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/ReleaseHistory.html にて追加が知らされたと同タイミングで既にレジストリに登録済みの状態からスタートします。

Cloud Control APIについて

https://aws.amazon.com/jp/blogs/aws/announcing-aws-cloud-control-api/

https://docs.aws.amazon.com/ja_jp/cloudcontrolapi/latest/userguide/how-it-works.html

既存のAWSプロバイダーともファイル内で共存可能

AWS プロバイダーと AWS CC プロバイダーの両方を同じ設定ファイルで使用できます。

暗に、「既にawsプロバイダを利用してリソースを定義しているtfファイルに追加していく事が可能だよ(awsプロバイダが使えなくなる訳でもないよ)」と言っているものと思います。

使用例にも大きな違いはなさそうです。
左aws,右awscc

何が嬉しいか

以下動画の説明がとてもわかりやいです。(後半部分にデモも存在)
https://www.youtube.com/watch?v=MaxPvToGyQk

新しい機能サービスが追加されると、このプロセス(API使用確認、GitHubのIssueを開き、PRを作成し、テストを実行、レビュー、マージetc )を繰り返し、特に新しいサービスの場合、これには数日から数週間、場合によっては数ヶ月かかる場合もあります。

一貫したスキーマがある場合、 構造を作成するとそのスキーマをプログラムでスキャンしてすべてのリソース属性をマッピングできるため、スキーマを理解する為に各AWSサービスを個別に検査する必要がなくなり、1つの場所に行くだけで済みます。

その他、AWSCCのドキュメントにはコピペで使える実用的な例がある事も嬉しいねとの事です。
例:

説明ブロックの後半部分Terraform Providerのドキュメントを自動生成するtfplugindocsについても触れています。

わかりやすいブログも見つけました。
https://qiita.com/bgpat/items/8f29ea940c58ea16ffb8

後書き

ひとまず概要を勉強してみました、近日リソースを立ててみたりこれまでのawsプロバイダーとの違いが他にないかもう少し調べてみたいと思います。

Discussion