terraform-provider-google/website/docs/r/pubsub_subscription.html.markdown

230 lines
7.6 KiB
Markdown
Raw Normal View History

---
# ----------------------------------------------------------------------------
#
# *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
#
# ----------------------------------------------------------------------------
#
# This file is automatically generated by Magic Modules and manual
# changes will be clobbered when the file is regenerated.
#
# Please read more about how to change this file in
# .github/CONTRIBUTING.md.
#
# ----------------------------------------------------------------------------
layout: "google"
page_title: "Google: google_pubsub_subscription"
sidebar_current: "docs-google-pubsub-subscription"
description: |-
A named resource representing the stream of messages from a single,
specific topic, to be delivered to the subscribing application.
---
# google\_pubsub\_subscription
A named resource representing the stream of messages from a single,
specific topic, to be delivered to the subscribing application.
To get more information about Subscription, see:
* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions)
* How-to Guides
* [Managing Subscriptions](https://cloud.google.com/pubsub/docs/admin#managing_subscriptions)
## Example Usage - Pubsub Subscription Push
```hcl
resource "google_pubsub_topic" "example" {
name = "example-topic"
}
resource "google_pubsub_subscription" "example" {
name = "example-subscription"
topic = "${google_pubsub_topic.example.name}"
ack_deadline_seconds = 20
labels = {
foo = "bar"
}
push_config {
push_endpoint = "https://example.com/push"
attributes {
x-goog-version = "v1"
}
}
}
```
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=pubsub_subscription_pull&cloudshell_image=gcr.io%2Fgraphite-cloud-shell-images%2Fterraform%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Pubsub Subscription Pull
```hcl
resource "google_pubsub_topic" "example" {
name = "example-topic"
}
resource "google_pubsub_subscription" "example" {
name = "example-subscription"
topic = "${google_pubsub_topic.example.name}"
labels = {
foo = "bar"
}
# 20 minutes
message_retention_duration = "1200s"
retain_acked_messages = true
ack_deadline_seconds = 20
}
```
## Example Usage - Pubsub Subscription Different Project
```hcl
resource "google_pubsub_topic" "example" {
project = "topic-project"
name = "example-topic"
}
resource "google_pubsub_subscription" "example" {
project = "subscription-project"
name = "example-subscription"
topic = "${google_pubsub_topic.example.id}"
}
```
## Argument Reference
The following arguments are supported:
* `name` -
(Required)
Name of the subscription.
* `topic` -
(Required)
A reference to a Topic resource.
- - -
* `labels` -
(Optional)
A set of key/value label pairs to assign to this Subscription.
* `push_config` -
(Optional)
If push delivery is used with this subscription, this field is used to
configure it. An empty pushConfig signifies that the subscriber will
pull and ack messages using API methods. Structure is documented below.
* `ack_deadline_seconds` -
(Optional)
This value is the maximum time after a subscriber receives a message
before the subscriber should acknowledge the message. After message
delivery but before the ack deadline expires and before the message is
acknowledged, it is an outstanding message and will not be delivered
again during that time (on a best-effort basis).
For pull subscriptions, this value is used as the initial value for
the ack deadline. To override this value for a given message, call
subscriptions.modifyAckDeadline with the corresponding ackId if using
pull. The minimum custom deadline you can specify is 10 seconds. The
maximum custom deadline you can specify is 600 seconds (10 minutes).
If this parameter is 0, a default value of 10 seconds is used.
For push delivery, this value is also used to set the request timeout
for the call to the push endpoint.
If the subscriber never acknowledges the message, the Pub/Sub system
will eventually redeliver the message.
* `message_retention_duration` -
(Optional)
How long to retain unacknowledged messages in the subscription's
backlog, from the moment a message is published. If
retainAckedMessages is true, then this also configures the retention
of acknowledged messages, and thus configures how far back in time a
subscriptions.seek can be done. Defaults to 7 days. Cannot be more
than 7 days (`"604800s"`) or less than 10 minutes (`"600s"`).
A duration in seconds with up to nine fractional digits, terminated
by 's'. Example: `"600.5s"`.
* `retain_acked_messages` -
(Optional)
Indicates whether to retain acknowledged messages. If `true`, then
messages are not expunged from the subscription's backlog, even if
they are acknowledged, until they fall out of the
messageRetentionDuration window.
* `project` - (Optional) The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.
The `push_config` block supports:
* `push_endpoint` -
(Required)
A URL locating the endpoint to which messages should be pushed.
For example, a Webhook endpoint might use
"https://example.com/push".
* `attributes` -
(Optional)
Endpoint configuration attributes.
Every endpoint has a set of API supported attributes that can
be used to control different aspects of the message delivery.
The currently supported attribute is x-goog-version, which you
can use to change the format of the pushed message. This
attribute indicates the version of the data expected by
the endpoint. This controls the shape of the pushed message
(i.e., its fields and metadata). The endpoint version is
based on the version of the Pub/Sub API.
If not present during the subscriptions.create call,
it will default to the version of the API used to make
such call. If not present during a subscriptions.modifyPushConfig
call, its value will not be changed. subscriptions.get
calls will always return a valid version, even if the
subscription was created without this attribute.
The possible values for this attribute are:
- v1beta1: uses the push format defined in the v1beta1 Pub/Sub API.
- v1 or v1beta2: uses the push format defined in the v1 Pub/Sub API.
## Attributes Reference
In addition to the arguments listed above, the following computed attributes are exported:
* `path`: Path of the subscription in the format `projects/{project}/subscriptions/{name}`
## Timeouts
This resource provides the following
[Timeouts](/docs/configuration/resources.html#timeouts) configuration options:
- `create` - Default is 4 minutes.
- `update` - Default is 4 minutes.
- `delete` - Default is 4 minutes.
## Import
Subscription can be imported using any of these accepted formats:
```
$ terraform import google_pubsub_subscription.default projects/{{project}}/subscriptions/{{name}}
$ terraform import google_pubsub_subscription.default {{project}}/{{name}}
$ terraform import google_pubsub_subscription.default {{name}}
```
-> If you're importing a resource with beta features, make sure to include `-provider=google-beta`
as an argument so that Terraform uses the correct provider to import your resource.