Workflow Args
Workflow program to be executed by Workflows. To get more information about Workflow, see:
How-to Guides
Example Usage
Workflow Basic
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const testAccount = new gcp.serviceaccount.Account("test_account", {
accountId: "my-account",
displayName: "Test Service Account",
});
const example = new gcp.workflows.Workflow("example", {
name: "workflow",
region: "us-central1",
description: "Magic",
serviceAccount: testAccount.id,
callLogLevel: "LOG_ERRORS_ONLY",
labels: {
env: "test",
},
userEnvVars: {
url: "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam",
},
sourceContents: `# This is a sample workflow. You can replace it with your source code.
# This workflow does the following:
# - reads current time and date information from an external API and stores
# the response in currentTime variable
# - retrieves a list of Wikipedia articles related to the day of the week
# from currentTime
# - returns the list of articles as an output of the workflow
# Note: In Terraform you need to escape the or it will cause errors.
- getCurrentTime:
call: http.get
args:
url: \${sys.get_env("url")}
result: currentTime
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: \${currentTime.body.dayOfWeek}
result: wikiResult
- returnOutput:
return: \${wikiResult.body[1]}
`,
});
import pulumi
import pulumi_gcp as gcp
test_account = gcp.serviceaccount.Account("test_account",
account_id="my-account",
display_name="Test Service Account")
example = gcp.workflows.Workflow("example",
name="workflow",
region="us-central1",
description="Magic",
service_account=test_account.id,
call_log_level="LOG_ERRORS_ONLY",
labels={
"env": "test",
},
user_env_vars={
"url": "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam",
},
source_contents="""# This is a sample workflow. You can replace it with your source code.
# This workflow does the following:
# - reads current time and date information from an external API and stores
# the response in currentTime variable
# - retrieves a list of Wikipedia articles related to the day of the week
# from currentTime
# - returns the list of articles as an output of the workflow
# Note: In Terraform you need to escape the $$ or it will cause errors.
- getCurrentTime:
call: http.get
args:
url: ${sys.get_env("url")}
result: currentTime
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: ${currentTime.body.dayOfWeek}
result: wikiResult
- returnOutput:
return: ${wikiResult.body[1]}
""")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var testAccount = new Gcp.ServiceAccount.Account("test_account", new()
{
AccountId = "my-account",
DisplayName = "Test Service Account",
});
var example = new Gcp.Workflows.Workflow("example", new()
{
Name = "workflow",
Region = "us-central1",
Description = "Magic",
ServiceAccount = testAccount.Id,
CallLogLevel = "LOG_ERRORS_ONLY",
Labels =
{
{ "env", "test" },
},
UserEnvVars =
{
{ "url", "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam" },
},
SourceContents = @"# This is a sample workflow. You can replace it with your source code.
# This workflow does the following:
# - reads current time and date information from an external API and stores
# the response in currentTime variable
# - retrieves a list of Wikipedia articles related to the day of the week
# from currentTime
# - returns the list of articles as an output of the workflow
# Note: In Terraform you need to escape the $$ or it will cause errors.
- getCurrentTime:
call: http.get
args:
url: ${sys.get_env(""url"")}
result: currentTime
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: ${currentTime.body.dayOfWeek}
result: wikiResult
- returnOutput:
return: ${wikiResult.body[1]}
",
});
});
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workflows"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
testAccount, err := serviceaccount.NewAccount(ctx, "test_account", &serviceaccount.AccountArgs{
AccountId: pulumi.String("my-account"),
DisplayName: pulumi.String("Test Service Account"),
})
if err != nil {
return err
}
_, err = workflows.NewWorkflow(ctx, "example", &workflows.WorkflowArgs{
Name: pulumi.String("workflow"),
Region: pulumi.String("us-central1"),
Description: pulumi.String("Magic"),
ServiceAccount: testAccount.ID(),
CallLogLevel: pulumi.String("LOG_ERRORS_ONLY"),
Labels: pulumi.StringMap{
"env": pulumi.String("test"),
},
UserEnvVars: pulumi.StringMap{
"url": pulumi.String("https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam"),
},
SourceContents: pulumi.String(`# This is a sample workflow. You can replace it with your source code.
# This workflow does the following:
# - reads current time and date information from an external API and stores
# the response in currentTime variable
# - retrieves a list of Wikipedia articles related to the day of the week
# from currentTime
# - returns the list of articles as an output of the workflow
# Note: In Terraform you need to escape the $$ or it will cause errors.
- getCurrentTime:
call: http.get
args:
url: ${sys.get_env("url")}
result: currentTime
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: ${currentTime.body.dayOfWeek}
result: wikiResult
- returnOutput:
return: ${wikiResult.body[1]}
`),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.serviceaccount.Account;
import com.pulumi.gcp.serviceaccount.AccountArgs;
import com.pulumi.gcp.workflows.Workflow;
import com.pulumi.gcp.workflows.WorkflowArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var testAccount = new Account("testAccount", AccountArgs.builder()
.accountId("my-account")
.displayName("Test Service Account")
.build());
var example = new Workflow("example", WorkflowArgs.builder()
.name("workflow")
.region("us-central1")
.description("Magic")
.serviceAccount(testAccount.id())
.callLogLevel("LOG_ERRORS_ONLY")
.labels(Map.of("env", "test"))
.userEnvVars(Map.of("url", "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam"))
.sourceContents("""
# This is a sample workflow. You can replace it with your source code.
# This workflow does the following:
# - reads current time and date information from an external API and stores
# the response in currentTime variable
# - retrieves a list of Wikipedia articles related to the day of the week
# from currentTime
# - returns the list of articles as an output of the workflow
# Note: In Terraform you need to escape the $$ or it will cause errors.
- getCurrentTime:
call: http.get
args:
url: ${sys.get_env("url")}
result: currentTime
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: ${currentTime.body.dayOfWeek}
result: wikiResult
- returnOutput:
return: ${wikiResult.body[1]}
""")
.build());
}
}
resources:
testAccount:
type: gcp:serviceaccount:Account
name: test_account
properties:
accountId: my-account
displayName: Test Service Account
example:
type: gcp:workflows:Workflow
properties:
name: workflow
region: us-central1
description: Magic
serviceAccount: ${testAccount.id}
callLogLevel: LOG_ERRORS_ONLY
labels:
env: test
userEnvVars:
url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam
sourceContents: |
# This is a sample workflow. You can replace it with your source code.
# This workflow does the following:
# - reads current time and date information from an external API and stores
# the response in currentTime variable
# - retrieves a list of Wikipedia articles related to the day of the week
# from currentTime
# - returns the list of articles as an output of the workflow
# Note: In Terraform you need to escape the $$ or it will cause errors.
- getCurrentTime:
call: http.get
args:
url: ${sys.get_env("url")}
result: currentTime
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: ${currentTime.body.dayOfWeek}
result: wikiResult
- returnOutput:
return: ${wikiResult.body[1]}
Import
This resource does not support import.
Constructors
Properties
Describes the level of platform logging to apply to calls and call responses during executions of this workflow. If both the workflow and the execution specify a logging level, the execution level takes precedence. Possible values are: CALL_LOG_LEVEL_UNSPECIFIED
, LOG_ALL_CALLS
, LOG_ERRORS_ONLY
, LOG_NONE
.
The KMS key used to encrypt workflow and execution data. Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}
Description of the workflow provided by the user. Must be at most 1000 unicode characters long.
Creates a unique name beginning with the specified prefix. If this and name are unspecified, a random value is chosen for the name.
Name of the service account associated with the latest workflow version. This service account represents the identity of the workflow and determines what permissions the workflow has. Format: projects/{project}/serviceAccounts/{account} or {account}. Using - as a wildcard for the {project} or not providing one at all will infer the project from the account. The {account} value can be the email address or the unique_id of the service account. If not provided, workflow will use the project's default service account. Modifying this field for an existing workflow results in a new workflow revision.
Workflow code to be executed. The size limit is 128KB.
User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 4KiB. Keys cannot be empty strings and cannot start with “GOOGLE” or “WORKFLOWS".