cloudtasks

package
v1.19.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 5, 2023 License: MIT Imports: 17 Imported by: 4

Documentation

Index

Constants

View Source
const (

	// QueueName is X-CloudTasks-QueueName Header Key
	QueueName = "X-CloudTasks-QueueName"

	// TaskName is X-CloudTasks-TaskName Header Key
	TaskName = "X-CloudTasks-TaskName"

	// RetryCount is X-CloudTasks-TaskRetryCount Header Key
	RetryCount = "X-CloudTasks-TaskRetryCount"

	// ExecutionCount is X-CloudTasks-TaskExecutionCount Header Key
	ExecutionCount = "X-CloudTasks-TaskExecutionCount"

	// ETA is X-CloudTasks-TaskETA Header Key
	ETA = "X-CloudTasks-TaskETA"

	// PreviousResponse is X-CloudTasks-TaskPreviousResponse Header Key
	PreviousResponse = "X-CloudTasks-TaskPreviousResponse"

	// RetryReason is X-CloudTasks-TaskRetryReason Header Key
	RetryReason = "X-CloudTasks-TaskRetryReason"
)

Variables

View Source
var ErrAlreadyExists = &Error{
	Code:    "AlreadyExists",
	Message: "AlreadyExists",
	KV:      map[string]interface{}{},
}

ErrAlreadyExists is すでに存在している場合の Error 主に TaskName が重複した場合に返す https://cloud.google.com/tasks/docs/reference/rest/v2/projects.locations.queues.tasks/create#body.request_body.FIELDS.task

View Source
var ErrCreateMultiTask = &Error{
	Code:    "FailedCreateMultiTask",
	Message: "FailedCreateMultiTask",
	KV:      map[string]interface{}{},
}

ErrCreateMultiTask is CreateMultiTask の時に MultiError に入れる Error

View Source
var ErrInvalidArgument = &Error{
	Code:    "InvalidArgument",
	Message: "InvalidArgument",
	KV:      map[string]interface{}{},
}

ErrInvalidRequest is 引数が invalid な時に返す

View Source
var ErrInvalidHeader = &Error{
	Code:    "InvalidHeader",
	Message: "InvalidHeader",
	KV:      map[string]interface{}{},
}

ErrInvalidHeader is Header が invalid な時に返す

Functions

func HttpMethodProtoToHttpMethod added in v1.18.0

func HttpMethodProtoToHttpMethod(method taskspb.HttpMethod) (string, error)

HttpMethodProtoToHttpMethod is HttpMethodProto から HttpMethod に変換する

func NewErrInvalidArgument added in v1.2.1

func NewErrInvalidArgument(message string, kv map[string]interface{}, err error) error

NewErrInvalidArgument is return ErrInvalidArgument

func NewErrInvalidHeader

func NewErrInvalidHeader(message string, kv map[string]interface{}, err error) error

NewErrInvalidHeader is return ErrInvalidHeader

func ValidateJWTFromInvoker

func ValidateJWTFromInvoker(ctx context.Context, r *http.Request, audience string) (*auth.JWTPayload, error)

ValidateJWT is JWT を検証して、 Cloud Run Invoker を持った Service Account からの Request なのかを確かめる Cloud Run Invoker の場合は Authorization Header に JWT が入って Request が飛んでくる audience には Cloud Task からの Request の URL を指定する

Types

type CreateTaskOptions added in v1.3.0

type CreateTaskOptions func(*createTaskOptions)

CreateTaskOptions is CreateTask に利用する options

func WithIgnoreAlreadyExists added in v1.3.0

func WithIgnoreAlreadyExists() CreateTaskOptions

WithIgnoreAlreadyExists is CreateTask 時に AlreadyExists を無視する TaskName を指定した状態での Retry 時にすでにAddされているものは無視すればよい場合に使う

type Error

type Error struct {
	Code    string
	Message string
	KV      map[string]interface{}
	// contains filtered or unexported fields
}

Error is Error情報を保持する struct

func NewErrAlreadyExists added in v1.3.0

func NewErrAlreadyExists(message string, kv map[string]interface{}, err error) *Error

NewErrAlreadyExists is return ErrAlreadyExists

func NewErrCreateMultiTask added in v1.3.0

func NewErrCreateMultiTask(message string, kv map[string]interface{}, err error) *Error

NewErrCreateMultiTask is return ErrCreateMultiTask

func (*Error) Error

func (e *Error) Error() string

Error is error interface func

func (*Error) Is

func (e *Error) Is(target error) bool

Is is err equal check

func (*Error) Unwrap

func (e *Error) Unwrap() error

Unwrap is return unwrap error

type GetTask

type GetTask struct {
	// OIDC の Audience
	//
	// IAPに向けて投げる時は、IAPのClient IDを指定する
	// https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account
	//
	// Cloud Run.Invokerに投げる場合は RelativeURI と同じものを指定する
	Audience string

	// Task Request の Header
	Headers map[string]string

	// Task が到達する Handler の URL
	RelativeURI string

	// Deprecated: should not be used
	// ScheduledTime is estimated time of arrival
	ScheduledTime time.Time

	// ScheduleTime is estimated time of arrival
	ScheduleTime time.Time

	// HandlerのDeadline
	// default は 10min 最長は 30min
	Deadline time.Duration

	// Name is Task Name
	// optional
	// Task の重複を抑制するために指定するTaskのName
	// 中で projects/{PROJECT_ID}/locations/{LOCATION}/queues/{QUEUE_ID}/tasks/{TASK_ID} 形式にしているので指定するのは {TASK_ID} の部分だけ
	// 未指定の場合は自動的に設定される
	Name string
}

GetTask is Get Request 用の Task

func (*GetTask) ToTask added in v1.18.0

func (gTask *GetTask) ToTask() (*Task, error)

ToTask is GetTask convert to Task

type Header struct {

	// QueueName is Queue Name
	QueueName string

	// TaskName is Task の Short Name
	// または、作成時に名前が指定されなかった場合は、システムによって生成された一意の ID です。
	// これは、完全なタスク名(task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id)の my-task-id 値になります。
	TaskName string

	// RetryCount is このタスクが再試行された回数。
	// 最初の試行の場合は、この値は 0 です。
	// この試行回数には、インスタンス数不足が原因でタスクが異常終了したため実行フェーズに到達できなかった試行も含まれています。
	RetryCount int

	// ExecutionCount is タスクがハンドラからレスポンスを受け取った合計回数。
	// Cloud Tasks は成功のレスポンスを受け取った時点でタスクを削除するため、それ以前のハンドラからのレスポンスはすべて失敗を意味します。
	// この回数には、インスタンス数不足が原因の失敗は含まれていません。
	ExecutionCount int

	// タスクのスケジュール時間。
	ETA time.Time

	// PreviousResponse is 前回の再試行の HTTP レスポンス コード。
	// optional
	PreviousResponse string

	// RetryReason is タスクを再試行する理由。
	// optional
	RetryReason string
}

Header is Cloud Tasks から来た Request の Header https://cloud.google.com/tasks/docs/creating-http-target-tasks#handler

func GetHeader

func GetHeader(r *http.Request) (*Header, error)

GetHeader is return Cloud Task Header

type JsonPostTask

type JsonPostTask struct {
	// OIDC の Audience
	//
	// IAPに向けて投げる時は、IAPのClient IDを指定する
	// https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account
	//
	// Cloud Run.Invokerに投げる場合は RelativeURI と同じものを指定する
	Audience string

	// Task が到達する Handler の URL
	RelativeURI string

	// Deprecated: should not be used
	// ScheduledTime is estimated time of arrival
	ScheduledTime time.Time

	// ScheduleTime is estimated time of arrival
	ScheduleTime time.Time

	// HandlerのDeadline
	// default は 10min 最長は 30min
	Deadline time.Duration

	// Task Body
	// 中で JSON に変換する
	Body interface{}

	// Name is Task Name
	// optional
	// Task の重複を抑制するために指定するTaskのName
	// 中で projects/{PROJECT_ID}/locations/{LOCATION}/queues/{QUEUE_ID}/tasks/{TASK_ID} 形式にしているので指定するのは {TASK_ID} の部分だけ
	// 未指定の場合は自動的に設定される
	Name string
}

JsonPostTask is JsonをBodyに入れるTask

func (*JsonPostTask) ToTask added in v1.18.0

func (jpTask *JsonPostTask) ToTask() (*Task, error)

ToTask is JsonPostTask convert to Task

type MultiError added in v1.3.0

type MultiError struct {
	Errors []*Error
	// contains filtered or unexported fields
}

MultiError is 複数の error を返す

func (*MultiError) Append added in v1.3.0

func (e *MultiError) Append(err *Error)

func (*MultiError) Error added in v1.3.0

func (e *MultiError) Error() string

func (*MultiError) ErrorOrNil added in v1.3.0

func (e *MultiError) ErrorOrNil() error

func (*MultiError) Is added in v1.3.0

func (e *MultiError) Is(target error) bool

Is is err equal check

func (*MultiError) Unwrap added in v1.3.0

func (e *MultiError) Unwrap() error

Unwrap is return unwrap error

type Queue

type Queue struct {
	ProjectID string
	Region    string
	Name      string
}

Queue is Cloud Tasks Queue

func (*Queue) Parent

func (q *Queue) Parent() string

Parent is return Cloud Tasks Parent format value

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service is Cloud Tasks Service

func NewService

func NewService(ctx context.Context, taskClient *cloudtasks.Client, serviceAccountEmail string) (*Service, error)

NewService is return Service

func (*Service) CreateGetTask

func (s *Service) CreateGetTask(ctx context.Context, queue *Queue, task *GetTask, ops ...CreateTaskOptions) (string, error)

CreateGetTask is Get Request 用の Task を作る

func (*Service) CreateGetTaskMulti added in v1.3.0

func (s *Service) CreateGetTaskMulti(ctx context.Context, queue *Queue, tasks []*GetTask, ops ...CreateTaskOptions) ([]string, error)

CreateGetTaskMulti is Queue に GetTask を作成する

func (*Service) CreateJsonPostTask

func (s *Service) CreateJsonPostTask(ctx context.Context, queue *Queue, task *JsonPostTask, ops ...CreateTaskOptions) (string, error)

CreateJsonPostTask is BodyにJsonを入れるTaskを作る

func (*Service) CreateJsonPostTaskMulti added in v1.3.0

func (s *Service) CreateJsonPostTaskMulti(ctx context.Context, queue *Queue, tasks []*JsonPostTask, ops ...CreateTaskOptions) ([]string, error)

CreateJsonPostTaskMulti is Queue に JsonPostTask を複数作成する

func (*Service) CreateTask

func (s *Service) CreateTask(ctx context.Context, queue *Queue, taskName string, req *taskspb.HttpRequest, scheduleTime time.Time, deadline time.Duration, ops ...CreateTaskOptions) (*taskspb.Task, error)

CreateTask is add to task 一番 Primitive なやつ taskName は中で projects/{PROJECT_ID}/locations/{LOCATION}/queues/{QUEUE_ID}/tasks/{TASK_ID} 形式にしているので指定するのは {TASK_ID} の部分だけ

type Task added in v1.18.0

type Task struct {
	// OIDC の Audience
	//
	// IAPに向けて投げる時は、IAPのClient IDを指定する
	// https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account
	//
	// Cloud Run.Invokerに投げる場合は RelativeURI と同じものを指定する
	Audience string

	// Task Request の Header
	Headers map[string]string

	// Task が到達する Handler の URL
	RelativeURI string

	// HTTP Method
	// optional 省略した場合は POST になる
	Method string

	// ScheduleTime is estimated time of arrival
	ScheduleTime time.Time

	// HandlerのDeadline
	// default は 10min 最長は 30min
	Deadline time.Duration

	// Body is Task Body
	Body []byte

	// Name is Task Name
	// optional
	// Task の重複を抑制するために指定するTaskのName
	// 中で projects/{PROJECT_ID}/locations/{LOCATION}/queues/{QUEUE_ID}/tasks/{TASK_ID} 形式にしているので指定するのは {TASK_ID} の部分だけ
	// 未指定の場合は自動的に設定される
	Name string
}

Task is Response Task

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL