Terraform を使用して、AWS での Cognito ID プールのプロビジョニングを自動化しています。AWS プロバイダーはまだ Cognito をサポートしていないため、null_resource と local-exec を使用して AWS CLI を呼び出しています。
次のリソースがあります。
resource "null_resource" "create-identitypool" {
provisioner "local-exec" {
command = "aws cognito-identity create-identity-pool --identity-pool-name terraform_identitypool --no-allow-unauthenticated-identities --developer-provider-name login.terraform.myapp"
}
}
次の出力が得られます。
null_resource.create-identitypool (local-exec): {
null_resource.create-identitypool (local-exec): "IdentityPoolId": "eu-west-1:22549ad3-1611-......",
null_resource.create-identitypool (local-exec): "AllowUnauthenticatedIdentities": false,
null_resource.create-identitypool (local-exec): "DeveloperProviderName": "login.terraform.myapp",
null_resource.create-identitypool (local-exec): "IdentityPoolName": "terraform_identitypool"
null_resource.create-identitypool (local-exec): }
null_resource.create-identitypool: Creation complete
次のステップでは、既に作成したいくつかのロールを ID プールに追加します。
resource "null_resource" "attach-policies-identitypool" {
provisioner "local-exec" {
command = "aws cognito-identity set-identity-pool-roles --identity-pool-id ${null_resource.create-identitypool.IdentityPoolId} --roles authenticated=authroleXXX,unauthenticated=unauthroleXXX"
}
}
問題は、2 番目のリソースで使用する IdentityPoolId、${null_resource.create-identitypool.IdentityPoolId} を抽出できないことです。null_resource には出力属性がないことを理解しているので、コマンドライン出力からこの JSON オブジェクトを取得するにはどうすればよいですか。また、tirggers を使用して aws cognito-identity list-identity-pools を実行し、場合によっては delete-identity-pool を実行して、これをすべて繰り返し可能にし、そこからの出力も必要にします。
何か案は?また、この情報をどこかで見逃していた場合は、お詫び申し上げます。Terraform メーリング リストでもこの質問をしましたが、より多くの聴衆を対象にしようと思いました。
ありがとう、ティム