HashiCorpは、AWS Cloud Control (AWSCC)Providerの一般提供を開始した。AWSCC ProviderはAWSが公開しているCloud Control APIを元に自動生成され、AWSの新機能がリリースされた際にTerraformで対応できるようになる。当初は技術プレビューとして2021年にリリースされたが、バージョン1.0への移行にはサンプル設定やスキーマレベルのドキュメントの改善を含むいくつかの新機能が含まれる。
AWSCCはAWS Cloud Control APIの上に構築されている。Cloud Control APIは、AWSクラウドリソースで使用するCRUDL(作成、読み込み、更新、削除、リスト)操作を提供する。CloudFormation Public Registryに公開されているリソースタイプはすべて、このAPIで使える標準的なJSONスキーマを持っている。
このリリースの一部として、現在270以上のリソースにサンプルコンフィギュレーションが用意されている。例えば、awscc_ec2_key_pair
、ではEC2インスタンスで使用するキーペアを指定できる。既存のキーペアはPublicKeyMaterial
プロパティで指定できる。このプロパティを省略すると、新しいキー・ペアが生成される。
resource "awscc_ec2_key_pair" "example" { key_name = "example" public_key_material = "" tags = [{ key = "Modified By" value = "AWSCC" }]}
さらに、75以上のリソースで属性レベルのドキュメントが改善された。これらのリソースには、リソースの許容値内での属性の使用方法についての詳細な説明がある。これには、属性に関する文脈、その使用方法、各属性に期待される値が含まれる。
AWSCCは、標準的なAWS Providerの代替となるものではない。HashiCorpのプロダクトマーケティングマネージャであるAurora Chun氏が述べているように、"AWSCCとAWS Providerを一緒に使うことで、開発者は既存のAWSサービスと新しいAWSサービスにわたるリソースの大規模なカタログを利用できる"。AWSCCとAWS Providerは、リソースのプロビジョニングに併用できる。
# Use the AWS provider to provision an S3 bucketresource "aws_s3_bucket" "example" { bucket_prefix = "example"} # Use the AWSCC provider to provision an Amazon Personalize datasetresource "awscc_personalize_dataset" "interactions" { ... dataset_import_job = { data_source = { data_location = aws_s3_bucket.interactions_import.bucket } }}
AWSCC Providerーは最新のCloudFormationスキーマから生成され、Cloud Control APIに追加された全ての新しいサービスと共に毎週リリースされる。CloudFormationスキーマの中には、AWSCC Providerと互換性のないリソースもある。これらの詳細なリストはGitHub参照できる。
Azure 内では、AzAPI Providerが Azure ARM (Azure Resource Management) REST API の同様のサポートを可能にしている。TerraformのProviderはないが、CloudGraphはAWS Cloud Controlと同様のAPIエクスペリエンスを提供する。CloudGraphはAWS、Azure、GCP、Kubernetesをサポートしている。
Terraform AWS Cloud Control ProviderはTerraform Registryからダウンロードできる。AWSCC Providerには Terraform CLI バージョン 1.0.7 以上が必要だ。AWS ProviderのソースコードはGitHubで公開されており、MPL-2.0ライセンスの下でライセンスされている。追加情報はProviderのドキュメントとチュートリアルにある。