gpt4 book ai didi

amazon-web-services - Terraform,从null_resource,local-exec和AWS CLI获取输出

转载 作者:行者123 更新时间:2023-12-03 07:29:24 32 4
gpt4 key购买 nike

我正在使用Terraform在AWS中自动提供Cognito身份池。 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

下一步是将一些我已经创建的角色添加到身份池中:
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"
}
}

问题是我无法提取IdentityPoolId $ {null_resource.create-identitypool.IdentityPoolId},以在第二个资源中使用。我了解null_resource没有输出属性,因此如何从命令行输出中获取此JSON对象。我还将要使用触发器,并运行aws cognito-identity list-identity-pools和可能的delete-identity-pools,以使其全部可重复,而我也需要输出。

有任何想法吗?抱歉,如果我在其他地方错过了此信息。我也曾在Terraform邮件列表中问过这个问题,但我想我会尝试吸引更多的读者。

谢谢,
提姆

最佳答案

Terraform 0.8中有一个新的数据源external,它允许您运行外部命令并提取输出。参见 data.external

数据源应仅才用于检索Cognito数据,而不是执行。由于这是Terraform数据源,因此不应有任何副作用。

关于amazon-web-services - Terraform,从null_resource,local-exec和AWS CLI获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38564707/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com