f# - 将 Output<string> 转换为 AssumeRolePolicy 的字符串

标签 f# pulumi

我正在尝试使用 F# 来了解 pulumi,但我无法理解如何将从一种资源发出的输出值最终使用到另一种资源中。这是我的具体案例:

let infra() =

        let adminsName = "admins"
        let current =
            Output.Create<System.Threading.Tasks.Task<GetCallerIdentityResult>>(GetCallerIdentity.InvokeAsync()).Apply<GetCallerIdentityResult>(fun x->
                x
                |> Async.AwaitTask
                |> Async.RunSynchronously
            )

        let adminRoleName = sprintf "%s-eksClusterAdmin" adminsName

        let adminRolePolicy =
            current.Apply(fun id ->
                @"{
                  ""Version"": ""2012-10-17"",
                  ""Statement"": [
                    {
                      ""Action"": ""sts:AssumeRole"",
                      ""Principal"": {
                        ""AWS"": ""arn:aws:iam::" + id.AccountId + @":root""
                      },
                      ""Effect"": ""Allow"",
                      ""Sid"": """"
                    }
                  ]
                }"
            )


        let adminsIamRole =
            Role (adminRoleName,
                RoleArgs(AssumeRolePolicy= (adminRolePolicy.Apply(fun x -> x)))
            )

我尝试移植到 f# 的以下演练给了我很大的启发

https://www.pulumi.com/docs/guides/crosswalk/kubernetes/identity/#create-an-iam-role-for-admins

当前构建的项目告诉我:

iam.fs(47,45): error FS0001: The type 'Output<string>' is not compatible with the type 'Input<string>'
iam.fs(47,44): error FS0193: Type constraint mismatch. The type     'Output<string>'    is not compatible with type    'Input<string>'

如何使用 pulumi 将输出转换为输入?

最佳答案

有一个辅助函数io将输出转换为输入

AssumeRolePolicy = io adminRolePolicy

您需要引用Pulumi.FSharp NuGet 包。

参见io sourcea usage example .

关于f# - 将 Output<string> 转换为 AssumeRolePolicy 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66281998/

相关文章:

algorithm - 使用 F# 实现树生成器

f# - 实现F#工作流构建器:在for..in..do构造中处理异常

f# - F#在Mono 2.10上崩溃

c# - F# 异步 lambda 与 C# 异步模型互操作

amazon-web-services - 如何使用 pulumi aws provider 定义默认标签

f# - 如何让 Canopy 的 Live HtmlReporter 工作?

amazon-s3 - 附加现有的云资源(例如 : S3 Bucket) to a Pulumi Project

google-cloud-platform - 无法创建 gcp 入口 - 同步期间出错 : Error running backend syncing routine: googleapi: got HTTP response code 404 with body: Not Found

azure - pulumi:将 Web 应用程序添加到 keystore 访问策略,读取 secret 并将其设置为应用程序设置

f# - 构造复杂对象图的计算表达式