Tencent Cloud COS Source
Introduction
This connector for capturing Tencent COS event
Quickstart
create config file
cat << EOF > config.yml
target: "35.87.170.130:8080"
eventbus: "xxx"
bucket:
  endpoint: "xxx.cos.<region>.myqcloud.com"
function:
  region: <region>
EOF
For full configuration, you can see config section.
create secret file
cat << EOF > secret.yml
secret_id: "xxxx"
secret_key: "xxxxx"
EOF
start using docker
docker run -d --rm \
  --network host \
  -v ${PWD}:/vance/config \
  -v ${PWD}:/vance/secret \
  --name source-tencentcloud-cos public.ecr.aws/vanus/connector/source-tencentcloud-cos:dev
upload a file to your bucket
open COS console in browser, upload a file into your target bucket.
see event was captured
An event like below is received:
{
    "Records": [{
        "cos": {
            "cosSchemaVersion": "1.0",
            "cosObject": {
                "url": "http://testpic-1253970026.cos.ap-chengdu.myqcloud.com/testfile",
                "meta": {
                    "x-cos-request-id": "NWMxOWY4MGFfMjViMjU4NjRfMTUyMVxxxxxxxxx=",
                    "Content-Type": "",
                    "x-cos-meta-mykey": "myvalue"
                },
                "vid": "",
                "key": "/1253970026/testpic/testfile",
                "size": 1029
            },
            "cosBucket": {
                "region": "cd",
                "name": "testpic",
                "appid": "1253970026"
            },
            "cosNotificationId": "unkown"
        },
        "event": {
            "eventName": "cos:ObjectCreated:*",
            "eventVersion": "1.0",
            "eventTime": 1545205770,
            "eventSource": "qcs::cos",
            "requestParameters": {
                "requestSourceIP": "192.168.15.101",
                "requestHeaders": {
                    "Authorization": "q-sign-algorithm=sha1&q-ak=xxxxxxxxxxxxxx&q-sign-time=1545205709;1545215769&q-key-time=1545205709;1545215769&q-header-list=host;x-cos-storage-class&q-url-param-list=&q-signature=xxxxxxxxxxxxxxx"
                }
            },
            "eventQueue": "qcs:0:scf:cd:appid/1253970026:default.printevent.$LATEST",
            "reservedInfo": "",
            "reqid": 179398952
        }
    }]
}
please see COS Trigger to understanding the structure of events.
clean resource
docker stop source-tencentcloud-cos
Configuration
config
target: "x.x.x.x:8080"
eventbus: "xxxx"
bucket:
  endpoint: "xxxx.cos.ap-beijing.myqcloud.com"
function:
  region: "ap-beijing"
  name: "xxxx"
  namespace: "default"
  code:
    bucket: "vanus-1253760853"
    region: "ap-beijing"
    path: "/vanus/cos-source/dev/main.zip"
debug: false
secret_id: "xxxx"
secret_key: "xxxxx"
| Name | Required | Default | Description | 
|---|---|---|---|
| target | YES | - | Target URL will send CloudEvents to | 
| eventbus | YES | - | target eventbus | 
| bucket.endpoint | YES | - | which bucket you want to capture. | 
| function.region | YES | - | which region the helper function will be deployed, suggest keep same with bucket | 
| function.name | NO | vanus-cos-source-function-number | |
| function.namespace | NO | default | which namespace the function created to | 
| function.code.bucket | NO | vanus-1253760853 | Not recommended to modify | 
| function.code.region | NO | ap-beijing | Not recommended to modify | 
| function.code.path | NO | /vanus/cos-source/dev/main.zip | Not recommended to modify | 
| debug | NO | false | if print debug log | 
secret
| Name | Required | Default | Description | 
|---|---|---|---|
| secret_id | YES | - | SecretID of Tencent Cloud | 
| secret_key | YES | - | SecretKey of Tencent Cloud | 
Deploy
using k8s(recommended)
apiVersion: v1
kind: ConfigMap
metadata:
  name: source-tencentcloud-cos
  namespace: vanus
data:
  config.yml: |-
    target: "xxxx"
    eventbus: "xxxxx"
    bucket:
      endpoint: "xxxxx.cos.ap-beijing.myqcloud.com"
    function:
      region: "ap-beijing"
---
apiVersion: v1
kind: Secret
metadata:
  name: source-tencentcloud-cos
  namespace: vanus
type: Opaque
data:
  # cat secret.yml | base64
  secret.yml: |
    xxxxx
immutable: true
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: source-tencentcloud-cos
  namespace: vanus
  labels:
    app: source-tencentcloud-cos
spec:
  selector:
    matchLabels:
      app: source-tencentcloud-cos
  replicas: 1
  template:
    metadata:
      labels:
        app: source-tencentcloud-cos
    spec:
      containers:
        - name: source-tencentcloud-cos
          image: public.ecr.aws/vanus/connector/source-tencentcloud-cos:dev
          imagePullPolicy: Always
          volumeMounts:
            - name: config
              mountPath: /vance/config
            - name: secret
              mountPath: /vance/secret
      volumes:
        - name: secret
          secret:
            secretName: source-tencentcloud-cos
        - name: config
          configMap:
            name: source-tencentcloud-cos
using vance Operator
coming soon
Event Structure
| Field | Required | Description | 
|---|---|---|
| id | YES | random UUID | 
| source | YES | function name | 
| type | YES | tencent-cloud-cos-event | 
| time | YES | the time of this event generated with RFC3339 encoding | 
| data | YES | see COS Trigger |