@pulumi/gcp 6.18.0 → 6.20.0-alpha.1650381466
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/accessapproval/getFolderServiceAccount.d.ts +65 -0
- package/accessapproval/getFolderServiceAccount.js +47 -0
- package/accessapproval/getFolderServiceAccount.js.map +1 -0
- package/accessapproval/getOrganizationServiceAccount.d.ts +65 -0
- package/accessapproval/getOrganizationServiceAccount.js +47 -0
- package/accessapproval/getOrganizationServiceAccount.js.map +1 -0
- package/accessapproval/getProjectServiceAccount.d.ts +65 -0
- package/accessapproval/getProjectServiceAccount.js +47 -0
- package/accessapproval/getProjectServiceAccount.js.map +1 -0
- package/accessapproval/index.d.ts +3 -0
- package/accessapproval/index.js +23 -0
- package/accessapproval/index.js.map +1 -0
- package/accesscontextmanager/accessPolicy.d.ts +32 -1
- package/accesscontextmanager/accessPolicy.js +19 -1
- package/accesscontextmanager/accessPolicy.js.map +1 -1
- package/accesscontextmanager/accessPolicyIamBinding.d.ts +155 -0
- package/accesscontextmanager/accessPolicyIamBinding.js +137 -0
- package/accesscontextmanager/accessPolicyIamBinding.js.map +1 -0
- package/accesscontextmanager/accessPolicyIamMember.d.ts +155 -0
- package/accesscontextmanager/accessPolicyIamMember.js +137 -0
- package/accesscontextmanager/accessPolicyIamMember.js.map +1 -0
- package/accesscontextmanager/accessPolicyIamPolicy.d.ts +145 -0
- package/accesscontextmanager/accessPolicyIamPolicy.js +130 -0
- package/accesscontextmanager/accessPolicyIamPolicy.js.map +1 -0
- package/accesscontextmanager/index.d.ts +3 -0
- package/accesscontextmanager/index.js +15 -0
- package/accesscontextmanager/index.js.map +1 -1
- package/apigee/environment.d.ts +51 -0
- package/apigee/environment.js +4 -0
- package/apigee/environment.js.map +1 -1
- package/apigee/instance.d.ts +3 -9
- package/apigee/instance.js.map +1 -1
- package/bigquery/appProfile.d.ts +63 -9
- package/bigquery/appProfile.js +63 -9
- package/bigquery/appProfile.js.map +1 -1
- package/bigtable/gcpolicy.d.ts +64 -0
- package/bigtable/gcpolicy.js +54 -0
- package/bigtable/gcpolicy.js.map +1 -1
- package/bigtable/instance.d.ts +45 -1
- package/bigtable/instance.js +45 -1
- package/bigtable/instance.js.map +1 -1
- package/certificateauthority/caPoolIamBinding.d.ts +12 -54
- package/certificateauthority/caPoolIamBinding.js +0 -54
- package/certificateauthority/caPoolIamBinding.js.map +1 -1
- package/certificateauthority/caPoolIamMember.d.ts +12 -54
- package/certificateauthority/caPoolIamMember.js +0 -54
- package/certificateauthority/caPoolIamMember.js.map +1 -1
- package/certificateauthority/caPoolIamPolicy.d.ts +0 -54
- package/certificateauthority/caPoolIamPolicy.js +0 -54
- package/certificateauthority/caPoolIamPolicy.js.map +1 -1
- package/certificateauthority/certificateTemplateIamBinding.d.ts +136 -0
- package/certificateauthority/certificateTemplateIamBinding.js +95 -0
- package/certificateauthority/certificateTemplateIamBinding.js.map +1 -0
- package/certificateauthority/certificateTemplateIamMember.d.ts +136 -0
- package/certificateauthority/certificateTemplateIamMember.js +95 -0
- package/certificateauthority/certificateTemplateIamMember.js.map +1 -0
- package/certificateauthority/certificateTemplateIamPolicy.d.ts +114 -0
- package/certificateauthority/certificateTemplateIamPolicy.js +88 -0
- package/certificateauthority/certificateTemplateIamPolicy.js.map +1 -0
- package/certificateauthority/index.d.ts +3 -0
- package/certificateauthority/index.js +15 -0
- package/certificateauthority/index.js.map +1 -1
- package/cloudbuild/trigger.d.ts +26 -0
- package/cloudbuild/trigger.js +7 -0
- package/cloudbuild/trigger.js.map +1 -1
- package/cloudrun/service.d.ts +103 -0
- package/cloudrun/service.js +103 -0
- package/cloudrun/service.js.map +1 -1
- package/compute/haVpnGateway.d.ts +0 -143
- package/compute/haVpnGateway.js +0 -143
- package/compute/haVpnGateway.js.map +1 -1
- package/config/vars.d.ts +1 -0
- package/config/vars.js +6 -0
- package/config/vars.js.map +1 -1
- package/dataflow/flexTemplateJob.d.ts +18 -42
- package/dataflow/flexTemplateJob.js +2 -42
- package/dataflow/flexTemplateJob.js.map +1 -1
- package/dataflow/job.d.ts +18 -57
- package/dataflow/job.js +2 -57
- package/dataflow/job.js.map +1 -1
- package/dataproc/cluster.d.ts +1 -1
- package/dataproc/cluster.js +1 -1
- package/dataproc/job.d.ts +12 -0
- package/dataproc/job.js +2 -0
- package/dataproc/job.js.map +1 -1
- package/dataproc/metastoreService.d.ts +46 -0
- package/dataproc/metastoreService.js +30 -0
- package/dataproc/metastoreService.js.map +1 -1
- package/dataproc/workflowTemplate.d.ts +1 -1
- package/dataproc/workflowTemplate.js +1 -1
- package/endpoints/consumersIamBinding.d.ts +110 -0
- package/endpoints/consumersIamBinding.js +106 -0
- package/endpoints/consumersIamBinding.js.map +1 -0
- package/endpoints/consumersIamMember.d.ts +110 -0
- package/endpoints/consumersIamMember.js +106 -0
- package/endpoints/consumersIamMember.js.map +1 -0
- package/endpoints/consumersIamPolicy.d.ts +100 -0
- package/endpoints/consumersIamPolicy.js +99 -0
- package/endpoints/consumersIamPolicy.js.map +1 -0
- package/endpoints/index.d.ts +3 -0
- package/endpoints/index.js +15 -0
- package/endpoints/index.js.map +1 -1
- package/folder/accessApprovalSettings.d.ts +86 -0
- package/folder/accessApprovalSettings.js +52 -0
- package/folder/accessApprovalSettings.js.map +1 -1
- package/iam/denyPolicy.d.ts +107 -0
- package/iam/denyPolicy.js +74 -0
- package/iam/denyPolicy.js.map +1 -0
- package/iam/index.d.ts +1 -0
- package/iam/index.js +5 -0
- package/iam/index.js.map +1 -1
- package/index.d.ts +2 -1
- package/index.js +4 -2
- package/index.js.map +1 -1
- package/organizations/accessApprovalSettings.d.ts +77 -0
- package/organizations/accessApprovalSettings.js +48 -0
- package/organizations/accessApprovalSettings.js.map +1 -1
- package/osconfig/patchDeployment.d.ts +1 -0
- package/osconfig/patchDeployment.js +1 -0
- package/osconfig/patchDeployment.js.map +1 -1
- package/package.json +2 -2
- package/package.json.dev +2 -2
- package/projects/accessApprovalSettings.d.ts +78 -0
- package/projects/accessApprovalSettings.js +44 -0
- package/projects/accessApprovalSettings.js.map +1 -1
- package/provider.d.ts +2 -0
- package/provider.js +1 -0
- package/provider.js.map +1 -1
- package/pubsub/subscription.d.ts +27 -0
- package/pubsub/subscription.js +2 -0
- package/pubsub/subscription.js.map +1 -1
- package/redis/instance.d.ts +1 -4
- package/redis/instance.js.map +1 -1
- package/types/input.d.ts +196 -12
- package/types/output.d.ts +196 -12
- package/vpcaccess/connector.d.ts +1 -1
package/README.md
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
# Google Cloud Platform Resource Provider
|
|
10
10
|
|
|
11
|
-
The Google Cloud Platform (GCP) resource provider for Pulumi lets you use GCP resources in your cloud programs.
|
|
12
|
-
this package,
|
|
11
|
+
The Google Cloud Platform (GCP) resource provider for Pulumi lets you use GCP resources in your cloud programs. To use
|
|
12
|
+
this package, [install the Pulumi CLI](https://www.pulumi.com/docs/get-started/install/). For a streamlined Pulumi walkthrough, including language runtime installation and GCP configuration, select "Get Started" below.
|
|
13
13
|
|
|
14
14
|
<div>
|
|
15
15
|
<a href="https://www.pulumi.com/docs/get-started/gcp" title="Get Started">
|
|
@@ -51,4 +51,5 @@ To use from .NET, install using `dotnet add package`:
|
|
|
51
51
|
|
|
52
52
|
## Reference
|
|
53
53
|
|
|
54
|
-
For further information,
|
|
54
|
+
For further information, visit [GCP in the Pulumi Registry](https://www.pulumi.com/registry/packages/gcp/)
|
|
55
|
+
or for detailed API reference documentation, visit [GCP API Docs in the Pulumi Registry](https://www.pulumi.com/registry/packages/gcp/api-docs/).
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
/**
|
|
3
|
+
* Get the email address of a folder's Access Approval service account.
|
|
4
|
+
*
|
|
5
|
+
* Each Google Cloud folder has a unique service account used by Access Approval.
|
|
6
|
+
* When using Access Approval with a
|
|
7
|
+
* [custom signing key](https://cloud.google.com/cloud-provider-access-management/access-approval/docs/review-approve-access-requests-custom-keys),
|
|
8
|
+
* this account needs to be granted the `cloudkms.signerVerifier` IAM role on the
|
|
9
|
+
* Cloud KMS key used to sign approvals.
|
|
10
|
+
*
|
|
11
|
+
* ## Example Usage
|
|
12
|
+
*
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
15
|
+
* import * as gcp from "@pulumi/gcp";
|
|
16
|
+
*
|
|
17
|
+
* const serviceAccount = gcp.accessapproval.getFolderServiceAccount({
|
|
18
|
+
* folderId: "my-folder",
|
|
19
|
+
* });
|
|
20
|
+
* const iam = new gcp.kms.CryptoKeyIAMMember("iam", {
|
|
21
|
+
* cryptoKeyId: google_kms_crypto_key.crypto_key.id,
|
|
22
|
+
* role: "roles/cloudkms.signerVerifier",
|
|
23
|
+
* member: serviceAccount.then(serviceAccount => `serviceAccount:${serviceAccount.accountEmail}`),
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function getFolderServiceAccount(args: GetFolderServiceAccountArgs, opts?: pulumi.InvokeOptions): Promise<GetFolderServiceAccountResult>;
|
|
28
|
+
/**
|
|
29
|
+
* A collection of arguments for invoking getFolderServiceAccount.
|
|
30
|
+
*/
|
|
31
|
+
export interface GetFolderServiceAccountArgs {
|
|
32
|
+
/**
|
|
33
|
+
* The folder ID the service account was created for.
|
|
34
|
+
*/
|
|
35
|
+
folderId: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A collection of values returned by getFolderServiceAccount.
|
|
39
|
+
*/
|
|
40
|
+
export interface GetFolderServiceAccountResult {
|
|
41
|
+
/**
|
|
42
|
+
* The email address of the service account. This value is
|
|
43
|
+
* often used to refer to the service account in order to grant IAM permissions.
|
|
44
|
+
*/
|
|
45
|
+
readonly accountEmail: string;
|
|
46
|
+
readonly folderId: string;
|
|
47
|
+
/**
|
|
48
|
+
* The provider-assigned unique ID for this managed resource.
|
|
49
|
+
*/
|
|
50
|
+
readonly id: string;
|
|
51
|
+
/**
|
|
52
|
+
* The Access Approval service account resource name. Format is "folders/{folder_id}/serviceAccount".
|
|
53
|
+
*/
|
|
54
|
+
readonly name: string;
|
|
55
|
+
}
|
|
56
|
+
export declare function getFolderServiceAccountOutput(args: GetFolderServiceAccountOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetFolderServiceAccountResult>;
|
|
57
|
+
/**
|
|
58
|
+
* A collection of arguments for invoking getFolderServiceAccount.
|
|
59
|
+
*/
|
|
60
|
+
export interface GetFolderServiceAccountOutputArgs {
|
|
61
|
+
/**
|
|
62
|
+
* The folder ID the service account was created for.
|
|
63
|
+
*/
|
|
64
|
+
folderId: pulumi.Input<string>;
|
|
65
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
|
3
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.getFolderServiceAccountOutput = exports.getFolderServiceAccount = void 0;
|
|
6
|
+
const pulumi = require("@pulumi/pulumi");
|
|
7
|
+
const utilities = require("../utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Get the email address of a folder's Access Approval service account.
|
|
10
|
+
*
|
|
11
|
+
* Each Google Cloud folder has a unique service account used by Access Approval.
|
|
12
|
+
* When using Access Approval with a
|
|
13
|
+
* [custom signing key](https://cloud.google.com/cloud-provider-access-management/access-approval/docs/review-approve-access-requests-custom-keys),
|
|
14
|
+
* this account needs to be granted the `cloudkms.signerVerifier` IAM role on the
|
|
15
|
+
* Cloud KMS key used to sign approvals.
|
|
16
|
+
*
|
|
17
|
+
* ## Example Usage
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
21
|
+
* import * as gcp from "@pulumi/gcp";
|
|
22
|
+
*
|
|
23
|
+
* const serviceAccount = gcp.accessapproval.getFolderServiceAccount({
|
|
24
|
+
* folderId: "my-folder",
|
|
25
|
+
* });
|
|
26
|
+
* const iam = new gcp.kms.CryptoKeyIAMMember("iam", {
|
|
27
|
+
* cryptoKeyId: google_kms_crypto_key.crypto_key.id,
|
|
28
|
+
* role: "roles/cloudkms.signerVerifier",
|
|
29
|
+
* member: serviceAccount.then(serviceAccount => `serviceAccount:${serviceAccount.accountEmail}`),
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
function getFolderServiceAccount(args, opts) {
|
|
34
|
+
if (!opts) {
|
|
35
|
+
opts = {};
|
|
36
|
+
}
|
|
37
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
38
|
+
return pulumi.runtime.invoke("gcp:accessapproval/getFolderServiceAccount:getFolderServiceAccount", {
|
|
39
|
+
"folderId": args.folderId,
|
|
40
|
+
}, opts);
|
|
41
|
+
}
|
|
42
|
+
exports.getFolderServiceAccount = getFolderServiceAccount;
|
|
43
|
+
function getFolderServiceAccountOutput(args, opts) {
|
|
44
|
+
return pulumi.output(args).apply(a => getFolderServiceAccount(a, opts));
|
|
45
|
+
}
|
|
46
|
+
exports.getFolderServiceAccountOutput = getFolderServiceAccountOutput;
|
|
47
|
+
//# sourceMappingURL=getFolderServiceAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFolderServiceAccount.js","sourceRoot":"","sources":["../../accessapproval/getFolderServiceAccount.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,uBAAuB,CAAC,IAAiC,EAAE,IAA2B;IAClG,IAAI,CAAC,IAAI,EAAE;QACP,IAAI,GAAG,EAAE,CAAA;KACZ;IAED,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,oEAAoE,EAAE;QAC/F,UAAU,EAAE,IAAI,CAAC,QAAQ;KAC5B,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AATD,0DASC;AAgCD,SAAgB,6BAA6B,CAAC,IAAuC,EAAE,IAA2B;IAC9G,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3E,CAAC;AAFD,sEAEC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
/**
|
|
3
|
+
* Get the email address of an organization's Access Approval service account.
|
|
4
|
+
*
|
|
5
|
+
* Each Google Cloud organization has a unique service account used by Access Approval.
|
|
6
|
+
* When using Access Approval with a
|
|
7
|
+
* [custom signing key](https://cloud.google.com/cloud-provider-access-management/access-approval/docs/review-approve-access-requests-custom-keys),
|
|
8
|
+
* this account needs to be granted the `cloudkms.signerVerifier` IAM role on the
|
|
9
|
+
* Cloud KMS key used to sign approvals.
|
|
10
|
+
*
|
|
11
|
+
* ## Example Usage
|
|
12
|
+
*
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
15
|
+
* import * as gcp from "@pulumi/gcp";
|
|
16
|
+
*
|
|
17
|
+
* const serviceAccount = gcp.accessapproval.getOrganizationServiceAccount({
|
|
18
|
+
* organizationId: "my-organization",
|
|
19
|
+
* });
|
|
20
|
+
* const iam = new gcp.kms.CryptoKeyIAMMember("iam", {
|
|
21
|
+
* cryptoKeyId: google_kms_crypto_key.crypto_key.id,
|
|
22
|
+
* role: "roles/cloudkms.signerVerifier",
|
|
23
|
+
* member: serviceAccount.then(serviceAccount => `serviceAccount:${serviceAccount.accountEmail}`),
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function getOrganizationServiceAccount(args: GetOrganizationServiceAccountArgs, opts?: pulumi.InvokeOptions): Promise<GetOrganizationServiceAccountResult>;
|
|
28
|
+
/**
|
|
29
|
+
* A collection of arguments for invoking getOrganizationServiceAccount.
|
|
30
|
+
*/
|
|
31
|
+
export interface GetOrganizationServiceAccountArgs {
|
|
32
|
+
/**
|
|
33
|
+
* The organization ID the service account was created for.
|
|
34
|
+
*/
|
|
35
|
+
organizationId: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A collection of values returned by getOrganizationServiceAccount.
|
|
39
|
+
*/
|
|
40
|
+
export interface GetOrganizationServiceAccountResult {
|
|
41
|
+
/**
|
|
42
|
+
* The email address of the service account. This value is
|
|
43
|
+
* often used to refer to the service account in order to grant IAM permissions.
|
|
44
|
+
*/
|
|
45
|
+
readonly accountEmail: string;
|
|
46
|
+
/**
|
|
47
|
+
* The provider-assigned unique ID for this managed resource.
|
|
48
|
+
*/
|
|
49
|
+
readonly id: string;
|
|
50
|
+
/**
|
|
51
|
+
* The Access Approval service account resource name. Format is "organizations/{organization_id}/serviceAccount".
|
|
52
|
+
*/
|
|
53
|
+
readonly name: string;
|
|
54
|
+
readonly organizationId: string;
|
|
55
|
+
}
|
|
56
|
+
export declare function getOrganizationServiceAccountOutput(args: GetOrganizationServiceAccountOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetOrganizationServiceAccountResult>;
|
|
57
|
+
/**
|
|
58
|
+
* A collection of arguments for invoking getOrganizationServiceAccount.
|
|
59
|
+
*/
|
|
60
|
+
export interface GetOrganizationServiceAccountOutputArgs {
|
|
61
|
+
/**
|
|
62
|
+
* The organization ID the service account was created for.
|
|
63
|
+
*/
|
|
64
|
+
organizationId: pulumi.Input<string>;
|
|
65
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
|
3
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.getOrganizationServiceAccountOutput = exports.getOrganizationServiceAccount = void 0;
|
|
6
|
+
const pulumi = require("@pulumi/pulumi");
|
|
7
|
+
const utilities = require("../utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Get the email address of an organization's Access Approval service account.
|
|
10
|
+
*
|
|
11
|
+
* Each Google Cloud organization has a unique service account used by Access Approval.
|
|
12
|
+
* When using Access Approval with a
|
|
13
|
+
* [custom signing key](https://cloud.google.com/cloud-provider-access-management/access-approval/docs/review-approve-access-requests-custom-keys),
|
|
14
|
+
* this account needs to be granted the `cloudkms.signerVerifier` IAM role on the
|
|
15
|
+
* Cloud KMS key used to sign approvals.
|
|
16
|
+
*
|
|
17
|
+
* ## Example Usage
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
21
|
+
* import * as gcp from "@pulumi/gcp";
|
|
22
|
+
*
|
|
23
|
+
* const serviceAccount = gcp.accessapproval.getOrganizationServiceAccount({
|
|
24
|
+
* organizationId: "my-organization",
|
|
25
|
+
* });
|
|
26
|
+
* const iam = new gcp.kms.CryptoKeyIAMMember("iam", {
|
|
27
|
+
* cryptoKeyId: google_kms_crypto_key.crypto_key.id,
|
|
28
|
+
* role: "roles/cloudkms.signerVerifier",
|
|
29
|
+
* member: serviceAccount.then(serviceAccount => `serviceAccount:${serviceAccount.accountEmail}`),
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
function getOrganizationServiceAccount(args, opts) {
|
|
34
|
+
if (!opts) {
|
|
35
|
+
opts = {};
|
|
36
|
+
}
|
|
37
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
38
|
+
return pulumi.runtime.invoke("gcp:accessapproval/getOrganizationServiceAccount:getOrganizationServiceAccount", {
|
|
39
|
+
"organizationId": args.organizationId,
|
|
40
|
+
}, opts);
|
|
41
|
+
}
|
|
42
|
+
exports.getOrganizationServiceAccount = getOrganizationServiceAccount;
|
|
43
|
+
function getOrganizationServiceAccountOutput(args, opts) {
|
|
44
|
+
return pulumi.output(args).apply(a => getOrganizationServiceAccount(a, opts));
|
|
45
|
+
}
|
|
46
|
+
exports.getOrganizationServiceAccountOutput = getOrganizationServiceAccountOutput;
|
|
47
|
+
//# sourceMappingURL=getOrganizationServiceAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrganizationServiceAccount.js","sourceRoot":"","sources":["../../accessapproval/getOrganizationServiceAccount.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,6BAA6B,CAAC,IAAuC,EAAE,IAA2B;IAC9G,IAAI,CAAC,IAAI,EAAE;QACP,IAAI,GAAG,EAAE,CAAA;KACZ;IAED,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gFAAgF,EAAE;QAC3G,gBAAgB,EAAE,IAAI,CAAC,cAAc;KACxC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AATD,sEASC;AAgCD,SAAgB,mCAAmC,CAAC,IAA6C,EAAE,IAA2B;IAC1H,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AACjF,CAAC;AAFD,kFAEC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
/**
|
|
3
|
+
* Get the email address of a project's Access Approval service account.
|
|
4
|
+
*
|
|
5
|
+
* Each Google Cloud project has a unique service account used by Access Approval.
|
|
6
|
+
* When using Access Approval with a
|
|
7
|
+
* [custom signing key](https://cloud.google.com/cloud-provider-access-management/access-approval/docs/review-approve-access-requests-custom-keys),
|
|
8
|
+
* this account needs to be granted the `cloudkms.signerVerifier` IAM role on the
|
|
9
|
+
* Cloud KMS key used to sign approvals.
|
|
10
|
+
*
|
|
11
|
+
* ## Example Usage
|
|
12
|
+
*
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
15
|
+
* import * as gcp from "@pulumi/gcp";
|
|
16
|
+
*
|
|
17
|
+
* const serviceAccount = gcp.accessapproval.getProjectServiceAccount({
|
|
18
|
+
* projectId: "my-project",
|
|
19
|
+
* });
|
|
20
|
+
* const iam = new gcp.kms.CryptoKeyIAMMember("iam", {
|
|
21
|
+
* cryptoKeyId: google_kms_crypto_key.crypto_key.id,
|
|
22
|
+
* role: "roles/cloudkms.signerVerifier",
|
|
23
|
+
* member: serviceAccount.then(serviceAccount => `serviceAccount:${serviceAccount.accountEmail}`),
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function getProjectServiceAccount(args: GetProjectServiceAccountArgs, opts?: pulumi.InvokeOptions): Promise<GetProjectServiceAccountResult>;
|
|
28
|
+
/**
|
|
29
|
+
* A collection of arguments for invoking getProjectServiceAccount.
|
|
30
|
+
*/
|
|
31
|
+
export interface GetProjectServiceAccountArgs {
|
|
32
|
+
/**
|
|
33
|
+
* The project ID the service account was created for.
|
|
34
|
+
*/
|
|
35
|
+
projectId: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A collection of values returned by getProjectServiceAccount.
|
|
39
|
+
*/
|
|
40
|
+
export interface GetProjectServiceAccountResult {
|
|
41
|
+
/**
|
|
42
|
+
* The email address of the service account. This value is
|
|
43
|
+
* often used to refer to the service account in order to grant IAM permissions.
|
|
44
|
+
*/
|
|
45
|
+
readonly accountEmail: string;
|
|
46
|
+
/**
|
|
47
|
+
* The provider-assigned unique ID for this managed resource.
|
|
48
|
+
*/
|
|
49
|
+
readonly id: string;
|
|
50
|
+
/**
|
|
51
|
+
* The Access Approval service account resource name. Format is "projects/{project_id}/serviceAccount".
|
|
52
|
+
*/
|
|
53
|
+
readonly name: string;
|
|
54
|
+
readonly projectId: string;
|
|
55
|
+
}
|
|
56
|
+
export declare function getProjectServiceAccountOutput(args: GetProjectServiceAccountOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetProjectServiceAccountResult>;
|
|
57
|
+
/**
|
|
58
|
+
* A collection of arguments for invoking getProjectServiceAccount.
|
|
59
|
+
*/
|
|
60
|
+
export interface GetProjectServiceAccountOutputArgs {
|
|
61
|
+
/**
|
|
62
|
+
* The project ID the service account was created for.
|
|
63
|
+
*/
|
|
64
|
+
projectId: pulumi.Input<string>;
|
|
65
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
|
3
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.getProjectServiceAccountOutput = exports.getProjectServiceAccount = void 0;
|
|
6
|
+
const pulumi = require("@pulumi/pulumi");
|
|
7
|
+
const utilities = require("../utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Get the email address of a project's Access Approval service account.
|
|
10
|
+
*
|
|
11
|
+
* Each Google Cloud project has a unique service account used by Access Approval.
|
|
12
|
+
* When using Access Approval with a
|
|
13
|
+
* [custom signing key](https://cloud.google.com/cloud-provider-access-management/access-approval/docs/review-approve-access-requests-custom-keys),
|
|
14
|
+
* this account needs to be granted the `cloudkms.signerVerifier` IAM role on the
|
|
15
|
+
* Cloud KMS key used to sign approvals.
|
|
16
|
+
*
|
|
17
|
+
* ## Example Usage
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
21
|
+
* import * as gcp from "@pulumi/gcp";
|
|
22
|
+
*
|
|
23
|
+
* const serviceAccount = gcp.accessapproval.getProjectServiceAccount({
|
|
24
|
+
* projectId: "my-project",
|
|
25
|
+
* });
|
|
26
|
+
* const iam = new gcp.kms.CryptoKeyIAMMember("iam", {
|
|
27
|
+
* cryptoKeyId: google_kms_crypto_key.crypto_key.id,
|
|
28
|
+
* role: "roles/cloudkms.signerVerifier",
|
|
29
|
+
* member: serviceAccount.then(serviceAccount => `serviceAccount:${serviceAccount.accountEmail}`),
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
function getProjectServiceAccount(args, opts) {
|
|
34
|
+
if (!opts) {
|
|
35
|
+
opts = {};
|
|
36
|
+
}
|
|
37
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
38
|
+
return pulumi.runtime.invoke("gcp:accessapproval/getProjectServiceAccount:getProjectServiceAccount", {
|
|
39
|
+
"projectId": args.projectId,
|
|
40
|
+
}, opts);
|
|
41
|
+
}
|
|
42
|
+
exports.getProjectServiceAccount = getProjectServiceAccount;
|
|
43
|
+
function getProjectServiceAccountOutput(args, opts) {
|
|
44
|
+
return pulumi.output(args).apply(a => getProjectServiceAccount(a, opts));
|
|
45
|
+
}
|
|
46
|
+
exports.getProjectServiceAccountOutput = getProjectServiceAccountOutput;
|
|
47
|
+
//# sourceMappingURL=getProjectServiceAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProjectServiceAccount.js","sourceRoot":"","sources":["../../accessapproval/getProjectServiceAccount.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,wBAAwB,CAAC,IAAkC,EAAE,IAA2B;IACpG,IAAI,CAAC,IAAI,EAAE;QACP,IAAI,GAAG,EAAE,CAAA;KACZ;IAED,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,sEAAsE,EAAE;QACjG,WAAW,EAAE,IAAI,CAAC,SAAS;KAC9B,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AATD,4DASC;AAgCD,SAAgB,8BAA8B,CAAC,IAAwC,EAAE,IAA2B;IAChH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AAC5E,CAAC;AAFD,wEAEC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
|
3
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
// Export members:
|
|
20
|
+
__exportStar(require("./getFolderServiceAccount"), exports);
|
|
21
|
+
__exportStar(require("./getOrganizationServiceAccount"), exports);
|
|
22
|
+
__exportStar(require("./getProjectServiceAccount"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../accessapproval/index.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;;;;;;;;;;;;;;AAEjF,kBAAkB;AAClB,4DAA0C;AAC1C,kEAAgD;AAChD,6DAA2C"}
|
|
@@ -27,7 +27,23 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
27
27
|
*
|
|
28
28
|
* const access_policy = new gcp.accesscontextmanager.AccessPolicy("access-policy", {
|
|
29
29
|
* parent: "organizations/123456789",
|
|
30
|
-
* title: "
|
|
30
|
+
* title: "Org Access Policy",
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
* ### Access Context Manager Access Policy Scoped
|
|
34
|
+
*
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
37
|
+
* import * as gcp from "@pulumi/gcp";
|
|
38
|
+
*
|
|
39
|
+
* const project = new gcp.organizations.Project("project", {
|
|
40
|
+
* orgId: "123456789",
|
|
41
|
+
* projectId: "acm-test-proj-123",
|
|
42
|
+
* });
|
|
43
|
+
* const access_policy = new gcp.accesscontextmanager.AccessPolicy("access-policy", {
|
|
44
|
+
* parent: "organizations/123456789",
|
|
45
|
+
* scopes: pulumi.interpolate`projects/${project.number}`,
|
|
46
|
+
* title: "Scoped Access Policy",
|
|
31
47
|
* });
|
|
32
48
|
* ```
|
|
33
49
|
*
|
|
@@ -68,6 +84,11 @@ export declare class AccessPolicy extends pulumi.CustomResource {
|
|
|
68
84
|
* Format: organizations/{organization_id}
|
|
69
85
|
*/
|
|
70
86
|
readonly parent: pulumi.Output<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Folder or project on which this policy is applicable.
|
|
89
|
+
* Format: folders/{{folder_id}} or projects/{{project_id}}
|
|
90
|
+
*/
|
|
91
|
+
readonly scopes: pulumi.Output<string | undefined>;
|
|
71
92
|
/**
|
|
72
93
|
* Human readable title. Does not affect behavior.
|
|
73
94
|
*/
|
|
@@ -102,6 +123,11 @@ export interface AccessPolicyState {
|
|
|
102
123
|
* Format: organizations/{organization_id}
|
|
103
124
|
*/
|
|
104
125
|
parent?: pulumi.Input<string>;
|
|
126
|
+
/**
|
|
127
|
+
* Folder or project on which this policy is applicable.
|
|
128
|
+
* Format: folders/{{folder_id}} or projects/{{project_id}}
|
|
129
|
+
*/
|
|
130
|
+
scopes?: pulumi.Input<string>;
|
|
105
131
|
/**
|
|
106
132
|
* Human readable title. Does not affect behavior.
|
|
107
133
|
*/
|
|
@@ -120,6 +146,11 @@ export interface AccessPolicyArgs {
|
|
|
120
146
|
* Format: organizations/{organization_id}
|
|
121
147
|
*/
|
|
122
148
|
parent: pulumi.Input<string>;
|
|
149
|
+
/**
|
|
150
|
+
* Folder or project on which this policy is applicable.
|
|
151
|
+
* Format: folders/{{folder_id}} or projects/{{project_id}}
|
|
152
|
+
*/
|
|
153
|
+
scopes?: pulumi.Input<string>;
|
|
123
154
|
/**
|
|
124
155
|
* Human readable title. Does not affect behavior.
|
|
125
156
|
*/
|
|
@@ -33,7 +33,23 @@ const utilities = require("../utilities");
|
|
|
33
33
|
*
|
|
34
34
|
* const access_policy = new gcp.accesscontextmanager.AccessPolicy("access-policy", {
|
|
35
35
|
* parent: "organizations/123456789",
|
|
36
|
-
* title: "
|
|
36
|
+
* title: "Org Access Policy",
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
* ### Access Context Manager Access Policy Scoped
|
|
40
|
+
*
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
43
|
+
* import * as gcp from "@pulumi/gcp";
|
|
44
|
+
*
|
|
45
|
+
* const project = new gcp.organizations.Project("project", {
|
|
46
|
+
* orgId: "123456789",
|
|
47
|
+
* projectId: "acm-test-proj-123",
|
|
48
|
+
* });
|
|
49
|
+
* const access_policy = new gcp.accesscontextmanager.AccessPolicy("access-policy", {
|
|
50
|
+
* parent: "organizations/123456789",
|
|
51
|
+
* scopes: pulumi.interpolate`projects/${project.number}`,
|
|
52
|
+
* title: "Scoped Access Policy",
|
|
37
53
|
* });
|
|
38
54
|
* ```
|
|
39
55
|
*
|
|
@@ -54,6 +70,7 @@ class AccessPolicy extends pulumi.CustomResource {
|
|
|
54
70
|
resourceInputs["createTime"] = state ? state.createTime : undefined;
|
|
55
71
|
resourceInputs["name"] = state ? state.name : undefined;
|
|
56
72
|
resourceInputs["parent"] = state ? state.parent : undefined;
|
|
73
|
+
resourceInputs["scopes"] = state ? state.scopes : undefined;
|
|
57
74
|
resourceInputs["title"] = state ? state.title : undefined;
|
|
58
75
|
resourceInputs["updateTime"] = state ? state.updateTime : undefined;
|
|
59
76
|
}
|
|
@@ -66,6 +83,7 @@ class AccessPolicy extends pulumi.CustomResource {
|
|
|
66
83
|
throw new Error("Missing required property 'title'");
|
|
67
84
|
}
|
|
68
85
|
resourceInputs["parent"] = args ? args.parent : undefined;
|
|
86
|
+
resourceInputs["scopes"] = args ? args.scopes : undefined;
|
|
69
87
|
resourceInputs["title"] = args ? args.title : undefined;
|
|
70
88
|
resourceInputs["createTime"] = undefined /*out*/;
|
|
71
89
|
resourceInputs["name"] = undefined /*out*/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessPolicy.js","sourceRoot":"","sources":["../../accesscontextmanager/accessPolicy.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,0CAA0C;AAE1C
|
|
1
|
+
{"version":3,"file":"accessPolicy.js","sourceRoot":"","sources":["../../accesscontextmanager/accessPolicy.ts"],"names":[],"mappings":"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"}
|