Documentation
¶
Index ¶
- Constants
- Variables
- func HttpMethodProtoToHttpMethod(method taskspb.HttpMethod) (string, error)
- func NewErrInvalidArgument(message string, kv map[string]interface{}, err error) error
- func NewErrInvalidHeader(message string, kv map[string]interface{}, err error) error
- func ValidateJWTFromInvoker(ctx context.Context, r *http.Request, audience string) (*auth.JWTPayload, error)
- type CreateTaskOptions
- type Error
- type GetTask
- type Header
- type JsonPostTask
- type MultiError
- type Queue
- type Service
- func (s *Service) CreateGetTask(ctx context.Context, queue *Queue, task *GetTask, ops ...CreateTaskOptions) (string, error)
- func (s *Service) CreateGetTaskMulti(ctx context.Context, queue *Queue, tasks []*GetTask, ops ...CreateTaskOptions) ([]string, error)
- func (s *Service) CreateJsonPostTask(ctx context.Context, queue *Queue, task *JsonPostTask, ...) (string, error)
- func (s *Service) CreateJsonPostTaskMulti(ctx context.Context, queue *Queue, tasks []*JsonPostTask, ...) ([]string, error)
- func (s *Service) CreateTask(ctx context.Context, queue *Queue, taskName string, req *taskspb.HttpRequest, ...) (*taskspb.Task, error)
- type Task
Constants ¶
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 ¶
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
var ErrCreateMultiTask = &Error{ Code: "FailedCreateMultiTask", Message: "FailedCreateMultiTask", KV: map[string]interface{}{}, }
ErrCreateMultiTask is CreateMultiTask の時に MultiError に入れる Error
var ErrInvalidArgument = &Error{ Code: "InvalidArgument", Message: "InvalidArgument", KV: map[string]interface{}{}, }
ErrInvalidRequest is 引数が invalid な時に返す
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
NewErrInvalidArgument is return ErrInvalidArgument
func NewErrInvalidHeader ¶
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
NewErrAlreadyExists is return ErrAlreadyExists
func NewErrCreateMultiTask ¶ added in v1.3.0
NewErrCreateMultiTask is return ErrCreateMultiTask
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
type Header ¶
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
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 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